From 15315b1772036eb5168792aac0121f6e9005b11e Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期一, 08 一月 2024 10:16:26 +0800 Subject: [PATCH] Default Changelist --- src/layout/navBars/breadcrumb/user.vue | 12 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue | 10 src/views/system/personShiftManage/scheduleManage/schedule/index.vue | 65 + src/views/newSpecialWorkSystem/workTicket/zysq/index.vue | 119 ++- src/utils/toolsValidate.ts | 5 src/views/system/user/component/dialogCertificate.vue | 1 src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue | 224 +++-- src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue | 249 ++++-- src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue | 218 +++-- src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue | 2 src/views/system/user/component/userDialog.vue | 15 src/i18n/pages/login/zh-cn.ts | 4 src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue | 2 src/views/specialWorkSystem/specialIndex/index.vue | 40 src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue | 221 +++-- src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue | 223 +++-- src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue | 242 +++-- src/views/loginPage/component/accountLogin.vue | 37 src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue | 245 +++-- src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue | 228 +++-- src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue | 2 21 files changed, 1,306 insertions(+), 858 deletions(-) diff --git a/src/i18n/pages/login/zh-cn.ts b/src/i18n/pages/login/zh-cn.ts index 3367b53..96714be 100644 --- a/src/i18n/pages/login/zh-cn.ts +++ b/src/i18n/pages/login/zh-cn.ts @@ -9,8 +9,8 @@ two4: '友情链接', }, account: { - accountPlaceholder1: '用户名 admin 或不输均为 common', - accountPlaceholder2: '密码:123456', + accountPlaceholder1: '请输入用户名', + accountPlaceholder2: '请输入密码', accountPlaceholder3: '请输入验证码', accountBtnText: '登 录', }, diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue index b838098..6d8e1e8 100644 --- a/src/layout/navBars/breadcrumb/user.vue +++ b/src/layout/navBars/breadcrumb/user.vue @@ -1,7 +1,7 @@ <template> <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }"> <div class="logo"> - <img @click="toHome" src="../../../assets/menu/companyLogo.png" /> + <img src="../../../assets/menu/companyLogo.png" /> <span>{{ systemName }}</span> </div> <div style="display: flex; align-items: center; padding-right: 5px"> @@ -268,9 +268,9 @@ console.log(routeList); }); }; - const toHome = () => { - router.push({ path: 'newMenu' }); - }; + // const toHome = () => { + // router.push({ path: 'newMenu' }); + // }; // 页面加载时 onMounted(() => { if (Local.get('themeConfig')) { @@ -282,7 +282,6 @@ return { userInfos, backToMenu, - toHome, onLayoutSetingClick, onHandleCommandClick, onScreenfullClick, @@ -302,7 +301,6 @@ .logo{ img { height: 100%; - cursor: pointer; } span{ font-size: 32px; @@ -327,7 +325,6 @@ .logo{ img { height: 90%; - cursor: pointer; } span{ font-size: 28px; @@ -353,7 +350,6 @@ img { width: 60%; height: auto; - cursor: pointer; } span{ font-size: 22px; diff --git a/src/utils/toolsValidate.ts b/src/utils/toolsValidate.ts index 434466e..485fd04 100644 --- a/src/utils/toolsValidate.ts +++ b/src/utils/toolsValidate.ts @@ -256,9 +256,10 @@ * @param val 当前值字符串 * @returns 返回 true: 强密码正确 */ -export function verifyPasswordPowerful(val: string) { + +export function verifyPwd(val: string) { // false: 强密码不正确 - if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) return false; + if (!/^(?![a-zA-Z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*\-_]{6,16}$/.test(val)) return false; // true: 强密码正确 else return true; } diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue index 167d6b1..cbe9579 100644 --- a/src/views/loginPage/component/accountLogin.vue +++ b/src/views/loginPage/component/accountLogin.vue @@ -85,7 +85,7 @@ import { useUserInfo } from '/@/stores/userInfo'; import type { FormInstance, FormRules } from 'element-plus' import {workApplyApi} from "/@/api/specialWorkSystem/workApply"; -import {verifyPhone,verifyIdCard} from "/@/utils/toolsValidate" +import {verifyPhone,verifyIdCard,verifyPwd} from "/@/utils/toolsValidate" import { Base64 } from 'js-base64' export default defineComponent({ name: 'accountLogin', @@ -150,18 +150,31 @@ }else callback(); }, 400) } - // 修改密码 - const validatePass = (rule: any, value: any, callback: any) => { - if (value === '') { - callback(new Error('该内容不能为空')) - } else { - if (state.identity.rePassword !== '') { - if (!identifyRef.value) return - identifyRef.value.validateField('rePassword', () => null) - } - callback() + + let validatePwd = (rule: any, value: any, callback: any)=>{ + if(value === ''){ + callback(new Error('请输入密码')) + }else{ + if(!verifyPwd(value)){ + callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间')) + }else{ + callback() } + } } + + // 修改密码 + // const validatePass = (rule: any, value: any, callback: any) => { + // if (value === '') { + // callback(new Error('该内容不能为空')) + // } else { + // if (state.identity.rePassword !== '') { + // if (!identifyRef.value) return + // identifyRef.value.validateField('rePassword', () => null) + // } + // callback() + // } + // } const validatePass2 = (rule: any, value: any, callback: any) => { if (value === '') { callback(new Error('该内容不能为空')) @@ -175,7 +188,7 @@ realName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], identify: [{ required: true, validator: checkCode, trigger: 'blur'}], phone: [{ required: true, validator: checkPhone, trigger: 'blur' }], - password: [{ required: true, validator: validatePass, trigger: 'blur' }], + password: [{ required: true, validator: validatePwd, trigger: 'blur' }], rePassword: [{ required: true, validator: validatePass2, trigger: 'blur' }] }); diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue index 7798f8d..5eee2f8 100644 --- a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue +++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue @@ -44,6 +44,7 @@ <el-row class="cardTop"> <el-col :span="12" class="mainCardBtn"> <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button> + <el-button type="primary" :icon="Download" size="default" @click="exportSheet()">导出当日记录</el-button> </el-col> <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> </el-row> @@ -482,15 +483,15 @@ } // 导出方法 - const downLoadRecord = async (data: any) => { + const exportSheet = async () => { // let res = await workApplyApi().postPrinting(data); - axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ + axios.post(import.meta.env.VITE_API_URL + `/specialwork9step/work/export/excel`,{},{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ if (res) { const link = document.createElement('a') - let blob = new Blob([res.data],{type: 'application/pdf'}) + let blob = new Blob([res.data],{type: 'application/excel'}) link.style.display = "none"; link.href = URL.createObjectURL(blob); // 创建URL - link.setAttribute("download", state.downLoadName + "作业证.pdf"); + link.setAttribute("download", "作业申报记录.xlsx"); document.body.appendChild(link); link.click(); document.body.removeChild(link); @@ -559,6 +560,7 @@ viewStatus, abortRecordBtn, downLoadBtn, + exportSheet, getListByPage, handleSizeChange1, handleCurrentChange1, diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue index fb4cbf7..f54fabe 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue @@ -4,20 +4,20 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="涉及相关单位(部门)" prop="workDetail.involvedDepIds"> - <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :props="depProps2" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :props="depProps2" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> </el-row> @@ -64,22 +64,22 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> @@ -92,7 +92,7 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> @@ -108,7 +108,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -117,7 +117,7 @@ <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -208,7 +208,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> <!-- <el-table-column prop="address" label="确认人">--> @@ -226,15 +226,15 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -259,7 +259,7 @@ <!-- </el-col>--> <!-- </el-row>--> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -276,7 +276,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -289,28 +289,28 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -319,12 +319,25 @@ <el-form-item label="签字人" prop="workDetail.signUid"> <el-select v-model="form.workDetail.signUid" filterable clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" /> </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -354,7 +367,7 @@ interface stateType { form: Object, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, depProps2:{}, casProps:{} @@ -365,6 +378,7 @@ fileList: Array<file>, uploadUrl: string, dialogVisible: Boolean, + tabLoading: Boolean, dialogImageUrl: string | null, imgLimit: number, } @@ -374,16 +388,18 @@ export default defineComponent({ name: 'brokenForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 5, workLevel: 0, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -400,6 +416,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -410,11 +427,10 @@ signUid: null } }, - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -432,6 +448,7 @@ multiple: true }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -439,8 +456,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -461,6 +478,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -469,8 +487,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -491,6 +509,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -498,8 +517,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -520,14 +539,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -555,7 +575,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -570,6 +590,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -580,6 +601,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -589,12 +611,13 @@ state.form.involveOtherWork = workSelectRef.value.selected } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(5) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -614,24 +637,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -653,12 +679,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id: any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -694,18 +731,19 @@ return } } - if(Array.isArray(state.form.involveOtherWork)){ - state.form.involveOtherWork = state.form.involveOtherWork.join(',') - } + // if(Array.isArray(state.form.involveOtherWork)){ + // state.form.involveOtherWork = state.form.involveOtherWork.join(',') + // } state.form.workDetail.involvedDepIds = state.form.workDetail.involvedDepIds.join(',') state.form.workDetail.bcPath = state.form.workDetail.bcPath.join(',') - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) + data.headUids = transform2Arr(data.headUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitBrokenApply(data) if (res.data.code === '200') { ElMessage({ @@ -713,6 +751,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() state.form.workDetail.bcPath = [] state.fileList = [] @@ -727,6 +767,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue index ec18d58..36c0196 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> <el-col :span="12"> @@ -64,48 +64,48 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="分析人" prop="analystUids"> -<!-- <el-select v-model="form.analystUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/> + <el-select v-model="form.analystUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.analystUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12" class="valueSelect"> <el-form-item label="关联其他特殊作业"> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -122,14 +122,14 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -198,7 +198,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> <!-- <el-table-column prop="address" label="确认人">--> @@ -216,15 +216,15 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -249,7 +249,7 @@ <!-- </el-col>--> <!-- </el-row>--> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -266,7 +266,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -279,42 +279,57 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> </div> </el-form> <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button> + <el-button type="primary" size="large" plain v-throttle @click="submitForm(ruleFormRef)">提交申报</el-button> </div> <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select> </div> </template> <script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue'; + import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, onUpdated } from 'vue'; import { storeToRefs } from 'pinia'; import { initBackEndControlRoutes } from '/@/router/backEnd'; import {useUserInfo} from "/@/stores/userInfo"; @@ -329,7 +344,8 @@ form: Object, workLevelList: Array<any>, equipmentDialog: boolean, - props:{} + tabLoading: boolean + props1:{} depProps:{} casProps:{} cas2Props: {} @@ -340,16 +356,18 @@ export default defineComponent({ name: 'fireForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 1, workLevel: null, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -366,6 +384,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -387,6 +406,7 @@ } ], casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -394,8 +414,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -416,6 +436,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -424,8 +445,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -446,6 +467,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -453,8 +475,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -475,14 +497,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -502,11 +525,10 @@ resolve(nodes) } }, - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -518,7 +540,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -533,6 +555,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.workMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] }); @@ -541,6 +564,10 @@ // 页面载入时执行方法 onMounted(() => { getBasicData() + }) + + onUpdated(()=>{ + console.log('false loading') }) const openWorkSelect = ()=>{ @@ -552,12 +579,14 @@ } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] + // state.form.seDepId = findNearestDepLevel2DepId(props.lists.departList2,state.form.applyDepId) } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(1) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -577,24 +606,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -616,12 +648,22 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + const transform2EObj = (id: any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -638,7 +680,7 @@ } } if(type == '作业人'){state.form.operatorUids = temp} - if(type == '分析人'){state.form.analystUids = temp} + // if(type == '分析人'){state.form.analystUids = temp} if(type == '监护人'){state.form.guardianUids = temp} if(type == '确认人'){state.form.safetyMeasureUids = temp} if(type == '结束人'){state.form.startOrEndUids = temp} @@ -661,14 +703,15 @@ // if(Array.isArray(state.form.involveOtherWork)){ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) - data.analystUids = transformArr(data.analystUids) + data.headUids = transform2Arr(data.headUids) + // data.analystUids = transformArr(data.analystUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) - data.acceptUid = transform2Obj(data.acceptUid) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) + data.acceptUid = transform2EObj(data.acceptUid) + data.lastApprover = transform2EObj(data.lastApprover) const res = await workApplyApi().submitFireApply(data) if (res.data.code === '200') { ElMessage({ @@ -676,16 +719,22 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() } else { ElMessage({ type: 'warning', message: res.data.msg - }); + }) // state.form.involveOtherWork = state.form.involveOtherWork.split(',') } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue index e1d3000..399eec3 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> </el-row> @@ -24,33 +24,33 @@ <el-form-item label="作业人" prop="operatorUids"> <!-- <el-select v-model="form.operatorUids" multiple clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.opList"--> +<!-- v-for="item in lists.spList.opList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -76,7 +76,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -87,20 +87,20 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -191,7 +191,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> <!-- <el-table-column prop="address" label="确认人">--> @@ -209,15 +209,15 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -242,7 +242,7 @@ <!-- </el-col>--> <!-- </el-row>--> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -259,7 +259,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -272,28 +272,28 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -302,12 +302,25 @@ <el-form-item label="签字人" prop="workDetail.signUid"> <el-select v-model="form.workDetail.signUid" filterable clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" /> </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -339,7 +352,7 @@ interface stateType { form: Object, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} @@ -350,7 +363,8 @@ uploadUrl: string, dialogVisible: Boolean, dialogImageUrl: string | null, - imgLimit: number, + imgLimit: number + tabLoading: boolean } interface file { url: string; @@ -358,16 +372,18 @@ export default defineComponent({ name: 'groundForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 4, workLevel: 0, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -383,6 +399,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -391,11 +408,10 @@ signUid: null } }, - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -405,6 +421,7 @@ emitPath: false }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -412,8 +429,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -434,6 +451,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -442,8 +460,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -464,6 +482,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -471,8 +490,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -493,14 +512,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -528,7 +548,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -542,6 +562,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -550,6 +571,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -559,12 +581,13 @@ state.form.involveOtherWork = workSelectRef.value.selected } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(4) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -584,24 +607,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -623,12 +649,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id: any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -664,17 +701,18 @@ return } } - if(Array.isArray(state.form.involveOtherWork)){ - state.form.involveOtherWork = state.form.involveOtherWork.join(',') - } + // if(Array.isArray(state.form.involveOtherWork)){ + // state.form.involveOtherWork = state.form.involveOtherWork.join(',') + // } state.form.workDetail.gbPath = state.form.workDetail.gbPath.join(',') - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) + data.headUids = transform2Arr(data.headUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitGroundApply(data) if (res.data.code === '200') { ElMessage({ @@ -682,6 +720,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() state.form.workDetail.gbPath = [] state.fileList = [] @@ -695,6 +735,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue index 48bf616..e8815a0 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> <el-col :span="12"> @@ -63,27 +63,27 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -92,13 +92,13 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12" class="valueSelect"> @@ -112,7 +112,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -123,7 +123,7 @@ <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -179,7 +179,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> </el-table> @@ -187,20 +187,20 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -217,7 +217,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -230,28 +230,43 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -280,27 +295,30 @@ form: Object, workLevelList: Array<any>, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} cas3Props: {} cas4Props: {} safetyMeasureBasicList: [] + tabLoading: boolean } export default defineComponent({ name: 'heightForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 6, workLevel: null, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -316,6 +334,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -340,13 +359,13 @@ value: 7 } ], - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -354,8 +373,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -376,6 +395,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -384,8 +404,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -406,6 +426,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -413,8 +434,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -435,14 +456,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -472,7 +494,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -486,13 +508,14 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] }); const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { - + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -502,11 +525,13 @@ state.form.involveOtherWork = workSelectRef.value.selected } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(6) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -526,24 +551,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -565,12 +593,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id: any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -609,13 +648,14 @@ // if(Array.isArray(state.form.involveOtherWork)){ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) + data.headUids = transform2Arr(data.headUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitHeightApply(data) if (res.data.code === '200') { ElMessage({ @@ -623,6 +663,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() } else { ElMessage({ @@ -633,6 +675,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue index e17cd1a..d3a2e52 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> <el-col :span="12"> @@ -73,27 +73,27 @@ <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -102,7 +102,7 @@ <el-form-item label="司索人" prop="workDetail.solicitorUids"> <el-select v-model="form.workDetail.solicitorUids" filterable multiple clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -121,7 +121,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -132,20 +132,20 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -214,7 +214,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> <!-- <el-table-column prop="address" label="确认人">--> @@ -232,15 +232,15 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -265,7 +265,7 @@ <!-- </el-col>--> <!-- </el-row>--> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -282,7 +282,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -295,28 +295,43 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -345,27 +360,30 @@ form: Object, workLevelList: Array<any>, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} cas3Props: {} cas4Props: {} safetyMeasureBasicList: [] + tabLoading: boolean } export default defineComponent({ name: 'hoistForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 3, workLevel: null, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -382,6 +400,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -404,11 +423,10 @@ value: 10 } ], - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -418,6 +436,7 @@ emitPath: false }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -425,8 +444,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -447,6 +466,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -455,8 +475,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -477,6 +497,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -484,8 +505,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -506,14 +527,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -536,7 +558,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -551,6 +573,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -559,7 +582,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { - + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -569,12 +592,13 @@ state.form.involveOtherWork = workSelectRef.value.selected } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(3) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -594,24 +618,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -633,12 +660,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id:any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -678,13 +716,14 @@ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.join(',') - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) + data.headUids = transform2Arr(data.headUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitHoistApply(data) if (res.data.code === '200') { ElMessage({ @@ -692,6 +731,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() } else { ElMessage({ @@ -703,6 +744,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue index 54240e7..fe6bcea 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> <el-col :span="12"> @@ -146,13 +146,13 @@ <el-form-item label="作业人" prop="operatorUids"> <!-- <el-select v-model="form.operatorUids" filterable multiple clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.opList"--> +<!-- v-for="item in lists.spList.opList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12" class="valueSelect"> @@ -166,7 +166,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -175,20 +175,20 @@ <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -197,20 +197,20 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -287,7 +287,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> </el-table> @@ -295,20 +295,20 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -325,7 +325,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -338,28 +338,43 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -390,7 +405,7 @@ form: Object, workLevelList: Array<any>, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} @@ -402,23 +417,26 @@ dialogVisible: Boolean, dialogImageUrl: string | null, imgLimit: number, + tabLoading: boolean } interface file { url: string; } export default defineComponent({ - name: 'fireForm', + name: 'plateForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 8, workLevel: null, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -434,6 +452,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -460,11 +479,10 @@ value: 12 } ], - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -474,6 +492,7 @@ emitPath: false }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -481,8 +500,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -503,6 +522,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -511,8 +531,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -533,6 +553,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -540,8 +561,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -562,14 +583,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -597,7 +619,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -611,6 +633,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -627,7 +650,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { - + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -638,12 +661,13 @@ } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(8) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -663,24 +687,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -702,12 +729,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id:any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -747,13 +785,14 @@ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.join(',') - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) + data.headUids = transform2Arr(data.headUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitPlateApply(data) if (res.data.code === '200') { ElMessage({ @@ -761,6 +800,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() state.form.workDetail.bpLocationMapPath = [] state.fileList = [] @@ -774,6 +815,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue index 635a6f8..ddadf29 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> </el-row> @@ -67,7 +67,7 @@ <el-form-item label="用电人" prop="workDetail.electricityUids"> <el-select v-model="form.workDetail.electricityUids" multiple clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -81,48 +81,48 @@ <el-form-item label="作业人" prop="operatorUids"> <!-- <el-select v-model="form.operatorUids" filterable multiple clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.opList"--> +<!-- v-for="item in lists.spList.opList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="分析人" prop="analystUids"> -<!-- <el-select v-model="form.analystUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/> + <el-select v-model="form.analystUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.analystUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12" class="valueSelect"> @@ -136,7 +136,7 @@ <!-- />--> <!-- </el-select>--> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -147,20 +147,20 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -229,7 +229,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> <!-- <el-table-column prop="address" label="确认人">--> @@ -247,15 +247,15 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -280,7 +280,7 @@ <!-- </el-col>--> <!-- </el-row>--> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -297,7 +297,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -310,28 +310,43 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -359,27 +374,30 @@ interface stateType { form: Object, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} cas3Props: {} cas4Props: {} safetyMeasureBasicList: [] + tabLoading: boolean } export default defineComponent({ name: 'powerForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList','otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 7, workLevel: 0, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -396,6 +414,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -405,11 +424,10 @@ electricityUids: [] } }, - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -419,6 +437,7 @@ emitPath: false }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -426,8 +445,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -448,6 +467,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -456,8 +476,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -478,6 +498,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -485,8 +506,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -507,14 +528,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -537,7 +559,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -552,6 +574,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -561,7 +584,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { - + getBasicData() }); const openWorkSelect = ()=>{ workSelectRef.value.openDialog(state.form.involveOtherWork) @@ -570,12 +593,13 @@ state.form.involveOtherWork = workSelectRef.value.selected } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) - console.log(state.form.seDepId,'state.form.seDepId') + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(7) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -595,24 +619,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -634,12 +661,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id:any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -656,7 +694,7 @@ } } if(type == '作业人'){state.form.operatorUids = temp} - if(type == '分析人'){state.form.analystUids = temp} + // if(type == '分析人'){state.form.analystUids = temp} if(type == '监护人'){state.form.guardianUids = temp} if(type == '确认人'){state.form.safetyMeasureUids = temp} if(type == '结束人'){state.form.startOrEndUids = temp} @@ -680,14 +718,15 @@ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.join(',') - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) - data.analystUids = transformArr(data.analystUids) + data.headUids = transform2Arr(data.headUids) + // data.analystUids = transformArr(data.analystUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitPowerApply(data) if (res.data.code === '200') { ElMessage({ @@ -695,6 +734,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() } else { ElMessage({ @@ -706,6 +747,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue index df2e3bd..3ceadc7 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue @@ -4,8 +4,8 @@ <div class="homeCard"> <el-row> <el-col :span="12"> - <el-form-item label="作业申请单位" prop="applyDepId"> - <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> + <el-form-item label="作业申请单位" prop="depIdList"> + <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/> </el-form-item> </el-col> </el-row> @@ -46,13 +46,13 @@ <el-form-item label="作业人" prop="operatorUids"> <!-- <el-select v-model="form.operatorUids" filterable multiple clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.opList"--> +<!-- v-for="item in lists.spList.opList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.operatorUids" :options="spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/> </el-form-item> </el-col> </el-row> @@ -71,41 +71,41 @@ <el-row> <el-col :span="12"> <el-form-item label="作业单位" prop="workDepId"> - <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="lists.departList" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="作业负责人" prop="headUids"> -<!-- <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.headUids" :options="workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/> + <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="分析人" prop="analystUids"> -<!-- <el-select v-model="form.analystUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.analystUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/> + <el-select v-model="form.analystUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.analystUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'分析人')" :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12" class="valueSelect"> <el-form-item label="关联其他特殊作业"> <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect"> - <el-option v-for="item in otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> + <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId"> </el-option> </el-select> </el-form-item> @@ -116,20 +116,20 @@ <el-form-item label="监护人" prop="guardianUids"> <!-- <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>--> <!-- <el-option--> -<!-- v-for="item in spList.jhList"--> +<!-- v-for="item in lists.spList.jhList"--> <!-- :key="item.uid"--> <!-- :label="item.realName"--> <!-- :value="item.uid"--> <!-- />--> <!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.guardianUids" :options="spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> + <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绑定执法仪" prop="cameraIds"> <el-select v-model="form.cameraIds" multiple clearable> <el-option - v-for="item in deviceList" + v-for="item in lists.deviceList" :key="item.id" :label="item.name" :value="item.id" @@ -198,7 +198,7 @@ </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="safetyMeasureBasicList" style="width: 90%" border> + <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column type="index" label="序号" width="100px" align="center"/> <el-table-column prop="measureContent" label="安全措施"/> </el-table> @@ -206,20 +206,20 @@ <el-row> <el-col :span="12"> <el-form-item label="安全措施确认人" prop="safetyMeasureUids"> -<!-- <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/> + <el-select v-model="form.safetyMeasureUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> <el-row style="display: flex;justify-content: center"> - <el-table :data="form.approvalDepBasicList" style="width: 90%" border> + <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading"> <el-table-column prop="content" label="审批签字项目" align="center"/> <el-table-column prop="approvalType" label="是否必签" align="center"> <template #default="scope"> @@ -236,7 +236,7 @@ <template #default="scope"> <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable> <el-option - v-for="item in workerList" + v-for="item in lists.workerList" :key="item.uid" :label="item.username" :value="item.uid" @@ -249,28 +249,43 @@ <el-row> <el-col :span="12"> <el-form-item label="完工验收" prop="acceptUid"> -<!-- <el-select v-model="form.acceptUid" filterable clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.acceptUid" :options="workerList" :props="cas4Props" filterable :show-all-levels="false"/> + <el-select v-model="form.acceptUid" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="现场开始结束确认人" prop="startOrEndUids"> -<!-- <el-select v-model="form.startOrEndUids" filterable multiple clearable>--> -<!-- <el-option--> -<!-- v-for="item in workerList"--> -<!-- :key="item.uid"--> -<!-- :label="item.username"--> -<!-- :value="item.uid"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/> + <el-select v-model="form.startOrEndUids" filterable multiple clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>--> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="最终审批人" prop="lastApprover"> + <el-select v-model="form.lastApprover" filterable clearable> + <el-option + v-for="item in lists.workerList" + :key="item.uid" + :label="item.username" + :value="item.uid" + /> + </el-select> +<!-- <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>--> </el-form-item> </el-col> </el-row> @@ -298,27 +313,30 @@ interface stateType { form: Object, equipmentDialog: boolean, - props:{}, + props1:{}, depProps:{}, casProps:{} cas2Props: {} cas3Props: {} cas4Props: {} safetyMeasureBasicList: [] + tabLoading: boolean } export default defineComponent({ name: 'spaceForm', components: {workSelect}, - props:['departList','departList2','workerList','deviceList', 'otherWorks','spList'], + props:['lists'], setup(props: any, context: any) { const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + tabLoading: false, equipmentDialog: false, safetyMeasureBasicList: [], form: { workType: 2, workLevel: 0, + depIdList: [], applyDepId: null, seDepId: null, expStartTime: '', @@ -335,6 +353,7 @@ safetyMeasureUids: [], approvalDepBasicList: [], acceptUid: null, + lastApprover: null, startOrEndUids: [], cameraIds: [], workDetail: { @@ -342,11 +361,10 @@ csOriginalName: '' } }, - props:{ + props1:{ expandTrigger: 'hover', label: 'depName', - value: 'depId', - emitPath: false + value: 'depId' }, depProps:{ expandTrigger: 'hover', @@ -356,6 +374,7 @@ emitPath: false }, casProps: { + expandTrigger: 'hover', value: 'uid', label: 'username', multiple: true, @@ -363,8 +382,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -385,6 +404,7 @@ } }, cas2Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -393,8 +413,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.opList + if(level == 0){ + nodes = props.lists.spList.opList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -415,6 +435,7 @@ } }, cas3Props: { + expandTrigger: 'hover', value: 'uid', label: 'realName', multiple: true, @@ -422,8 +443,8 @@ async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.spList.jhList + if(level == 0){ + nodes = props.lists.spList.jhList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -444,14 +465,15 @@ } }, cas4Props: { + expandTrigger: 'hover', value: 'uid', label: 'username', lazy: true, async lazyLoad(node, resolve){ const { value, level } = node let nodes = [] - if(value == 0){ - nodes = props.workerList + if(level == 0){ + nodes = props.lists.workerList }else{ let res = await userApi().getCtf({uid: value}) if(res.data.code == 200){ @@ -474,7 +496,7 @@ }); const ruleFormRef = ref<FormInstance>() const applyRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], @@ -489,6 +511,7 @@ expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], + lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] @@ -496,7 +519,7 @@ const workSelectRef = ref() // 页面载入时执行方法 onMounted(() => { - + getBasicData() }); const openWorkSelect = ()=>{ @@ -508,11 +531,13 @@ } const findParent = ()=>{ - state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId) + state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1] + state.form.seDepId = state.form.depIdList[0] } // 获取基础数据 const getBasicData = async ()=>{ + state.tabLoading = true const res = await workApplyApi().getFormData(2) if (res.data.code === '200') { state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList)) @@ -532,24 +557,27 @@ message: res.data.msg }); } + state.tabLoading = false }; const getStartEndIds = (value)=>{ - let selected = value - if(selected.length>1){ - const temp = [] - for(let i of selected){ - const index = temp.findIndex(item => item[0] === i[0]); - if (index !== -1) { - temp[index] = i - }else{ - temp.push(i) - } - } - state.form.headUids = temp - } + // let selected = value + // if(selected.length>1){ + // const temp = [] + // for(let i of selected){ + // const index = temp.findIndex(item => item[0] === i[0]); + // if (index !== -1) { + // temp[index] = i + // }else{ + // temp.push(i) + // } + // } + // state.form.headUids = temp + // } + // state.form.startOrEndUids = state.form.headUids + // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] state.form.startOrEndUids = state.form.headUids - state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))] + state.form.approvalDepBasicList[0].approvalUids = state.form.headUids } const getSafetyIds = ()=>{ @@ -571,12 +599,23 @@ }) } - const transform2Obj = (arr: Array<any>)=>{ + const transform2Arr = (arr: Array<any>)=>{ + return arr.map((i)=>{ + return { + uid: i, + certificate: '', + certExpiredAt: '', + certTypeName: '' + } + }) + } + + const transform2Obj = (id:any)=>{ return { - uid: arr[0], - certificate: arr[1].split(',')[0], - certExpiredAt: arr[1].split(',')[1], - certTypeName: arr[1].split(',')[2] + uid: id, + certificate: '', + certExpiredAt: '', + certTypeName: '' } } @@ -593,7 +632,7 @@ } } if(type == '作业人'){state.form.operatorUids = temp} - if(type == '分析人'){state.form.analystUids = temp} + // if(type == '分析人'){state.form.analystUids = temp} if(type == '监护人'){state.form.guardianUids = temp} if(type == '确认人'){state.form.safetyMeasureUids = temp} if(type == '结束人'){state.form.startOrEndUids = temp} @@ -616,14 +655,15 @@ // if(Array.isArray(state.form.involveOtherWork)){ // state.form.involveOtherWork = state.form.involveOtherWork.join(',') // } - const data = state.form + const {depIdList,...data} = state.form data.operatorUids = transformArr(data.operatorUids) - data.headUids = transformArr(data.headUids) - data.analystUids = transformArr(data.analystUids) + data.headUids = transform2Arr(data.headUids) + // data.analystUids = transformArr(data.analystUids) data.guardianUids = transformArr(data.guardianUids) - data.safetyMeasureUids = transformArr(data.safetyMeasureUids) - data.startOrEndUids = transformArr(data.startOrEndUids) + data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids) + data.startOrEndUids = transform2Arr(data.startOrEndUids) data.acceptUid = transform2Obj(data.acceptUid) + data.lastApprover = transform2Obj(data.lastApprover) const res = await workApplyApi().submitSpaceApply(data) if (res.data.code === '200') { ElMessage({ @@ -631,6 +671,8 @@ message: '提交成功!' }); formEl.resetFields() + state.form.guardianUids = [] + state.form.involveOtherWork = [] getBasicData() } else { ElMessage({ @@ -641,6 +683,10 @@ } } else { console.log('error submit!', fields) + ElMessage({ + type: 'warning', + message: '有表单内容未完成,请再次检查完善' + }) } }) } diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue index 95c6649..37b230b 100644 --- a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue +++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue @@ -1,32 +1,50 @@ <template> <div class="home-container"> - <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick"> - <el-tab-pane label="动火作业" name="fire"> - <fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList=departmentList :departList2=departmentList2 :otherWorks="otherWorks" :spList="spList"></fire-form> + <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick" v-loading="loading"> + <el-tab-pane :lazy="true" label="动火作业" name="fire"> + <fire-form ref="fire" :lists="lists"></fire-form> </el-tab-pane> - <el-tab-pane label="受限空间作业" name="space"> - <space-form ref="space" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></space-form> + <el-tab-pane :lazy="true" label="受限空间作业" name="space"> + <space-form ref="space" :lists="lists"></space-form> </el-tab-pane> - <el-tab-pane label="吊装作业" name="hoist"> - <hoist-form ref="hoist" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></hoist-form> + <el-tab-pane :lazy="true" label="吊装作业" name="hoist"> + <hoist-form ref="hoist" :lists="lists"></hoist-form> </el-tab-pane> - <el-tab-pane label="动土作业" name="ground"> - <ground-form ref="ground" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></ground-form> + <el-tab-pane :lazy="true" label="动土作业" name="ground"> + <ground-form ref="ground" :lists="lists"></ground-form> </el-tab-pane> - <el-tab-pane label="断路作业" name="broken"> - <broken-form ref="broken" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></broken-form> + <el-tab-pane :lazy="true" label="断路作业" name="broken"> + <broken-form ref="broken" :lists="lists"></broken-form> </el-tab-pane> - <el-tab-pane label="高处作业" name="height"> - <height-form ref="height" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></height-form> + <el-tab-pane :lazy="true" label="高处作业" name="height"> + <height-form ref="height" :lists="lists"></height-form> </el-tab-pane> - <el-tab-pane label="临时用电作业" name="power"> - <power-form ref="power" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></power-form> + <el-tab-pane :lazy="true" label="临时用电作业" name="power"> + <power-form ref="power" :lists="lists"></power-form> </el-tab-pane> - <el-tab-pane label="盲板抽堵作业" name="plate"> - <plate-form ref="plate" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></plate-form> + <el-tab-pane :lazy="true" label="盲板抽堵作业" name="plate"> + <plate-form ref="plate" :lists="lists"></plate-form> </el-tab-pane> </el-tabs> <!-- <material-dialog ref="material"></material-dialog>--> +<!-- <el-radio-group v-model="activeName" size="large" @change="(value)=>handleClick(value)">--> +<!-- <el-radio-button :label=0>动火作业</el-radio-button>--> +<!-- <el-radio-button :label=1>受限空间作业</el-radio-button>--> +<!-- <el-radio-button :label=2>吊装作业</el-radio-button>--> +<!-- <el-radio-button :label=3>动土作业</el-radio-button>--> +<!-- <el-radio-button :label=4>断路作业</el-radio-button>--> +<!-- <el-radio-button :label=5>高处作业</el-radio-button>--> +<!-- <el-radio-button :label=6>临时用电作业</el-radio-button>--> +<!-- <el-radio-button :label=7>盲板抽堵作业</el-radio-button>--> +<!-- </el-radio-group>:--> +<!-- <fire-form v-if="activeName == 0" ref="fire" :workerList = allWorkers :deviceList = allDevices :departList=departmentList :departList2=departmentList2 :otherWorks="otherWorks" :spList="spList"></fire-form>--> +<!-- <space-form v-if="activeName == 1" ref="space" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></space-form>--> +<!-- <hoist-form v-if="activeName == 2" ref="hoist" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></hoist-form>--> +<!-- <ground-form v-if="activeName == 3" ref="ground" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></ground-form>--> +<!-- <broken-form v-if="activeName == 4" ref="broken" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></broken-form>--> +<!-- <height-form v-if="activeName == 5" ref="height" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></height-form>--> +<!-- <power-form v-if="activeName == 6" ref="power" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></power-form>--> +<!-- <plate-form v-if="activeName == 7" ref="plate" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices :otherWorks="otherWorks" :spList="spList"></plate-form>--> </div> </template> @@ -49,11 +67,8 @@ departmentList2: Array<any> otherWorks: Array<any> allDevices: Array<any> - spList:{ - opList: Array<any> - jhList: Array<any> - sfList: Array<any> - } + loading: boolean + lists: {} } export default defineComponent({ name: 'apply', @@ -71,17 +86,21 @@ const userInfo = useUserInfo() const { userInfos } = storeToRefs(userInfo); const state = reactive<stateType>({ + loading: false, + lists: { + workerList: [], + departList: [], + departList2: [], + deviceList: [], + otherWorks: [], + spList: [] + }, activeName: 'fire', allWorkers: [], departmentList: [], departmentList2:[], otherWorks: [], allDevices: [], - spList:{ - opList: [], - jhList: [], - sfList: [] - } }); const fire = ref() const space = ref() @@ -93,15 +112,30 @@ const plate = ref() const handleClick = (tab: TabsPaneContext, event: Event) => { - if(tab.index == 0){fire.value.getBasicData()} - if(tab.index == 1){space.value.getBasicData()} - if(tab.index == 2){hoist.value.getBasicData()} - if(tab.index == 3){ground.value.getBasicData()} - if(tab.index == 4){broken.value.getBasicData()} - if(tab.index == 5){height.value.getBasicData()} - if(tab.index == 6){power.value.getBasicData()} - if(tab.index == 7){plate.value.getBasicData()} + state.loading = true + setTimeout(()=>{ + state.loading = false + },1000) + // if(tab.index == 0){fire.value.getBasicData()} + // if(tab.index == 1){space.value.getBasicData()} + // if(tab.index == 2){hoist.value.getBasicData()} + // if(tab.index == 3){ground.value.getBasicData()} + // if(tab.index == 4){broken.value.getBasicData()} + // if(tab.index == 5){height.value.getBasicData()} + // if(tab.index == 6){power.value.getBasicData()} + // if(tab.index == 7){plate.value.getBasicData()} } + + // const handleClick = (value: number) => { + // if(value == 0){fire.value.getBasicData()} + // if(value == 1){space.value.getBasicData()} + // if(value == 2){hoist.value.getBasicData()} + // if(value == 3){ground.value.getBasicData()} + // if(value == 4){broken.value.getBasicData()} + // if(value == 5){height.value.getBasicData()} + // if(value == 6){power.value.getBasicData()} + // if(value == 7){plate.value.getBasicData()} + // } // 页面载入时执行方法 onMounted(() => { @@ -117,6 +151,7 @@ const res = await workApplyApi().getAllUsers() if (res.data.code === '200') { state.allWorkers = JSON.parse(JSON.stringify(res.data.data)) + state.lists.workerList = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', @@ -130,7 +165,7 @@ const res = await workApplyApi().getSpList({roleId: id}) if(id == '17'){ if (res.data.code === '200') { - state.spList.opList = res.data.data + state.lists.spList.opList = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', @@ -140,7 +175,7 @@ } if(id == '18'){ if (res.data.code === '200') { - state.spList.jhList = res.data.data + state.lists.spList.jhList = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', @@ -150,7 +185,7 @@ } if(id == '19'){ if (res.data.code === '200') { - state.spList.sfList = res.data.data + state.lists.spList.sfList = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', @@ -165,8 +200,10 @@ const getAllDepartment = async () => { let res = await teamManageApi().getAllDepartment(); if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - state.departmentList2 = state.departmentList[0].children + // state.departmentList = JSON.parse(JSON.stringify(res.data.data)) + // state.departmentList2 = state.departmentList[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50) + state.lists.departList = JSON.parse(JSON.stringify(res.data.data)) + state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50) } else { ElMessage({ type: 'warning', @@ -180,6 +217,7 @@ let res = await workApplyApi().getOtherWork({workPermitNo: '',workType: null}); if (res.data.code === '200') { state.otherWorks = JSON.parse(JSON.stringify(res.data.data)) + state.lists.otherWorks = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', @@ -193,6 +231,7 @@ const res = await workApplyApi().getAllDevices() if (res.data.code === '200') { state.allDevices = JSON.parse(JSON.stringify(res.data.data)) + state.lists.deviceList = JSON.parse(JSON.stringify(res.data.data)) } else { ElMessage({ type: 'warning', diff --git a/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue index e287f17..ec5421d 100644 --- a/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue +++ b/src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue @@ -29,7 +29,7 @@ <el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column> <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>--> - <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column> +<!-- <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>--> <el-table-column label="操作" width="140"> <template #default="scope"> <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button> diff --git a/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue index 6fd0746..caff5a8 100644 --- a/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue +++ b/src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue @@ -29,7 +29,7 @@ <el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column> <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>--> - <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column> +<!-- <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>--> <el-table-column label="操作" width="140"> <template #default="scope"> <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button> diff --git a/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue b/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue index 07eb7ba..1c324c1 100644 --- a/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue +++ b/src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue @@ -29,7 +29,7 @@ <el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column> <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="email" label="证书编号" show-overflow-tooltip></el-table-column>--> - <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column> +<!-- <el-table-column prop="expireTime" label="证书有效期至" show-overflow-tooltip></el-table-column>--> <el-table-column label="操作" width="140"> <template #default="scope"> <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button> diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue index c93cfb0..ce6908a 100644 --- a/src/views/specialWorkSystem/specialIndex/index.vue +++ b/src/views/specialWorkSystem/specialIndex/index.vue @@ -64,7 +64,7 @@ <div class="chart-item"> <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10> <div class="chart-tit"> - <span class="tit">异常警报关联人</span> + <span class="tit">作业警报记录</span> <div class="filter-part"> <el-switch v-model="chartSearch4.type" @@ -346,6 +346,8 @@ isFull:boolean; themeColor:string; endTime:string + pieData: Array<status> + squareData: Array<status> } interface type { id: number | null; @@ -480,6 +482,8 @@ value: 2 } ], + pieData: [], + squareData: [], warningData: [ { name: '黄公子', @@ -583,7 +587,9 @@ } let res = await specialIndexApi().analyseType(data); if (res.data.code === '200') { - console.log('饼图数据>>>', res.data.data) + // console.log('饼图数据>>>', res.data.data) + state.pieData = JSON.parse(JSON.stringify(res.data.data)) + // initZyfb() } else { ElMessage({ type: 'warning', @@ -600,7 +606,9 @@ } let res = await specialIndexApi().analyseAllWork(data); if (res.data.code === '200') { - console.log('条形图数据>>>', res.data.data) + // console.log('条形图数据>>>', res.data.data) + state.squareData = JSON.parse(JSON.stringify(res.data.data)) + // initSlfx() } else { ElMessage({ type: 'warning', @@ -611,7 +619,9 @@ const getDepMonth = async ()=>{ let res = await specialIndexApi().analyseDepMonth(state.chartSearch3.depId); if (res.data.code === '200') { - console.log('折线图数据>>>', res.data.data) + // console.log('折线图数据>>>', res.data.data) + state.squareData = JSON.parse(JSON.stringify(res.data.data)) + // initSlfx() } else { ElMessage({ type: 'warning', @@ -696,14 +706,14 @@ }, }, data: [ - { value: 1048, name: '动火作业' }, - { value: 735, name: '受限空间作业' }, - { value: 580, name: '吊装作业' }, - { value: 484, name: '动土作业' }, - { value: 735, name: '断路作业' }, - { value: 580, name: '高处作业' }, - { value: 484, name: '临时用电作业' }, - { value: 300, name: '盲板抽堵作业' } + { value: 0, name: '动火作业' }, + { value: 0, name: '受限空间作业' }, + { value: 0, name: '吊装作业' }, + { value: 0, name: '动土作业' }, + { value: 0, name: '断路作业' }, + { value: 0, name: '高处作业' }, + { value: 0, name: '临时用电作业' }, + { value: 0, name: '盲板抽堵作业' } ] } ] @@ -734,7 +744,7 @@ xAxis: [ { type: 'category', - data: ['事业部1', '事业部2', '事业部3', '事业部4', '事业部5', '事业部6', '事业部7'], + data: ['部门一','部门二','部门三'], axisTick: { alignWithLabel: true }, @@ -753,7 +763,7 @@ name: 'Direct', type: 'bar', barWidth: '60%', - data: [10, 52, 200, 334, 390, 330, 220] + data: [0,0,0], } ] } @@ -794,7 +804,7 @@ }, series: [ { - data: [150, 230, 224, 218, 135, 147, 230, 224, 218, 135, 147, 260], + data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], type: 'line', label:{ show: true diff --git a/src/views/system/personShiftManage/scheduleManage/schedule/index.vue b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue index affe01d..1c49a53 100644 --- a/src/views/system/personShiftManage/scheduleManage/schedule/index.vue +++ b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue @@ -60,11 +60,11 @@ <el-form-item label="班组名称" prop="groupName"> <el-input v-model="addRecord.groupName"> </el-input> </el-form-item> - <el-form-item label="选择部门" prop="department"> - <el-cascader v-model="addRecord.department" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" /> + <el-form-item label="选择部门" prop="depId"> + <el-cascader v-model="addRecord.depId" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" /> </el-form-item> - <el-form-item label="选择人员" prop="groupMembers" v-if="addRecord.department !== ''"> - <el-select v-model="addRecord.groupMembers" multiple> + <el-form-item label="选择人员" prop="groupMemberIds" v-if="addRecord.depId"> + <el-select v-model="addRecord.groupMemberIds" multiple> <el-option v-for="(item, index) in workerList" :label="item.username" :key="index" :value="item.uid">{{ item.username }}</el-option> </el-select> </el-form-item> @@ -129,9 +129,9 @@ totalSize: number; addRecord: { groupName: string; - department: number | null; depId: number | null; - groupMembers: Array<any>; + groupId: number | null; + groupMemberIds: Array<any>; groupInfo: string; }; details: { @@ -139,6 +139,7 @@ department: number | null; groupMembers: Array<any>; groupInfo: string; + depId: number | null; }; } @@ -157,7 +158,6 @@ searchWord: '', tableData: [], departmentList: [], - department: '', workerList: [], casProps: { expandTrigger: 'hover', @@ -171,11 +171,11 @@ deleteDialog: false, deleteSetDialog: false, addRecord: { - groupName: '', - department: null, - groupMembers: [], depId: null, - groupInfo: '' + groupId: null, + groupInfo: '', + groupName: '', + groupMemberIds: [], }, details: { groupName: '', @@ -267,7 +267,6 @@ const handleChange = async (value) => { state.addRecord.depId = value; - console.log(state.addRecord.department, 'de'); let res = await teamManageApi().getAllMember(value); if (res.data.code === '200') { state.workerList = res.data.data; @@ -315,13 +314,23 @@ // 修改工作时段方法 const editRecordBtn = async (index, row) => { - state.addRecord = JSON.parse(JSON.stringify(row)); - state.addRecord.department = ''; - state.addRecord.groupMembers = []; - state.dialogAddRecord = true; - state.chosenIndex = index; - }; - + const obj = JSON.parse(JSON.stringify(row)); + for(let i in state.addRecord){ + if(isKey(i,obj)){ + state.addRecord[i] = obj[i] + } + } + handleChange(obj.depId).then((res)=>{ + state.addRecord.groupMemberIds = obj.groupMembers.map((item)=> { + return state.workerList.find(i => i.username == item)?.uid + }) + state.dialogAddRecord = true; + state.chosenIndex = index; + }) + } + const isKey = (key,obj)=>{ + return key in obj + } const editRecord = async (data: any) => { let res = await teamManageApi().updateRecord(data); if (res.data.code === '200') { @@ -343,17 +352,11 @@ if (!formEl) return; await formEl.validate(async (valid, fields) => { if (valid) { - const data = { - groupName: state.addRecord.groupName, - groupInfo: state.addRecord.groupInfo, - depId: state.addRecord.depId, - groupMemberIds: state.addRecord.groupMembers - }; if (state.chosenIndex == null) { + const {groupId,...data} = state.addRecord await addRecord(data); } else { - data.groupId = JSON.stringify(state.addRecord.groupId); - await editRecord(data); + await editRecord(state.addRecord); } state.dialogAddRecord = false; } else { @@ -445,7 +448,13 @@ }; const closeAdd = () => { - state.addRecord = {}; + state.addRecord = { + depId: null, + groupId: null, + groupInfo: '', + groupName: '', + groupMemberIds: [], + }; state.chosenIndex = null; }; const openAdd = () => { diff --git a/src/views/system/user/component/dialogCertificate.vue b/src/views/system/user/component/dialogCertificate.vue index 889400d..9046be2 100644 --- a/src/views/system/user/component/dialogCertificate.vue +++ b/src/views/system/user/component/dialogCertificate.vue @@ -14,6 +14,7 @@ <el-table-column property="id" label="证件Id"/> <el-table-column property="certTypeName" label="证书类型"/> <el-table-column property="certNo" label="证件编号"/> + <el-table-column property="certExpiredAt" label="证书有效期至"/> <el-table-column fixed="right" label="操作" align="center" width="250"> <template #default="scope"> <el-button link type="primary" size="small" :icon="View" @click="openEdit('view',scope.row)">查看</el-button> diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue index b377710..3808e30 100644 --- a/src/views/system/user/component/userDialog.vue +++ b/src/views/system/user/component/userDialog.vue @@ -93,6 +93,7 @@ import { reactive, toRefs, onMounted, defineComponent, ref } from 'vue'; import { ElMessageBox, ElMessage } from 'element-plus'; import { userApi } from '/@/api/systemManage/user'; +import {verifyPwd} from "/@/utils/toolsValidate"; // 定义接口来定义对象的类型 interface DeptData {} @@ -133,6 +134,17 @@ name: 'user', setup(props, context) { const userRef = ref() + let validatePwd = (rule: any, value: any, callback: any)=>{ + if(value === ''){ + callback(new Error('请输入密码')) + }else{ + if(!verifyPwd(value)){ + callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间')) + }else{ + callback() + } + } + } const state = reactive<UserState>({ title: '', disabled: false, @@ -161,7 +173,7 @@ phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }], type: [{ required: true, message: '请填写用户类型', trigger: 'blur' }], gender: [{ required: true, message: '请选择性别', trigger: 'change' }], - password: [{ required: true, message: '请输入账户密码', trigger: 'blur' }], + password: [{ required: true, validator: validatePwd, trigger: 'blur' }], }, departmentData: [], // 部门数据 roleData: [], //角色数据 @@ -176,6 +188,7 @@ { id: 3, name: '普通员工' } ], }); + // 打开弹窗 const openDialog = (type: string, value: any, departmentList: [], roleList: [], dutyList:[]) => { state.isShowUserDialog = true; -- Gitblit v1.9.2