新增指挥体系等模块

This commit is contained in:
du 2024-02-29 17:27:05 +08:00
parent 9ad7a9e201
commit eb93ce4810
19 changed files with 1577 additions and 413 deletions

View File

@ -234,6 +234,17 @@ export function getListperformTree() {
}); });
} }
/**
*
*/
export function performUserPage(params) {
return request({
url: `/admin/Sys/performUserPage`,
method: "GET",
params:params
});
}
/** /**
* *
*/ */
@ -316,4 +327,15 @@ export function saveUser(data) {
params:params params:params
}); });
} }
/**
*-
*/
export function noticeAdd(params) {
return request({
url: `/admin/notice/noticeAdd`,
method: "POST",
data:params
});
}

View File

@ -19,3 +19,134 @@ export function deleteEquip(data) {
data: data, data: data,
}); });
} }
/**
*
*/
export function refugePage(params) {
return request({
url: `/admin/Othteam/refugePage`,
method: "GET",
params: params
});
}
/**
*
*/
export function refugeAdd(params) {
return request({
url: `/admin/Othteam/refugeAdd`,
method: "POST",
data: params
});
}
/**
*
*/
export function refugeDel(params) {
return request({
url: `/admin/Othteam/refugeDel/${params.othrefugeid}`,
method: "POST",
});
}
/**
*
*/
export function dutyList(params) {
return request({
url: `/admin/Othteam/dutyList`,
method: "GET",
params:params
});
}
/**
*
*/
export function dutyAdd(params) {
return request({
url: `/admin/Othteam/dutyAdd`,
method: "POST",
data:params
});
}
/**
*
*/
export function getOthplanPage(params) {
return request({
url: `/admin/Othplan/getOthplanPage`,
method: "GET",
params:params
});
}
/**
*
*/
export function getOthtypeList() {
return request({
url: `/admin/Othplan/getOthtypeList`,
method: "GET",
});
}
/**
*-
*/
export function saveOthplan(params) {
return request({
url: `/admin/Othplan/saveOthplan`,
method: "POST",
data:params,
});
}
/**
*
*/
export function delOthplan(params) {
return request({
url: `/admin/Othplan/delOthplan`,
method: "POST",
data:params,
});
}
/**
*
*/
export function riskPoolPage(params) {
return request({
url: `/admin/risk/riskPoolPage`,
method: "GET",
params:params,
});
}
/**
*
*/
export function riskTypeList() {
return request({
url: `/admin/risk/riskTypeList`,
method: "GET",
});
}
/**
*
*/
export function riskPoolAdd(params) {
return request({
url: `/admin/risk/riskPoolAdd`,
method: "POST",
data:params,
});
}
/**
*
*/
export function riskPoolDel(params) {
return request({
url: `/admin/risk/riskPoolDel/${params.poolId}`,
method: "POST",
});
}

View File

@ -292,18 +292,18 @@ const getFileType = (fileName) => {
const setFiles = () => { const setFiles = () => {
fileList.value = []; fileList.value = [];
props.listPic.forEach((item: any) => { props.listPic.forEach((item: any) => {
item.url = item.filepath; item.url = baseUrl.value + item.filepath;
item.fileType = getFileType(item.url); item.fileType = getFileType(item.url);
fileList.value.push(item); fileList.value.push(item);
}); });
}; };
// watch( watch(
// () => props.listPic, () => props.listPic,
// () => { () => {
// setFiles(); setFiles();
// } }
// ); );
onMounted(() => { onMounted(() => {
setFiles(); setFiles();

View File

@ -100,7 +100,18 @@ export default {
meta: { meta: {
icon: 'point', icon: 'point',
auth: "emer.plan", auth: "emer.plan",
title: '隐患点位', title: '风险点',
breadcrumb: true, //是否显示面包屑
}
},
{
path: 'command',
name: 'command',
component: () => import('@/views/emergency/command-system/index.vue'),
meta: {
icon: 'point',
auth: "emer.command",
title: '指挥体系',
breadcrumb: true, //是否显示面包屑 breadcrumb: true, //是否显示面包屑
} }
} }

View File

@ -89,10 +89,12 @@
<svg-icon name="edit" class="icon"></svg-icon> <svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span> <span class="edit">编辑</span>
</span> </span>
<span class="operate" @click="del(scope.row, '删除')"> <!-- <span class="operate" @click="del(scope.row, '删除')">
<svg-icon name="delete" class="icon"></svg-icon> <svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span> <span class="func">删除</span>
</span>
</span> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -0,0 +1,255 @@
<template>
<BaseDialog
:dialogVisible="props.visible"
@close="onclone"
:titleName="props.form.othplanid ? '编辑应急预案' : '新增应急预案'"
width="50%"
@onSubmit="handleSubmit"
:footerclosed="true"
:diafooter="true"
:footerkeepnaem="props.readonly ? false : true"
>
<div class="detailForm-content">
<el-form
ref="formRef"
label-position="right"
label-width="120px"
:rules="ruleForm"
:model="addPostFactorForm"
>
<el-form-item label="预案名称:" prop="planname">
<el-input
placeholder="请输入预案名称"
v-model="addPostFactorForm.planname"
:readonly="props.readonly"
>
</el-input>
</el-form-item>
<el-form-item label="预案类型:" prop="othtypeid">
<el-select
placeholder="请选择预案类型:"
v-model="addPostFactorForm.othtypeid"
:disabled="props.readonly"
>
<el-option
v-for="item in option"
:key="item.othtypeid"
:label="item.othtypename"
:value="item.othtypeid"
></el-option>
</el-select>
</el-form-item>
<el-form-item prop="areaCode" label="所属区域">
<el-cascader
ref="cascader"
v-model="addPostFactorForm.areaCode"
placeholder="请选择地区"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="预案简介:" style="width: 100%;">
<el-input
type="textarea"
:rows="3"
placeholder="请输入预案简介"
v-model="addPostFactorForm.introduction"
:readonly="props.readonly"
>
</el-input>
</el-form-item>
<el-form-item label="文件" style="width: 100%;" class="inline-block">
<CustomUpload
:listPic="fileList"
:OTCType="FileType.EmergencyFile"
:uuid="addPostFactorForm.othplanid || uuid"
:userId="userId"
:baseUrl="baseUrl"
:max="9"
@onUpdate="updateFile"
:readonly="props.readonly"
></CustomUpload>
</el-form-item>
</el-form>
</div>
</BaseDialog>
</template>
<script setup lang="ts" >
import { reactive, ref, onMounted, watch } from "vue";
import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getYears, getUUID, FileType } from "@/utils/common";
import { areaTree } from "@/api/account";
import { saveOthplan, getOthtypeList } from "@/api/emergency";
import { uploadFile, getFile, delFile } from "@/api/file";
const formRef = ref<FormInstance>();
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const uuid = ref("");
const baseUrl = ref(import.meta.env.VITE_UPLOAD_URL);
const unitList = ref([]);
const fileList = ref([]);
const chartFileList = ref([]);
const chartFile = ref([]);
const ruleForm = reactive<FormRules>({
planname: [{ required: true, message: "请输入预案名称", trigger: "blur" }],
othtypeid: [{ required: true, message: "请选择预案类型", trigger: "blur" }],
areaCode: [{ required: true, message: "请选择所属地区", trigger: "blur" }],
});
const props = defineProps({
visible: {
type: Boolean,
default: false,
},
form: Object,
readonly: {
type: Boolean,
default: false,
},
id: String,
});
const listperformid = ref(props.id);
const addPostFactorForm = ref(<any>{});
const emits = defineEmits(["close", "onSubmit"]);
//退
const handleSubmit = () => {
formRef.value?.validate((valid) => {
if (valid) {
let params = {
...addPostFactorForm.value,
areaCode: "",
userId: addPostFactorForm.value.userId || userId.value,
othplanid: addPostFactorForm.value.othplanid || uuid.value,
};
if (addPostFactorForm.value.areaCode instanceof Array) {
params.areaCode =
addPostFactorForm.value.areaCode[addPostFactorForm.value.areaCode.length - 1];
} else {
params.areaCode = addPostFactorForm.value.areaCode;
};
saveOthplan(params).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "保存成功",
// type: "success",
});
onclone();
} else {
ElMessage.error({
message: res.message,
type: "error",
});
}
});
}
return false;
});
};
const option = ref([]);
//
const OthtypeList = () => {
getOthtypeList().then((res: any) => {
option.value = res.data;
});
};
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
/**
* 文件列表更新
*/
const updateFile = (files: any) => {
fileList.value = files;
};
const chartupdateFile = (files: any) => {
chartFileList.value = files;
};
//
const upload = ref();
const beforeAvatarUpload = () => {
upload.value.submit();
return true;
};
//
const getFiles = (FileType) => {
getFile(addPostFactorForm.value.othplanid || uuid.value, FileType).then(
(res: any) => {
if (FileType == "Files") {
//
fileList.value = res.data;
} else {
//
chartFileList.value = res.data;
}
}
);
};
//
const onclone = () => {
emits("close");
fileList.value = [];
chartFileList.value = [];
};
onMounted(() => {
OthtypeList();
getareaTree();
});
watch(
() => props.form,
(val) => {
uuid.value = getUUID();
if (val) {
if (!props.visible) return;
addPostFactorForm.value = val;
getFiles(FileType.EmergencyFile);
}
}
);
// watch(
// () => props.form.othplanid,
// (val) => {
// uuid.value = getUUID();
// if (val) {
// addPostFactorForm.value = props.form;
// getFiles(FileType.EmergencyFile);
// }
// // if (val) {
// // if (!props.visible) return;
// // addPostFactorForm.value = val;
// // getFiles(FileType.EmergencyFile);
// // }
// }
// );
</script>
<style lang="scss" scoped>
.detailForm-content {
margin-right: 30px;
}
:deep(.el-form) {
display: flex;
flex-wrap: wrap;
// justify-content: space-around;
justify-content: space-between;
}
:deep(.el-form-item) {
width: 47%;
}
</style>

