From 9673c181dd7b3882cbde386422ffb9a2b1949693 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 25 三月 2024 10:02:42 +0800
Subject: [PATCH] Default Changelist

---
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue    |  915 +++++++
 src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue       |   31 
 src/views/newSpecialWorkSystem/workTicket/zysq/index.vue                      |   26 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue            |   62 
 src/views/newHome/index.vue                                                   |    1 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue      |  783 ++++++
 src/views/specialWorkSystem/specialIndex/index.vue                            |  207 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue    |  920 +++++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue     |  796 ++++++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue           |   62 
 src/api/specialWorkSystem/workApply/index.ts                                  |   67 
 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue                      |  188 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue |    5 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue          |   62 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue          |   62 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue    |  742 +++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue     |  706 +++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue     |  788 ++++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue     |  967 +++++++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue           |   62 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue           |   62 
 src/views/dataUpload/saftyBaseInfo/judgeReport/index.vue                      |    5 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue           |   66 
 src/api/specialWorkSystem/specialIndex/index.ts                               |    7 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue          |   64 
 25 files changed, 7,297 insertions(+), 359 deletions(-)

diff --git a/src/api/specialWorkSystem/specialIndex/index.ts b/src/api/specialWorkSystem/specialIndex/index.ts
index da21744..b40b8fd 100644
--- a/src/api/specialWorkSystem/specialIndex/index.ts
+++ b/src/api/specialWorkSystem/specialIndex/index.ts
@@ -35,6 +35,13 @@
                 method: 'post',
                 data: data
             });
+        },
+        getWorkWarning: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/statistic/work/warning`,
+                method: 'post',
+                data: data
+            });
         }
     };
 }
diff --git a/src/api/specialWorkSystem/workApply/index.ts b/src/api/specialWorkSystem/workApply/index.ts
index 511d8d8..83b5d0d 100644
--- a/src/api/specialWorkSystem/workApply/index.ts
+++ b/src/api/specialWorkSystem/workApply/index.ts
@@ -81,9 +81,23 @@
                 data: data
             });
         },
+        modFireApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/hot`,
+                method: 'post',
+                data: data
+            });
+        },
         submitSpaceApply: (data: object) => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/confinedspace`,
+                method: 'post',
+                data: data
+            });
+        },
+        modSpaceApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/confinedspace`,
                 method: 'post',
                 data: data
             });
@@ -95,9 +109,23 @@
                 data: data
             });
         },
+        modHoistApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/hoisting`,
+                method: 'post',
+                data: data
+            });
+        },
         submitGroundApply: (data: object) => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/groundBreaking`,
+                method: 'post',
+                data: data
+            });
+        },
+        modGroundApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/groundBreaking`,
                 method: 'post',
                 data: data
             });
@@ -109,9 +137,23 @@
                 data: data
             });
         },
+        modBrokenApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/brokenCircuit`,
+                method: 'post',
+                data: data
+            });
+        },
         submitHeightApply: (data: object) => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/hight`,
+                method: 'post',
+                data: data
+            });
+        },
+        modHeightApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/hight`,
                 method: 'post',
                 data: data
             });
@@ -123,6 +165,13 @@
                 data: data
             });
         },
+        modPowerApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/temporaryPower`,
+                method: 'post',
+                data: data
+            });
+        },
         submitPlateApply: (data: object) => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/blindPlatePlugging`,
@@ -130,7 +179,14 @@
                 data: data
             });
         },
