From bbf935c44b77eb0997f9332cd0e7f820f2bd2804 Mon Sep 17 00:00:00 2001 From: zhaojiale <631455805@qq.com> Date: 星期三, 03 八月 2022 15:41:37 +0800 Subject: [PATCH] 事故快报除图片外完成 --- src/views/contingencyManagement/contingency/component/openAdd.vue | 707 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 464 insertions(+), 243 deletions(-) diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue index f09ff4c..af81142 100644 --- a/src/views/contingencyManagement/contingency/component/openAdd.vue +++ b/src/views/contingencyManagement/contingency/component/openAdd.vue @@ -1,139 +1,121 @@ <template> - <div class="system-edit-user-container"> - <el-dialog - title="新建应急队伍管理" - v-model="isShowDialog" - width="769px" - draggable - > - <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="请填写队伍名称"></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="teamLeader"> - <el-input - v-model="ruleForm.teamLeader" - placeholder="请选择" - class="input-with-select" - > - <template #append> - <el-button :icon="Search"/> - </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="responsibleDepartment"> - <el-tree-select - v-model="ruleForm.responsibleDepartment" - :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> - </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> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="队伍描述"> - <el-input - class="textarea" - v-model="ruleForm.describe" - 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="相关附件"> - <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-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> - </el-form> - <template #footer> + <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" disabled> + <template #append> + <el-button :icon="Search" @click="openUser" disabled/> + </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" :props="propse" clearable 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" :disabled="disabled"> + <el-button type="primary" size="default" @click="onAddEmergencyPersonnel" :disabled="disabled">新增</el-button> + <el-table + :data="tableData" + style="width: 100%; margin-top: 15px" + ref="multipleTableRef" + :header-cell-style="{ background: '#f6f7fa', color: '#909399' }" + :disabled="disabled" + > + <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="onCancel" size="default">关闭</el-button> - <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button> + <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" /> - </div> + </template> + </el-dialog> + <AddEmergencyPersonnel ref="addRef" @myAdd="onMyAdd"/> + <DailogSearchUser ref="userRef" @SearchUsers="onUser" /> + </div> </template> <script lang="ts"> -import { reactive, +import { + reactive, ref, - defineComponent + defineComponent, + onMounted, + // toRefs, } from 'vue'; +import { + ElMessage, + ElMessageBox, +} from 'element-plus'; import type { UploadUserFile, @@ -143,113 +125,158 @@ } from 'element-plus' import { - Search + Search, + FullScreen } from '@element-plus/icons-vue' import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue"; -// 定义表格数据类型 -interface User { - personnelName: string - jobNo: string - phone: string; - position: string; -} +import DailogSearchUser from "/@/components/DailogSearchUser/index.vue" +import {contingencyApi} from "/@/api/contingency"; +import {goalManagementApi} from "/@/api/goalManagement"; +// import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan"; + + export default defineComponent({ name: 'openAdd', components: { - AddEmergencyPersonnel + AddEmergencyPersonnel, + DailogSearchUser, }, - setup() { - const isShowDialog = ref(false) - - const ruleFormRef = ref<FormInstance>() - //定义表单 - const ruleForm = reactive({ + setup(prop, {emit}) { + const isShowDialog = ref(false); + const ruleFormRef = ref<FormInstance>(); + const ruleForm =ref({ teamName: '', // 队伍名称 - teamLeader: '', //队伍负责人 - department: [], // 负责人部门 - phone: '', // 负责人手机 - telephone: '', // 固定电话 - describe: '', // 队伍描述 - }); + teamLevel: '', // 队伍级别 + principalUid: '', // 队伍负责人 + principalDepartmentId: '', //负责人部门 + principalPhone: '', // 负责人手机 + telephoneNumber: '', // 固定电话 + teamDesc: '', //队伍描述 + fileList: [ + { + fileUrl: 'url', + fileName: 'name', + } + ], + // memberList: [ + // { + // userUid: '', + // gender: '', + // jobNumber: '', + // name: '', + // phone: '', + // position: '', + // } + // ] + }); + const titles = ref(); + const disabled = ref(); // 打开弹窗 - const openDialog = () => { - // state.ruleForm = row; + const openDialog = (title: string,id: number, type: boolean) => { isShowDialog.value = true; - }; - // 关闭弹窗 - const closeDialog = () => { - isShowDialog.value = false; - }; - // 取消 - const onCancel = () => { - closeDialog(); - }; + 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[]>([]) + //部门树 + const department = () => { + goalManagementApi() + .getTreedepartment() + .then((res) => { + if (res.data.code == 200) { + data.value = res.data.data; + } else { + ElMessage.error(res.data.msg); + } + }); + }; //定义树形下拉框 - const responsibleDepartment = ref() - const data = [ - { - value: '1', - label: '广汇能源综合物流发展有限责任公司', - children: [ - { - value: '1-1', - label: '经营班子', - children: [], - }, - ], - }, - { - value: '2', - label: '生产运行部', - children: [ - { - value: '2-1', - label: '灌装一班', - children: [] - }, - { - value: '2-2', - label: '工艺四班', - children: [], - }, - ], - }, - { - value: '3', - label: '设备部', - children: [ - { - value: '3-1', - label: '仪表班', - children: [], - }, - { - value: '3-2', - label: '机修班', - children: [], - }, - ], - }, - ] + const principalDepartmentId = ref() + const propse = { + label: 'depName', + children: 'children', + value: 'depId', + }; + const data=ref() + onMounted(() => { + department(); + }); + // const data = [ + // { + // value: '1', + // label: '广汇能源综合物流发展有限责任公司', + // children: [ + // { + // value: '11', + // label: '经营班子', + // children: [], + // }, + // ], + // }, + // { + // value: '2', + // label: '生产运行部', + // children: [ + // { + // value: '21', + // label: '灌装一班', + // children: [] + // }, + // { + // value: '22', + // label: '工艺四班', + // children: [], + // }, + // ], + // }, + // { + // value: '3', + // label: '设备部', + // children: [ + // { + // value: '31', + // label: '仪表班', + // children: [], + // }, + // { + // value: '32', + // label: '机修班', + // children: [], + // }, + // ], + // }, + // ] + // 打开用户选择弹窗 + const userRef = ref(); + const openUser = () => { + userRef.value.openDailog(); + }; + const nameC = ref(); + const onUser = (e:any) => { + ruleForm.value.principalUid = e.uid + nameC.value=e.realName + }; + // 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: [ @@ -266,28 +293,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: '固定电话不能为空', @@ -295,48 +322,242 @@ }, ], }) - // 表单提交验证必填项 - 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 = () => { + if (full.value == false) { + full.value = true; + } else { + full.value = false; + } + }; + 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: '', + // } + // ] + }; + } + }; + 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 = (title:string,data: any) => { + addRef.value.openDialog('新建应急队伍人员',data); + }; + // 新增后刷新 + 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, - responsibleDepartment, + principalDepartmentId, data, activeName, handleClick, tableData, - multipleSelection, Search, - ruleForm, + resetForm, + isShowDialog, ruleFormRef, - submitForm, + ruleForm, rules, addRef, + userRef, + titles, + disabled, + propse, + emit, + onSubmit, + openUser, onAddEmergencyPersonnel, + toggleFullscreen, + FullScreen, + full, + onUser, + nameC, + onMyAdd, + // listApi, + onEdit, + onRowDel, + department, }; }, }); </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> \ No newline at end of file +</style> + -- Gitblit v1.9.2