View File

@ -0,0 +1,271 @@
<template>
<div class="percentage-content">
<div class="content">
<!-- <div style="margin-bottom: 16px;" class="h-layout space-between h-center">
<div>
<div class="h-layout">
<div
class="tool-item"
@click="(dialogVisible = true), (form = {}), (readonly = false)"
>
<svg-icon name="add" class="icon" />
<span>新增</span>
</div>
<div class="tool-item" @click="getCompanyList">
<svg-icon name="refurbish" class="icon" />
<span>刷新</span>
</div>
</div>
</div>
<div style="width: 30%;">
<div>
<el-input
v-model="search"
@keydown.enter.native="getCompanyList"
placeholder="输入仓库名称"
class="search-input"
>
<template #append>
<span @click="getCompanyList" class="search-bottom">
<svg-icon name="search" class="icon_class" />
<span>搜索</span>
</span>
</template>
</el-input>
</div>
</div>
</div> -->
<div class="table_div">
<div>
<el-tree
:data="treeData"
:props="defaultProps"
accordion
@node-click="handleNodeClick"
/>
</div>
<div>
<el-table
ref="loading"
v-loading="tableDataloading"
:data="tableData"
header-row-class-name="el-one-header"
border
>
<!-- @selection-change="handleSelectionChange" -->
<!-- <el-table-column
type="selection"
align="center"
width="55"
></el-table-column> -->
<el-table-column
type="index"
align="center"
label="序列"
width="60"
></el-table-column>
<el-table-column
prop="chinaname"
:resizable="true"
align="center"
label="姓名"
></el-table-column>
<el-table-column
prop="mobiletel"
:resizable="true"
align="center"
label="联系方式"
></el-table-column>
<el-table-column
prop="unitName"
:resizable="true"
align="center"
label="部门名称"
>
</el-table-column>
<el-table-column
prop="performName"
:resizable="true"
align="center"
label="职务名"
></el-table-column>
<el-table-column
prop="roleName"
:resizable="true"
align="center"
label="角色名称"
></el-table-column>
<!-- <el-table-column
:resizable="true"
align="center"
width="180"
label="操作"
>
<template #default="scope">
<span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = false)
"
>
<svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span>
</span>
<span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = true)
"
>
<svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span>
</span>
</template>
</el-table-column> -->
</el-table>
<!-- 分页 -->
<el-pagination
class="pagination"
@size-change="getCompanyList"
@current-change="getCompanyList"
v-model:current-page.sync="currentPage"
:page-sizes="[10, 15, 20, 30]"
v-model:page-size.sync="pageSize"
layout="->, total, sizes, prev, pager, next, jumper"
:total="total"
background
>
</el-pagination>
</div>
</div>
<!-- 新增 -->
<!-- <Adddetails
:visible="dialogVisible"
:form="form"
:readonly="readonly"
@close="onclone"
/> -->
</div>
</div>
</template>
<script lang='ts' setup>
import { onMounted, reactive, ref } from "vue";
import { getListperformTree, performUserPage } from "@/api/Sys";
// import Adddetails from "./details.vue";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const search = ref([]);
const tableData = ref([]);
const currentPage = ref(1);
const pageSize = ref(10);
const total = ref(0);
const dialogVisible = ref(false);
const form = ref({});
const readonly = ref(false);
//id
const post = ref("");
//
// const tableCheckBoxs = ref([]);
// const handleSelectionChange = (val: any) => {
// tableCheckBoxs.value = [];
// for (let index = 0; index < val.length; index++) {
// const element = val[index];
// tableCheckBoxs.value.push(element.houseId);
// }
// };
//
const tableDataloading = ref(false);
const getCompanyList = () => {
tableDataloading.value = true;
let params = {
userId: userId.value,
limit: pageSize.value,
page: currentPage.value,
listperformid: post.value,
};
performUserPage(params).then((res: any) => {
tableData.value = res.data.list;
total.value = res.data.total;
tableDataloading.value = false;
});
};
//
const onclone = () => {
dialogVisible.value = false;
form.value = {};
getCompanyList();
};
//
interface Tree {
listperformid: string;
label: string;
children?: Tree[];
}
const handleNodeClick = (data: Tree) => {
currentPage.value = 1;
pageSize.value = 10;
post.value = data.listperformid;
getCompanyList();
};
const treeData = ref([]);
const defaultProps = {
children: "children",
label: "performclassname",
id: "listperformid",
};
const listperformTree = () => {
getListperformTree().then((res: any) => {
treeData.value = res.data;
});
};
onMounted(() => {
listperformTree();
setTimeout(() => {
post.value = treeData.value[0].listperformid;
getCompanyList();
}, 1000);
});
</script>
<style lang="scss" scoped>
.content {
width: 100%;
// flex: auto;
background: #fff;
border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgb(8 33 85 / 10%);
height: 100%;
padding: 0.83333vw;
overflow-y: auto;
overflow-x: hidden !important;
/* stylelint-disable-next-line property-no-vendor-prefix */
-moz-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-webkit-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-o-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-ms-box-sizing: border-box;
box-sizing: border-box;
}
.table_div {
display: flex;
height: 100%;
> div:nth-child(1) {
width: 30%;
height: 100%;
margin: 0 auto;
border: 1px solid #ccc;
overflow: hidden;
}
> div:nth-child(2) {
width: 80%;
}
}
.el-table {
margin-left: 10px;
}
</style>

View File