-
+        modPlateApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/blindPlatePlugging`,
+                method: 'post',
+                data: data
+            });
+        },
+        
         // 所有记录列表
         getApplyList: (data: object) => {
             return request({
@@ -156,6 +212,15 @@
             });
         },
 
+        // 获取所有风险辨识
+        getAllRiskIdentity: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/risk/manage/select`,
+                method: 'post',
+                data: data,
+            });
+        },
+
         // 导出打印接口
         postPrinting: (data: object) => {
             return request({
diff --git a/src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue b/src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue
index 29526a9..ddb5bb7 100644
--- a/src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue
+++ b/src/views/dataUpload/saftyBaseInfo/judgeReport/components/addReport.vue
@@ -4,6 +4,14 @@
       <el-form :model="form" size="default" ref="formRef" :rules="rules" label-width="120px">
         <el-row :gutter="35">
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="" prop="type">
+              <el-radio-group v-model="form.type">
+                <el-radio :label="1">安全评价报告</el-radio>
+                <el-radio :label="2">安全三同时</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
             <el-form-item label="报告名称" prop="name">
               <el-input v-model.trim="form.name" placeholder="报告名称" clearable></el-input>
             </el-form-item>
@@ -26,6 +34,14 @@
                   <div class="el-upload__tip">仅支持上传pdf文件,尺寸小于2M,最多可上传1张</div>
                 </template>
               </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="title == '新增上报'? false : true">
+            <el-form-item label="删除状态" prop="deleted">
+              <el-radio-group v-model="form.deleted">
+                <el-radio label="0">未删除</el-radio>
+                <el-radio label="1">已删除</el-radio>
+              </el-radio-group>
             </el-form-item>
           </el-col>
         </el-row>
@@ -55,10 +71,12 @@
   isShowDialog: boolean;
   form: {
     uuid: string
+    type: null | number
     name: string
     remarks: string
     evaluateTime: string
     files: string
+    deleted: string
   }
   rules:{},
   fileList: [],
@@ -75,12 +93,15 @@
       isShowDialog: false,
       form: {
         uuid: '',
+        type: 1,
         name: '',
         remarks: '',
         evaluateTime: '',
-        files: ''
+        files: '',
+        deleted: '0'
       },
       rules:{
+        type: [{ required: true, message: '请选择报告类型', trigger: 'blur'}],
         name: [{ required: true, message: '请填写报告名称', trigger: 'blur'}],
         remarks: [{ required: true, message: '请填写备注', trigger: 'blur'}],
         evaluateTime: [{ required: true, message: '请选择评价时间', trigger: 'blur'}]
@@ -104,19 +125,23 @@
         state.title = '新增上报';
         state.form = {
           uuid: '',
+          type: 1,
           name: '',
           remarks: '',
           evaluateTime: '',
-          files: ''
+          files: '',
+          deleted: '0'
         }
       }else{
         state.title = '重新上报';
         state.form = {
+          type: 1,
           uuid: data.uuid,
           name: '',
           remarks: '',
           evaluateTime: '',
-          files: ''
+          files: '',
+          deleted: '0'
         }
       }
       state.fileList = []
diff --git a/src/views/dataUpload/saftyBaseInfo/judgeReport/index.vue b/src/views/dataUpload/saftyBaseInfo/judgeReport/index.vue
index bf72612..5cdcb9e 100644
--- a/src/views/dataUpload/saftyBaseInfo/judgeReport/index.vue
+++ b/src/views/dataUpload/saftyBaseInfo/judgeReport/index.vue
@@ -12,6 +12,11 @@
                 <el-table-column prop="id" label="id" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="createTime" label="上报时间" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="name" label="报告名称" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="type" label="报告类型" show-overflow-tooltip>
+                  <template #default="scope">
+                    {{scope.row.type == 1 ? '安全评价报告':scope.row.type == 2 ? '安全三同时':'--'}}
+                  </template>
+                </el-table-column>
                 <el-table-column prop="remarks" label="备注" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="evaluateTime" label="评价时间" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="files" label="附件" show-overflow-tooltip>
diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
index 5e11dcb..8de963d 100644
--- a/src/views/newHome/index.vue
+++ b/src/views/newHome/index.vue
@@ -362,6 +362,7 @@
             // router.push({
             //     name: "warningScreen"
             // });
+
             window.open('http://39.104.85.193:8585/');
         };
 
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue
new file mode 100644
index 0000000..aa9da97
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue
@@ -0,0 +1,915 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="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="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="lists.departList" :show-all-levels="false"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业内容" prop="workContent">
+              <el-input
+                  v-model="form.workContent"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业内容"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="作业地点" prop="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="断路原因" prop="workDetail.bcReason">
+            <el-input
+                v-model="form.workDetail.bcReason"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入断路原因"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="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 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">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="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" class="valueSelect">
+          <el-form-item label="关联其他特殊作业">
+<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--              <el-option-->
+<!--                  v-for="item in otherWorkList"-->
+<!--                  :key="item.value"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.label"-->
+<!--              />-->
+<!--            </el-select>-->
+            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+              <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="断路地段相关说明" prop="workDetail.bcExplain">
+              <el-input
+                  v-model="form.workDetail.bcExplain"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入断路地段相关说明并在右方上传示意图"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="断路地段示意图" prop="workDetail.bcPath">
+              <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <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="确认人">-->
+<!--              <template #default="scope">-->
+
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column prop="address" label="操作">-->
+<!--              <template #default="scope">-->
+<!--                <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+          </el-table>
+        </el-row>
+        <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 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>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="其他安全措施">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  :autosize="{ minRows: 2 }"-->
+<!--                  type="textarea"-->
+<!--                  placeholder="请输入其他安全措施"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="编制人">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  placeholder="请输入编制人"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style="display: flex;justify-content: center">
+          <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">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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="workDetail.signUid">
+              <el-select v-model="form.workDetail.signUid" filterable clearable>
+                <el-option
+                    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>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {UploadProps} from "element-plus/es";
+  import axios from "axios";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		equipmentDialog: boolean,
+    showDialog: boolean
+    props1:{},
+    depProps:{},
+    depProps2:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    tabLoading: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number,
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'brokenDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 5,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            involvedDepIds: [],
+            bcReason: '',
+            bcExplain: '',
+            bcPath: [],
+            signUid: null
+          },
+          remark: ''
+				},
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        },
+        depProps2:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false,
+          multiple: true
+        },
+        fileList: [],
+        imgLimit: 3,
+        uploadUrl: '',
+        dialogVisible: false,
+        dialogImageUrl: null
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bcExplain": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bcPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.signUid": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.form.workDetail.involvedDepIds = row.workDetail.involvedDepIds.split(',').map(i=>Number(i))
+        state.fileList = row.workDetail.bcPath.split(',').map(item => {
+          return {
+            url:  item,
+            name: item.match(/specialWork9step\/(.*?)\?/)[1]
+          }
+        })
+        state.form.workDetail.bcPath = row.workDetail.bcPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1])
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 5,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            involvedDepIds: [],
+            bcReason: '',
+            bcExplain: '',
+            bcPath: [],
+            signUid: null
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // 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(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modBrokenApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              state.form.workDetail.bcPath = []
+              state.fileList = []
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.involvedDepIds = state.form.workDetail.involvedDepIds.split(',')
+              state.form.workDetail.bcPath = state.form.workDetail.bcPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+        console.log(uploadFile);
+      };
+
+      const handlePictureCardPreview = (uploadFile: { url: string }) => {
+        state.dialogImageUrl = uploadFile.url!;
+        state.dialogVisible = true;
+      };
+
+      const getUploadUrl = async (rawFile: any) => {
+        // const fileSize = rawFile.size / 1024 / 1024 < 5 ? '1' : '0'
+        if(rawFile.size / 1024 / 1024 > 2){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过2M。'
+          });
+          return Promise.reject(false)
+        }else{
+          const res = await workApplyApi().getUpload9Url(rawFile.name);
+          state.form.workDetail.bcPath.push(res.data.data.fileName)
+          state.uploadUrl = res.data.data.uploadUrl;
+        }
+      };
+
+      const upload = async (params: any) => {
+        let reader = new FileReader();
+        reader.readAsArrayBuffer(params.file);
+        reader.onload = async () => {
+          axios
+              .put(state.uploadUrl, reader.result, {
+                header: { 'Content-Type': 'multipart/form-data' }
+              })
+              .then(() => {
+                // if (state.fileList.length === 2) {
+                // 	state.fileList.splice(0, 1);
+                // }
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+        if (file && file.status === "success") {
+          const result = new Promise((resolve, reject) => {
+            ElMessageBox.confirm('此操作将彻底删除该图片, 不可恢复,是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+                .then(() => {
+                  // console.log(state.workDetail.bcPath,'path')
+                  const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath))
+                  fileList.map((item, index) => {
+                    if (item.uid === file.uid) {
+                      fileList.splice(index, 1)
+                      state.form.workDetail.bcPath.splice(index, 1)
+                      // 请求删除接口
+                      deletePic(list[index])
+                    }
+                  })
+                })
+                .catch(() => {
+                  reject(false);
+                });
+          });
+          return result;
+        }
+      };
+
+      // 删除图片接口
+      const deletePic = async(fileName:string)=>{
+        const res = await workApplyApi().deleteFile({fileName: fileName})
+        if (res.data.code === '200') {
+          ElMessage({
+            type: 'success',
+            message: '删除成功!'
+          });
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      const showTip =()=>{
+        ElMessage({
+          type: 'warning',
+          message: '超出文件上传数量'
+        });
+      }
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        handlePreview,
+        getUploadUrl,
+        upload,
+        showTip,
+        handlePictureCardPreview,
+        beforeRemove,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue
new file mode 100644
index 0000000..fdf1be0
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue
@@ -0,0 +1,783 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="动火级别" prop="workLevel">
+            <el-select v-model="form.workLevel" clearable>
+              <el-option
+                  v-for="item in workLevelList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业地点及动火部位" prop="workLocation">
+            <el-input
+                v-model="form.workLocation"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业地点及动火部位"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="动火方式" prop="workDetail.workMethod">
+            <el-input
+                v-model="form.workDetail.workMethod"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入动火方式"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.opList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <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="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 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 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 lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.content"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <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="确认人">-->
+<!--              <template #default="scope">-->
+
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column prop="address" label="操作">-->
+<!--              <template #default="scope">-->
+<!--                <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+          </el-table>
+        </el-row>
+        <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 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>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="其他安全措施">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  :autosize="{ minRows: 2 }"-->
+<!--                  type="textarea"-->
+<!--                  placeholder="请输入其他安全措施"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="编制人">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  placeholder="请输入编制人"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style="display: flex;justify-content: center">
+          <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">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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 v-throttle @click="submitForm(ruleFormRef)">提交修改</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, onUpdated } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		equipmentDialog: boolean,
+    tabLoading: boolean
+    showDialog: boolean
+    props1:{}
+    depProps:{}
+    safetyMeasureBasicList: []
+	}
+	export default defineComponent({
+		name: 'fireDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 1,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            workMethod: ''
+          },
+          remark: ''
+				},
+				workLevelList: [
+					{
+						label: "一级动火作业",
+						value: 1
+					},
+					{
+						label: "二级动火作业",
+						value: 2
+					},
+					{
+						label: "特级动火作业",
+						value: 3
+					}
+				],
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.workMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      })
+
+      onUpdated(()=>{
+        console.log('false loading')
+      })
+
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key]
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+              content: item.content,
+              approvalDepBasicId: item.approvalDepBasicId,
+              approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+              approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        console.log(state.form,'form')
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 1,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            workMethod: ''
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+
+      const findParent = ()=>{
+        // state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1]
+        // state.form.seDepId = state.form.depIdList[0]
+        state.form.seDepId = findTopLevelId(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))
+          // if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+          //   state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+          //     content,
+          //     approvalDepBasicId: id,
+          //     approvalUids: [],
+          //     approvalType: null
+          //   }))
+          // }else{
+          //   state.form.approvalDepBasicList = []
+          // }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+      const transform2EObj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            // data.analystUids = transformArr(data.analystUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2EObj(data.acceptUid)
+            data.lastApprover = transform2EObj(data.lastApprover)
+            const res = await workApplyApi().modFireApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              })
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        workSelectRef,
+        clearFile,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+      position: relative;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue
new file mode 100644
index 0000000..cfc65e5
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue
@@ -0,0 +1,920 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="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="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" multiple clearable>
+              <el-option
+                  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="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="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 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="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" class="valueSelect">
+            <el-form-item label="关联其他特殊作业">
+<!--              <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in otherWorkList"-->
+<!--                    :key="item.value"-->
+<!--                    :label="item.label"-->
+<!--                    :value="item.label"-->
+<!--                />-->
+<!--              </el-select>-->
+              <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+                <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业范围、内容、方式" prop="workDetail.gbDesc">
+              <el-input
+                  v-model="form.workDetail.gbDesc"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业范围、内容、方式(包括深度、面积)并在右方上传简图"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="作业简图" prop="workDetail.gbPath">
+              <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <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="确认人">-->
+<!--              <template #default="scope">-->
+
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column prop="address" label="操作">-->
+<!--              <template #default="scope">-->
+<!--                <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+          </el-table>
+        </el-row>
+        <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 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>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="其他安全措施">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  :autosize="{ minRows: 2 }"-->
+<!--                  type="textarea"-->
+<!--                  placeholder="请输入其他安全措施"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="编制人">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  placeholder="请输入编制人"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style="display: flex;justify-content: center">
+          <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">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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="workDetail.signUid">
+              <el-select v-model="form.workDetail.signUid" filterable clearable>
+                <el-option
+                    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>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    <el-dialog v-model="dialogVisible">
+      <img w-full :src="dialogImageUrl" alt="Preview Image" />
+    </el-dialog>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+  import {ElMessage, ElMessageBox, UploadProps, UploadUserFile} from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import axios from "axios";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		equipmentDialog: boolean,
+    showDialog: boolean
+    props1:{},
+    depProps:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number
+    tabLoading: boolean
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'groundDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 4,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            gbDesc: '',
+            gbPath: [],
+            signUid: null
+          },
+          remark: ''
+				},
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        },
+        fileList: [],
+        imgLimit: 3,
+        uploadUrl: '',
+        dialogVisible: false,
+        dialogImageUrl: null,
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.signUid": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.fileList = row.workDetail.gbPath.split(',').map(item => {
+          return {
+            url:  item,
+            name: item.match(/specialWork9step\/(.*?)\?/)[1]
+          }
+        })
+        state.form.workDetail.gbPath = row.workDetail.gbPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1])
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 4,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            gbDesc: '',
+            gbPath: [],
+            signUid: null
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.workDetail.gbPath = state.form.workDetail.gbPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modGroundApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              state.form.workDetail.gbPath = []
+              state.fileList = []
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.gbPath = state.form.workDetail.gbPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const findNearestDepLevel2DepId = (data, targetDepId) => {
+        let nearestDepId = null;
+
+        const traverseTree = (node) => {
+          if (node.depId === targetDepId) {
+            return true;
+          }
+
+          if (node.children && node.children.length > 0) {
+            for (const child of node.children) {
+              const found = traverseTree(child);
+              if (found) {
+                if (child.depLevel === 2) {
+                  nearestDepId = child.depId;
+                }
+                return true;
+              }
+            }
+          }
+
+          return false;
+        };
+
+        for (const root of data) {
+          traverseTree(root);
+        }
+
+        return nearestDepId;
+      };
+
+      const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+        console.log(uploadFile);
+      };
+
+      const handlePictureCardPreview = (uploadFile: { url: string }) => {
+        state.dialogImageUrl = uploadFile.url!;
+        state.dialogVisible = true;
+      };
+
+      const getUploadUrl = async(rawFile: any) => {
+        if(rawFile.size / 1024 / 1024 > 2){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过2M。'
+          });
+          return Promise.reject(false)
+        }else{
+          const res = await workApplyApi().getUpload9Url(rawFile.name)
+          state.form.workDetail.gbPath.push(res.data.data.fileName)
+          state.uploadUrl = res.data.data.uploadUrl
+        }
+      };
+
+      const upload = async (params: any) => {
+        let reader = new FileReader();
+        reader.readAsArrayBuffer(params.file);
+        reader.onload = async () => {
+          axios
+              .put(state.uploadUrl, reader.result, {
+                header: { 'Content-Type': 'multipart/form-data' }
+              })
+              .then(() => {
+                // if (state.fileList.length === 2) {
+                // 	state.fileList.splice(0, 1);
+                // }
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+        if (file && file.status === "success") {
+          const result = new Promise((resolve, reject) => {
+            ElMessageBox.confirm('此操作将彻底删除该图片,不可恢复,是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+                .then(() => {
+                  // console.log(state.workDetail.gbPath,'path')
+                  const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath))
+                  fileList.map((item, index) => {
+                    if (item.uid === file.uid) {
+                      fileList.splice(index, 1)
+                      state.form.workDetail.gbPath.splice(index, 1)
+                      // 请求删除接口
+                      deletePic(list[index])
+                    }
+                  })
+                  console.log(state.form.workDetail.gbPath, 'gbpath')
+                })
+                .catch(() => {
+                  reject(false);
+                });
+          });
+          return result;
+        }
+      };
+
+      // 删除图片接口
+      const deletePic = async(fileName:string)=>{
+        const res = await workApplyApi().deleteFile({fileName: fileName})
+        if (res.data.code === '200') {
+          ElMessage({
+            type: 'success',
+            message: '删除成功!'
+          });
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      const showTip =()=>{
+        ElMessage({
+          type: 'warning',
+          message: '超出文件上传数量'
+        });
+      }
+
+      // 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        handlePreview,
+        getUploadUrl,
+        upload,
+        showTip,
+        handlePictureCardPreview,
+        beforeRemove,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue
new file mode 100644
index 0000000..40edfb2
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue
@@ -0,0 +1,742 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="高处作业级别" prop="workLevel">
+            <el-select v-model="form.workLevel" clearable>
+              <el-option
+                  v-for="item in workLevelList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业地点" prop="workLocation">
+            <el-input
+                v-model="form.workLocation"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业地点"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业高度(m)" prop="workDetail.hight">
+            <el-input
+                v-model="form.workDetail.hight"
+                placeholder="请输入作业高度"
+                type="number"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.opList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <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="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 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="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+        <el-col :span="12" class="valueSelect">
+          <el-form-item label="关联其他特殊作业">
+<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--              <el-option-->
+<!--                  v-for="item in otherWorkList"-->
+<!--                  :key="item.value"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.label"-->
+<!--              />-->
+<!--            </el-select>-->
+            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+              <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="绑定执法仪" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施"/>
+          </el-table>
+        </el-row>
+        <el-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 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 v-loading="tabLoading">
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" filterable label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		equipmentDialog: boolean,
+    showDialog: boolean
+    props1:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+    tabLoading: boolean
+	}
+	export default defineComponent({
+		name: 'heightDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 6,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hight: ''
+          },
+          remark: ''
+				},
+        workLevelList: [
+          {
+            label: "一级高处作业",
+            value: 4
+          },
+          {
+            label: "二级高处作业",
+            value: 5
+          },
+          {
+            label: "三级高处作业",
+            value: 6
+          },
+          {
+            label: "特级高处作业",
+            value: 7
+          }
+        ],
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 6,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hight: ''
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modHeightApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const findNearestDepLevel2DepId = (data, targetDepId) => {
+        let nearestDepId = null;
+
+        const traverseTree = (node) => {
+          if (node.depId === targetDepId) {
+            return true;
+          }
+
+          if (node.children && node.children.length > 0) {
+            for (const child of node.children) {
+              const found = traverseTree(child);
+              if (found) {
+                if (child.depLevel === 2) {
+                  nearestDepId = child.depId;
+                }
+                return true;
+              }
+            }
+          }
+
+          return false;
+        };
+
+        for (const root of data) {
+          traverseTree(root);
+        }
+
+        return nearestDepId;
+      };
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue
new file mode 100644
index 0000000..dab9391
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue
@@ -0,0 +1,796 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="吊装级别" prop="workLevel">
+            <el-select v-model="form.workLevel" clearable>
+              <el-option
+                  v-for="item in workLevelList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="吊物重量(t)" prop="workDetail.weightMass">
+              <el-input
+                  v-model="form.workDetail.weightMass"
+                  placeholder="请输入吊物重量"
+                  type="number"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="吊具名称" prop="workDetail.hoistingToolName">
+              <el-input
+                  v-model="form.workDetail.hoistingToolName"
+                  placeholder="请输入吊具名称"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="吊装地点" prop="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="吊装内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.opList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <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="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 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="workDetail.solicitorUids">
+            <el-select v-model="form.workDetail.solicitorUids" filterable multiple clearable>
+              <el-option
+                  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" class="valueSelect">
+          <el-form-item label="关联其他特殊作业">
+<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--              <el-option-->
+<!--                  v-for="item in otherWorkList"-->
+<!--                  :key="item.value"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.label"-->
+<!--              />-->
+<!--            </el-select>-->
+            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+              <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <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="确认人">-->
+<!--              <template #default="scope">-->
+
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column prop="address" label="操作">-->
+<!--              <template #default="scope">-->
+<!--                <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+          </el-table>
+        </el-row>
+        <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 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>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="其他安全措施">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  :autosize="{ minRows: 2 }"-->
+<!--                  type="textarea"-->
+<!--                  placeholder="请输入其他安全措施"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="编制人">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  placeholder="请输入编制人"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style="display: flex;justify-content: center">
+          <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">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>
+		equipmentDialog: boolean
+    showDialog: boolean
+    props1:{}
+    depProps:{}
+    safetyMeasureBasicList: []
+    tabLoading: boolean
+	}
+	export default defineComponent({
+		name: 'hoistDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 3,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hoistingToolName: '',
+            weightMass: '',
+            solicitorUids: []
+          },
+          remark:''
+				},
+        workLevelList: [
+          {
+            label: "一级吊装作业",
+            value: 8
+          },
+          {
+            label: "二级吊装作业",
+            value: 9
+          },
+          {
+            label: "三级吊装作业",
+            value: 10
+          }
+        ],
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.solicitorUids": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.workDetail.solicitorUids = row.workDetail.solicitorUids.split(',').map(i=>Number(i))
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 3,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hoistingToolName: '',
+            weightMass: '',
+            solicitorUids: []
+          },
+          remark:''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id:any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modHoistApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
index 964fca9..ecea5c2 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
@@ -14,7 +14,7 @@
                       </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                      <el-form-item label="风险研判报告记录附件" prop="judgePicturePath">
