From 17c7c68a17e6502d09299ea385e01413595c17d4 Mon Sep 17 00:00:00 2001 From: shj <1790240199@qq.com> Date: 星期五, 29 七月 2022 09:28:20 +0800 Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqtOut --- src/views/contingencyManagement/contingency/component/openAdd.vue | 620 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 356 insertions(+), 264 deletions(-) diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue index d88e035..e068c76 100644 --- a/src/views/contingencyManagement/contingency/component/openAdd.vue +++ b/src/views/contingencyManagement/contingency/component/openAdd.vue @@ -1,137 +1,106 @@ <template> - <div class="system-edit-user-container"> - <el-dialog - :title="title" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form - ref="ruleFormRef" - :model="ruleForm" - size="default" - :rules="rules" - label-width="120px" - > - <el-row :gutter="35"> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍名称" prop="teamName"> - <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称" disabled="disabled"></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="teamLevel"> - <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择"> - <el-option label="公司" value="admin"></el-option> - <el-option label="分厂-车间" value="common"></el-option> - <el-option label="工序-班组等" value="shang"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍负责人" prop="principalUid"> - <el-input - v-model="ruleForm.principalUid" - placeholder="请选择" - class="input-with-select" - > - <template #append> - <el-button :icon="Search" @click="openUser"/> - </template> - </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="principalDepartmentId"> - <el-tree-select - 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="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="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="队伍描述" prop="teamDesc"> - <el-input - class="textarea" - v-model="ruleForm.teamDesc" - type="textarea" - maxlength="150" - 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="相关附件" prop="fileList"> - <el-upload - v-model:file-list="fileList" - class="upload-demo" - action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" - :on-change="handleChange" - > - <el-button type="primary" - >点击上传</el-button> - <template #tip> - <div class="el-upload__tip"> - 添加相关附件 - </div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> - </el-form> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> - <el-tab-pane label="应急队伍人员" name="first"> - <el-button type="primary" size="default" @click="onAddEmergencyPersonnel">新增</el-button> - <el-table - :data="tableData" - style="width: 100%;margin-top: 15px;" - ref="multipleTableRef" - :header-cell-style="{background:'#f6f7fa',color:'#909399'}" - > - <el-table-column prop="jobNo" label="人员工号" show-overflow-tooltip></el-table-column> - <el-table-column prop="personnelName" label="人员名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="phone" label="手机号码" show-overflow-tooltip></el-table-column> - <el-table-column prop="position" label="职位" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button disabled size="small" text="plain" >查看 - </el-button> - <el-button disabled size="small" text="plain" style="margin-right: 5px;">编辑 - </el-button> - <el-button disabled size="small" text="plain" style="margin-right: 5px;">删除 - </el-button> - </template> - </el-table-column> - </el-table> - </el-tab-pane> - </el-tabs> - </el-col> - </el-row> - <template #footer> - <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"/> - </div> + <div class="system-edit-user-container"> + <el-dialog :title="titles" v-model="isShowDialog" width="769px" draggable :fullscreen="full"> + <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> + <el-form ref="ruleFormRef" :model="ruleForm" size="default" :rules="rules" label-width="120px" :disabled="disabled"> + <el-row :gutter="35"> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="队伍名称" prop="teamName"> + <el-input v-model="ruleForm.teamName" 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="teamLevel"> + <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择"> + <el-option label="公司" value="admin"></el-option> + <el-option label="分厂-车间" value="common"></el-option> + <el-option label="工序-班组等" value="shang"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="队伍负责人" prop="principalUid"> + <el-input v-model="ruleForm.principalUid" placeholder="请选择" class="input-with-select"> + <template #append> + <el-button :icon="Search" @click="openUser" /> + </template> + </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="principalDepartmentId"> + <el-tree-select 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="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="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="队伍描述" prop="teamDesc"> + <el-input class="textarea" v-model="ruleForm.teamDesc" type="textarea" maxlength="150" 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="相关附件" prop="fileList"> + <el-upload + v-model:file-list="fileList" + class="upload-demo" + action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" + :on-change="handleChange" + > + <el-button type="primary">点击上传</el-button> + <template #tip> + <div class="el-upload__tip">添加相关附件</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-row :gutter="35"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> + <el-tab-pane label="应急队伍人员" name="first"> + <el-button type="primary" size="default" @click="onAddEmergencyPersonnel">新增</el-button> + <el-table + :data="tableData" + style="width: 100%; margin-top: 15px" + ref="multipleTableRef" + :header-cell-style="{ background: '#f6f7fa', color: '#909399' }" + > + <el-table-column prop="jobNumber" label="人员工号" show-overflow-tooltip></el-table-column> + <el-table-column prop="name" label="人员名称" show-overflow-tooltip></el-table-column> + <el-table-column prop="phone" label="手机号码" show-overflow-tooltip></el-table-column> + <el-table-column prop="position" label="职位" show-overflow-tooltip></el-table-column> + <el-table-column label="操作" width="200" align="center"> + <template #default="scope"> + <el-button disabled size="small" @click="onEdit('详情',scope.row.id)" >查看 </el-button> + <el-button disabled size="small" @click="onEdit('详情',scope.row.id)" style="margin-right: 5px">编辑 </el-button> + <el-button disabled size="small" @click="onRowDel(scope.row.id)" style="margin-right: 5px">删除 </el-button> + </template> + </el-table-column> + </el-table> + </el-tab-pane> + </el-tabs> + </el-col> + </el-row> + <template #footer> + <span class="dialog-footer"> + <el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button> + <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="onSubmit(titles, ruleFormRef)">确定</el-button> + </span> + </template> + </el-dialog> + <AddEmergencyPersonnel ref="addRef" @myAdd="onMyAdd"/> + <DailogSearchUser ref="userRef" @SearchUser="onUser" /> + </div> </template> <script lang="ts"> @@ -139,13 +108,17 @@ reactive, ref, defineComponent, - toRefs, + // toRefs, } from 'vue'; -import { ElMessage } from 'element-plus'; +import { + ElMessage, + ElMessageBox, +} from 'element-plus'; + import type { UploadUserFile, TabsPaneContext, - // FormInstance, + FormInstance, FormRules, } from 'element-plus' @@ -154,86 +127,62 @@ FullScreen } from '@element-plus/icons-vue' import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue"; -import UserSelections from "/@/components/userSelections/index.vue" +import DailogSearchUser from "/@/components/DailogSearchUser/index.vue" import {contingencyApi} from "/@/api/contingency"; -// 定义表格数据类型 -interface User { - personnelName: string - jobNo: string - phone: string; - position: string; -} +// import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan"; - - -// 定义接口来定义对象的类型 -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; - fileList: string, - }; - menuData: Array<MenuDataTree>; -} export default defineComponent({ name: 'openAdd', components: { AddEmergencyPersonnel, - UserSelections, + DailogSearchUser, }, - setup(prop,context) { - const state = reactive<RoleState>({ - isShowDialog: false, - title:'', - // buttonName:'', - ruleForm: { + setup(prop, {emit}) { + const isShowDialog = ref(false); + const ruleFormRef = ref<FormInstance>(); + const ruleForm =ref({ teamName: '', // 队伍名称 teamLevel: '', // 队伍级别 - principalUid: 1, // 队伍负责人 - principalDepartmentId: 2, //负责人部门 + principalUid: '', // 队伍负责人 + principalDepartmentId: '', //负责人部门 principalPhone: '', // 负责人手机 telephoneNumber: '', // 固定电话 teamDesc: '', //队伍描述 - fileList: [], - }, - menuData: [], - }); + fileList: [ + { + fileUrl: 'url', + fileName: 'name', + } + ], + // memberList: [ + // { + // userUid: '', + // gender: '', + // jobNumber: '', + // name: '', + // phone: '', + // position: '', + // } + // ] + }); + const titles = ref(); + const disabled = ref(); // 打开弹窗 - 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: '', //队伍描述 - fileList: [], - } - }else{ - state.title = '修改应急队伍管理' - // state.buttonName = '确定' - state.ruleForm = JSON.parse(JSON.stringify(value)) + const openDialog = (title: string,id: number, type: boolean) => { + isShowDialog.value = true; + titles.value = title; + disabled.value = type; + if (title == '查看应急队伍管理' || title == '修改应急队伍管理') { + contingencyApi() + .seeEmergencyTeam(id) + .then((res) => { + if (res.data.code == 200) { + ruleForm.value = res.data.data; + } + }); } - }; + } // 上传附件 const fileList = ref<UploadUserFile[]>([]) @@ -245,7 +194,7 @@ label: '广汇能源综合物流发展有限责任公司', children: [ { - value: '1-1', + value: '11', label: '经营班子', children: [], }, @@ -256,12 +205,12 @@ label: '生产运行部', children: [ { - value: '2-1', + value: '21', label: '灌装一班', children: [] }, { - value: '2-2', + value: '22', label: '工艺四班', children: [], }, @@ -272,12 +221,12 @@ label: '设备部', children: [ { - value: '3-1', + value: '31', label: '仪表班', children: [], }, { - value: '3-2', + value: '32', label: '机修班', children: [], }, @@ -287,24 +236,17 @@ // 打开用户选择弹窗 const userRef = ref(); const openUser = () => { - userRef.value.openDialog(); + userRef.value.openDailog(); + }; + const onUser = (e:any) => { + ruleForm.value.principalUid=e.id }; //定义tabs切换 const activeName = ref('first') - const handleClick = (tab: TabsPaneContext, event: Event) => { console.log(tab, event) } - //定义表格数据 - const multipleSelection = ref<User[]>([]) - const tableData: User[] = [] - - //添加队伍负责人弹窗 - const addRef = ref(); - const onAddEmergencyPersonnel = () => { - addRef.value.openDialog(); - }; // 必填项提示 const rules = reactive<FormRules>({ teamName: [ @@ -359,81 +301,231 @@ 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 - }) - } + const onSubmit = async (title: string, formEl: FormInstance | undefined) => { + if (title == '新建应急队伍管理') { + if (!formEl) return; + await formEl.validate((valid, fields) => { + if (valid) { + isShowDialog.value = false; + contingencyApi() + .addEmergencyTeam(ruleForm.value) + .then((res) => { + if (res.data.code == 200) { + ElMessage({ + showClose: true, + message: res.data.msg, + type: 'success', + }); + emit('myAdd', true); + } else { + ElMessage({ + showClose: true, + message: res.data.msg, + type: 'error', + }); + emit('myAdd', true); + } + formEl.resetFields(); + }); + } else { + console.log('error submit!', fields); + } + }); + } else if (title == '修改应急队伍管理') { + if (!formEl) return; + await formEl.validate((valid, fields) => { + if (valid) { + isShowDialog.value = false; + contingencyApi() + .editEmergencyTeam(ruleForm.value) + .then((res) => { + if (res.data.code == 200) { + ElMessage({ + showClose: true, + message: '修改成功', + type: 'success', + }); + emit('myAdd', true); + } else { + ElMessage({ + showClose: true, + message: res.data.msg, + type: 'error', + }); + emit('myAdd', true); + } + formEl.resetFields(); + }); + } else { + console.log('error submit!', fields); + } + }); + formEl.resetFields(); + ruleForm.value = { + teamName: '', // 队伍名称 + teamLevel: '', // 队伍级别 + principalUid: '', // 队伍负责人 + principalDepartmentId: '', //负责人部门 + principalPhone: '', // 负责人手机 + telephoneNumber: '', // 固定电话 + teamDesc: '', //队伍描述 + fileList: [ + { + fileUrl: 'url', + fileName: 'name', + } + ], + // memberList: [ + // { + // userUid: '', + // gender: '', + // jobNumber: '', + // name: '', + // phone: '', + // position: '', + // } + // ] + }; } - 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 - }) - } + }; + const resetForm = (formEl: FormInstance | undefined) => { + isShowDialog.value = false; + if (!formEl) return; + formEl.resetFields(); + }; + // 列表参数 + // const listQuery = ref ({ + // teamId: '' + // }); + // 列表数据请求 + // const listApi = async (title: string, formEl: FormInstance | undefined) => { + // if (!formEl) return; + // await formEl.validate((valid, fields) => { + // if (valid) { + // isShowDialog.value = false; + // contingencyApi() + // .getEmergencyTeamPersonnelList(listQuery) + // .then((res) => { + // if (res.data.code == 200) { + // ElMessage({ + // showClose: true, + // message: res.data.msg, + // type: 'success', + // }); + // emit('myAdd', true); + // } else { + // ElMessage({ + // showClose: true, + // message: res.data.msg, + // type: 'error', + // }); + // emit('myAdd', true); + // } + // formEl.resetFields(); + // }); + // } else { + // console.log('error submit!', fields); + // } + // }); + // formEl.resetFields(); + // const listQuery = { + // teamId: '' + // }; + // }; + // 定义表格数据 + const tableData = ref([]); + //添加队伍负责人弹窗 + const addRef = ref(); + const onAddEmergencyPersonnel = () => { + addRef.value.openDialog('新建应急队伍人员',false); + }; + // 新增后刷新 + const onMyAdd = (e: boolean) => { + if (e) { + // listApi(); + } else { + // listApi(); } + }; + // 打开修改弹窗 + const onEdit = (val: string, row: object) => { + if (val == '详情') { + addRef.value.openDialog('查看应急队伍人员',row,true); + } else { + addRef.value.openDialog('修改应急队伍人员',row,false); + } + }; + // 删除 + const onRowDel = (data: any) => { + ElMessageBox.confirm('确定删除所选项吗?', '提示',{ + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + }).then(() => { + contingencyApi() + .deleteEmergencyTeamPersonnel(data) + .then((res) => { + if (res.data.code == 200) { + ElMessage({ + showClose: true, + message: res.data.msg, + type: 'success', + }); + } else { + ElMessage({ + showClose: true, + message: res.data.msg, + type: 'error', + }); + } + }); + }) + .catch(() => {}); }; return { openDialog, - // closeDialog, - // isShowDialog, - // onCancel, fileList, principalDepartmentId, data, activeName, handleClick, tableData, - multipleSelection, Search, - onSubmit, - // ruleForm, - // ruleFormRef, + resetForm, + isShowDialog, + ruleFormRef, + ruleForm, rules, addRef, userRef, + titles, + disabled, + emit, + onSubmit, openUser, onAddEmergencyPersonnel, toggleFullscreen, FullScreen, full, - ...toRefs(state), + onUser, + // listQuery, + onMyAdd, + // listApi, + onEdit, + onRowDel, }; }, }); </script> <style scoped lang="scss"> -.textarea{ - height: 168px!important; +.textarea { + height: 168px !important; } -.textarea ::v-deep .el-textarea__inner{ - height: 168px!important; +.textarea ::v-deep .el-textarea__inner { + height: 168px !important; } ::v-deep .el-table__cell { - font-weight: 400; + font-weight: 400; } </style> -- Gitblit v1.9.2