From 3d17b311e7e7e642bb812494ecaa24aaeb382bdd Mon Sep 17 00:00:00 2001 From: 13937891274 <kxc0822> Date: 星期三, 20 七月 2022 17:57:20 +0800 Subject: [PATCH] 应急队伍一览对接 --- src/api/contingency/index.ts | 26 +++ src/api/emergencyPlan/index.ts | 13 + src/views/contingencyManagement/panManagement/index.vue | 36 ++- src/views/contingencyManagement/contingency/index.vue | 149 ++++++------------ src/views/contingencyManagement/contingency/component/openAdd.vue | 203 ++++++++++++++++-------- 5 files changed, 248 insertions(+), 179 deletions(-) diff --git a/src/api/contingency/index.ts b/src/api/contingency/index.ts index 2c46d39..b416ef2 100644 --- a/src/api/contingency/index.ts +++ b/src/api/contingency/index.ts @@ -8,6 +8,30 @@ method: 'post', data:params }) - } + }, + // v1 + addEmergencyTeam: (data: object) => { + return request({ + url: `/emergencyTeam/add`, + method: 'post', + data: data + }); + }, + // v1 + editEmergencyTeam: (data: object) => { + return request({ + url: `/emergencyTeam/update`, + method: 'post', + data: data + }); + }, + // v2 + deleteEmergencyTeam: (value?: object) => { + return request({ + url: `/emergencyTeam/batchDelete/{ids}`, + method: 'get', + data: value + }); + }, } } \ No newline at end of file diff --git a/src/api/emergencyPlan/index.ts b/src/api/emergencyPlan/index.ts new file mode 100644 index 0000000..41c42e8 --- /dev/null +++ b/src/api/emergencyPlan/index.ts @@ -0,0 +1,13 @@ +import request from '/@/utils/request'; + +export function emergencyPlanApi(){ + return{ + getEmergencyPlanList: (params: object) => { + return request({ + url: '/emergencyPlan/page/list', + method: 'post', + data:params + }) + }, + } +} \ No newline at end of file diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue index 3ee7941..7a3e369 100644 --- a/src/views/contingencyManagement/contingency/component/openAdd.vue +++ b/src/views/contingencyManagement/contingency/component/openAdd.vue @@ -1,7 +1,7 @@ <template> <div class="system-edit-user-container"> <el-dialog - title="新建应急队伍管理" + :title="title" v-model="isShowDialog" width="769px" draggable @@ -31,9 +31,9 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍负责人" prop="teamLeader"> + <el-form-item label="队伍负责人" prop="principalUid"> <el-input - v-model="ruleForm.teamLeader" + v-model="ruleForm.principalUid" placeholder="请选择" class="input-with-select" > @@ -44,28 +44,28 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="负责人部门" prop="responsibleDepartment"> + <el-form-item label="负责人部门" prop="principalDepartmentId"> <el-tree-select - v-model="ruleForm.responsibleDepartment" + v-model="ruleForm.principalDepartmentId" :data="data" class="w100" placeholder="请选择"/> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="负责人手机" prop="teamPhone"> - <el-input v-model="ruleForm.teamPhone" placeholder="请填写负责人手机"></el-input> + <el-form-item label="负责人手机" prop="principalPhone"> + <el-input v-model="ruleForm.principalPhone" placeholder="请填写负责人手机"></el-input> </el-form-item> </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="固定电话" prop="telephone"> - <el-input v-model="ruleForm.telephone" placeholder="请填写固定电话"></el-input> + <el-form-item label="固定电话" prop="telephoneNumber"> + <el-input v-model="ruleForm.telephoneNumber" placeholder="请填写固定电话"></el-input> </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="队伍描述"> + <el-form-item label="队伍描述" prop="teamDesc"> <el-input class="textarea" - v-model="ruleForm.describe" + v-model="ruleForm.teamDesc" type="textarea" maxlength="150" placeholder="请填写队伍描述" @@ -73,7 +73,7 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="相关附件"> + <el-form-item label="相关附件" prop="attachments"> <el-upload v-model:file-list="fileList" class="upload-demo" @@ -121,27 +121,29 @@ </el-row> </el-form> <template #footer> - <span class="dialog-footer"> - <el-button @click="onCancel" size="default">关闭</el-button> - <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button> - </span> + <span class="dialog-footer"> + <el-button @click="isShowDialog = !isShowDialog" size="default">关闭</el-button> + <el-button size="default" type="primary" @click="onSubmit">确定</el-button> + </span> </template> </el-dialog> - <AddEmergencyPersonnel ref="addRef" /> - <UserSelections ref="userRef"/> + <AddEmergencyPersonnel ref="addRef" /> + <UserSelections ref="userRef"/> </div> </template> <script lang="ts"> -import { reactive, +import { + reactive, ref, - defineComponent + defineComponent, + toRefs, } from 'vue'; - +import { ElMessage } from 'element-plus'; import type { UploadUserFile, TabsPaneContext, - FormInstance, + // FormInstance, FormRules, } from 'element-plus' @@ -151,6 +153,7 @@ } from '@element-plus/icons-vue' import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue"; import UserSelections from "/@/components/userSelections/index.vue" +import {contingencyApi} from "/@/api/contingency"; // 定义表格数据类型 interface User { personnelName: string @@ -158,43 +161,79 @@ phone: string; position: string; } + + + + +// 定义接口来定义对象的类型 +interface MenuDataTree { + id: number; + label: string; + children?: MenuDataTree[]; +} +interface RoleState { + title:string, + // buttonName:string, + isShowDialog: boolean; + ruleForm: { + teamName: string; + teamLevel: string; + principalUid: number; + principalDepartmentId: number; + principalPhone: string; + telephoneNumber: string; + teamDesc: string; + }; + menuData: Array<MenuDataTree>; +} export default defineComponent({ name: 'openAdd', components: { AddEmergencyPersonnel, UserSelections, }, - setup() { - const isShowDialog = ref(false) - - const ruleFormRef = ref<FormInstance>() - //定义表单 - const ruleForm = reactive({ + setup(prop,context) { + const state = reactive<RoleState>({ + isShowDialog: false, + title:'', + // buttonName:'', + ruleForm: { teamName: '', // 队伍名称 - teamLeader: '', //队伍负责人 - department: [], // 负责人部门 - phone: '', // 负责人手机 - telephone: '', // 固定电话 - describe: '', // 队伍描述 + teamLevel: '', // 队伍级别 + principalUid: 1, // 队伍负责人 + principalDepartmentId: 2, //负责人部门 + principalPhone: '', // 负责人手机 + telephoneNumber: '', // 固定电话 + teamDesc: '', //队伍描述 + }, + menuData: [], }); // 打开弹窗 - const openDialog = () => { - // state.ruleForm = row; - isShowDialog.value = true; - }; - // 关闭弹窗 - const closeDialog = () => { - isShowDialog.value = false; - }; - // 取消 - const onCancel = () => { - closeDialog(); + const openDialog = (type: string, value: any) => { + state.isShowDialog = true; + if(type === '新建'){ + state.title = '新建应急队伍管理' + // state.buttonName = '新增' + state.ruleForm = { + teamName: '', // 队伍名称 + teamLevel: '', // 队伍级别 + principalUid: 1, // 队伍负责人 + principalDepartmentId: 2, //负责人部门 + principalPhone: '', // 负责人手机 + telephoneNumber: '', // 固定电话 + teamDesc: '', //队伍描述 + } + }else{ + state.title = '修改应急队伍管理' + // state.buttonName = '确定' + state.ruleForm = JSON.parse(JSON.stringify(value)) + } }; // 上传附件 const fileList = ref<UploadUserFile[]>([]) //定义树形下拉框 - const responsibleDepartment = ref() + const principalDepartmentId = ref() const data = [ { value: '1', @@ -277,28 +316,28 @@ trigger: 'change', }, ], - teamLeader: [ + principalUid: [ { required: true, message: '队伍负责人不能为空', trigger: 'change', }, ], - responsibleDepartment: [ + principalDepartmentId: [ { required: true, message: '负责人部门不能为空', trigger: 'change', }, ], - teamPhone: [ + principalPhone: [ { required: true, message: '负责人手机不能为空', trigger: 'change', }, ], - telephone: [ + telephoneNumber: [ { required: true, message: '固定电话不能为空', @@ -306,17 +345,6 @@ }, ], }) - // 表单提交验证必填项 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate((valid, fields) => { - if (valid) { - console.log('submit!') - } else { - console.log('error submit!', fields) - } - }) - } //全屏 const full = ref(false); const toggleFullscreen = () => { @@ -326,22 +354,59 @@ full.value = false; } }; + // 新增 + const onSubmit = async () => { + if(state.title === '新建应急队伍管理'){ + let res = await contingencyApi().addEmergencyTeam(state.ruleForm) + if(res.data.code === '200'){ + ElMessage({ + type:'success', + message:'队伍新增成功', + // duration:2000 + }) + state.isShowDialog = false + context.emit('refreshRoleList') + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } + } + else{ + let res = await contingencyApi().editEmergencyTeam(state.ruleForm) + if(res.data.code === '200'){ + ElMessage({ + type:'success', + message:'队伍修改成功', + // duration:2000 + }) + state.isShowDialog = false + context.emit('refreshRoleList') + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } + } + }; return { openDialog, - closeDialog, - isShowDialog, - onCancel, + // closeDialog, + // isShowDialog, + // onCancel, fileList, - responsibleDepartment, + principalDepartmentId, data, activeName, handleClick, tableData, multipleSelection, Search, - ruleForm, - ruleFormRef, - submitForm, + onSubmit, + // ruleForm, + // ruleFormRef, rules, addRef, userRef, @@ -350,6 +415,7 @@ toggleFullscreen, FullScreen, full, + ...toRefs(state), }; }, }); @@ -364,4 +430,5 @@ ::v-deep .el-table__cell { font-weight: 400; } -</style> \ No newline at end of file +</style> + diff --git a/src/views/contingencyManagement/contingency/index.vue b/src/views/contingencyManagement/contingency/index.vue index 68f6335..3e66827 100644 --- a/src/views/contingencyManagement/contingency/index.vue +++ b/src/views/contingencyManagement/contingency/index.vue @@ -25,7 +25,7 @@ </div> <div class="button_Line"> <div class="button_Left"> - <el-button size="default" type="primary" @click="onOpenAdd('新建')"> + <el-button size="default" type="primary" @click="onOpenAdd('新建','')"> <el-icon> <Plus /> </el-icon>新建 @@ -42,17 +42,17 @@ </el-button> </div> <div class="button_Right"> - <el-button @click="upButton"> + <el-button size="default" @click="upButton"> <el-icon> <Upload /> </el-icon> </el-button> - <el-button> + <el-button size="default"> <el-icon> <Download /> </el-icon> </el-button> - <el-button> + <el-button size="default"> <el-icon> <Refresh /> </el-icon> @@ -70,8 +70,8 @@ /> <el-table-column prop="teamName" label="队伍名称" show-overflow-tooltip sortable></el-table-column> <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="teamDescription" label="队伍描述" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="teamPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column> + <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column> + <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column> <el-table-column prop="attachments" label="相关附件" show-overflow-tooltip sortable></el-table-column> <el-table-column label="操作" width="200" align="center" fixed="right"> <template #default="scope"> @@ -80,7 +80,7 @@ <View /> </el-icon>查看 </el-button> - <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenEdit(scope.row)"> + <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenAdd('修改',scope.row)"> <el-icon style="margin-right: 5px;"> <EditPen /> </el-icon>修改 @@ -107,9 +107,9 @@ > </el-pagination> </el-card> + <OpenAdd ref="addRef" @refreshRoleList="initTableData"/> <OpenSee ref="seeRef" /> - <OpenAdd ref="addRef" /> - <OpenEdit ref="editRef" /> +<!-- <OpenEdit ref="editRef" />--> <upData ref="upShow"></upData> </div> </template> @@ -137,18 +137,19 @@ EditPen, } from '@element-plus/icons-vue' import OpenAdd from '/@/views/contingencyManagement/contingency/component/openAdd.vue'; -import OpenEdit from '/@/views/contingencyManagement/contingency/component/openEdit.vue'; +// import OpenEdit from '/@/views/contingencyManagement/contingency/component/openEdit.vue'; import OpenSee from '/@/views/contingencyManagement/contingency/component/openSee.vue'; import UpData from '/@/views/contingencyManagement/contingency/component/upData.vue'; import {contingencyApi} from "/@/api/contingency"; +import {useRoleApi} from "/@/api/system/role"; // 定义表格数据类型 interface User { teamName: string teamLevel: string - teamDescription: string - teamPhone: string + teamDesc: string + principalPhone: string telephone: string; describe: string; responsibleDepartment: string @@ -158,11 +159,7 @@ // 定义接口来定义对象的类型 interface TableDataRow { - // teamName: string; - // teamLevel: string; - // teamDescription: string; - // teamPhone: string; - // attachments: string; + } // @@ -178,7 +175,7 @@ components: { OpenAdd, OpenSee, - OpenEdit, + // OpenEdit, View, EditPen, Plus, @@ -202,16 +199,16 @@ }) // 搜索按钮 const onSubmit = async () => { - // let res = await contingencyApi().getTeamManagementList(formInline) - // if(res.data.code === '200'){ - // state.tableData.data = res.data.data; - // state.tableData.total = state.tableData.data.length; - // }else{ - // ElMessage({ - // type:'warning', - // message:res.data.msg - // }) - // } + let res = await contingencyApi().getTeamManagementList(formInline) + if(res.data.code === '200'){ + state.tableData.data = res.data.data; + state.tableData.total = state.tableData.data.length; + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } } const multipleTableRef = ref<InstanceType<typeof ElTable>>() @@ -243,84 +240,43 @@ }) } }; - // const tableData: User[] = [ - // { - // teamName: '应急救援组', - // teamLevel: '公司', - // teamDescription: '实施抢险抢险的应急方案和措施实施 ;', - // telephone: '051383830321', - // teamPhone: '13603812900', - // describe: '(1)实施抢险抢险的应急方案和措施实施 ;\n' + - // '(2)负责现场被困人员、受伤人员抢救工作;\n' + - // '(3)在事故有可能扩大进行抢险抢修或救援时,高度注意避免意外伤害;\n' + - // '(4)抢险抢修或救援结束后,对结果进行复查和评估。', - // responsibleDepartment: '仪表班', - // teamLeader: '王磊', - // }, - // { - // teamName: '应急救援组', - // teamLevel: '公司', - // teamDescription: '实施抢险抢险的应急方案和措施实施 ;', - // telephone: '051383830321', - // teamPhone: '13603812900', - // describe: '(1)实施抢险抢险的应急方案和措施实施 ;\n' + - // '(2)负责现场被困人员、受伤人员抢救工作;\n' + - // '(3)在事故有可能扩大进行抢险抢修或救援时,高度注意避免意外伤害;\n' + - // '(4)抢险抢修或救援结束后,对结果进行复查和评估。', - // responsibleDepartment: '仪表班', - // teamLeader: '王磊', - // }, - // { - // teamName: '应急救援组', - // teamLevel: '公司', - // teamDescription: '实施抢险抢险的应急方案和措施实施 ;', - // telephone: '051383830321', - // teamPhone: '13603812900', - // describe: '(1)实施抢险抢险的应急方案和措施实施 ;\n' + - // '(2)负责现场被困人员、受伤人员抢救工作;\n' + - // '(3)在事故有可能扩大进行抢险抢修或救援时,高度注意避免意外伤害;\n' + - // '(4)抢险抢修或救援结束后,对结果进行复查和评估。', - // responsibleDepartment: '仪表班', - // teamLeader: '王磊', - // }, - // { - // teamName: '应急救援组', - // teamLevel: '公司', - // teamDescription: '实施抢险抢险的应急方案和措施实施 ;', - // telephone: '051383830321', - // teamPhone: '13603812900', - // describe: '(1)实施抢险抢险的应急方案和措施实施 ;\n' + - // '(2)负责现场被困人员、受伤人员抢救工作;\n' + - // '(3)在事故有可能扩大进行抢险抢修或救援时,高度注意避免意外伤害;\n' + - // '(4)抢险抢修或救援结束后,对结果进行复查和评估。', - // responsibleDepartment: '仪表班', - // teamLeader: '王磊', - // } - // ] //查看用户弹窗 const seeRef = ref(); const onOpenSee = (row: TableDataRow) => { seeRef.value.openDialog(row); }; - // 打开新增用户弹窗 + // 打开新增应急队伍弹窗 const addRef = ref(); - const onOpenAdd = () => { - addRef.value.openDialog(); + const onOpenAdd = (type: string, value: any) => { + addRef.value.openDialog(type, value); }; // 打开修改用户弹窗 - const editRef = ref(); - const onOpenEdit = (row: TableDataRow) => { - editRef.value.openDialog(row); - }; + // const editRef = ref(); + // const onOpenEdit = (row: TableDataRow) => { + // editRef.value.openDialog(row); + // }; // 删除用户 - const onRowDel = (row: TableDataRow) => { - ElMessageBox.confirm(`此操作将永久删除账户名称:“${row}”,是否继续?`, '提示', { + const onRowDel = (row: any) => { + ElMessageBox.confirm(`此操作将永久删除队伍名称:“${row}”,是否继续?`, '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }) - .then(() => { - ElMessage.success('删除成功'); + .then(async () => { + let res = await useRoleApi().deleteEmergencyTeam({roleId:row.roleId}) + if(res.data.code ==='200'){ + ElMessage({ + type:'success', + duration:2000, + message:'删除成功' + }) + await initTableData() + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } }) .catch(() => {}); }; @@ -331,7 +287,6 @@ const onHandleCurrentChange = (val: number) => { formInline.pageIndex = val; }; - // // 分页改变 // 页面加载时 onMounted(() => { initTableData(); @@ -346,10 +301,11 @@ upButton, upShow, // tableData, + initTableData, onOpenSee, //查看 seeRef, - onOpenEdit, //编辑 - editRef, + // onOpenEdit, //编辑 + // editRef, onOpenAdd, //新增 addRef, onRowDel, @@ -373,6 +329,7 @@ display: flex; flex-direction: row; justify-content: space-between; + margin-bottom: 10px; } .pages{ padding-top: 20px; diff --git a/src/views/contingencyManagement/panManagement/index.vue b/src/views/contingencyManagement/panManagement/index.vue index 01a3981..1a1c7e7 100644 --- a/src/views/contingencyManagement/panManagement/index.vue +++ b/src/views/contingencyManagement/panManagement/index.vue @@ -2,19 +2,27 @@ <div class="system-user-container"> <el-card shadow="hover"> <div class="system-user-search mb15"> - <el-input size="default" placeholder="预案名称" style="max-width: 215px;"> </el-input> - <el-select size="default" v-model="value" placeholder="请选择预案类型" class="ml10" style="max-width: 215px;"> - <el-option label="综合应急预案" value="admin"></el-option> - <el-option label="现场处置方案" value="common"></el-option> - <el-option label="专项应急预案" value="common"></el-option> - <el-option label="其他预案" value="common"></el-option> - </el-select> - <el-button size="default" type="primary" class="ml10"> - 查询 - </el-button> - <el-button size="default" class="ml10" @click="submitReset"> - 重置 - </el-button> + <el-form :inline="true" :model="formInline" class="demo-form-inline"> + <el-form-item> + <el-input size="default" placeholder="预案名称" style="max-width: 215px;"> </el-input> + </el-form-item> + <el-form-item> + <el-select size="default" v-model="value" placeholder="请选择预案类型" class="ml10" style="max-width: 215px;"> + <el-option label="综合应急预案" value="admin"></el-option> + <el-option label="现场处置方案" value="common"></el-option> + <el-option label="专项应急预案" value="common"></el-option> + <el-option label="其他预案" value="common"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button size="default" type="primary" class="ml10"> + 查询 + </el-button> + <el-button size="default" class="ml10" @click="submitReset"> + 重置 + </el-button> + </el-form-item> + </el-form> </div> <div class="button_Line"> <div class="button_Left"> @@ -176,7 +184,7 @@ import OpenAdd from '/@/views/contingencyManagement/panManagement/component/openAdd.vue'; import AbolishLibrary from '/@/views/contingencyManagement/panManagement/component/abolishLibrary.vue'; import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue'; - +import {emergencyPlanApi} from "/@/api/emergencyPlan"; // 定义表格数据类型 interface User { teamName: string -- Gitblit v1.9.2