+                      <el-form-item label="风险研判报告记录附件">
                         <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
                           <el-icon><Plus /></el-icon>
                           <template #tip>
@@ -96,8 +96,7 @@
               judgePicturePath: []
             },
             jsaFormRules: {
-              judgeRecord: [{ required: true, message: '请填写jsa风险研判结论', trigger: 'blur' }],
-              judgePicturePath: [{ required: true, message: '请上传风险研判报告附件', trigger: 'blur' }]
+              judgeRecord: [{ required: true, message: '请填写jsa风险研判结论', trigger: 'blur' }]
             },
             fileList: [],
             imgLimit: 3,
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue
new file mode 100644
index 0000000..6be01e2
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue
@@ -0,0 +1,967 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业类别" prop="workLevel">
+            <el-select v-model="form.workLevel" clearable>
+              <el-option
+                  v-for="item in workLevelList"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业地点" prop="workLocation">
+            <el-input
+                v-model="form.workLocation"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业地点"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="设备管道名称" prop="workDetail.pipingName">
+              <el-input
+                  v-model="form.workDetail.pipingName"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入设备管道名称"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="管道介质" prop="workDetail.media">
+              <el-input
+                  v-model="form.workDetail.media"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入管道介质"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="管道温度(℃)" prop="workDetail.temperature">
+              <el-input
+                  v-model="form.workDetail.temperature"
+                  type="number"
+                  placeholder="请输入管道温度"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="管道压力(kPa)" prop="workDetail.pressure">
+              <el-input
+                  v-model="form.workDetail.pressure"
+                  type="number"
+                  placeholder="请输入管道压力"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="盲板材质" prop="workDetail.bpMaterialQuality">
+              <el-input
+                  v-model="form.workDetail.bpMaterialQuality"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入盲板材质"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="盲板规格" prop="workDetail.bpSpecification">
+              <el-input
+                  v-model="form.workDetail.bpSpecification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入盲板规格"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="盲板编号" prop="workDetail.bpCode">
+              <el-input
+                  v-model="form.workDetail.bpCode"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入盲板编号"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="盲板位置相关描述" prop="workDetail.bpLocationDesc">
+              <el-input
+                  v-model="form.workDetail.bpLocationDesc"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入盲板位置相关描述并在右方上传位置图"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="盲板位置示意图" prop="workDetail.bpLocationMapPath">
+              <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.opList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+        <el-col :span="12" class="valueSelect">
+          <el-form-item label="关联其他特殊作业">
+<!--            <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--              <el-option-->
+<!--                  v-for="item in otherWorkList"-->
+<!--                  :key="item.value"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.label"-->
+<!--              />-->
+<!--            </el-select>-->
+            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+              <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-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="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 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="guardianUids">
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="编制人姓名" prop="workDetail.preparedByName">
+              <el-input
+                  v-model="form.workDetail.preparedByName"
+                  placeholder="请输入编制人姓名"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="编制时间" prop="workDetail.preparedTime">
+              <el-date-picker
+                  v-model="form.workDetail.preparedTime"
+                  format="YYYY-MM-DD HH:mm"
+                  value-format="YYYY-MM-DD HH:mm:00"
+                  type="datetime"
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施"/>
+          </el-table>
+        </el-row>
+        <el-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 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 v-loading="tabLoading">
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {UploadProps} from "element-plus/es";
+  import axios from "axios";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		equipmentDialog: boolean,
+    showDialog: boolean,
+    props1:{},
+    depProps:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    imgLimit: number,
+    tabLoading: boolean
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'plateForm',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 8,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            pipingName: '',
+            bpCode: '',
+            media: '',
+            temperature: null,
+            pressure: null,
+            bpMaterialQuality: '',
+            bpSpecification: '',
+            bpLocationMapPath: [],
+            bpLocationDesc: '',
+            preparedByName: '',
+            preparedTime: ''
+          },
+          remark: ''
+				},
+        workLevelList: [
+          {
+            label: "抽盲板作业",
+            value: 11
+          },
+          {
+            label: "堵盲板作业",
+            value: 12
+          }
+        ],
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        },
+        fileList: [],
+        imgLimit: 3,
+        uploadUrl: '',
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.media": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.temperature": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.pressure": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bpMaterialQuality": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bpSpecification": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bpLocationMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.bpLocationDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedByName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedTime": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.fileList = row.workDetail.bpLocationMapPath.split(',').map(item => {
+          return {
+            url:  item,
+            name: item.match(/specialWork9step\/(.*?)\?/)[1]
+          }
+        })
+        state.form.workDetail.bpLocationMapPath = row.workDetail.bpLocationMapPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1])
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 8,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            pipingName: '',
+            bpCode: '',
+            media: '',
+            temperature: null,
+            pressure: null,
+            bpMaterialQuality: '',
+            bpSpecification: '',
+            bpLocationMapPath: [],
+            bpLocationDesc: '',
+            preparedByName: '',
+            preparedTime: ''
+          },
+          remark:''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id:any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modPlateApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              state.form.workDetail.bpLocationMapPath = []
+              state.fileList = []
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+        console.log(uploadFile);
+      };
+
+      const getUploadUrl = async (rawFile: any) => {
+        // const fileSize = rawFile.size / 1024 / 1024 < 5 ? '1' : '0'
+        if(rawFile.size / 1024 / 1024 > 2){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过2M。'
+          });
+          return Promise.reject(false)
+        }else{
+          const res = await workApplyApi().getUpload9Url(rawFile.name);
+          state.form.workDetail.bpLocationMapPath.push(res.data.data.fileName)
+          state.uploadUrl = res.data.data.uploadUrl;
+        }
+      };
+
+      const upload = async (params: any) => {
+        let reader = new FileReader();
+        reader.readAsArrayBuffer(params.file);
+        reader.onload = async () => {
+          axios
+              .put(state.uploadUrl, reader.result, {
+                header: { 'Content-Type': 'multipart/form-data' }
+              })
+              .then(() => {
+                // if (state.fileList.length === 2) {
+                // 	state.fileList.splice(0, 1);
+                // }
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+        if (file && file.status === "success") {
+          const result = new Promise((resolve, reject) => {
+            ElMessageBox.confirm('此操作将彻底删除该图片,不可恢复,是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+                .then(() => {
+                  // console.log(state.workDetail.bpLocationMapPath,'path')
+                  const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath))
+                  fileList.map((item, index) => {
+                    if (item.uid === file.uid) {
+                      fileList.splice(index, 1)
+                      state.form.workDetail.bpLocationMapPath.splice(index, 1)
+                      // 请求删除接口
+                      deletePic(list[index])
+                    }
+                  })
+                })
+                .catch(() => {
+                  reject(false);
+                });
+          });
+          return result;
+        }
+      };
+
+      // 删除图片接口
+      const deletePic = async(fileName:string)=>{
+        const res = await workApplyApi().deleteFile({fileName: fileName})
+        if (res.data.code === '200') {
+          ElMessage({
+            type: 'success',
+            message: '删除成功!'
+          });
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      const showTip =()=>{
+        ElMessage({
+          type: 'warning',
+          message: '超出文件上传数量'
+        });
+      }
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        handlePreview,
+        getUploadUrl,
+        upload,
+        showTip,
+        beforeRemove,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue
new file mode 100644
index 0000000..f05b607
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue
@@ -0,0 +1,788 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="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="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业地点" prop="workLocation">
+            <el-input
+                v-model="form.workLocation"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业地点"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="电源接入点及许可用电功率" prop="workDetail.powerAccessPoint">
+              <el-input
+                  v-model="form.workDetail.powerAccessPoint"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入电源接入点及许可用电功率"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="工作电压" prop="workDetail.workingVoltage">
+              <el-input
+                  v-model="form.workDetail.workingVoltage"
+                  type="number"
+                  placeholder="请输入工作电压"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="用电设备名称及额定功率" prop="workDetail.equipmentAndPower">
+            <el-input
+                v-model="form.workDetail.equipmentAndPower"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入用电设备名称及额定功率"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="用电人" prop="workDetail.electricityUids">
+            <el-select v-model="form.workDetail.electricityUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.workerList"
+                  :key="item.uid"
+                  :label="item.username"
+                  :value="item.uid"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业人" prop="operatorUids">
+              <el-select v-model="form.operatorUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.spList.opList"
+                    :key="item.uid"
+                    :label="item.realName"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <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="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 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 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>-->
+<!--              <el-option-->
+<!--                  v-for="item in otherWorkList"-->
+<!--                  :key="item.value"-->
+<!--                  :label="item.label"-->
+<!--                  :value="item.label"-->
+<!--              />-->
+<!--            </el-select>-->
+            <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+              <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="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 filterable clearable>
+              <el-option
+                  v-for="item in lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <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="确认人">-->
+<!--              <template #default="scope">-->
+
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column prop="address" label="操作">-->
+<!--              <template #default="scope">-->
+<!--                <el-button link type="primary" size="small" :icon="Edit">修改确认人</el-button>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+          </el-table>
+        </el-row>
+        <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 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>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="其他安全措施">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  :autosize="{ minRows: 2 }"-->
+<!--                  type="textarea"-->
+<!--                  placeholder="请输入其他安全措施"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="编制人">-->
+<!--              <el-input-->
+<!--                  v-model="form.workContent"-->
+<!--                  placeholder="请输入编制人"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+        <el-row style="display: flex;justify-content: center">
+          <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">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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 v-throttle @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		equipmentDialog: boolean,
+    showDialog: boolean
+    props1:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+    tabLoading: boolean
+	}
+	export default defineComponent({
+		name: 'powerDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+				equipmentDialog: false,
+        showDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 7,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            powerAccessPoint: '',
+            workingVoltage: '',
+            equipmentAndPower: '',
+            electricityUids: []
+          },
+          remark: ''
+				},
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
+			})
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.equipmentAndPower": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.electricityUids": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.workDetail.electricityUids = row.workDetail.electricityUids.split(',').map(i=>Number(i))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 7,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            powerAccessPoint: '',
+            workingVoltage: '',
+            equipmentAndPower: '',
+            electricityUids: []
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            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
+        // }
+        // 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 = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id:any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            // data.analystUids = transformArr(data.analystUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modPowerApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue
new file mode 100644
index 0000000..cd7a065
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue
@@ -0,0 +1,706 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile()" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<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="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="workDetail.csName">
+              <el-input
+                  v-model="form.workDetail.csName"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入受限空间名称"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="原有介质名称" prop="workDetail.csOriginalName">
+              <el-input
+                  v-model="form.workDetail.csOriginalName"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入受限空间原有介质名称"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业人" prop="operatorUids">
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.opList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <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="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </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="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 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 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 lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="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 lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+<!--        <el-col :span="12">-->
+<!--          <el-form-item label="动火作业实施时间" prop="expStartTime">-->
+<!--            <el-date-picker-->
+<!--                v-model="form.expStartTime"-->
+<!--                format="YYYY-MM-DD HH:mm"-->
+<!--                value-format="YYYY-MM-DD HH:mm:00"-->
+<!--                type="datetimerange"-->
+<!--                range-separator="至"-->
+<!--                start-placeholder="开始时间"-->
+<!--                end-placeholder="结束时间"-->
+<!--            />-->
+<!--          </el-form-item>-->
+<!--        </el-col>-->
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施"/>
+          </el-table>
+        </el-row>
+        <el-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 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 v-loading="tabLoading">
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <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 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 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)" v-throttle>提交申报</el-button>
+		</div>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, onUnmounted} from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+import {userApi} from "/@/api/systemManage/user";
+	interface stateType {
+		form: Object,
+		equipmentDialog: boolean,
+    showDialog: boolean
+    props1:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+    tabLoading: boolean
+	}
+	export default defineComponent({
+		name: 'spaceDialog',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+        showDialog: false,
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          id: null,
+          workType: 2,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            csName: '',
+            csOriginalName: ''
+          },
+          remark: ''
+				},
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
+			});
+			const ruleFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        analystUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        getBasicData()
+      });
+
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+
+      const openDialog = (row)=>{
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key];
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUid = row.acceptUser.userId
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        state.form.lastApprover = row.lastApprover.userId
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 2,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            csName: '',
+            csOriginalName: ''
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const findParent = ()=>{
+        state.form.seDepId = findTopLevelId(props.lists.departList2,state.form.applyDepId)
+      }
+
+      function findTopLevelId(tree, targetId) {
+        let topLevelId = null;
+        function findIdRecursive(node) {
+          if (node.id === targetId) {
+            topLevelId = node.id;
+            return true;
+          }
+          if (node.children) {
+            for (const child of node.children) {
+              if (findIdRecursive(child)) {
+                topLevelId = node.id;
+                return true;
+              }
+            }
+          }
+          return false;
+        }
+        tree.forEach(node => findIdRecursive(node));
+        return topLevelId;
+      }
+
+      // 获取基础数据
+      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))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+        state.tabLoading = false
+      };
+
+      const getStartEndIds = (value)=>{
+        state.form.startOrEndUids = state.form.headUids
+        state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id:any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            // data.analystUids = transformArr(data.analystUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUid = transform2Obj(data.acceptUid)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modSpaceApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        openWorkSelect,
+        getSelected,
+        openDialog,
+        clearFile,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
index 8502469..7cfecd0 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
@@ -98,8 +98,8 @@
                                         <span v-if="scope.row.status == -1">已废止</span>
                                         <el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="danger" size="small" :icon="Delete" @click="abortRecordBtn(scope.row)">作废</el-button>
                                         <el-button v-if="scope.row.status !== -1" link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-<!--                                        <el-button link type="success" size="small" :icon="Finished">修改</el-button>-->
-                                        <el-button v-if="scope.row.status == 1" link type="success" size="small" :icon="Download" @click="checkTicket(scope.row)">正式办票</el-button>
+                                        <el-button link type="primary" size="small" v-throttle :icon="Edit" @click="openEdit(scope.row)">修改</el-button>
+                                        <el-button link type="success" v-throttle v-if="scope.row.status == 0 || scope.row.status == 1" size="small" :icon="Download" @click="checkTicket(scope.row)">正式办票</el-button>
 <!--                                        <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button>-->
                                     </template>
                                 </el-table-column>
@@ -122,13 +122,19 @@
                   <detail-log :type=dialogType :statusList=statusList :details = details></detail-log>
                     <template #footer>
                       <span class="dialog-footer">
-                        <el-button type="primary" @click="dialogDetails = false"
-                        >确认</el-button
-                        >
+                        <el-button type="primary" @click="dialogDetails = false">确认</el-button>
                       </span>
                     </template>
                 </el-dialog>
                 <report-log ref="reportDialogRef" @refresh="getListByPage"></report-log>
+                <fire-dialog ref="fireRef" :lists="lists" @refresh="getListByPage"></fire-dialog>
+                <plate-dialog ref="plateRef" :lists="lists" @refresh="getListByPage"></plate-dialog>
+                <space-dialog ref="spaceRef" :lists="lists" @refresh="getListByPage"></space-dialog>
+                <hoist-dialog ref="hoistRef" :lists="lists" @refresh="getListByPage"></hoist-dialog>
+                <ground-dialog ref="groundRef" :lists="lists" @refresh="getListByPage"></ground-dialog>
+                <broken-dialog ref="brokenRef" :lists="lists" @refresh="getListByPage"></broken-dialog>
+                <height-dialog ref="heightRef" :lists="lists" @refresh="getListByPage"></height-dialog>
+      <power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog>
     </div>
 </template>
 
@@ -175,6 +181,7 @@
     searPara: {}
     timeRange: Array<string>;
     dep4List: Array<type>;
+    lists: {}
 }
 interface type {
     id: number;
@@ -188,13 +195,29 @@
     name: 'myApply',
     components: {
       detailLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue')),
-      reportLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue'))
+      reportLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue')),
+      fireDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue')),
+      plateDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue')),
+      spaceDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue')),
+      hoistDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue')),
+      groundDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue')),
+      brokenDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue')),
+      heightDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue')),
+      powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue'))
     },
     setup() {
         const userInfo = useUserInfo();
         const { userInfos } = storeToRefs(userInfo);
         const router = useRouter();
         const reportDialogRef = ref();
+        const fireRef = ref()
+        const plateRef = ref()
+        const spaceRef = ref()
+        const hoistRef = ref()
+        const groundRef = ref()
+        const brokenRef = ref()
+        const heightRef = ref()
+        const powerRef = ref()
         const state = reactive<stateType>({
             pageIndex1: 1,
             pageSize1: 10,
@@ -237,6 +260,15 @@
                 { id: 7, name: '临时用电作业' },
                 { id: 8, name: '盲板抽堵作业' }
             ],
+          lists: {
+            workerList: [],
+            departList: [],
+            departList2: [],
+            deviceList: [],
+            otherWorks: [],
+            spList: [],
+            riskList: []
+          },
           dep4List: [
             {id:49,name:'电石事业部'},
             {id:50,name:'电力事业部'},
@@ -290,6 +322,121 @@
             }
           ]
         });
