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