From 15315b1772036eb5168792aac0121f6e9005b11e Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 08 一月 2024 10:16:26 +0800
Subject: [PATCH] Default Changelist

---
 src/layout/navBars/breadcrumb/user.vue                               |   12 
 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue             |   10 
 src/views/system/personShiftManage/scheduleManage/schedule/index.vue |   65 +
 src/views/newSpecialWorkSystem/workTicket/zysq/index.vue             |  119 ++-
 src/utils/toolsValidate.ts                                           |    5 
 src/views/system/user/component/dialogCertificate.vue                |    1 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue |  224 +++--
 src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue   |  249 ++++--
 src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue |  218 +++--
 src/views/newSpecialWorkSystem/workerManage/guardianBase/index.vue   |    2 
 src/views/system/user/component/userDialog.vue                       |   15 
 src/i18n/pages/login/zh-cn.ts                                        |    4 
 src/views/newSpecialWorkSystem/workerManage/aqyBase/index.vue        |    2 
 src/views/specialWorkSystem/specialIndex/index.vue                   |   40 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue  |  221 +++--
 src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue  |  223 +++--
 src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue  |  242 +++--
 src/views/loginPage/component/accountLogin.vue                       |   37 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue  |  245 +++--
 src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue |  228 +++--
 src/views/newSpecialWorkSystem/workerManage/operatorBase/index.vue   |    2 
 21 files changed, 1,306 insertions(+), 858 deletions(-)

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

--
Gitblit v1.9.2