+
+      // 页面载入时执行方法
+      onMounted(() => {
+        getListByPage();
+        getAllDepartment()
+        spWorker()
+        getAll()
+        getAllDevice()
+        getAllRisks()
+        getOtherWork()
+      });
+
+        const openEdit = (row)=>{
+          if(row.workType == 1){
+            fireRef.value.openDialog(row)
+          }
+          if(row.workType == 2){
+            spaceRef.value.openDialog(row)
+          }
+          if(row.workType == 3){
+            hoistRef.value.openDialog(row)
+          }
+          if(row.workType == 4){
+            groundRef.value.openDialog(row)
+          }
+          if(row.workType == 5){
+            brokenRef.value.openDialog(row)
+          }
+          if(row.workType == 6){
+            heightRef.value.openDialog(row)
+          }
+          if(row.workType == 7){
+            powerRef.value.openDialog(row)
+          }
+          if(row.workType == 8){
+            plateRef.value.openDialog(row)
+          }
+        }
+
+      const spWorker = async ()=>{
+        for(let id of ['17','18','19']){
+          const res = await workApplyApi().getSpList({roleId: id})
+          if(id == '17'){
+            if (res.data.code === '200') {
+              state.lists.spList.opList = JSON.parse(JSON.stringify(res.data.data))
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+            }
+          }
+          if(id == '18'){
+            if (res.data.code === '200') {
+              state.lists.spList.jhList = JSON.parse(JSON.stringify(res.data.data))
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+            }
+          }
+          if(id == '19'){
+            if (res.data.code === '200') {
+              state.lists.spList.sfList = JSON.parse(JSON.stringify(res.data.data))
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+            }
+          }
+        }
+      }
+
+      // 获取用户列表
+      const getAll = async ()=>{
+        const res = await workApplyApi().getAllUsers()
+        if (res.data.code === '200') {
+          state.lists.workerList = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      };
+
+      // 获取设备列表
+      const getAllDevice = async ()=>{
+        const res = await workApplyApi().getAllDevices()
+        if (res.data.code === '200') {
+          state.lists.deviceList = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      // 获取设备列表
+      const getAllRisks = async ()=>{
+        const res = await workApplyApi().getAllRiskIdentity()
+        if (res.data.code === '200') {
+          // state.allDevices = JSON.parse(JSON.stringify(res.data.data))
+          state.lists.riskList = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
         const giveTime = () => {
           if (state.timeRange && state.timeRange !== null) {
             state.searPara.startTime = state.timeRange[0];
@@ -321,12 +468,25 @@
             if (res.data.code === '200') {
                 state.departmentList = JSON.parse(JSON.stringify(res.data.data))
                 recursion(state.departmentList);
+                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',
                     message: res.data.msg
                 });
             }
+        };
+        const getOtherWork = async () => {
+          let res = await workApplyApi().getOtherWork({workPermitNo: '',workType: null});
+          if (res.data.code === '200') {
+            state.lists.otherWorks = JSON.parse(JSON.stringify(res.data.data))
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.data.msg
+            });
+          }
         };
 
         const recursion = (value: any) => {
@@ -537,12 +697,6 @@
             await initBackEndControlRoutes();
         };
 
-        // 页面载入时执行方法
-        onMounted(() => {
-            getListByPage();
-            getAllDepartment()
-        });
-
         return {
             View,
             Edit,
@@ -552,6 +706,16 @@
             Finished,
             Download,
           reportDialogRef,
+          fireRef,
+          plateRef,
+          spaceRef,
+          hoistRef,
+          groundRef,
+          brokenRef,
+          heightRef,
+          powerRef,
+          openEdit,
+          getAllDepartment,
           checkTicket,
             giveTime,
             reLoadData,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
index f54fabe..f1f264d 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
@@ -56,15 +56,15 @@
         </el-col>
         <el-col :span="12">
           <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"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -84,15 +84,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -188,12 +188,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -263,7 +265,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -344,7 +346,7 @@
 			</div>
 		</el-form>
 		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
 	</div>
@@ -411,7 +413,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -736,10 +738,11 @@
             // }
             state.form.workDetail.involvedDepIds = state.form.workDetail.involvedDepIds.join(',')
             state.form.workDetail.bcPath = state.form.workDetail.bcPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -764,6 +767,7 @@
               state.form.involveOtherWork = state.form.involveOtherWork.split(',')
               state.form.workDetail.involvedDepIds = state.form.workDetail.involvedDepIds.split(',')
               state.form.workDetail.bcPath = state.form.workDetail.bcPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
index 36c0196..6f9bb00 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -56,15 +56,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -114,15 +114,15 @@
       <el-row>
         <el-col :span="12">
           <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"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -178,12 +178,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -253,7 +255,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -379,7 +381,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -684,10 +686,12 @@
           if(type == '监护人'){state.form.guardianUids = temp}
           if(type == '确认人'){state.form.safetyMeasureUids = temp}
           if(type == '结束人'){state.form.startOrEndUids = temp}
+          console.log(value,state.form.operatorUids,55)
         }
       }
 
       const submitForm = async (formEl: FormInstance | undefined) => {
+        console.log(state.form.operatorUids,666)
         if (!formEl) return
         await formEl.validate(async (valid, fields) => {
           if (valid) {
@@ -703,11 +707,12 @@
             // if(Array.isArray(state.form.involveOtherWork)){
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
             // data.analystUids = transformArr(data.analystUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2EObj(data.acceptUid)
@@ -727,6 +732,7 @@
                 type: 'warning',
                 message: res.data.msg
               })
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
             }
           } else {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
index 399eec3..8ae195e 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
@@ -22,15 +22,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" multiple clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -85,15 +85,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -171,12 +171,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -246,7 +248,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -327,7 +329,7 @@
 			</div>
 		</el-form>
 		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
     <el-dialog v-model="dialogVisible">
@@ -394,7 +396,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -705,10 +707,11 @@
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
             state.form.workDetail.gbPath = state.form.workDetail.gbPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -730,8 +733,9 @@
                 type: 'warning',
                 message: res.data.msg
               });
