| | |
| | | two4: '友情链接', |
| | | }, |
| | | account: { |
| | | accountPlaceholder1: '用户名 admin 或不输均为 common', |
| | | accountPlaceholder2: '密码:123456', |
| | | accountPlaceholder1: '请输入用户名', |
| | | accountPlaceholder2: '请输入密码', |
| | | accountPlaceholder3: '请输入验证码', |
| | | accountBtnText: '登 录', |
| | | }, |
| | |
| | | <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"> |
| | |
| | | console.log(routeList); |
| | | }); |
| | | }; |
| | | const toHome = () => { |
| | | router.push({ path: 'newMenu' }); |
| | | }; |
| | | // const toHome = () => { |
| | | // router.push({ path: 'newMenu' }); |
| | | // }; |
| | | // 页面加载时 |
| | | onMounted(() => { |
| | | if (Local.get('themeConfig')) { |
| | |
| | | return { |
| | | userInfos, |
| | | backToMenu, |
| | | toHome, |
| | | onLayoutSetingClick, |
| | | onHandleCommandClick, |
| | | onScreenfullClick, |
| | |
| | | .logo{ |
| | | img { |
| | | height: 100%; |
| | | cursor: pointer; |
| | | } |
| | | span{ |
| | | font-size: 32px; |
| | |
| | | .logo{ |
| | | img { |
| | | height: 90%; |
| | | cursor: pointer; |
| | | } |
| | | span{ |
| | | font-size: 28px; |
| | |
| | | img { |
| | | width: 60%; |
| | | height: auto; |
| | | cursor: pointer; |
| | | } |
| | | span{ |
| | | font-size: 22px; |
| | |
| | | * @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; |
| | | } |
| | |
| | | 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', |
| | |
| | | }else callback(); |
| | | }, 400) |
| | | } |
| | | // 修改密码 |
| | | const validatePass = (rule: any, value: any, callback: any) => { |
| | | |
| | | let validatePwd = (rule: any, value: any, callback: any)=>{ |
| | | if (value === '') { |
| | | callback(new Error('该内容不能为空')) |
| | | callback(new Error('请输入密码')) |
| | | } else { |
| | | if (state.identity.rePassword !== '') { |
| | | if (!identifyRef.value) return |
| | | identifyRef.value.validateField('rePassword', () => null) |
| | | } |
| | | 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('该内容不能为空')) |
| | |
| | | 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' }] |
| | | }); |
| | | |
| | |
| | | <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> |
| | |
| | | } |
| | | |
| | | // 导出方法 |
| | | 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); |
| | |
| | | viewStatus, |
| | | abortRecordBtn, |
| | | downLoadBtn, |
| | | exportSheet, |
| | | getListByPage, |
| | | handleSizeChange1, |
| | | handleCurrentChange1, |
| | |
| | | <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> |
| | |
| | | <!-- :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"> |
| | |
| | | <!-- :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-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> |
| | |
| | | <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" |
| | |
| | | </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="确认人">--> |
| | |
| | | <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-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"> |
| | |
| | | <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" |
| | |
| | | <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-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> |
| | |
| | | interface stateType { |
| | | form: Object, |
| | | equipmentDialog: boolean, |
| | | props:{}, |
| | | props1:{}, |
| | | depProps:{}, |
| | | depProps2:{}, |
| | | casProps:{} |
| | |
| | | fileList: Array<file>, |
| | | uploadUrl: string, |
| | | dialogVisible: Boolean, |
| | | tabLoading: Boolean, |
| | | dialogImageUrl: string | null, |
| | | imgLimit: number, |
| | | } |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | signUid: null |
| | | } |
| | | }, |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | multiple: true |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }], |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | state.form.workDetail.bcPath = [] |
| | | state.fileList = [] |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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"> |
| | |
| | | <!-- :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> |
| | |
| | | <!-- :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" |
| | |
| | | </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="确认人">--> |
| | |
| | | <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-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"> |
| | |
| | | <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" |
| | |
| | | <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"; |
| | |
| | | form: Object, |
| | | workLevelList: Array<any>, |
| | | equipmentDialog: boolean, |
| | | props:{} |
| | | tabLoading: boolean |
| | | props1:{} |
| | | depProps:{} |
| | | casProps:{} |
| | | cas2Props: {} |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | } |
| | | ], |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | resolve(nodes) |
| | | } |
| | | }, |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }] |
| | | }); |
| | |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | getBasicData() |
| | | }) |
| | | |
| | | onUpdated(()=>{ |
| | | console.log('false loading') |
| | | }) |
| | | |
| | | const openWorkSelect = ()=>{ |
| | |
| | | } |
| | | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | const transform2EObj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | 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} |
| | |
| | | // 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({ |
| | |
| | | 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: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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-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> |
| | |
| | | <!-- />--> |
| | | <!-- </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> |
| | |
| | | <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" |
| | |
| | | </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="确认人">--> |
| | |
| | | <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-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"> |
| | |
| | | <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" |
| | |
| | | <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-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> |
| | |
| | | interface stateType { |
| | | form: Object, |
| | | equipmentDialog: boolean, |
| | | props:{}, |
| | | props1:{}, |
| | | depProps:{}, |
| | | casProps:{} |
| | | cas2Props: {} |
| | |
| | | uploadUrl: string, |
| | | dialogVisible: Boolean, |
| | | dialogImageUrl: string | null, |
| | | imgLimit: number, |
| | | imgLimit: number |
| | | tabLoading: boolean |
| | | } |
| | | interface file { |
| | | url: string; |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | signUid: null |
| | | } |
| | | }, |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }], |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | state.form.workDetail.gbPath = [] |
| | | state.fileList = [] |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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"> |
| | |
| | | <!-- :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> |
| | |
| | | <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"> |
| | |
| | | <!-- />--> |
| | | <!-- </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> |
| | |
| | | <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" |
| | |
| | | </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> |
| | |
| | | <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"> |
| | |
| | | <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" |
| | |
| | | <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> |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | value: 7 |
| | | } |
| | | ], |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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) |
| | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id: any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | // 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | } else { |
| | | ElMessage({ |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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"> |
| | |
| | | <!-- :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-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" |
| | |
| | | <!-- />--> |
| | | <!-- </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> |
| | |
| | | <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" |
| | |
| | | </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="确认人">--> |
| | |
| | | <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-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"> |
| | |
| | | <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" |
| | |
| | | <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> |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | value: 10 |
| | | } |
| | | ], |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }], |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id:any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | // 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | } else { |
| | | ElMessage({ |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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"> |
| | |
| | | <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"> |
| | |
| | | <!-- />--> |
| | | <!-- </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> |
| | |
| | | <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-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" |
| | |
| | | </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> |
| | |
| | | <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"> |
| | |
| | | <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" |
| | |
| | | <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> |
| | |
| | | form: Object, |
| | | workLevelList: Array<any>, |
| | | equipmentDialog: boolean, |
| | | props:{}, |
| | | props1:{}, |
| | | depProps:{}, |
| | | casProps:{} |
| | | cas2Props: {} |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | value: 12 |
| | | } |
| | | ], |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }], |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | |
| | | } |
| | | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id:any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | // 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | state.form.workDetail.bpLocationMapPath = [] |
| | | state.fileList = [] |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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-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" |
| | |
| | | <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"> |
| | |
| | | <!-- />--> |
| | | <!-- </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> |
| | |
| | | <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" |
| | |
| | | </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="确认人">--> |
| | |
| | | <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-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"> |
| | |
| | | <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" |
| | |
| | | <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> |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | electricityUids: [] |
| | | } |
| | | }, |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }], |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | |
| | | getBasicData() |
| | | }); |
| | | const openWorkSelect = ()=>{ |
| | | workSelectRef.value.openDialog(state.form.involveOtherWork) |
| | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id:any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | 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} |
| | |
| | | // 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | } else { |
| | | ElMessage({ |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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-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"> |
| | | <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> |
| | |
| | | <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" |
| | |
| | | </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> |
| | |
| | | <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"> |
| | |
| | | <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" |
| | |
| | | <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> |
| | |
| | | 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: '', |
| | |
| | | safetyMeasureUids: [], |
| | | approvalDepBasicList: [], |
| | | acceptUid: null, |
| | | lastApprover: null, |
| | | startOrEndUids: [], |
| | | cameraIds: [], |
| | | workDetail: { |
| | |
| | | csOriginalName: '' |
| | | } |
| | | }, |
| | | props:{ |
| | | props1:{ |
| | | expandTrigger: 'hover', |
| | | label: 'depName', |
| | | value: 'depId', |
| | | emitPath: false |
| | | value: 'depId' |
| | | }, |
| | | depProps:{ |
| | | expandTrigger: 'hover', |
| | |
| | | emitPath: false |
| | | }, |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'username', |
| | | multiple: 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){ |
| | |
| | | } |
| | | }, |
| | | cas2Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | cas3Props: { |
| | | expandTrigger: 'hover', |
| | | value: 'uid', |
| | | label: 'realName', |
| | | multiple: true, |
| | |
| | | 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){ |
| | |
| | | } |
| | | }, |
| | | 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){ |
| | |
| | | }); |
| | | 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' }], |
| | |
| | | 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' }] |
| | |
| | | const workSelectRef = ref() |
| | | // 页面载入时执行方法 |
| | | onMounted(() => { |
| | | |
| | | getBasicData() |
| | | }); |
| | | |
| | | const openWorkSelect = ()=>{ |
| | |
| | | } |
| | | |
| | | 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)) |
| | |
| | | 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 = ()=>{ |
| | |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (arr: Array<any>)=>{ |
| | | const transform2Arr = (arr: Array<any>)=>{ |
| | | return arr.map((i)=>{ |
| | | return { |
| | | uid: arr[0], |
| | | certificate: arr[1].split(',')[0], |
| | | certExpiredAt: arr[1].split(',')[1], |
| | | certTypeName: arr[1].split(',')[2] |
| | | uid: i, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | const transform2Obj = (id:any)=>{ |
| | | return { |
| | | uid: id, |
| | | certificate: '', |
| | | certExpiredAt: '', |
| | | certTypeName: '' |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | 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} |
| | |
| | | // 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({ |
| | |
| | | message: '提交成功!' |
| | | }); |
| | | formEl.resetFields() |
| | | state.form.guardianUids = [] |
| | | state.form.involveOtherWork = [] |
| | | getBasicData() |
| | | } else { |
| | | ElMessage({ |
| | |
| | | } |
| | | } else { |
| | | console.log('error submit!', fields) |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '有表单内容未完成,请再次检查完善' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | <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> |
| | | |
| | |
| | | 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', |
| | |
| | | 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() |
| | |
| | | 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(() => { |
| | |
| | | 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', |
| | |
| | | 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', |
| | |
| | | } |
| | | 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', |
| | |
| | | } |
| | | 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', |
| | |
| | | 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', |
| | |
| | | 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', |
| | |
| | | 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', |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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" |
| | |
| | | isFull:boolean; |
| | | themeColor:string; |
| | | endTime:string |
| | | pieData: Array<status> |
| | | squareData: Array<status> |
| | | } |
| | | interface type { |
| | | id: number | null; |
| | |
| | | value: 2 |
| | | } |
| | | ], |
| | | pieData: [], |
| | | squareData: [], |
| | | warningData: [ |
| | | { |
| | | name: '黄公子', |
| | |
| | | } |
| | | 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', |
| | |
| | | } |
| | | 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', |
| | |
| | | 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', |
| | |
| | | }, |
| | | }, |
| | | 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: '盲板抽堵作业' } |
| | | ] |
| | | } |
| | | ] |
| | |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | data: ['事业部1', '事业部2', '事业部3', '事业部4', '事业部5', '事业部6', '事业部7'], |
| | | data: ['部门一','部门二','部门三'], |
| | | axisTick: { |
| | | alignWithLabel: true |
| | | }, |
| | |
| | | name: 'Direct', |
| | | type: 'bar', |
| | | barWidth: '60%', |
| | | data: [10, 52, 200, 334, 390, 330, 220] |
| | | data: [0,0,0], |
| | | } |
| | | ] |
| | | } |
| | |
| | | }, |
| | | 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 |
| | |
| | | <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> |
| | |
| | | totalSize: number; |
| | | addRecord: { |
| | | groupName: string; |
| | | department: number | null; |
| | | depId: number | null; |
| | | groupMembers: Array<any>; |
| | | groupId: number | null; |
| | | groupMemberIds: Array<any>; |
| | | groupInfo: string; |
| | | }; |
| | | details: { |
| | |
| | | department: number | null; |
| | | groupMembers: Array<any>; |
| | | groupInfo: string; |
| | | depId: number | null; |
| | | }; |
| | | } |
| | | |
| | |
| | | searchWord: '', |
| | | tableData: [], |
| | | departmentList: [], |
| | | department: '', |
| | | workerList: [], |
| | | casProps: { |
| | | expandTrigger: 'hover', |
| | |
| | | deleteDialog: false, |
| | | deleteSetDialog: false, |
| | | addRecord: { |
| | | groupName: '', |
| | | department: null, |
| | | groupMembers: [], |
| | | depId: null, |
| | | groupInfo: '' |
| | | groupId: null, |
| | | groupInfo: '', |
| | | groupName: '', |
| | | groupMemberIds: [], |
| | | }, |
| | | details: { |
| | | groupName: '', |
| | |
| | | |
| | | 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; |
| | |
| | | |
| | | // 修改工作时段方法 |
| | | const editRecordBtn = async (index, row) => { |
| | | state.addRecord = JSON.parse(JSON.stringify(row)); |
| | | state.addRecord.department = ''; |
| | | state.addRecord.groupMembers = []; |
| | | 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') { |
| | |
| | | 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 { |
| | |
| | | }; |
| | | |
| | | const closeAdd = () => { |
| | | state.addRecord = {}; |
| | | state.addRecord = { |
| | | depId: null, |
| | | groupId: null, |
| | | groupInfo: '', |
| | | groupName: '', |
| | | groupMemberIds: [], |
| | | }; |
| | | state.chosenIndex = null; |
| | | }; |
| | | const openAdd = () => { |
| | |
| | | <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> |
| | |
| | | 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 {} |
| | |
| | | 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, |
| | |
| | | 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: [], //角色数据 |
| | |
| | | { id: 3, name: '普通员工' } |
| | | ], |
| | | }); |
| | | |
| | | // 打开弹窗 |
| | | const openDialog = (type: string, value: any, departmentList: [], roleList: [], dutyList:[]) => { |
| | | state.isShowUserDialog = true; |