feat:应急预案

This commit is contained in:
lijianzhong 2024-01-26 15:50:58 +08:00
parent ff7dc7d58b
commit f147d124e8
3 changed files with 92 additions and 83 deletions

View File

@ -11,8 +11,8 @@ export default {
}, },
children: [ children: [
{ {
path: 'procession', path: 'team',
name: 'processionindex', name: 'team',
component: () => import('@/views/emergency/procession/index.vue'), component: () => import('@/views/emergency/procession/index.vue'),
meta: { meta: {
icon: 'point', icon: 'point',
@ -22,8 +22,8 @@ export default {
}, },
children: [ children: [
{ {
path: 'form_details', path: 'team_detail',
name: 'form_details', name: 'team_detail',
component: () => import('@/views/emergency/procession/form_details.vue'), component: () => import('@/views/emergency/procession/form_details.vue'),
meta: { meta: {
auth: "emer.team.detail", auth: "emer.team.detail",
@ -36,8 +36,8 @@ export default {
] ]
}, },
{ {
path: 'matter', path: 'resourse',
name: 'matterindex', name: 'resourse',
component: () => import('@/views/emergency/matter/index.vue'), component: () => import('@/views/emergency/matter/index.vue'),
meta: { meta: {
icon: 'point', icon: 'point',
@ -52,7 +52,7 @@ export default {
component: () => import('@/views/emergency/shelter/index.vue'), component: () => import('@/views/emergency/shelter/index.vue'),
meta: { meta: {
icon: 'point', icon: 'point',
auth: "emer.resourse", auth: "emer.shelter",
title: '避难场所', title: '避难场所',
breadcrumb: true, //是否显示面包屑 breadcrumb: true, //是否显示面包屑
} }
@ -63,10 +63,21 @@ export default {
component: () => import('@/views/emergency/duty-people/index.vue'), component: () => import('@/views/emergency/duty-people/index.vue'),
meta: { meta: {
icon: 'point', icon: 'point',
auth: "emer.resourse", auth: "emer.duty",
title: '应急值守', title: '应急值守',
breadcrumb: true, //是否显示面包屑 breadcrumb: true, //是否显示面包屑
} }
},
{
path: 'plan',
name: 'plan',
component: () => import('@/views/emergency/plan/index.vue'),
meta: {
icon: 'point',
auth: "emer.plan",
title: '应急预案',
breadcrumb: true, //是否显示面包屑
}
} }
] ]
} }

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?.opInstructionId ? '编辑应急预案' : '新增应急预案'"
width="50%" width="50%"
@onSubmit="handleSubmit" @onSubmit="handleSubmit"
:footerclosed="true" :footerclosed="true"
@ -22,7 +22,7 @@
<el-input <el-input
placeholder="请输入预案名称" placeholder="请输入预案名称"
v-model="addPostFactorForm.planname" v-model="addPostFactorForm.planname"
:readonly='props.readonly' :readonly="props.readonly"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -30,7 +30,7 @@
<el-select <el-select
placeholder="请选择任务类型" placeholder="请选择任务类型"
v-model="addPostFactorForm.accidenttype" v-model="addPostFactorForm.accidenttype"
:disabled='props.readonly' :disabled="props.readonly"
> >
<el-option <el-option
v-for="(item, index) in props.typeList" v-for="(item, index) in props.typeList"
@ -40,27 +40,13 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="部门:" prop="sysunitid">
<el-select
placeholder="请选择部门"
v-model="addPostFactorForm.sysunitid"
:disabled='props.readonly'
>
<el-option
v-for="(item, index) in unitList"
:value="item.sysunitid"
:label="item.unitname"
:key="index"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="预案简介:" style="width: 100%"> <el-form-item label="预案简介:" style="width: 100%">
<el-input <el-input
type="textarea" type="textarea"
:rows="3" :rows="3"
placeholder="请输入预案简介" placeholder="请输入预案简介"
v-model="addPostFactorForm.introduction" v-model="addPostFactorForm.introduction"
:readonly='props.readonly' :readonly="props.readonly"
> >
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -73,19 +59,7 @@
:baseUrl="baseUrl" :baseUrl="baseUrl"
:max="9" :max="9"
@onUpdate="updateFile" @onUpdate="updateFile"
:readonly='props.readonly' :readonly="props.readonly"
></CustomUpload>
</el-form-item>
<el-form-item label="一图一表" style="width: 100%" class="inline-block">
<CustomUpload
:listPic="chartFileList"
:OTCType="FileType.EmergencyImg"
:uuid="addPostFactorForm.othplanid || uuid"
:userId="userId"
:baseUrl="baseUrl"
:max="9"
@onUpdate="chartupdateFile"
:readonly='props.readonly'
></CustomUpload> ></CustomUpload>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -98,7 +72,6 @@ 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 { saveOthplan } from "@/api/Othteam";
import { getSysunitList } from "@/api/BookEntCheck";
import { uploadFile, getFile, delFile } from "@/api/file"; import { uploadFile, getFile, delFile } from "@/api/file";
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
@ -188,19 +161,6 @@ const getFiles = (FileType) => {
); );
}; };
//
const SysunitList = () => {
let params = {
basesafeclassid: null,
isTree: 0, //0 1
safeclassname: null,
userId: userId.value,
};
getSysunitList(params).then((res: any) => {
unitList.value = res.data;
});
};
// //
const onclone = () => { const onclone = () => {
emits("close"); emits("close");

View File

@ -4,7 +4,10 @@
<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 class="tool-item" @click="(dialogVisible = true), (form = {}),(readonly=false)"> <div
class="tool-item"
@click="(dialogVisible = true), (form = {}), (readonly = false)"
>
<svg-icon name="add" class="icon" /> <svg-icon name="add" class="icon" />
<span>新增</span> <span>新增</span>
</div> </div>
@ -22,7 +25,7 @@
<div> <div>
<el-input <el-input
v-model="search" v-model="search"
@keydown.enter.native="getCompanyList" @keydown.enter="getCompanyList"
placeholder="输入预案名称" placeholder="输入预案名称"
class="search-input" class="search-input"
> >
@ -36,7 +39,7 @@
</div> </div>
</div> </div>
</div> </div>
<div style="display:flex;margin-bottom: 10px;"> <div style="display: flex; margin-bottom: 10px">
<div class="label-select filter-tab"> <div class="label-select filter-tab">
<label>预案类型</label> <label>预案类型</label>
<el-select <el-select
@ -63,17 +66,46 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
border border
> >
<el-table-column type="index" align="center" label="序列" width="60"></el-table-column> <el-table-column
<el-table-column prop="planname" :resizable="true" align="center" label="预案名称"></el-table-column> type="index"
<el-table-column prop="othtypename" :resizable="true" align="center" label="预案类型"></el-table-column> align="center"
<el-table-column prop="hasImg" :resizable="true" align="center" label="一图一表数量"></el-table-column> label="序列"
<el-table-column :resizable="true" align="center" width="240" label="操作"> width="60"
></el-table-column>
<el-table-column
prop="planname"
:resizable="true"
align="center"
label="预案名称"
></el-table-column>
<el-table-column
prop="othtypename"
:resizable="true"
align="center"
label="预案类型"
></el-table-column>
<el-table-column
:resizable="true"
align="center"
width="240"
label="操作"
>
<template #default="scope"> <template #default="scope">
<span class="operate" @click="(dialogVisible = true), (form = scope.row),(readonly=false)"> <span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = false)
"
>
<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=" (dialogVisible = true), (form = scope.row),(readonly=true)"> <span
class="operate"
@click="
(dialogVisible = true), (form = scope.row), (readonly = true)
"
>
<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>
@ -94,7 +126,13 @@
> >
</el-pagination> </el-pagination>
<!-- 新增 --> <!-- 新增 -->
<Adddetails :visible="dialogVisible" :typeList='option' :form="form" :readonly="readonly" @close="onclone" /> <Adddetails
:visible="dialogVisible"
:typeList="option"
:form="form"
:readonly="readonly"
@close="onclone"
/>
</div> </div>
</div> </div>
</template> </template>
@ -105,13 +143,13 @@ import Adddetails from "./details.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);
const total = ref(0); const total = ref(0);
const type = ref(''); const type = ref("");
const option = ref([]); const option = ref([]);
const dialogVisible = ref(false); const dialogVisible = ref(false);
@ -133,14 +171,14 @@ const getCompanyList = () => {
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;
}) });
}; };
// //
const OthtypeList = () => { const OthtypeList = () => {
getOthtypeList().then((res: any) => { getOthtypeList().then((res: any) => {
option.value = res.data; option.value = res.data;
}) });
} };
// //
const onclone = () => { const onclone = () => {
dialogVisible.value = false; dialogVisible.value = false;
@ -150,7 +188,7 @@ const onclone = () => {
onMounted(() => { onMounted(() => {
getCompanyList(); getCompanyList();
OthtypeList(); OthtypeList();
}) });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.content { .content {