-              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
               state.form.workDetail.gbPath = state.form.workDetail.gbPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
index e8815a0..4b51329 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
@@ -55,15 +55,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -90,15 +90,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12" class="valueSelect">
@@ -159,12 +159,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -204,7 +206,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -273,7 +275,7 @@
 			</div>
 		</el-form>
 		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
 	</div>
@@ -329,7 +331,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -648,10 +650,11 @@
             // if(Array.isArray(state.form.involveOtherWork)){
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -672,6 +675,7 @@
                 message: res.data.msg
               });
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
index d3a2e52..595a6ed 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -65,15 +65,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -130,15 +130,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" filterable multiple @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -194,12 +194,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -269,7 +271,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -338,7 +340,7 @@
 			</div>
 		</el-form>
 		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
 	</div>
@@ -395,7 +397,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -716,10 +718,11 @@
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
             state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -741,6 +744,7 @@
               });
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
               state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
index fe6bcea..add6ecd 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
@@ -144,15 +144,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in lists.spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12" class="valueSelect">
@@ -195,15 +195,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -267,12 +267,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -312,7 +314,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -381,7 +383,7 @@
 			</div>
 		</el-form>
 		<div class="applyBtn">
-			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
 	</div>
@@ -447,7 +449,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -785,10 +787,11 @@
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
             state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -812,6 +815,7 @@
               });
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
               state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