@ -2,7 +2,7 @@
<BaseDialog <BaseDialog
:dialogVisible="props.visible" :dialogVisible="props.visible"
@close="onclone" @close="onclone"
:titleName="titleName + '隐患点'" :titleName="titleName + '风险点'"
width="50%" width="50%"
@onSubmit="handleSubmit" @onSubmit="handleSubmit"
:footerclosed="true" :footerclosed="true"
@ -16,38 +16,61 @@
:model="formData" :model="formData"
class="center-form" class="center-form"
> >
<el-form-item label="点位名称" prop="name"> <el-form-item label="风险名" prop="name">
<el-input placeholder="请输入" type="input" v-model="formData.name" /> <el-input
placeholder="请输入风险名"
type="input"
v-model="formData.name"
/>
</el-form-item> </el-form-item>
<el-form-item label="点位类型" prop="type"> <el-form-item label="风险类型" prop="typeId">
<el-select <el-select
v-model="type" v-model="formData.typeId"
@change="getList"
clearable clearable
placeholder="请选择" placeholder="请选择风险类型"
> >
<el-option <el-option
v-for="item in types" v-for="item in types"
:key="item.value" :key="item.typeId"
:label="item.label" :label="item.typeName"
:value="item.value" :value="item.typeId"
> >
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="详细地址" prop="address" style="width: 94%"> <el-form-item label="详细地址" prop="address">
<el-input <el-input
placeholder="请输入" placeholder="请输入"
type="input" type="input"
v-model="formData.address" v-model="formData.address"
/> />
</el-form-item> </el-form-item>
<el-form-item label="简介/备注" prop="remarks" style="width: 94%"> <el-form-item prop="areaCode" label="所属区域">
<el-cascader
ref="cascader"
v-model="formData.areaCode"
placeholder="请选择地区"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="经度" prop="lon">
<el-input placeholder="请输入" type="input" v-model="formData.lon" />
</el-form-item>
<el-form-item label="纬度" prop="lat">
<el-input placeholder="请输入" type="input" v-model="formData.lat" />
</el-form-item>
<el-form-item label="风险描述" prop="poolDesc" style="width: 94%;">
<el-input <el-input
placeholder="请输入" placeholder="请输入风险描述"
:rows="4" :rows="4"
type="textarea" type="textarea"
v-model="formData.remarks" v-model="formData.poolDesc"
/></el-form-item> /></el-form-item>
</el-form> </el-form>
</div> </div>
@ -56,11 +79,12 @@
<script setup lang='ts'> <script setup lang='ts'>
import { reactive, ref, onMounted, watch } from "vue"; import { reactive, ref, onMounted, watch } from "vue";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getUUID } from "@/utils/common"; import { riskTypeList, riskPoolAdd } from "@/api/emergency";
const uuid = ref(getUUID()); import { areaTree } from "@/api/account";
import useUserStore from "@/store/modules/user";
import { inListAdd } from "@/api/industry"; const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const props = defineProps({ const props = defineProps({
visible: { visible: {
type: Boolean, type: Boolean,
@ -74,38 +98,42 @@ const titleName = ref("新增");
// //
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const ruleForm = reactive<FormRules>({ const ruleForm = reactive<FormRules>({
name: [{ required: true, message: "请输入名字", trigger: "blur" }], name: [{ required: true, message: "请输入风险名", trigger: "blur" }],
type: [{ required: true, message: "请选择类型", trigger: "blur" }], typeId: [{ required: true, message: "请选择风险类型", trigger: "blur" }],
address: [{ required: true, message: "请输入地址", trigger: "blur" }], address: [{ required: true, message: "请输入详细地址", trigger: "blur" }],
remarks: [{ required: true, message: "请输入简介/备注", trigger: "blur" }], poolDesc: [{ required: true, message: "请输入风险描述", trigger: "blur" }],
areaCode: [{ required: true, message: "请选择所属地区", trigger: "blur" }],
lon: [{ required: true, message: "请输入经度", trigger: "blur" }],
lat: [{ required: true, message: "请输入纬度", trigger: "blur" }],
}); });
const formData = ref<any>({}); const formData = ref<any>({});
const types = ref([ const types = ref([]);
{ label: "防汛", value: 1 },
{ label: "火灾", value: 2 },
{ label: "治安", value: 3 },
{ label: "安全生产", value: 4 },
]);
//退 //退
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
formData.value.sortId = formData.value.sortId || 1; let params = {
formData.value.industryId = props.id; ...formData.value,
formData.value.delState = formData.value.delState || 1; areaCode: "",
inListAdd(formData.value).then((res: any) => { poolId:formData.value.poolId?formData.value.poolId:'',
};
if (formData.value.areaCode instanceof Array) {
params.areaCode =
formData.value.areaCode[formData.value.areaCode.length - 1];
} else {
params.areaCode = formData.value.areaCode;
};
riskPoolAdd(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "操作成功", message: "操作成功",
type: "success",
}); });
onclone(); onclone();
} else { } else {
ElMessage.error({ ElMessage.error({
message: res.message, message: res.message,
type: "error",
}); });
} }
}); });
@ -120,14 +148,31 @@ const onclone = () => {
formData.value = {}; formData.value = {};
emits("close"); emits("close");
}; };
onMounted(() => {}); //
const getRiskTypeList = () => {
riskTypeList().then((res: any) => {
types.value = res.data;
});
};
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
onMounted(() => {
getRiskTypeList();
getareaTree();
});
watch( watch(
() => props.form, () => props.form,
(val: any) => { (val: any) => {
titleName.value = val.id ? "编辑" : "新增"; titleName.value = val.poolId ? "编辑" : "新增";
formData.value = JSON.parse(JSON.stringify(val)); formData.value = JSON.parse(JSON.stringify(val));
} }
); );
</script> </script>
<style scoped></style> <style scoped lang="scss">
</style>

View File

@ -1,8 +1,8 @@
<!-- 应急值守 --> <!-- 风险点 -->
<template> <template>
<div class="percentage-content"> <div class="percentage-content">
<div class="content"> <div class="content">
<div style="margin-bottom: 16px" class="h-layout space-between h-center"> <div style="margin-bottom: 16px;" class="h-layout space-between h-center">
<div> <div>
<div class="h-layout h-center"> <div class="h-layout h-center">
<div <div
@ -26,16 +26,16 @@
> >
<el-option <el-option
v-for="item in types" v-for="item in types"
:key="item.value" :key="item.typeId"
:label="item.label" :label="item.typeName"
:value="item.value" :value="item.typeId"
> >
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
</div> </div>
<div style="width: 30%"> <div style="width: 30%;">
<div> <div>
<el-input <el-input
v-model="search" v-model="search"
@ -74,18 +74,17 @@
label="点位名称" label="点位名称"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="address" prop="typeName"
:resizable="true" :resizable="true"
align="center" align="center"
label="点位类型" label="点位类型"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="phone" prop="address"
:resizable="true" :resizable="true"
align="center" align="center"
label="详细地址" label="详细地址"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
:resizable="true" :resizable="true"
align="center" align="center"
@ -102,7 +101,7 @@
<svg-icon name="edit" class="icon"></svg-icon> <svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span> <span class="edit">编辑</span>
</span> </span>
<span <!-- <span
class="operate" class="operate"
@click=" @click="
(dialogVisible = true), (form = scope.row), (readonly = true) (dialogVisible = true), (form = scope.row), (readonly = true)
@ -110,8 +109,8 @@
> >
<svg-icon name="detail" class="icon"></svg-icon> <svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span> <span class="detail">详情</span>
</span> </span> -->
<span class="operate" @click="deletelist(scope.row.othequipmentid)"> <span class="operate" @click="deletelist(scope.row.poolId)">
<svg-icon name="delete" class="icon"></svg-icon> <svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span> <span class="func">删除</span>
</span> </span>
@ -140,7 +139,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { getOthequipmentPage, delOthequipment } from "@/api/Othteam"; import { riskPoolPage, riskTypeList, riskPoolDel } from "@/api/emergency";
import AddEdit from "./dialog/add-edit.vue"; import AddEdit from "./dialog/add-edit.vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
@ -148,15 +147,10 @@ const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId); const userId = ref(user.value.userId);
const types = ref([ const types = ref([]);
{ label: "防汛", value: 1 }, const type = ref("");
{ label: "火灾", value: 2 },
{ label: "治安", value: 3 },
{ label: "安全生产", value: 4 },
]);
const type = ref();
const search = ref([]); const search = ref("");
const tableData = ref([]); const tableData = ref([]);
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); const pageSize = ref(10);
@ -172,13 +166,13 @@ const tableDataloading = ref(false);
const getList = () => { const getList = () => {
tableDataloading.value = true; tableDataloading.value = true;
let params = { let params = {
equname: search.value, condition: search.value,
equtype: null, typeId: type.value,
houseId: null, userId: userId.value,
limit: pageSize.value, limit: pageSize.value,
page: currentPage.value, page: currentPage.value,
}; };
getOthequipmentPage(params).then((res: any) => { riskPoolPage(params).then((res: any) => {
tableData.value = res.data.list; tableData.value = res.data.list;
total.value = res.data.total; total.value = res.data.total;
tableDataloading.value = false; tableDataloading.value = false;
@ -191,29 +185,38 @@ const deletelist = (id) => {
cancelButtonText: "否", cancelButtonText: "否",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
delOthequipment(id, userId.value).then((res: any) => { let params = {
poolId: id,
};
riskPoolDel(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "删除成功", message: "删除成功",
type: "success",
}); });
} else { } else {
ElMessage.error({ ElMessage.error({
message: res.message, message: res.message,
type: "error",
}); });
} }
getList(); getList();
}); });
}); });
}; };
//
const getRiskTypeList = () => {
riskTypeList().then((res: any) => {
types.value = res.data;
});
};
// //
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
form.value = {}; form.value = {};
getList();
}; };
onMounted(() => { onMounted(() => {
getList(); getList();
getRiskTypeList();
}); });
</script> </script>
@ -222,14 +225,18 @@ onMounted(() => {
width: 100%; width: 100%;
background: #fff; background: #fff;
border-radius: 0.26042vw; border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1); box-shadow: 0 0 0.41667vw 0 rgb(8 33 85 / 10%);
height: 100%; height: 100%;
padding: 0.83333vw; padding: 0.83333vw;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden !important; overflow-x: hidden !important;
/* stylelint-disable-next-line property-no-vendor-prefix */
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-o-box-sizing: border-box; -o-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-ms-box-sizing: border-box; -ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }

View File

@ -16,24 +16,44 @@
:model="formData" :model="formData"
class="center-form" class="center-form"
> >
<el-form-item label="" prop="name"> <el-form-item label="值守员姓名" prop="name">
<el-input placeholder="请输入" type="input" v-model="formData.name" /> <el-input placeholder="请输入值守员姓名" type="input" v-model="formData.name" />
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="phone"> <el-form-item label="值守员联系电话" prop="mobile">
<el-input <el-input
placeholder="请输入" placeholder="值守员联系电话"
type="input" type="input"
v-model="formData.phone" v-model="formData.mobile"
/> />
</el-form-item> </el-form-item>
<el-form-item label="值班时间" prop="time"> <el-form-item prop="areaCode" label="所属区域">
<el-date-picker placeholder="请选择" v-model="formData.time" /> <el-cascader
ref="cascader"
v-model="formData.areaCode"
placeholder="请选择地区"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="值班地点" prop="address"> <el-form-item label="岗位名" prop="postName">
<el-input <el-input
placeholder="请输入" placeholder="请输入岗位名"
type="input" type="input"
v-model="formData.address" v-model="formData.postName"
/>
</el-form-item>
<el-form-item label="值班时间" prop="dutyTime">
<el-date-picker
v-model="formData.dutyTime"
type="date"
placeholder="请选择时间"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/> />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -44,9 +64,14 @@
import { reactive, ref, onMounted, watch } from "vue"; import { reactive, ref, onMounted, watch } from "vue";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getUUID } from "@/utils/common"; import { getUUID } from "@/utils/common";
import { areaTree } from "@/api/account";
import { dutyAdd } from "@/api/emergency";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
const uuid = ref(getUUID()); const uuid = ref(getUUID());
import { inListAdd } from "@/api/industry";
const props = defineProps({ const props = defineProps({
visible: { visible: {
@ -65,29 +90,23 @@ const ruleForm = reactive<FormRules>({
}); });
const formData = ref<any>({}); const formData = ref<any>({});
const tags = ref([
{ label: "流动人口", value: 1 },
{ label: "常住人口", value: 2 },
]);
const types = ref([
{ label: "新生儿", value: 1 },
{ label: "在校生", value: 2 },
{ label: "残疾人", value: 3 },
{ label: "低保户", value: 4 },
{ label: "五保户", value: 5 },
{ label: "党员", value: 6 },
{ label: "村组干部", value: 7 },
{ label: "其他", value: 8 },
]);
//退 //退
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
formData.value.sortId = formData.value.sortId || 1; let params = {
formData.value.industryId = props.id; ...formData.value,
formData.value.delState = formData.value.delState || 1; areaCode: "",
inListAdd(formData.value).then((res: any) => { };
if (formData.value.areaCode instanceof Array) {
params.areaCode =
formData.value.areaCode[formData.value.areaCode.length - 1];
} else {
params.areaCode = formData.value.areaCode;
}
console.log(params, "params===>");
dutyAdd(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "操作成功", message: "操作成功",
@ -105,6 +124,13 @@ const handleSubmit = () => {
return false; return false;
}); });
}; };
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
// //
const onclone = () => { const onclone = () => {
@ -112,7 +138,9 @@ const onclone = () => {
formData.value = {}; formData.value = {};
emits("close"); emits("close");
}; };
onMounted(() => {}); onMounted(() => {
getareaTree();
});
watch( watch(
() => props.form, () => props.form,

View File

@ -2,7 +2,7 @@
<template> <template>
<div class="percentage-content"> <div class="percentage-content">
<div class="content"> <div class="content">
<div style="margin-bottom: 16px" class="h-layout space-between h-center"> <div style="margin-bottom: 16px;" class="h-layout space-between h-center">
<div> <div>
<div class="h-layout"> <div class="h-layout">
<div <div
@ -18,7 +18,7 @@
</div> </div>
</div> </div>
</div> </div>
<div style="width: 30%"> <div style="width: 30%;">
<div> <div>
<el-input <el-input
v-model="search" v-model="search"
@ -36,6 +36,63 @@
</div> </div>
</div> </div>
</div> </div>
<div class="table_div">
<div id="calendar">
<!-- 年份 月份 -->
<div class="month">
<ul>
<li class="arrow" @click="pickPre(currentYear, currentMonth)">
</li>
<li class="year-month">
<span class="choose-month"
>{{ currentYear }}{{ currentMonth }}</span
>
</li>
<li class="arrow" @click="pickNext(currentYear, currentMonth)">
</li>
</ul>
</div>
<!-- 星期 -->
<ul class="weekdays">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<!-- 日期 -->
<ul class="days">
<li v-for="(dayobject, index) in days" :key="index">
<span
v-if="dayobject.day.getMonth() + 1 != currentMonth"
class="other-month"
>
{{ dayobject.day.getDate() }}
</span>
<span v-else>
<!-- <span
v-if="
dayobject.day.getFullYear() == new Date().getFullYear() &&
dayobject.day.getMonth() == new Date().getMonth() &&
dayobject.day.getDate() == new Date().getDate()
"
class="active"
>{{ dayobject.day.getDate() }}</span
> -->
<!-- v-else -->
<span
@click="selectedDate(dayobject.day.getDate())"
:class="dateTime == dayobject.day.getDate() ? 'active' : ''"
>{{ dayobject.day.getDate() }}</span
>
</span>
</li>
</ul>
</div>
<el-table <el-table
ref="loading" ref="loading"
v-loading="tableDataloading" v-loading="tableDataloading"
@ -50,35 +107,36 @@
label="序列" label="序列"
width="60" width="60"
></el-table-column> ></el-table-column>
<el-table-column
prop="areaName"
:resizable="true"
align="center"
label="值班地点"
></el-table-column>
<el-table-column <el-table-column
prop="name" prop="name"
:resizable="true" :resizable="true"
align="center" align="center"
label="姓名" label="值班人员"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="phone" prop="mobile"
:resizable="true" :resizable="true"
align="center" align="center"
label="联系电话" label="联系电话"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="time" prop="dutyTime"
:resizable="true" :resizable="true"
align="center" align="center"
label="值班时间" label="值班时间"
></el-table-column> ></el-table-column>
<el-table-column
prop="address"
:resizable="true"
align="center"
label="值班地点"
></el-table-column>
<el-table-column <el-table-column
:resizable="true" :resizable="true"
align="center" align="center"
width="260" width="150"
label="操作" label="操作"
> >
<template #default="scope"> <template #default="scope">
@ -91,7 +149,7 @@
<svg-icon name="edit" class="icon"></svg-icon> <svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span> <span class="edit">编辑</span>
</span> </span>
<span <!-- <span
class="operate" class="operate"
@click=" @click="
(dialogVisible = true), (form = scope.row), (readonly = true) (dialogVisible = true), (form = scope.row), (readonly = true)
@ -99,36 +157,41 @@
> >
<svg-icon name="detail" class="icon"></svg-icon> <svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span> <span class="detail">详情</span>
</span> </span> -->
<span class="operate" @click="deletelist(scope.row.othequipmentid)"> <!-- <span
class="operate"
@click="deletelist(scope.row.othequipmentid)"
>
<svg-icon name="delete" class="icon"></svg-icon> <svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span> <span class="func">删除</span>
</span> </span> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
<!-- 分页 --> <!-- 分页 -->
<el-pagination <!-- <el-pagination
class="pagination" class="pagination"
@size-change="getList" @size-change="getList"
@current-change="getList" @current-change="getList"
v-model:current-page.sync="currentPage" v-model:current-page.sync="currentPage"
:page-sizes="[10, 15, 20, 30]" :page-sizes="[10, 15, 20, 30]"
v-model:page-size.sync="pageSize" v-model:page-size.sync="pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="->, total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
background background
> >
</el-pagination> </el-pagination> -->
<!-- 新增 --> <!-- 新增 -->
<AddEdit :visible="dialogVisible" :form="form" @close="onclone" /> <AddEdit :visible="dialogVisible" :form="form" @close="onclone" />
</div> </div>
</div> </div>
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { computed, onMounted, reactive, ref, toRaw, toRefs } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { getOthequipmentPage, delOthequipment } from "@/api/Othteam"; import { dutyList } from "@/api/emergency";
import AddEdit from "./dialog/add-edit.vue"; import AddEdit from "./dialog/add-edit.vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
@ -152,14 +215,20 @@ const tableDataloading = ref(false);
const getList = () => { const getList = () => {
tableDataloading.value = true; tableDataloading.value = true;
let params = { let params = {
equname: search.value, dutyTime: '',
equtype: null, userId:userId.value,
houseId: null,
limit: pageSize.value,
page: currentPage.value,
}; };
getOthequipmentPage(params).then((res: any) => { if (currentMonth.value.toString().length == 1) {
tableData.value = res.data.list; params.dutyTime = currentYear.value + '-' + 0 + currentMonth.value + '-' + dateTime.value
}
console.log(currentMonth.value.toString().length);
console.log(params,'params===>');
dutyList(params).then((res: any) => {
console.log(res,'res===>');
tableData.value = res.data;
total.value = res.data.total; total.value = res.data.total;
tableDataloading.value = false; tableDataloading.value = false;
}); });
@ -171,28 +240,97 @@ const deletelist = (id) => {
cancelButtonText: "否", cancelButtonText: "否",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
delOthequipment(id, userId.value).then((res: any) => { // delOthequipment(id, userId.value).then((res: any) => {
if (res.code == 1) { // if (res.code == 1) {
ElMessage.success({ // ElMessage.success({
message: "删除成功", // message: "",
type: "success", // type: "success",
}); // });
} else { // } else {
ElMessage.error({ // ElMessage.error({
message: res.message, // message: res.message,
type: "error", // type: "error",
}); // });
} // }
getList(); // getList();
}); // });
}); });
}; };
// //
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
form.value = {}; form.value = {};
getList()
}; };
//
const currentDay = ref(1);
const currentMonth = ref(1);
const currentYear = ref(1970);
const currentWeek = ref(1);
const days = ref([]);
const dateTime = ref(1);
const initData = (cur) => {
let date;
if (cur) {
date = new Date(cur);
} else {
let now = new Date();
date = new Date(formatDate(now.getFullYear(), now.getMonth() + 1, 1));
}
currentDay.value = date.getDate();
currentYear.value = date.getFullYear();
currentMonth.value = date.getMonth() + 1;
currentWeek.value = date.getDay();
let str = formatDate(currentYear.value, currentMonth.value, currentDay.value);
days.value.length = 0;
for (let i = currentWeek.value - 1; i >= 0; i--) {
let d = new Date(str);
d.setDate(d.getDate() - i);
let dayobject = {};
dayobject.day = d;
days.value.push(dayobject);
}
//
for (let i = 1; i <= 35 - currentWeek.value; i++) {
let d = new Date(str);
d.setDate(d.getDate() + i);
let dayobject = {};
dayobject.day = d;
days.value.push(dayobject);
}
};
//
const pickPre = (year, month) => {
let d = new Date(year, month - 1, 0);
initData(formatDate(d.getFullYear(), d.getMonth() + 1, 1));
dateTime.value = 0;
// console.log(currentYear.value, currentMonth.value);
};
//
const pickNext = (year, month) => {
let d = new Date(year, month + 1, 0);
initData(formatDate(d.getFullYear(), d.getMonth() + 1, 1));
dateTime.value = 0;
// console.log(currentYear.value, currentMonth.value);
};
//
const selectedDate = (day) => {
dateTime.value = day;
// console.log(dateTime.value, "dateTime==>");
getList();
};
const formatDate = (year, month, day) => {
let y = year;
let m = month;
let d = day;
if (m < 10) m = "0" + m;
if (d < 10) d = "0" + d;
return `${y}-${m}-${d}`;
};
onMounted(() => { onMounted(() => {
initData(null);
dateTime.value = new Date().getDate();
getList(); getList();
}); });
</script> </script>
@ -202,15 +340,109 @@ onMounted(() => {
width: 100%; width: 100%;
background: #fff; background: #fff;
border-radius: 0.26042vw; border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1); box-shadow: 0 0 0.41667vw 0 rgb(8 33 85 / 10%);
height: 100%; height: 100%;
padding: 0.83333vw; padding: 0.83333vw;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden !important; overflow-x: hidden !important;
/* stylelint-disable-next-line property-no-vendor-prefix */
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-o-box-sizing: border-box; -o-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-ms-box-sizing: border-box; -ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
//
ul {
list-style-type: none;
}
#calendar {
width: 30%;
margin: 0 auto;
border: 1px solid #ccc;
border-radius: 15px;
overflow: hidden;
}
.month {
width: 100%;
}
.month ul {
margin: 0;
padding: 0;
display: flex;
justify-content: space-between;
}
.year-month {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-around;
}
.choose-month {
text-align: center;
font-size: 1.5rem;
}
.arrow {
padding: 30px;
}
.arrow:hover {
background: rgb(242 242 242);
}
.month ul li {
font-size: 20px;
text-transform: uppercase;
letter-spacing: 3px;
}
.weekdays {
margin: 0;
padding: 10px 0;
background-color: rgb(242 242 242);
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.weekdays li {
display: inline-block;
width: 13.6%;
text-align: center;
}
.days {
padding: 0;
background: #fff;
margin: 0;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.days li {
list-style-type: none;
display: inline-block;
width: 14.2%;
text-align: center;
padding: 15px 0;
font-size: 1rem;
color: #000;
}
.days li .active {
padding: 6px 10px;
border: 2px solid #00b8ec;
}
.days li .other-month {
padding: 5px;
color: gainsboro;
}
.days li span span:hover {
padding: 6px 10px;
border: 1px solid #00b8ec;
}
.table_div {
display: flex;
}
.el-table {
margin-left: 10px;
}
</style> </style>

View File

@ -25,11 +25,11 @@
v-model="addPostFactorForm.houseName" v-model="addPostFactorForm.houseName"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="管理员:" prop="name"> <el-form-item label="管理员:" prop="nameId">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入管理员" placeholder="请输入管理员"
v-model="addPostFactorForm.name" v-model="addPostFactorForm.nameId"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系方式:" prop="telephone"> <el-form-item label="联系方式:" prop="telephone">
@ -39,9 +39,9 @@
v-model="addPostFactorForm.telephone" v-model="addPostFactorForm.telephone"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属地区:" prop="orgCode"> <el-form-item label="所属地区:" prop="areaCode">
<el-cascader <el-cascader
v-model="addPostFactorForm.orgCode" v-model="addPostFactorForm.areaCode"
placeholder="请选择所属地区" placeholder="请选择所属地区"
@change="handleAreaChange" @change="handleAreaChange"
:options="orgList" :options="orgList"
@ -67,7 +67,7 @@
v-model="addPostFactorForm.lat" v-model="addPostFactorForm.lat"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属单位:" prop="possession" style="width: 100%"> <el-form-item label="所属单位:" prop="possession" style="width: 100%;">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入所属单位" placeholder="请输入所属单位"
@ -75,7 +75,7 @@
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="地址:" prop="address" style="width: 100%"> <el-form-item label="地址:" prop="address" style="width: 100%;">
<el-input <el-input
:readonly="props.readonly" :readonly="props.readonly"
placeholder="请输入详细地址" placeholder="请输入详细地址"
@ -111,7 +111,7 @@ const ruleForm = reactive<FormRules>({
trigger: "blur", trigger: "blur",
}, },
], ],
orgCode: [ areaCode: [
{ required: true, message: "请选择仓库所属地区", trigger: "change" }, { required: true, message: "请选择仓库所属地区", trigger: "change" },
], ],
possession: [ possession: [
@ -149,7 +149,18 @@ const handleSubmit = () => {
addPostFactorForm.value.houseId = addPostFactorForm.value.houseId =
addPostFactorForm.value.houseId || uuid.value; addPostFactorForm.value.houseId || uuid.value;
addPostFactorForm.value.userId = userId.value; addPostFactorForm.value.userId = userId.value;
saveOtheWareHouse(addPostFactorForm.value).then((res: any) => { let params = {
...addPostFactorForm.value,
areaCode:"",
}
if (addPostFactorForm.value.areaCode instanceof Array) {
params.areaCode = addPostFactorForm.value.areaCode[addPostFactorForm.value.areaCode.length - 1];
}else{
params.areaCode = addPostFactorForm.value.areaCode;
};
console.log(params,'params===>');
saveOtheWareHouse(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "保存成功", message: "保存成功",
@ -180,10 +191,10 @@ const getareaTree = () => {
}); });
}; };
const handleAreaChange = (val) => { const handleAreaChange = (val) => {
addPostFactorForm.value.orgCode = // addPostFactorForm.value.areaCode =
addPostFactorForm.value.orgCode[addPostFactorForm.value.orgCode.length - 1]; // addPostFactorForm.value.areaCode[addPostFactorForm.value.areaCode.length - 1];
addPostFactorForm.value.streetCode = val[1] || ""; // addPostFactorForm.value.streetCode = val[1] || "";
addPostFactorForm.value.communityCode = val[2] || ""; // addPostFactorForm.value.communityCode = val[2] || "";
}; };
// //

View File

@ -60,13 +60,14 @@
label="仓库名称" label="仓库名称"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="nameText" prop="nameId"
:resizable="true" :resizable="true"
align="center" align="center"
label="管理员" label="管理员"
width="150"
> >
<template #default="scope"> <template #default="scope">
{{ scope.row.nameText || "-" }} {{ scope.row.nameId || "-" }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -74,6 +75,13 @@
:resizable="true" :resizable="true"
align="center" align="center"
label="联系方式" label="联系方式"
width="180"
></el-table-column>
<el-table-column
prop="areaName"
:resizable="true"
align="center"
label="所属地区"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
@ -81,7 +89,7 @@
align="center" align="center"
label="地址" label="地址"
></el-table-column> ></el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作" width="300">
<template #default="scope"> <template #default="scope">
<span <span
class="operate" class="operate"

View File

@ -3,7 +3,7 @@
<BaseDialog <BaseDialog
:dialogVisible="props.visible" :dialogVisible="props.visible"
@close="onclone" @close="onclone"
:titleName="props.form?.opInstructionId ? '编辑应急预案' : '新增应急预案'" :titleName="props.form.othplanid ? '编辑应急预案' : '新增应急预案'"
width="50%" width="50%"
@onSubmit="handleSubmit" @onSubmit="handleSubmit"
:footerclosed="true" :footerclosed="true"
@ -26,21 +26,35 @@
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="预案类型:" prop="accidenttype"> <el-form-item label="预案类型:" prop="othtypeid">
<el-select <el-select
placeholder="请选择任务类型" placeholder="请选择预案类型:"
v-model="addPostFactorForm.accidenttype" v-model="addPostFactorForm.othtypeid"
:disabled="props.readonly" :disabled="props.readonly"
> >
<el-option <el-option
v-for="(item, index) in props.typeList" v-for="item in option"
:value="item.othtypeid" :key="item.othtypeid"
:label="item.othtypename" :label="item.othtypename"
:key="index" :value="item.othtypeid"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="预案简介:" style="width: 100%"> <el-form-item prop="areaCode" label="所属区域">
<el-cascader
ref="cascader"
v-model="addPostFactorForm.areaCode"
placeholder="请选择地区"
:options="orgList"
:props="{
checkStrictly: true,
label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item>
<el-form-item label="预案简介:" style="width: 100%;">
<el-input <el-input
type="textarea" type="textarea"
:rows="3" :rows="3"
@ -50,7 +64,7 @@
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="文件" style="width: 100%" class="inline-block"> <el-form-item label="文件" style="width: 100%;" class="inline-block">
<CustomUpload <CustomUpload
:listPic="fileList" :listPic="fileList"
:OTCType="FileType.EmergencyFile" :OTCType="FileType.EmergencyFile"
@ -71,7 +85,8 @@ import { reactive, ref, onMounted, watch } from "vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getYears, getUUID, FileType } from "@/utils/common"; import { getYears, getUUID, FileType } from "@/utils/common";
import { saveOthplan } from "@/api/Othteam"; import { areaTree } from "@/api/account";
import { saveOthplan, getOthtypeList } from "@/api/emergency";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
@ -79,17 +94,15 @@ const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId); const userId = ref(user.value.userId);
const uuid = ref(""); const uuid = ref("");
const baseUrl = ref(import.meta.env.VITE_UPLOAD_IMG_URL); const baseUrl = ref(import.meta.env.VITE_UPLOAD_URL);
const unitList = ref([]); const unitList = ref([]);
const fileList = ref([]); const fileList = ref([]);
const chartFileList = ref([]); const chartFileList = ref([]);
const chartFile = ref([]); const chartFile = ref([]);
const ruleForm = reactive<FormRules>({ const ruleForm = reactive<FormRules>({
planname: [{ required: true, message: "请输入预案名称", trigger: "blur" }], planname: [{ required: true, message: "请输入预案名称", trigger: "blur" }],
accidenttype: [ othtypeid: [{ required: true, message: "请选择预案类型", trigger: "blur" }],
{ required: true, message: "请选择预案类型", trigger: "blur" }, areaCode: [{ required: true, message: "请选择所属地区", trigger: "blur" }],
],
sysunitid: [{ required: true, message: "请选择部门", trigger: "blur" }],
}); });
const props = defineProps({ const props = defineProps({
visible: { visible: {
@ -102,10 +115,6 @@ const props = defineProps({
default: false, default: false,
}, },
id: String, id: String,
typeList: {
type: Array,
default: false,
},
}); });
const listperformid = ref(props.id); const listperformid = ref(props.id);
const addPostFactorForm = ref(<any>{}); const addPostFactorForm = ref(<any>{});
@ -114,22 +123,51 @@ const emits = defineEmits(["close", "onSubmit"]);
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
addPostFactorForm.value.othplanid = let params = {
addPostFactorForm.value.othplanid || uuid.value; ...addPostFactorForm.value,
addPostFactorForm.value.userId = userId.value; areaCode: "",
saveOthplan(addPostFactorForm.value).then((res: any) => { userId: addPostFactorForm.value.userId || userId.value,
othplanid: addPostFactorForm.value.othplanid || uuid.value,
};
if (addPostFactorForm.value.areaCode instanceof Array) {
params.areaCode =
addPostFactorForm.value.areaCode[addPostFactorForm.value.areaCode.length - 1];
} else {
params.areaCode = addPostFactorForm.value.areaCode;
};
saveOthplan(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "保存成功", message: "保存成功",
type: "success", // type: "success",
}); });
onclone(); onclone();
} else {
ElMessage.error({
message: res.message,
type: "error",
});
} }
}); });
} }
return false; return false;
}); });
}; };
const option = ref([]);
//
const OthtypeList = () => {
getOthtypeList().then((res: any) => {
option.value = res.data;
});
};
//
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
/** /**
* 文件列表更新 * 文件列表更新
*/ */
@ -165,9 +203,11 @@ const getFiles = (FileType) => {
const onclone = () => { const onclone = () => {
emits("close"); emits("close");
fileList.value = []; fileList.value = [];
chartFileList.value = [];
}; };
onMounted(() => { onMounted(() => {
// SysunitList(); OthtypeList();
getareaTree();
}); });
watch( watch(
() => props.form, () => props.form,
@ -177,10 +217,26 @@ watch(
if (!props.visible) return; if (!props.visible) return;
addPostFactorForm.value = val; addPostFactorForm.value = val;
getFiles(FileType.EmergencyFile); getFiles(FileType.EmergencyFile);
getFiles(FileType.EmergencyImg);
} }
} }
); );
// watch(
// () => props.form.othplanid,
// (val) => {
// uuid.value = getUUID();
// if (val) {
// addPostFactorForm.value = props.form;
// getFiles(FileType.EmergencyFile);
// }
// // if (val) {
// // if (!props.visible) return;
// // addPostFactorForm.value = val;
// // getFiles(FileType.EmergencyFile);
// // }
// }
// );
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="percentage-content"> <div class="percentage-content">
<div class="content"> <div class="content">
<div style="margin-bottom: 16px" class="h-layout space-between h-center"> <div style="margin-bottom: 16px;" class="h-layout space-between h-center">
<div> <div>
<div class="h-layout h-center"> <div class="h-layout h-center">
<div <div
@ -15,10 +15,10 @@
<svg-icon name="refurbish" class="icon" /> <svg-icon name="refurbish" class="icon" />
<span>刷新</span> <span>刷新</span>
</div> </div>
<div class="tool-item" @click="getList"> <!-- <div class="tool-item" @click="getList">
<svg-icon name="export" class="icon" /> <svg-icon name="export" class="icon" />
<span>导出</span> <span>导出</span>
</div> </div> -->
<div class="label-select filter-tab"> <div class="label-select filter-tab">
<label>预案类型</label> <label>预案类型</label>
@ -39,7 +39,7 @@
</div> </div>
</div> </div>
</div> </div>
<div style="width: 30%"> <div style="width: 30%;">
<div> <div>
<el-input <el-input
v-model="search" v-model="search"
@ -99,7 +99,7 @@
<svg-icon name="edit" class="icon"></svg-icon> <svg-icon name="edit" class="icon"></svg-icon>
<span class="edit">编辑</span> <span class="edit">编辑</span>
</span> </span>
<span <!-- <span
class="operate" class="operate"
@click=" @click="
(dialogVisible = true), (form = scope.row), (readonly = true) (dialogVisible = true), (form = scope.row), (readonly = true)
@ -107,6 +107,13 @@
> >
<svg-icon name="detail" class="icon"></svg-icon> <svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span> <span class="detail">详情</span>
</span> -->
<span
class="operate"
@click="del(scope.row.othplanid)"
>
<svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span>
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -137,8 +144,9 @@
</template> </template>
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { getOthplanPage, getOthtypeList } from "@/api/Othteam"; import { getOthplanPage, getOthtypeList, delOthplan } from "@/api/emergency";
import Adddetails from "./details.vue"; import Adddetails from "./details.vue";
import { ElMessage, ElMessageBox } from "element-plus";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
const userStore = useUserStore(); const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
@ -172,7 +180,7 @@ const getList = () => {
tableDataloading.value = false; tableDataloading.value = false;
}); });
}; };
// //
const OthtypeList = () => { const OthtypeList = () => {
getOthtypeList().then((res: any) => { getOthtypeList().then((res: any) => {
option.value = res.data; option.value = res.data;
@ -184,6 +192,33 @@ const onclone = () => {
form.value = {}; form.value = {};
getList(); getList();
}; };
//
const del = (id) => {
ElMessageBox.confirm("是否确认删除?", "提示", {
confirmButtonText: "是",
cancelButtonText: "否",
type: "warning",
}).then(() => {
let params = {
userId:userId.value,
othplanid:id
}
delOthplan(params).then((res: any) => {
if (res.code == 1) {
ElMessage.success({
message: "删除成功",
type: "success",
});
} else {
ElMessage.error({
message: res.message,
type: "error",
});
}
getList();
});
});
};
onMounted(() => { onMounted(() => {
getList(); getList();
OthtypeList(); OthtypeList();
@ -195,15 +230,11 @@ onMounted(() => {
// flex: auto; // flex: auto;
background: #fff; background: #fff;
border-radius: 0.26042vw; border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1); box-shadow: 0 0 0.41667vw 0 rgb(8 33 85 / 10%);
height: 100%; height: 100%;
padding: 0.83333vw; padding: 0.83333vw;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden !important; overflow-x: hidden !important;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-o-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
</style> </style>

View File

@ -17,17 +17,21 @@
class="center-form" class="center-form"
> >
<el-form-item label="场所名称" prop="name"> <el-form-item label="场所名称" prop="name">
<el-input placeholder="请输入" type="input" v-model="formData.name" /> <el-input placeholder="请输入场所名称" type="input" v-model="formData.name" />
</el-form-item> </el-form-item>
<el-form-item label="占地面积" prop="area"> <el-form-item prop="areaCode" label="所属区域">
<el-input placeholder="请输入" type="input" v-model="formData.area" /> <el-cascader
</el-form-item> ref="cascader"
<el-form-item label="容纳人数" prop="number"> v-model="formData.areaCode"
<el-input placeholder="请选择地区"
placeholder="请输入" :options="orgList"
type="input" :props="{
v-model="formData.number" checkStrictly: true,
/> label: 'orgname',
value: 'orgcode',
}"
clearable
></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="详细地址" prop="address"> <el-form-item label="详细地址" prop="address">
<el-input <el-input
@ -36,6 +40,32 @@
v-model="formData.address" v-model="formData.address"
/> />
</el-form-item> </el-form-item>
<el-form-item label="面积" prop="space">
<el-input-number
v-model="formData.space"
:min="1"
></el-input-number>
</el-form-item>
<el-form-item label="维护单位" prop="maintainunit">
<el-input placeholder="请输入维护单位" type="input" v-model="formData.maintainunit" />
</el-form-item>
<el-form-item label="产权单位" prop="propertyunit">
<el-input placeholder="请输入产权单位" type="input" v-model="formData.propertyunit" />
</el-form-item>
<el-form-item label="建设单位" prop="buildunit">
<el-input placeholder="请输入建设单位" type="input" v-model="formData.buildunit" />
</el-form-item>
<el-form-item label="建成时间" prop="buildtime">
<el-date-picker
v-model="formData.buildtime"
type="date"
placeholder="请输入建成时间"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
/>
</el-form-item>
</el-form> </el-form>
</div> </div>
</BaseDialog> </BaseDialog>
@ -44,7 +74,13 @@
import { reactive, ref, onMounted, watch } from "vue"; import { reactive, ref, onMounted, watch } from "vue";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { getUUID } from "@/utils/common"; import { getUUID } from "@/utils/common";
import { refugeAdd } from "@/api/emergency";
import { areaTree } from "@/api/account";
import useUserStore from "@/store/modules/user";
const uuid = ref(getUUID()); const uuid = ref(getUUID());
const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId);
import { inListAdd } from "@/api/industry"; import { inListAdd } from "@/api/industry";
@ -61,33 +97,35 @@ const titleName = ref("新增");
// //
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const ruleForm = reactive<FormRules>({ const ruleForm = reactive<FormRules>({
itemTitle: [{ required: true, message: "请输入内容", trigger: "blur" }], name: [{ required: true, message: "请输入场所名字", trigger: "blur" }],
address: [{ required: true, message: "请输入详细地址", trigger: "blur" }],
areaCode: [{ required: true, message: "请选择地区", trigger: "blur" }],
}); });
const formData = ref<any>({}); const formData = ref<any>({});
const tags = ref([
{ label: "流动人口", value: 1 },
{ label: "常住人口", value: 2 },
]);
const types = ref([
{ label: "新生儿", value: 1 },
{ label: "在校生", value: 2 },
{ label: "残疾人", value: 3 },
{ label: "低保户", value: 4 },
{ label: "五保户", value: 5 },
{ label: "党员", value: 6 },
{ label: "村组干部", value: 7 },
{ label: "其他", value: 8 },
]);
//退 //退
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
formData.value.sortId = formData.value.sortId || 1; let params = {
formData.value.industryId = props.id; address:formData.value.address,
formData.value.delState = formData.value.delState || 1; areaCode:'',
inListAdd(formData.value).then((res: any) => { buildtime:formData.value.buildtime,
buildunit:formData.value.buildunit,
maintainunit:formData.value.maintainunit,
name:formData.value.name,
othrefugeid:formData.value.othrefugeid?formData.value.othrefugeid:null,
propertyunit:formData.value.propertyunit,
space:formData.value.space,
};
if (formData.value.areaCode instanceof Array) {
params.areaCode = formData.value.areaCode[formData.value.areaCode.length - 1];
}else{
params.areaCode = formData.value.areaCode;
};
refugeAdd(params).then((res: any) => {
console.log(res,'res===>');
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "操作成功", message: "操作成功",
@ -112,8 +150,16 @@ const onclone = () => {
formData.value = {}; formData.value = {};
emits("close"); emits("close");
}; };
onMounted(() => {}); //
const orgList = ref([]);
const getareaTree = () => {
areaTree(userId.value).then((res: any) => {
orgList.value = res.data;
});
};
onMounted(() => {
getareaTree();
});
watch( watch(
() => props.form, () => props.form,
(val: any) => { (val: any) => {

View File

@ -2,7 +2,7 @@
<template> <template>
<div class="percentage-content"> <div class="percentage-content">
<div class="content"> <div class="content">
<div style="margin-bottom: 16px" class="h-layout space-between h-center"> <div style="margin-bottom: 16px;" class="h-layout space-between h-center">
<div> <div>
<div class="h-layout"> <div class="h-layout">
<div <div
@ -22,7 +22,7 @@
</div> --> </div> -->
</div> </div>
</div> </div>
<div style="width: 30%"> <div style="width: 30%;">
<div> <div>
<el-input <el-input
v-model="search" v-model="search"
@ -61,16 +61,16 @@
label="场所名称" label="场所名称"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="area" prop="space"
:resizable="true" :resizable="true"
align="center" align="center"
label="占地面积" label="占地面积"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="number" prop="areaName"
:resizable="true" :resizable="true"
align="center" align="center"
label="容纳人数" label="所属地区"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
prop="address" prop="address"
@ -82,7 +82,7 @@
<el-table-column <el-table-column
:resizable="true" :resizable="true"
align="center" align="center"
width="260" width="300"
label="操作" label="操作"
> >
<template #default="scope"> <template #default="scope">
@ -104,7 +104,7 @@
<svg-icon name="detail" class="icon"></svg-icon> <svg-icon name="detail" class="icon"></svg-icon>
<span class="detail">详情</span> <span class="detail">详情</span>
</span> </span>
<span class="operate" @click="deletelist(scope.row.othequipmentid)"> <span class="operate" @click="deletelist(scope.row.othrefugeid)">
<svg-icon name="delete" class="icon"></svg-icon> <svg-icon name="delete" class="icon"></svg-icon>
<span class="func">删除</span> <span class="func">删除</span>
</span> </span>
@ -132,7 +132,7 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import { getOthequipmentPage, delOthequipment } from "@/api/Othteam"; import { refugePage, refugeDel } from "@/api/emergency";
import AddEdit from "./dialog/add-edit-dialog.vue"; import AddEdit from "./dialog/add-edit-dialog.vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
@ -140,7 +140,7 @@ const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId); const userId = ref(user.value.userId);
const search = ref([]); const search = ref("");
const tableData = ref([]); const tableData = ref([]);
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); const pageSize = ref(10);
@ -156,13 +156,13 @@ const tableDataloading = ref(false);
const getList = () => { const getList = () => {
tableDataloading.value = true; tableDataloading.value = true;
let params = { let params = {
equname: search.value,
equtype: null,
houseId: null,
limit: pageSize.value, limit: pageSize.value,
page: currentPage.value, page: currentPage.value,
condition:search.value
}; };
getOthequipmentPage(params).then((res: any) => { refugePage(params).then((res: any) => {
console.log(res,'res====>');
tableData.value = res.data.list; tableData.value = res.data.list;
total.value = res.data.total; total.value = res.data.total;
tableDataloading.value = false; tableDataloading.value = false;
@ -175,7 +175,10 @@ const deletelist = (id) => {
cancelButtonText: "否", cancelButtonText: "否",
type: "warning", type: "warning",
}).then(() => { }).then(() => {
delOthequipment(id, userId.value).then((res: any) => { let params = {
othrefugeid:id
}
refugeDel(params).then((res: any) => {
if (res.code == 1) { if (res.code == 1) {
ElMessage.success({ ElMessage.success({
message: "删除成功", message: "删除成功",
@ -195,6 +198,7 @@ const deletelist = (id) => {
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
form.value = {}; form.value = {};
getList();
}; };
onMounted(() => { onMounted(() => {
getList(); getList();
@ -206,14 +210,18 @@ onMounted(() => {
width: 100%; width: 100%;
background: #fff; background: #fff;
border-radius: 0.26042vw; border-radius: 0.26042vw;
box-shadow: 0 0 0.41667vw 0 rgba(8, 33, 85, 0.1); box-shadow: 0 0 0.41667vw 0 rgb(8 33 85 / 10%);
height: 100%; height: 100%;
padding: 0.83333vw; padding: 0.83333vw;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden !important; overflow-x: hidden !important;
/* stylelint-disable-next-line property-no-vendor-prefix */
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-o-box-sizing: border-box; -o-box-sizing: border-box;
/* stylelint-disable-next-line property-no-vendor-prefix */
-ms-box-sizing: border-box; -ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }

View File

@ -33,23 +33,23 @@
class="qedit" class="qedit"
:value="addMessageForm.content" :value="addMessageForm.content"
@updateValue="getMsg" @updateValue="getMsg"
:id="uuid" :id="addMessageForm.govNoticeId || uuid"
:userId="userId" :userId="userId"
:FileType="FileType.message" :FileType="FileType.message"
/> />
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="封面:" prop="content" style="width: 100%;"> <el-form-item label="封面:" prop="coverImg" style="width: 100%;">
<CustomUpload <CustomUpload
:listPic="fileList" :listPic="fileList"
:OTCType="FileType.messageCover" :OTCType="FileType.messageCover"
:uuid="uuid" :uuid="addMessageForm.govNoticeId || uuid"
:userId="userId" :userId="userId"
:baseUrl="baseUrl" :baseUrl="baseUrl"
:max="9" :max="1"
@onUpdate="updateFile" @onUpdate="updateFile"
:readonly="props.readonly"
></CustomUpload> ></CustomUpload>
<!-- :readonly="readonly" -->
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -62,6 +62,7 @@ import useUserStore from "@/store/modules/user";
import { getYears, getUUID, FileType } from "@/utils/common"; import { getYears, getUUID, FileType } from "@/utils/common";
import { ElMessage, FormInstance, FormRules } from "element-plus"; import { ElMessage, FormInstance, FormRules } from "element-plus";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
import { noticeAdd } from "@/api/Sys";
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const userStore = useUserStore(); const userStore = useUserStore();
@ -95,18 +96,20 @@ const getMsg = (val) => {
const handleSubmit = () => { const handleSubmit = () => {
formRef.value?.validate((valid) => { formRef.value?.validate((valid) => {
if (valid) { if (valid) {
console.log(addMessageForm.value); let params = {
...addMessageForm.value,
// const params = JSON.parse(JSON.stringify(addMessageForm.value)); coverImg:fileList.value[0].filepath,
// performAdd(params).then((res: any) => { }
// if (res.code == 1) { console.log(params,'params===>');
// ElMessage.success({ noticeAdd(params).then((res: any) => {
// message: "", if (res.code == 1) {
// type: "success", ElMessage.success({
// }); message: "保存成功",
// onclone(); type: "success",
// } });
// }); onclone();
}
});
} }
return false; return false;
}); });
@ -114,27 +117,26 @@ const handleSubmit = () => {
// //
const fileList = ref([]); const fileList = ref([]);
//
const baseUrl = ref(import.meta.env.VITE_UPLOAD_URL); const baseUrl = ref(import.meta.env.VITE_UPLOAD_URL);
const getFiles = () => {
let otcid = props.govNoticeId;
let otctype = FileType.messageCover;
getFile(otcid, otctype).then((res: any) => {
fileList.value = res.data;
console.log( fileList.value,'res==>');
});
};
/** /**
* 文件列表更新 * 文件列表更新
*/ */
const updateFile = (files: any) => { const updateFile = (files: any) => {
fileList.value = files; fileList.value = files;
}; };
//
const getFiles = (FileType) => {
console.log(FileType,'FileType==>');
console.log(addMessageForm.value.govNoticeId,'addMessageForm.value.govNoticeId===>');
getFile(addMessageForm.value.govNoticeId || uuid.value, FileType).then(
(res: any) => {
console.log(res,'图片查询res==>');
fileList.value = res.data;
}
);
};
// //
const onclone = () => { const onclone = () => {
@ -145,7 +147,10 @@ watch(
() => props.visible, () => props.visible,
() => { () => {
uuid.value = getUUID(); uuid.value = getUUID();
getFiles(); addMessageForm.value = props.form;
console.log(addMessageForm.value,'addMessageForm===>');
getFiles(FileType.messageCover);
} }
); );

View File

@ -127,20 +127,15 @@
<script lang='ts' setup> <script lang='ts' setup>
import { onMounted, reactive, ref } from "vue"; import { onMounted, reactive, ref } from "vue";
import { useRouter } from "vue-router";
const router = useRouter();
import { noticePage } from "@/api/Sys"; import { noticePage } from "@/api/Sys";
import { ElMessage, ElMessageBox } from "element-plus"; import { ElMessage, ElMessageBox } from "element-plus";
import AddModifyMessage from "./add-modify-message.vue"; import AddModifyMessage from "./add-modify-message.vue";
import useUserStore from "@/store/modules/user"; import useUserStore from "@/store/modules/user";
const userStore = useUserStore(); const userStore = useUserStore();
const user = ref(JSON.parse(userStore.userInfo)); const user = ref(JSON.parse(userStore.userInfo));
const userId = ref(user.value.userId); const userId = ref(user.value.userId);
const search = ref([]); const search = ref('');
const tableData = ref([]); const tableData = ref([]);
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(10); const pageSize = ref(10);