index ddadf29..f1e4594 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
@@ -65,7 +65,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="用电人" prop="workDetail.electricityUids">
-            <el-select v-model="form.workDetail.electricityUids" multiple clearable>
+            <el-select v-model="form.workDetail.electricityUids" filterable multiple clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -79,15 +79,15 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="作业人" prop="operatorUids">
-<!--              <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--                <el-option-->
-<!--                    v-for="item in lists.spList.opList"-->
-<!--                    :key="item.uid"-->
-<!--                    :label="item.realName"-->
-<!--                    :value="item.uid"-->
-<!--                />-->
-<!--              </el-select>-->
-              <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+              <el-select v-model="form.operatorUids" filterable multiple clearable>
+                <el-option
+                    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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
             </el-form-item>
           </el-col>
         </el-row>
@@ -145,20 +145,20 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="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-select v-model="form.cameraIds" multiple filterable clearable>
               <el-option
                   v-for="item in lists.deviceList"
                   :key="item.id"
@@ -209,12 +209,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -284,7 +286,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -353,7 +355,7 @@
 			</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>
@@ -409,7 +411,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -718,11 +720,12 @@
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
             state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
             // data.analystUids = transformArr(data.analystUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -744,6 +747,7 @@
               });
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
               state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
index 3ceadc7..8acd0fc 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
@@ -44,15 +44,15 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业人" prop="operatorUids">
-<!--            <el-select v-model="form.operatorUids" filterable multiple clearable>-->
-<!--              <el-option-->
-<!--                  v-for="item in lists.spList.opList"-->
-<!--                  :key="item.uid"-->
-<!--                  :label="item.realName"-->
-<!--                  :value="item.uid"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>
+            <el-select v-model="form.operatorUids" filterable multiple clearable>
+              <el-option
+                  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="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
       </el-row>
@@ -114,15 +114,15 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="监护人" prop="guardianUids">
-<!--            <el-select v-model="form.guardianUids" multiple filterable @change="getSafetyIds" clearable>-->
-<!--              <el-option-->
-<!--                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>
+            <el-select v-model="form.guardianUids" multiple filterable clearable>
+              <el-option
+                  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="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
           </el-form-item>
         </el-col>
         <el-col :span="12">
@@ -178,12 +178,14 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="风险辨识" prop="riskIdentification">
-              <el-input
-                  v-model="form.riskIdentification"
-                  :autosize="{ minRows: 1 }"
-                  type="textarea"
-                  placeholder="请输入风险辨识"
-              />
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                    v-for="item in lists.riskList"
+                    :key="item.id"
+                    :label="item.content"
+                    :value="item.content"
+                />
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -223,7 +225,7 @@
             <el-table-column prop="content" label="审批签字项目" align="center"/>
             <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-form-item label="" prop="acceptUid">
+                <el-form-item label="" prop="acceptUid" label-width="0">
                   <el-radio-group v-model="scope.row.approvalType">
                     <el-radio :label="0">所有必签</el-radio>
                     <el-radio :label="1">任一</el-radio>
@@ -292,7 +294,7 @@
 			</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 @click="submitForm(ruleFormRef)" v-throttle>提交申报</el-button>
 		</div>
     <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
 	</div>
@@ -348,7 +350,7 @@
           workDepId: null,
           workContent: '',
           workLocation: '',
-          riskIdentification: '',
+          riskIdentification: [],
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
@@ -655,11 +657,12 @@
             // if(Array.isArray(state.form.involveOtherWork)){
             //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
             // }
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
             const {depIdList,...data} = state.form
-            data.operatorUids = transformArr(data.operatorUids)
+            data.operatorUids = transform2Arr(data.operatorUids)
             data.headUids = transform2Arr(data.headUids)
             // data.analystUids = transformArr(data.analystUids)
-            data.guardianUids = transformArr(data.guardianUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
             data.acceptUid = transform2Obj(data.acceptUid)
@@ -680,6 +683,7 @@
                 message: res.data.msg
               });
               // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
             }
           } else {
             console.log('error submit!', fields)
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
index 37b230b..fba0b5c 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
@@ -93,7 +93,8 @@
           departList2: [],
           deviceList: [],
           otherWorks: [],
-          spList: []
+          spList: [],
+          riskList: []
         },
         activeName: 'fire',
 				allWorkers: [],
@@ -139,11 +140,12 @@
 
       // 页面载入时执行方法
       onMounted(() => {
-        getAll();
-        getAllDepartment();
-        getAllDevice();
-        getOtherWork();
+        getAll()
+        getAllDepartment()
+        getAllDevice()
+        getOtherWork()
         spWorker()
+        getAllRisks()
       });
 
 			// 获取用户列表
@@ -240,6 +242,20 @@
         }
       };
 
+      // 获取设备列表
+      const getAllRisks = async ()=>{
+        const res = await workApplyApi().getAllRiskIdentity()
+        if (res.data.code === '200') {
+          // state.allDevices = JSON.parse(JSON.stringify(res.data.data))
+          state.lists.riskList = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      };
+
 			return {
 				...toRefs(state),
         fire,
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index dd9a486..d754f58 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -66,20 +66,20 @@
         <div class="chart-tit">
           <span class="tit">作业警报记录</span>
           <div class="filter-part">
-            <el-switch
-                v-model="chartSearch4.type"
-                inline-prompt
-                style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
-                active-text="作业人"
-                inactive-text="监护人"
-            />
-            <el-select :teleported="false" v-model="chartSearch4.period" size="small">
-              <el-option label="近7天" value="week"/>
-              <el-option label="近30天" value="month"/>
-              <el-option label="近90天" value="season"/>
-              <el-option label="近1年" value="year"/>
+<!--            <el-switch-->
+<!--                v-model="chartSearch4.type"-->
+<!--                inline-prompt-->
+<!--                style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color: #13ce66"-->
+<!--                active-text="作业人"-->
+<!--                inactive-text="监护人"-->
+<!--            />-->
+            <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)">
+              <el-option label="近7天" :value="7"/>
+              <el-option label="近30天" :value="30"/>
+              <el-option label="近90天" :value="90"/>
+              <el-option label="近1年" :value="365"/>
             </el-select>
-            <el-select :teleported="false" v-model="chartSearch4.workType" size="small">
+            <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()">
               <el-option
                   v-for="item in workType1"
                   :key="item.id"
@@ -91,17 +91,17 @@
         </div>
         <div class="chart">
           <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">
-            <el-table-column property="name" label="姓名" align="center"/>
-            <el-table-column property="dep" label="所属部门" align="center"/>
-            <el-table-column property="warning" label="异常报警次数" align="center"/>
-            <el-table-column property="role" label="角色" align="center"/>
-            <el-table-column property="isCard" label="是否持证" align="center">
-              <template #default="scope">
-                <span>{{scope.row.isCard == 1?'是':'否'}}</span>
-              </template>
-            </el-table-column>
+            <el-table-column property="operatorUname" label="姓名" align="center"/>
+            <el-table-column property="deptName" label="所属部门" align="center"/>
+            <el-table-column property="warningCount" label="异常报警次数" align="center"/>
+<!--            <el-table-column property="role" label="角色" align="center"/>-->
+<!--            <el-table-column property="isCard" label="是否持证" align="center">-->
+<!--              <template #default="scope">-->
+<!--                <span>{{scope.row.isCard == 1?'是':'否'}}</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
           </el-table>
-          <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>
+<!--          <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>-->
         </div>
         <!--            <div class="chart" :id="slfx"></div>-->
       </div>
@@ -423,9 +423,9 @@
         depId: 1
       },
       chartSearch4: {
-        searchDep: null,
         startTime: '',
-        days: 30
+        days: 30,
+        workType: 1
       },
       searchDep2: null,
       searchDep: null,
@@ -485,29 +485,7 @@
       ],
       pieData: [],
       squareData: [],
-      warningData: [
-        {
-          name: '黄公子',
-          dep: '有机事业部',
-          warning: 69,
-          role: '作业人',
-          isCard: 1
-        },
-        {
-          name: '李飞飞',
-          dep: '有机事业部',
-          warning: 51,
-          role: '监护人',
-          isCard: 0
-        },
-        {
-          name: '黄公子',
-          dep: '有机事业部',
-          warning: 69,
-          role: '作业人',
-          isCard: 1
-        }
-      ],
+      warningData: [],
       reviewForm: {
         advice: ''
       },
@@ -523,28 +501,34 @@
       getTypePie()
       getWorkDep()
       getDepMonth()
+      getWarningList()
     });
     const initTime =()=>{
       state.chartSearch1.startTime = getPeriod(30)
       state.chartSearch2.startTime = getPeriod(30)
+      state.chartSearch4.startTime = getPeriod(30)
       state.endTime = formatDate(new Date())
     }
     const getPeriod =(num)=> {
       const currentDate = new Date();
       const startTime = new Date();
-      startTime.setDate(currentDate.getDate() - num);
+      startTime.setDate(currentDate.getDate() - num - 1);
       return formatDate(startTime)
     }
     const formatDate =(date)=> {
       const year = date.getFullYear().toString();
       const month = ('0' + (date.getMonth() + 1)).slice(-2);
       const day = ('0' + date.getDate()).slice(-2);
-      return `${year}-${month}-${day} 00:00:00`;
+      return `${year}-${month}-${day} 23:59:59`;
     }
     const changeTime1=(value:number)=>{
       state.chartSearch1.startTime = getPeriod(value)
-      console.log(state.chartSearch1.startTime,state.endTime,'结束段')
       getTypePie()
+    }
+    const changeTime4=(value:number)=>{
+      state.chartSearch4.startTime = getPeriod(value)
+      console.log(state.chartSearch4.startTime,state.endTime,'结束段')
+      getWarningList()
     }
     const changeDep1=()=>{
       getTypePie()
@@ -555,6 +539,9 @@
     }
     const changeType2=()=>{
       getWorkDep()
+    }
+    const changeType4=()=>{
+      getWarningList()
     }
     const changeDep3=()=>{
       getDepMonth()
@@ -645,6 +632,22 @@
       if (res.data.code === '200') {
         state.workData = JSON.parse(JSON.stringify(res.data.data))
         state.totalSize = res.data.total
+      } else {
+        ElMessage({
+          type: 'warning',
+          message: res.data.msg
+        });
+      }
+    }
+    const getWarningList = async()=>{
+      const data = {
+        startTime: state.chartSearch4.startTime,
+        endTime: state.endTime,
+        workType:state.chartSearch4.workType
+      }
+      let res = await specialIndexApi().getWorkWarning(data)
+      if (res.data.code === '200') {
+        state.warningData = JSON.parse(JSON.stringify(res.data.data))
       } else {
         ElMessage({
           type: 'warning',
@@ -1033,9 +1036,11 @@
       slfx,
       zyqs,
       changeTime1,
+      changeTime4,
       changeDep1,
       changeDep2,
       changeType2,
+      changeType4,
       changeDep3,
       toFullscreen,
       // handleReview,
@@ -1156,57 +1161,57 @@
       .chart{
         width: 100%;
         height: 85%;
+        overflow-y: scroll;
         .el-table{
-          height: 90% !important;
-          :deep(.el-table__inner-wrapper){
-            height: 100% !important;
-            .el-table__header-wrapper {
-              height: 20% !important;
-              .el-table__header{
-                height: 100% !important;
-                th{
-                  height: 100% !important;
-                  padding: 0 0 !important;
-                  .cell{
-                    white-space: nowrap;
-                    overflow: hidden;
-                    text-overflow: ellipsis;
-                  }
-                }
-              }
-            }
-            .el-table__body-wrapper {
-              height: 80% !important;
-              .el-scrollbar__view{
-                height: 100% !important;
-                .el-table__body{
-                  height: 100% !important;
-                  tbody{
-                    height: 100% !important;
-                    .el-table__row{
-                      height: 25% !important;
-                      td{
-                        height: 25% !important;
-                        padding: 0 0 !important;
-                        .left-info{
-                          display: flex;
-                          align-items: center;
-                        }
-                        .cell{
-                          white-space: nowrap;
-                          overflow: hidden;
-                          text-overflow: ellipsis;
-                        }
-                        .el-button{
-                          padding: 0 !important;
-                        }
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          }
+          //:deep(.el-table__inner-wrapper){
+          //  height: 100% !important;
+          //  .el-table__header-wrapper {
+          //    height: 20% !important;
+          //    .el-table__header{
+          //      height: 100% !important;
+          //      th{
+          //        height: 100% !important;
+          //        padding: 0 0 !important;
+          //        .cell{
+          //          white-space: nowrap;
+          //          overflow: hidden;
+          //          text-overflow: ellipsis;
+          //        }
+          //      }
+          //    }
+          //  }
+          //  .el-table__body-wrapper {
+          //    height: 80% !important;
+          //    .el-scrollbar__view{
+          //      height: 100% !important;
+          //      .el-table__body{
+          //        height: 100% !important;
+          //        tbody{
+          //          height: 100% !important;
+          //          .el-table__row{
+          //            height: 25% !important;
+          //            td{
+          //              height: 25% !important;
+          //              padding: 0 0 !important;
+          //              .left-info{
+          //                display: flex;
+          //                align-items: center;
+          //              }
+          //              .cell{
+          //                white-space: nowrap;
+          //                overflow: hidden;
+          //                text-overflow: ellipsis;
+          //              }
+          //              .el-button{
+          //                padding: 0 !important;
+          //              }
+          //            }
+          //          }
+          //        }
+          //      }
+          //    }
+          //  }
+          //}
         }
       }
       .el-radio-group{

--
Gitblit v1.9.2