From 83bbceeca584500a9902ce1677a3337990d9157a Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 26 五月 2023 17:00:08 +0800
Subject: [PATCH] 新特殊作业

---
 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue                |  173 +
 src/views/newSpecialWorkSystem/workTicket/zysq/index.vue                |   83 
 src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue                |  334 +-
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue |  250 ++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue    |  763 +++++++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue      |  425 ++-
 src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue    |  592 +++++
 src/views/newHome/index.vue                                             |    2 
 /dev/null                                                               |  128 -
 src/views/specialWorkSystem/specialIndex/index.vue                      |    1 
 src/views/intellectInspect/inspectBasic/facility/index.vue              |    1 
 src/router/route.ts                                                     |   22 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue     |  662 ++++++
 src/views/facilityManagement/facilityIndex/index.vue                    |    1 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue     |  827 +++++++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue     |  602 +++++
 src/api/specialWorkSystem/workApply/index.ts                            |   93 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue     |  663 ++++++
 src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue    |  735 ++++++
 19 files changed, 5,817 insertions(+), 540 deletions(-)

diff --git a/src/api/specialWorkSystem/workApply/index.ts b/src/api/specialWorkSystem/workApply/index.ts
index 8afaf8f..7a86f70 100644
--- a/src/api/specialWorkSystem/workApply/index.ts
+++ b/src/api/specialWorkSystem/workApply/index.ts
@@ -11,6 +11,90 @@
             });
         },
 
+        // 新分页获取申请列表
+        getNewApplyListPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/applyUser/list/page`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 新获取所有申请
+        getAllNewApplyListPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/all/list/page`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 获取基础数据
+        getFormData: (type: number) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/getFormData/${type}`,
+                method: 'get'
+            });
+        },
+
+        // 新提交接口
+        submitFireApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/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
+            });
+        },
+        submitHoistApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/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
+            });
+        },
+        submitBrokenApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/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
+            });
+        },
+        submitPowerApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/temporaryPower`,
+                method: 'post',
+                data: data
+            });
+        },
+        submitPlateApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/blindPlatePlugging`,
+                method: 'post',
+                data: data
+            });
+        },
+
         // 所有记录列表
         getApplyList: (data: object) => {
             return request({
@@ -156,6 +240,15 @@
             });
         },
 
+        // 获取图片上传路径
+        getUpload9Url: (name: string) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/file/getPresignUrl`,
+                method: 'post',
+                data: { prefixName: name.split('.')[0], suffixName: name.split('.')[1] }
+            });
+        },
+
         // 上传图片
         uploadFile: (path: string, file: any) => {
             return request({
diff --git a/src/router/route.ts b/src/router/route.ts
index 0bbfea4..313ab37 100644
--- a/src/router/route.ts
+++ b/src/router/route.ts
@@ -113,19 +113,27 @@
         }
     },
     {
-        path: '/zysq',
-        name: 'zysq',
+        path: '/dhzy',
+        name: 'dhzy',
         component: () => import('/@/views/newSpecialWorkSystem/workTicket/zysq/index.vue'),
         meta: {
             title: '作业申请'
         }
     },
     {
-        path: '/saftyManage',
-        name: 'saftyManage',
-        component: () => import('/@/views/system/saftyManage/index.vue'),
+        path: '/wdsq1',
+        name: 'wdsq1',
+        component: () => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/index.vue'),
         meta: {
-            title: '安全措施管理'
+            title: '我的申请'
         }
-    }
+    },
+    {
+        path: '/sqjl1',
+        name: 'sqjl1',
+        component: () => import('/@/views/newSpecialWorkSystem/workTicket/sqjl/index.vue'),
+        meta: {
+            title: '申请记录'
+        }
+    },
 ];
diff --git a/src/views/facilityManagement/facilityIndex/index.vue b/src/views/facilityManagement/facilityIndex/index.vue
index 5514234..3ba91cb 100644
--- a/src/views/facilityManagement/facilityIndex/index.vue
+++ b/src/views/facilityManagement/facilityIndex/index.vue
@@ -1091,6 +1091,7 @@
 .container{
   padding: 20px;
   background: url('../../../assets/spwbg.png') no-repeat center;
+  background-size: 100% 100%;
 
   .full{
     position:fixed;
diff --git a/src/views/intellectInspect/inspectBasic/facility/index.vue b/src/views/intellectInspect/inspectBasic/facility/index.vue
index e84b57e..347224b 100644
--- a/src/views/intellectInspect/inspectBasic/facility/index.vue
+++ b/src/views/intellectInspect/inspectBasic/facility/index.vue
@@ -108,7 +108,6 @@
         });
         // 初始化表格数据
         const initFacilityAreaTableData = async () => {
-            debugger
             let res = await facilityAreaApi().getFacilityAreaList(state.facilityAreaData.params);
             if (res.data.code === '200') {
                 state.facilityAreaData.data = res.data.data.records;
diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
index f944810..98d1da9 100644
--- a/src/views/newHome/index.vue
+++ b/src/views/newHome/index.vue
@@ -582,6 +582,7 @@
         display: grid;
         grid-gap: 15px;
         grid-template-columns: repeat(3, 1fr);
+        grid-template-rows: repeat(5, 120px);
         grid-auto-flow: row;
         justify-content: center;
 
@@ -674,6 +675,7 @@
         display: grid;
         grid-gap: 10px;
         grid-template-columns: repeat(3, 1fr);
+        grid-template-rows: repeat(5, 96px);
         grid-auto-flow: row;
         justify-content: center;
 
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
similarity index 73%
rename from src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue
rename to src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
index e38b1c2..dcd2db8 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
@@ -4,8 +4,8 @@
 <!--            <el-tab-pane label="申请中" name="1">-->
                 <div style="height: 100%">
                     <el-row class="homeCard">
-                        <el-col :span="5" style="display:flex;align-items: center">
-                            <span style="white-space: nowrap">作业类型:</span>
+                        <span>作业类型:</span>
+                        <el-col :span="10">
                             <div class="grid-content topInfo">
                                 <el-select v-model="searchWord">
                                     <el-option
@@ -15,30 +15,11 @@
                                             :value="item.id"
                                     />
                                 </el-select>
+
+                                <el-button type="primary" @click="searchRecord">查询</el-button>
+                                <el-button plain @click="clearSearch">重置</el-button>
                             </div>
                         </el-col>
-                        <el-col :span="5" style="display:flex;align-items: center">
-                            <span style="white-space: nowrap">申请部门:</span>
-                            <div class="grid-content topInfo">
-                                <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>
-                            </div>
-                        </el-col>
-                        <el-col :span="8" style="display:flex;align-items: center;">
-                            <span style="white-space: nowrap;margin-left: 20px">申请时间:</span>
-                            <div class="grid-content topInfo">
-                                <el-date-picker
-                                        v-model="searchDate"
-                                        type="daterange"
-                                        unlink-panels
-                                        range-separator="至"
-                                        start-placeholder="开始日期"
-                                        end-placeholder="结束日期"
-                                        format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
-                                />
-                            </div>
-                        </el-col>
-                        <el-button type="primary" style="margin-left: 20px" @click="searchRecord">查询</el-button>
-                        <el-button plain @click="clearSearch">重置</el-button>
                     </el-row>
                     <div class="homeCard">
                         <div class="main-card">
@@ -51,38 +32,55 @@
                                 <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
                             </el-row>
                             <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
-                                <el-table-column property="workPermitNo" label="作业申请单号" width="180" align="center"/>
-                                <el-table-column property="applyUname" label="申请人" align="center"/>
-                                <el-table-column property="depName" label="部门名称" align="center"/>
-                                <el-table-column property="operators" label="作业人" align="center"/>
+                                <el-table-column property="seDepName" label="事业部" align="center"/>
+                                <el-table-column property="applyDepName" label="作业所在车间" align="center"/>
+                                <el-table-column property="workContent" label="作业内容" align="center"/>
                                 <el-table-column property="workTypeDesc" label="作业类型" align="center"/>
-                                <el-table-column property="workLevelDesc" label="作业等级" align="center"/>
-                                <el-table-column property="materialStatus" label="物资状态" align="center" width="180">
+                                <el-table-column property="workDepName" label="作业单位" align="center"/>
+                                <el-table-column property="headList" label="负责人及电话" align="center">
                                   <template #default="scope">
-                                    <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span>
+                                    {{scope.row.headList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
                                   </template>
                                 </el-table-column>
-                                <el-table-column property="applyTime" label="申请时间" width="180" align="center"/>
-                                <el-table-column label="申请状态" align="center" width="140">
+                                <el-table-column property="operatorList" label="作业人及电话" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.operatorList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="guardianList" label="监护人及电话" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.guardianList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="expStartTime" label="作业开始时间" align="center"/>
+                                <el-table-column property="expEndTime" label="预计完成时间" align="center"/>
+                                <el-table-column label="执法仪编号" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.workApprovalDeviceList.map(i=>i.deviceNo).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="作业人数" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.operatorList.length}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="监护人数" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.guardianList.length}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="风险研判" align="center">
                                     <template #default="scope">
-                                        <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag>
+                                        <el-tag>{{ statusList.find(i=>i.value === scope.row.status)?.label }}</el-tag>
                                     </template>
                                 </el-table-column>
-                                <el-table-column label="作业状态" align="center">
-                                  <template #default="scope">
-                                    <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workStatus==2?'success':scope.row.working.workStatus==1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workStatus == 1?'开始': scope.row.working.workStatus == 2?'结束':'未开始'}}</el-tag>
-                                  </template>
-                                </el-table-column>
-                                <el-table-column label="验收状态" align="center">
-                                  <template #default="scope">
-                                    <el-tag :type="scope.row.working == null? 'danger':scope.row.working.workAcceptStatus==2?'success':scope.row.working.workAcceptStatus== 1?'warning':'danger'">{{ scope.row.working==null?'未开始':scope.row.working.workAcceptStatus == 1?'等待验收': scope.row.working.workAcceptStatus == 2? '已验收':'未开始'}}</el-tag>
-                                  </template>
-                                </el-table-column>
-                                <el-table-column fixed="right" label="操作" align="center" width="250">
+                                <el-table-column fixed="right" label="操作" align="center" width="300">
                                     <template #default="scope">
+                                        <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">作废</el-button>
                                         <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-                                        <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button>
-                                        <el-button :disabled="scope.row.working && scope.row.working.workAcceptStatus == 2 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button>
+                                        <el-button link type="success" size="small" :icon="Finished">修改</el-button>
+                                        <el-button link type="success" size="small" :icon="Download">正式办票</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>
                             </el-table>
@@ -93,14 +91,15 @@
                     </div>
                 </div>
                 <el-dialog v-model="dialogDetails" title="作业申请详情" center>
-                    <fire v-if="dialogType == 1" :details = details></fire>
-                    <space v-else-if="dialogType == 2" :details = details></space>
-                    <hoist v-else-if="dialogType == 3" :details = details></hoist>
-                    <ground v-else-if="dialogType == 4" :details = details></ground>
-                    <broken v-else-if="dialogType == 5" :details = details></broken>
-                    <height v-else-if="dialogType == 6" :details = details></height>
-                    <power v-else-if="dialogType == 7" :details = details></power>
-                    <plate v-else :details = details></plate>
+<!--                    <fire v-if="dialogType == 1" :details = details></fire>-->
+<!--                    <space v-else-if="dialogType == 2" :details = details></space>-->
+<!--                    <hoist v-else-if="dialogType == 3" :details = details></hoist>-->
+<!--                    <ground v-else-if="dialogType == 4" :details = details></ground>-->
+<!--                    <broken v-else-if="dialogType == 5" :details = details></broken>-->
+<!--                    <height v-else-if="dialogType == 6" :details = details></height>-->
+<!--                    <power v-else-if="dialogType == 7" :details = details></power>-->
+<!--                    <plate v-else :details = details></plate>-->
+                  <detail-log :type=dialogType :statusList=statusList :details = details></detail-log>
                     <template #footer>
                       <span class="dialog-footer">
                         <el-button type="primary" @click="dialogDetails = false"
@@ -121,19 +120,13 @@
                             <div class="stepCard">
                                 <el-card class="box-card" shadow="always">
                                     <div class="text">
-                                        审批结果:<span>{{ item.approvalResultDesc }}</span>
+                                        审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span>
                                     </div>
-                                    <div class="text" v-if="item.approvalTypeDesc">
-                                        层级类型:<span>{{ item.approvalTypeDesc }}</span>
+                                    <div class="text">
+                                        审批类型:<span class="bold-text">{{ item.typeDesc }}</span>
                                     </div>
                                     <div class="text" v-if="item.auditTypeDesc">
-                                        审批类型:<span>{{ item.auditTypeDesc }}</span>
-                                    </div>
-                                    <div class="text" v-if="item.personTypeDesc">
-                                        人员类型:<span>{{ item.personTypeDesc }}</span>
-                                    </div>
-                                    <div class="text" v-if="item.contentTypeDesc">
-                                        内容类型:<span>{{ item.contentTypeDesc }}</span>
+                                        审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span>
                                     </div>
                                     <div class="text" v-show="item.startApprovalTime != null">
                                         开始时间:<span>{{ item.startApprovalTime }}</span>
@@ -145,7 +138,7 @@
                                             ><span>{{ i.resultDesc }}</span>
                                         </div>
                                     </div>
-                                    <div class="approveItem" v-if="item.contentType==1">
+                                    <div class="approveItem">
                                         <div class="item-tit">
                                             <span>审批项目</span>
 <!--                                            <span>类型</span>-->
@@ -172,7 +165,7 @@
                                             </div>
                                         </div>
                                     </div>
-                                    <div class="text" v-show="item.expFinishApprovalTime != null">
+                                    <div class="text" v-show="item.expFinishApprovalTime && item.expFinishApprovalTime != null">
                                         期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
                                     </div>
                                     <div class="text" v-show="item.finishApprovalTime != null">
@@ -182,6 +175,15 @@
                             </div>
                         </div>
                     </div>
+                </el-dialog>
+                <el-dialog v-model="deleteDialog" title="提示" width="30%" center>
+                    <span>您确定要取消该条申请吗?</span>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                            <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                        </span>
+                    </template>
                 </el-dialog>
                 <el-dialog v-model="downLoadDialog" title="提示" width="30%" center>
                     <span>您确定要导出该条记录吗?</span>
@@ -252,7 +254,6 @@
     workTimeList: Array<string>;
     multipleSelection: Array<any>;
     deleteArr: Array<any>;
-    casProps: {};
     approveInfo: Object;
     dialogDetails: boolean;
     dialogStatus: boolean;
@@ -264,9 +265,7 @@
     deleteId: null | number;
     downLoadId: null | number;
     downLoadName: string;
-    searchWord: number | null;
-    searchDep: number | null;
-    searchDate: Array<any>,
+    searchWord: string;
     totalSize1: number;
     activeName: string;
     addRecord: {};
@@ -276,6 +275,7 @@
     dialogType: number | null;
     departmentList: Array<any>;
     departmentRecursionList: Array<DepartmentState>;
+    statusList: Array<any>;
 }
 interface type {
     id: number;
@@ -286,16 +286,9 @@
     depName: string;
 }
 export default defineComponent({
-    name: 'myApply',
+    name: 'applys',
     components: {
-        fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
-        space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
-        hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
-        ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')),
-        broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')),
-        height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')),
-        power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')),
-        plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue'))
+      detailLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue'))
     },
     setup() {
         const userInfo = useUserInfo();
@@ -310,22 +303,13 @@
             departmentList: [],
             departmentRecursionList: [],
             chosenIndex: null,
-            searchWord: null,
-            searchDep: null,
-            searchDate: [],
+            searchWord: '',
             applyData: [],
             workTimeList: [],
             multipleSelection: [],
             approveInfo: {
                 approvalSteps: [],
                 operators: []
-            },
-            casProps: {
-                expandTrigger: 'hover',
-                emitPath: false,
-                value: 'depId',
-                label: 'depName',
-                checkStrictly: true
             },
             dialogDetails: false,
             dialogStatus: false,
@@ -347,7 +331,53 @@
                 { id: 6, name: '高处作业' },
                 { id: 7, name: '临时用电作业' },
                 { id: 8, name: '盲板抽堵作业' }
-            ]
+            ],
+          statusList: [
+            {
+              value: -1,
+              label: '废止'
+            },
+            {
+              value: 0,
+              label: '风险研判中'
+            },
+            {
+              value: 1,
+              label: '票证办理中'
+            },
+            {
+              value: 2,
+              label: '安全措施确认中'
+            },
+            {
+              value: 3,
+              label: '培训交底中'
+            },
+            {
+              value: 4,
+              label: '气体分析中'
+            },
+            {
+              value: 5,
+              label: '作业开始'
+            },
+            {
+              value: 6,
+              label: '作业监护'
+            },
+            {
+              value: 7,
+              label: '作业结束'
+            },
+            {
+              value: 8,
+              label: '作业验收'
+            },
+            {
+              value: 9,
+              label: '安全措施确认,培训交底中'
+            }
+          ]
         });
         interface User {
             name: string;
@@ -375,7 +405,7 @@
             let res = await teamManageApi().getAllDepartment();
             if (res.data.code === '200') {
                 state.departmentList = JSON.parse(JSON.stringify(res.data.data))
-                // recursion(state.departmentList);
+                recursion(state.departmentList);
             } else {
                 ElMessage({
                     type: 'warning',
@@ -384,23 +414,21 @@
             }
         };
 
-        // const recursion = (value: any) => {
-        //     for (let i of value) {
-        //         if (i.children.length !== 0) {
-        //             state.departmentRecursionList.push(i);
-        //             recursion(i.children);
-        //         } else {
-        //             state.departmentRecursionList.push(i);
-        //         }
-        //     }
-        // };
+        const recursion = (value: any) => {
+            for (let i of value) {
+                if (i.children.length !== 0) {
+                    state.departmentRecursionList.push(i);
+                    recursion(i.children);
+                } else {
+                    state.departmentRecursionList.push(i);
+                }
+            }
+        };
 
-        // 分页获取列表
+        // 分页获取
         const getListByPage = async () => {
-            const dateRange = JSON.parse(JSON.stringify(state.searchDate))
-            if(dateRange[1]){dateRange[1] = dateRange[1].replace('00:00:00','23:59:59')}
-            const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord, applyDepId: state.searchDep,applyStartTime: dateRange[0],applyEndTime: dateRange[1]} };
-            let res = await workApplyApi().getApplyList(data);
+            const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };
+            let res = await workApplyApi().getAllNewApplyListPage(data);
             if (res.data.code === '200') {
                 state.applyData = JSON.parse(JSON.stringify(res.data.data));
                 state.applyData = state.applyData.map((item) => {
@@ -439,7 +467,7 @@
 
         // 关键词查询记录
         const searchRecord = async () => {
-            if (state.searchWord == null && state.searchDep == null && state.searchDate == []) {
+            if (state.searchWord == '') {
                 ElMessage({
                     type: 'warning',
                     message: '请输入查询关键词'
@@ -450,24 +478,22 @@
         };
         // 重置搜索
         const clearSearch = async () => {
-            state.searchWord = null;
-            state.searchDep = null;
-            state.searchDate = []
+            state.searchWord = '';
             getListByPage();
         };
 
         // 查看进度
         const viewStatus = (row) => {
             getStatus({ workApplyId: row.workApplyId });
+            state.dialogStatus = true;
         };
 
         // 查询进度方法
         const getStatus = async (data: any) => {
-            let res = await workApplyApi().getAllStatus(data);
+            let res = await workApplyApi().getStatus(data);
             if (res.data.code === '200') {
                 state.approveInfo = JSON.parse(JSON.stringify(res.data.data));
                 state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname);
-                state.dialogStatus = true;
             } else {
                 ElMessage({
                     type: 'warning',
@@ -479,6 +505,28 @@
         const deleteRecordBtn = (row) => {
             state.deleteId = row.workApplyId;
             state.deleteDialog = true;
+        };
+
+        // 取消申请方法
+        const deleteRecord = async (data: any) => {
+            let res = await workApplyApi().cancelApply(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: '删除成功!'
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const conFirmDelete = () => {
+            deleteRecord({ workApplyId: state.deleteId });
+            state.deleteDialog = false;
         };
 
         // 导出图表
@@ -504,7 +552,7 @@
                 } else {
                     ElMessage({
                         type: 'warning',
-                        message: '导出失败'
+                        message: res.data.msg
                     });
                 }
             })
@@ -529,39 +577,6 @@
         const viewRecord = (row: any) => {
             state.dialogType = row.workType
             state.details = JSON.parse(JSON.stringify(row));
-            if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
-                state.details.workDetail.otherSpecialWork=[]
-            }
-            else {
-                const a = state.details.workDetail.otherSpecialWork
-                state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
-                    return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;
-                });
-            }
-            if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
-                state.details.workDetail.involvedDepIds=[]
-            }
-            else {
-                const a = state.details.workDetail.involvedDepIds
-                state.details.workDetail.involvedDepIds = a.split(',').map((item) => {
-                    return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;
-                });
-            }
-            if(state.details.workDetail.csDepId){
-                state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName;
-            }
-            if(state.details.workDetail.operationDepId){
-                state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
-            }
-            if(state.details.workDetail.gbPath){
-                state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',')
-            }
-            if(state.details.workDetail.bcPath){
-                state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',')
-            }
-            if(state.details.workDetail.bpLocationMapPath){
-                state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',')
-            }
             state.dialogDetails = true;
         };
 
@@ -596,6 +611,7 @@
             viewStatus,
             deleteRecordBtn,
             downLoadBtn,
+            conFirmDelete,
             conFirmDownLoad,
             getListByPage,
             handleSizeChange1,
@@ -717,8 +733,11 @@
                     padding-left: 10px;
 
                     span {
-                        font-weight: bolder;
                         color: #409eff;
+                    }
+
+                    .bold-text{
+                        font-weight: bolder;
                     }
 
                     &:last-of-type {
@@ -873,7 +892,6 @@
         }
 
         .topInfo {
-            width: 100%;
             display: flex;
             align-items: center;
             font-size: 16px;
@@ -885,20 +903,8 @@
             }
         }
     }
-}
-.el-card {
-    border: 0;
-}
-.el-input{
-    width: 100% !important;
-}
-::v-deep(.el-date-editor){
-    width: 100%;
-}
-.el-select{
-    width: 100%;
-}
-:deep(.el-cascader){
-    width: 100% !important;
+    .el-card {
+        border: 0;
+    }
 }
 </style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue
deleted file mode 100644
index b32213d..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue
+++ /dev/null
@@ -1,131 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业单位">
-				<el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="断路原因">
-				<el-input v-model="details.workDetail.bcReason" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="断路地段说明">
-				<el-input v-model="details.workDetail.bcExplain" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="涉及相关部门">
-				<el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="图片">
-				<el-image v-for="item in details.workDetail.bcPath" :preview-src-list="details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue
new file mode 100644
index 0000000..132292e
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue
@@ -0,0 +1,250 @@
+<template>
+	<div style="height: 100%">
+    <div class="d-container">
+      <div class="d-row">
+        <div class="d-tit">作业申请单位</div><div class="d-cont">{{details.applyDepName}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业类型</div><div class="d-cont">{{details.workTypeDesc}}</div>
+      </div>
+      <div class="d-row" v-if="type == 1 || type == 3 || type == 6 || type == 8">
+        <div class="d-tit">作业等级</div><div class="d-cont">{{details.workLevelDesc}}</div>
+      </div>
+
+      <div class="d-row" v-if="type == 1">
+        <div class="d-tit">动火方式</div><div class="d-cont">{{details.workDetail.workMethod}}</div>
+      </div>
+      <div v-if="type == 2">
+      <div class="d-row">
+        <div class="d-tit">受限空间名称</div><div class="d-cont">{{details.workDetail.csName}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">受限空间原有介质名称</div><div class="d-cont">{{details.workDetail.csOriginalName}}</div>
+      </div>
+      </div>
+      <div v-if="type == 3">
+        <div class="d-row">
+          <div class="d-tit">吊具名称</div><div class="d-cont">{{details.workDetail.hoistingToolName}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">起吊重量(t)</div><div class="d-cont">{{details.workDetail.weightMass}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">司索人</div><div class="d-cont">{{details.workDetail.solicitorUnames}}</div>
+        </div>
+      </div>
+      <div v-if="type == 4">
+        <div class="d-row">
+          <div class="d-tit">作业范围、内容、方式</div><div class="d-cont">{{details.workDetail.gbDesc}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">示意图</div>
+          <div class="d-cont">
+            <el-image v-for="item in details.workDetail.gbPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+          </div>
+        </div>
+      </div>
+      <div v-if="type == 5">
+        <div class="d-row">
+          <div class="d-tit">断路原因</div><div class="d-cont">{{details.workDetail.bcReason}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">涉及相关单位</div><div class="d-cont">{{details.workDetail.involvedDepNames}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">断路地段相关说明</div><div class="d-cont">{{details.workDetail.bcExplain}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">断路地段示意图</div>
+          <div class="d-cont">
+            <el-image v-for="(item,index) in details.workDetail.bcPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover"/>
+          </div>
+        </div>
+      </div>
+      <div v-if="type == 6">
+        <div class="d-row">
+          <div class="d-tit">作业高度</div><div class="d-cont">{{details.workDetail.hight}}</div>
+        </div>
+      </div>
+      <div v-if="type == 7">
+        <div class="d-row">
+          <div class="d-tit">电源接入点及许可用电功率</div><div class="d-cont">{{details.workDetail.powerAccessPoint}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">工作电压</div><div class="d-cont">{{details.workDetail.workingVoltage}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">用电设备以及功率</div><div class="d-cont">{{details.workDetail.equipmentAndPower}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">用电人</div><div class="d-cont">{{details.workDetail.electricityUnames}}</div>
+        </div>
+      </div>
+      <div v-if="type == 8">
+        <div class="d-row">
+          <div class="d-tit">设备管道名称</div><div class="d-cont">{{details.workDetail.pipingName}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">管道介质</div><div class="d-cont">{{details.workDetail.media}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">管道温度(℃)</div><div class="d-cont">{{details.workDetail.temperature}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">管道压力(kPa)</div><div class="d-cont">{{details.workDetail.pressure}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板材质</div><div class="d-cont">{{details.workDetail.bpMaterialQuality}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板规格</div><div class="d-cont">{{details.workDetail.bpSpecification}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板编号</div><div class="d-cont">{{details.workDetail.bpCode}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板位置相关描述</div><div class="d-cont">{{details.workDetail.bpLocationDesc}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板位置示意图</div>
+          <div class="d-cont">
+            <el-image v-for="item in details.workDetail.bpLocationMapPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+          </div>
+        </div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业内容</div><div class="d-cont">{{details.workContent}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业地址</div><div class="d-cont">{{details.workLocation}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业单位</div><div class="d-cont">{{details.workDepName}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业人</div><div class="d-cont">{{details.operatorList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join('、')}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">关联其他作业</div><div class="d-cont">{{details.involveOtherWork}}</div>
+      </div>
+
+      <div class="d-row">
+        <div class="d-tit">预计(整体)开始时间</div><div class="d-cont">{{details.expStartTime}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">预计(整体)结束时间</div><div class="d-cont">{{details.expEndTime}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业负责人</div><div class="d-cont">{{details.headList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join('、')}}</div>
+      </div>
+      <div class="d-row" v-if="type == 1 || type == 2 || type == 7">
+        <div class="d-tit">作业分析人</div><div class="d-cont">{{details.analystList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join('、')}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">作业监护人</div><div class="d-cont">{{details.guardianList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join('、')}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">绑定执法仪</div><div class="d-cont">{{details.workApprovalDeviceList.map(i=>i.deviceNo).join('、')}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">安全措施确认人</div><div class="d-cont">{{details.safetyMeasureList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">完工验收人</div><div class="d-cont">{{details.acceptUser.userName + '(' + details.acceptUser.phone+ ')'}}</div>
+      </div>
+      <div class="d-row">
+        <div class="d-tit">现场开始结束确认人</div><div class="d-cont">{{details.startOrEndList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
+      </div>
+
+      <div class="d-row">
+        <div class="d-tit">风险研判</div><div class="d-cont">{{ statusList.find(i=>i.value === details.status)?.label }}</div>
+      </div>
+
+      <div class="d-row">
+        <div class="d-tit">现场开始结束确认人</div><div class="d-cont">{{details.startOrEndList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
+      </div>
+    </div>
+	</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 } from '@element-plus/icons-vue'
+	import { ElMessage } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+
+
+	interface stateType {
+		form: Object,
+		workerList: Array<any>,
+		workTypeList: Array<any>,
+		workLevelList: Array<any>,
+		otherWorkList: Array<any>
+	}
+	export default defineComponent({
+		name: 'detailLog',
+		components: {},
+		props:['type','statusList','details'],
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+      onMounted(() => {
+
+      });
+			return {
+				Search
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		position: relative;
+		.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;
+		}
+	}
+  .d-container{
+    width: 100%;
+    .d-row{
+      width: 100%;
+      display: flex;
+      align-items: flex-start;
+      .d-tit{
+        width: 150px;
+        text-align: right;
+        padding-right: 12px;
+      }
+      .d-cont{
+        width: calc(100% - 150px);
+        border: 1px solid #dcdfe6;
+        margin-bottom: 22px;
+        border-radius: var(--el-input-border-radius,var(--el-border-radius-base));
+        padding: 5px 11px;
+      }
+    }
+  }
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue
deleted file mode 100644
index 6386a7e..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业方式">
-				<el-input v-model="details.workDetail.hotMethod" readonly type="textarea" />
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-					<el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-					<el-table-column prop="materialName" label="物资名称" align="center"/>
-					<el-table-column prop="configurationLevel" label="配置级别" align="center">
-						<template #default="scope">
-							{{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-						</template>
-					</el-table-column>
-					<el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'fire',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue
deleted file mode 100644
index ed728d7..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue
+++ /dev/null
@@ -1,131 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业单位">
-				<el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="范围">
-				<el-input v-model="details.workDetail.gbScope" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="动土方式">
-				<el-input v-model="details.workDetail.gbMethod" readonly type="textarea" />
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="图片">
-				<el-image v-for="item in details.workDetail.gbPath" :preview-src-list="details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue
deleted file mode 100644
index f95c6e9..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue
+++ /dev/null
@@ -1,125 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业单位">
-				<el-input v-model="details.workDetail.operationDepId" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业高度">
-				<el-input v-model="details.workDetail.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input>
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue
deleted file mode 100644
index 1086537..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue
+++ /dev/null
@@ -1,125 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="吊装工具名称">
-				<el-input v-model="details.workDetail.hoistingToolName" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="起吊物体重量">
-				<el-input v-model="details.workDetail.weightMass" readonly type="textarea"><template #append>吨(t)</template></el-input>
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue
deleted file mode 100644
index 69620a3..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="盲板编号">
-				<el-input v-model="details.workDetail.bpCode" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="主要介质">
-				<el-input v-model="details.workDetail.mainMedia" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="温度">
-				<el-input v-model="details.workDetail.temperature" readonly type="textarea"><template #append>摄氏度(℃)</template></el-input>
-			</el-form-item>
-			<el-form-item label="压力">
-				<el-input v-model="details.workDetail.pressure" readonly type="textarea"><template #append>千帕(kPa)</template></el-input>
-			</el-form-item>
-			<el-form-item label="盲板材质">
-				<el-input v-model="details.workDetail.bpMaterialQuality" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="盲板规格">
-				<el-input v-model="details.workDetail.bpSpecification" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="盲板位置">
-				<el-input v-model="details.workDetail.bpLocation" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="装盲板时间">
-				<el-input v-model="details.workDetail.installBpTime" readonly/>
-			</el-form-item>
-			<el-form-item label="拆盲板时间">
-				<el-input v-model="details.workDetail.uninstallBpTime" readonly/>
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="盲板位置图">
-				<el-image v-for="item in details.workDetail.bpLocationMapPath" :preview-src-list="details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue
deleted file mode 100644
index cf81c13..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue
+++ /dev/null
@@ -1,128 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="电源接入点">
-				<el-input v-model="details.workDetail.powerAccessPoint" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="工作电压">
-				<el-input v-model="details.workDetail.workingVoltage" readonly type="textarea"><template #append>伏特(v)</template></el-input>
-			</el-form-item>
-			<el-form-item label="用电设备及功率">
-				<el-input v-model="details.workDetail.equipmentAndPower" readonly type="textarea" />
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue
deleted file mode 100644
index d6b4606..0000000
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue
+++ /dev/null
@@ -1,128 +0,0 @@
-<template>
-	<div style="height: 100%">
-		<el-form :model="details" label-width="150px">
-			<el-form-item label="作业申请单号">
-				<el-input v-model="details.workPermitNo" readonly />
-			</el-form-item>
-			<el-form-item label="申请人">
-				<el-input v-model="details.applyUname" readonly />
-			</el-form-item>
-			<el-form-item label="部门名称">
-				<el-input v-model="details.depName" readonly />
-			</el-form-item>
-			<el-form-item label="作业人">
-				<el-input v-model="details.operators" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业类型">
-				<el-input v-model="details.workTypeDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业等级">
-				<el-input v-model="details.workLevelDesc" readonly />
-			</el-form-item>
-			<el-form-item label="作业内容">
-				<el-input v-model="details.workContent" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="作业地址">
-				<el-input v-model="details.workLocation" readonly type="textarea"/>
-			</el-form-item>
-			<el-form-item label="受限空间所属单位">
-				<el-input v-model="details.workDetail.csDepId" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="受限空间名称">
-				<el-input v-model="details.workDetail.csName" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="空间原有介质名称">
-				<el-input v-model="details.workDetail.csOriginalName" readonly type="textarea" />
-			</el-form-item>
-      <el-form-item label="物资状态">
-        <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span>
-      </el-form-item>
-			<el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0">
-				<el-table :data="details.workMaterial" style="width: 100%" border>
-          <el-table-column prop="bigClassifyName" label="物资类型" align="center"/>
-          <el-table-column prop="materialName" label="物资名称" align="center"/>
-          <el-table-column prop="configurationLevel" label="配置级别" align="center">
-            <template #default="scope">
-              {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}}
-            </template>
-          </el-table-column>
-          <el-table-column prop="useCount" label="配置数量" align="center"/>
-				</el-table>
-			</el-form-item>
-			<el-form-item label="关联其他作业">
-				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
-			</el-form-item>
-			<el-form-item label="期望开始时间">
-				<el-input v-model="details.expStartTime" readonly />
-			</el-form-item>
-			<el-form-item label="期望结束时间">
-				<el-input v-model="details.expEndTime" readonly />
-			</el-form-item>
-			<el-form-item label="申请时间">
-				<el-input v-model="details.applyTime" readonly />
-			</el-form-item>
-			<el-form-item label="当前状态">
-				<el-input v-model="details.statusDesc" readonly />
-			</el-form-item>
-		</el-form>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Search } from '@element-plus/icons-vue'
-	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
-	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
-
-
-	interface stateType {
-		form: Object,
-		workerList: Array<any>,
-		workTypeList: Array<any>,
-		workLevelList: Array<any>,
-		otherWorkList: Array<any>
-	}
-	export default defineComponent({
-		name: 'space',
-		components: {},
-		props:['details'],
-		setup() {
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
-			return {
-				Search
-			};
-		},
-	});
-</script>
-
-<style scoped lang="scss">
-	.home-container {
-		height: 100%;
-		overflow: hidden;
-		position: relative;
-		.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;
-		}
-	}
-</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
index 340b902..9863772 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
@@ -32,29 +32,55 @@
                                 <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
                             </el-row>
                             <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
-                                <el-table-column property="workPermitNo" label="作业申请单号" width="180" />
-                                <el-table-column property="applyUname" label="申请人" />
-                                <el-table-column property="depName" label="部门名称" />
-                                <el-table-column property="operators" label="作业人" />
-                                <el-table-column property="workTypeDesc" label="作业类型" />
-                                <el-table-column property="workLevelDesc" label="作业等级" />
-                                <el-table-column property="materialStatus" label="物资状态" align="center" width="180">
+                                <el-table-column property="seDepName" label="事业部" align="center"/>
+                                <el-table-column property="applyDepName" label="作业所在车间" align="center"/>
+                                <el-table-column property="workContent" label="作业内容" align="center"/>
+                                <el-table-column property="workTypeDesc" label="作业类型" align="center"/>
+                                <el-table-column property="workDepName" label="作业单位" align="center"/>
+                                <el-table-column property="headList" label="负责人及电话" align="center">
                                   <template #default="scope">
-                                    <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span>
+                                    {{scope.row.headList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
                                   </template>
                                 </el-table-column>
-                                <el-table-column property="applyTime" label="申请时间" width="180" />
-                                <el-table-column label="申请状态" align="center" width="180">
+                                <el-table-column property="operatorList" label="作业人及电话" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.operatorList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="guardianList" label="监护人及电话" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.guardianList.map(i=>{return i.userName + '(' + i.phone+ ')' }).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="expStartTime" label="作业开始时间" align="center"/>
+                                <el-table-column property="expEndTime" label="预计完成时间" align="center"/>
+                                <el-table-column label="执法仪编号" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.workApprovalDeviceList.map(i=>i.deviceNo).join(',')}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="作业人数" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.operatorList.length}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="监护人数" align="center">
+                                  <template #default="scope">
+                                    {{scope.row.guardianList.length}}
+                                  </template>
+                                </el-table-column>
+                                <el-table-column label="风险研判" align="center">
                                     <template #default="scope">
-                                        <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag>
+                                        <el-tag>{{ statusList.find(i=>i.value === scope.row.status)?.label }}</el-tag>
                                     </template>
                                 </el-table-column>
                                 <el-table-column fixed="right" label="操作" align="center" width="300">
                                     <template #default="scope">
+                                        <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">作废</el-button>
                                         <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-                                        <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button>
-                                        <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(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>
+                                        <el-button link type="success" size="small" :icon="Finished">修改</el-button>
+                                        <el-button link type="success" size="small" :icon="Download">正式办票</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>
                             </el-table>
@@ -65,14 +91,15 @@
                     </div>
                 </div>
                 <el-dialog v-model="dialogDetails" title="作业申请详情" center>
-                    <fire v-if="dialogType == 1" :details = details></fire>
-                    <space v-else-if="dialogType == 2" :details = details></space>
-                    <hoist v-else-if="dialogType == 3" :details = details></hoist>
-                    <ground v-else-if="dialogType == 4" :details = details></ground>
-                    <broken v-else-if="dialogType == 5" :details = details></broken>
-                    <height v-else-if="dialogType == 6" :details = details></height>
-                    <power v-else-if="dialogType == 7" :details = details></power>
-                    <plate v-else :details = details></plate>
+<!--                    <fire v-if="dialogType == 1" :details = details></fire>-->
+<!--                    <space v-else-if="dialogType == 2" :details = details></space>-->
+<!--                    <hoist v-else-if="dialogType == 3" :details = details></hoist>-->
+<!--                    <ground v-else-if="dialogType == 4" :details = details></ground>-->
+<!--                    <broken v-else-if="dialogType == 5" :details = details></broken>-->
+<!--                    <height v-else-if="dialogType == 6" :details = details></height>-->
+<!--                    <power v-else-if="dialogType == 7" :details = details></power>-->
+<!--                    <plate v-else :details = details></plate>-->
+                  <detail-log :type=dialogType :statusList=statusList :details = details></detail-log>
                     <template #footer>
                       <span class="dialog-footer">
                         <el-button type="primary" @click="dialogDetails = false"
@@ -248,6 +275,7 @@
     dialogType: number | null;
     departmentList: Array<any>;
     departmentRecursionList: Array<DepartmentState>;
+    statusList: Array<any>;
 }
 interface type {
     id: number;
@@ -260,14 +288,15 @@
 export default defineComponent({
     name: 'myApply',
     components: {
-        fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
-        space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
-        hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
-        ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')),
-        broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')),
-        height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')),
-        power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')),
-        plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue'))
+        // fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')),
+        // space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')),
+        // hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')),
+        // ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')),
+        // broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')),
+        // height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')),
+        // power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')),
+        // plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue'))
+      detailLog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue'))
     },
     setup() {
         const userInfo = useUserInfo();
@@ -310,7 +339,53 @@
                 { id: 6, name: '高处作业' },
                 { id: 7, name: '临时用电作业' },
                 { id: 8, name: '盲板抽堵作业' }
-            ]
+            ],
+          statusList: [
+            {
+              value: -1,
+              label: '废止'
+            },
+            {
+              value: 0,
+              label: '风险研判中'
+            },
+            {
+              value: 1,
+              label: '票证办理中'
+            },
+            {
+              value: 2,
+              label: '安全措施确认中'
+            },
+            {
+              value: 3,
+              label: '培训交底中'
+            },
+            {
+              value: 4,
+              label: '气体分析中'
+            },
+            {
+              value: 5,
+              label: '作业开始'
+            },
+            {
+              value: 6,
+              label: '作业监护'
+            },
+            {
+              value: 7,
+              label: '作业结束'
+            },
+            {
+              value: 8,
+              label: '作业验收'
+            },
+            {
+              value: 9,
+              label: '安全措施确认,培训交底中'
+            }
+          ]
         });
         interface User {
             name: string;
@@ -361,10 +436,9 @@
         // 分页获取
         const getListByPage = async () => {
             const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };
-            let res = await workApplyApi().getApplyListPage(data);
+            let res = await workApplyApi().getNewApplyListPage(data);
             if (res.data.code === '200') {
                 state.applyData = JSON.parse(JSON.stringify(res.data.data));
-                console.log(state.applyData,'applyData')
                 state.applyData = state.applyData.map((item) => {
                     if (item.operators == null || item.operators == []) {
                         item.operators = [];
@@ -511,39 +585,6 @@
         const viewRecord = (row: any) => {
             state.dialogType = row.workType
             state.details = JSON.parse(JSON.stringify(row));
-            if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
-                state.details.workDetail.otherSpecialWork=[]
-            }
-            else {
-                const a = state.details.workDetail.otherSpecialWork
-                state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {
-                    return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;
-                });
-            }
-            if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){
-                state.details.workDetail.involvedDepIds=[]
-            }
-            else {
-                const a = state.details.workDetail.involvedDepIds
-                state.details.workDetail.involvedDepIds = a.split(',').map((item) => {
-                    return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;
-                });
-            }
-            if(state.details.workDetail.csDepId){
-                state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName;
-            }
-            if(state.details.workDetail.operationDepId){
-                state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName;
-            }
-            if(state.details.workDetail.gbPath){
-                state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',')
-            }
-            if(state.details.workDetail.bcPath){
-                state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',')
-            }
-            if(state.details.workDetail.bpLocationMapPath){
-                state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',')
-            }
             state.dialogDetails = true;
         };
 
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
new file mode 100644
index 0000000..3610826
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
@@ -0,0 +1,763 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业单位" prop="workDepId">
+              <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="涉及相关单位(部门)" prop="workDetail.involvedDepIds">
+              <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :props="depProps2" :options="departList" :show-all-levels="false"/>
+            </el-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" multiple @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="headUids">
+            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="operatorUids">
+            <el-select v-model="form.operatorUids" multiple clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="绑定执法仪" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in deviceList"
+                  :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" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+<!--            <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" multiple clearable>
+                <el-option
+                    v-for="item in 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="其他安全措施">-->
+<!--              <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>
+            <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-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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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 {UploadProps} from "element-plus/es";
+  import axios from "axios";
+	interface stateType {
+		form: Object,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    depProps2:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number,
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'brokenForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 5,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            involvedDepIds: [],
+            bcReason: '',
+            bcExplain: '',
+            bcPath: []
+          }
+				},
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        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' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            const res = await workApplyApi().submitBrokenApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+              state.form.workDetail.bcPath = []
+              state.fileList = []
+            } 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(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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) => {
+        const fileSize = rawFile.size / 1024 / 1024 < 5 ? '1' : '0'
+        if(fileSize === '0'){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过5M。'
+          });
+          return 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: []) => {
+        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(false,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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
index 9d124d1..24af233 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -4,13 +4,13 @@
 			<div class="homeCard">
       <el-row>
         <el-col :span="12">
-          <el-form-item label="作业申请单位" prop="workDetail.involvedDepIds">
-            <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :options="departList" :props="depProps" :show-all-levels="false"/>
+          <el-form-item label="作业申请单位" prop="applyDepId">
+            <el-cascader style="width: 100%" v-model="form.applyDepId" :options="departList2" :props="props" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="动火级别" prop="workLevel">
-            <el-select v-model="form.workLevel">
+            <el-select v-model="form.workLevel" clearable>
               <el-option
                   v-for="item in workLevelList"
                   :key="item.value"
@@ -35,19 +35,19 @@
         <el-col :span="12">
           <el-form-item label="作业地点及动火部位" prop="workLocation">
             <el-input
-                v-model="form.workContent"
+                v-model="form.workLocation"
                 :autosize="{ minRows: 1 }"
                 type="textarea"
-                placeholder="请输入作业内容"
+                placeholder="请输入作业地点及动火部位"
             />
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="12">
-          <el-form-item label="动火方式" prop="workDetail.hotMethod">
+          <el-form-item label="动火方式" prop="workDetail.workMethod">
             <el-input
-                v-model="form.workDetail.hotMethod"
+                v-model="form.workDetail.workMethod"
                 :autosize="{ minRows: 1 }"
                 type="textarea"
                 placeholder="请输入动火方式"
@@ -55,8 +55,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="动火人级证书编号" prop="operatorUids">
-            <el-select v-model="form.operatorUids" multiple>
+          <el-form-item label="作业人及证件编号" prop="operatorUids">
+            <el-select v-model="form.operatorUids" multiple clearable>
               <el-option
                   v-for="item in workerList"
                   :key="item.uid"
@@ -69,13 +69,13 @@
       </el-row>
 			<el-row>
         <el-col :span="12">
-          <el-form-item label="作业单位" prop="workDetail.involvedDepIds">
-            <el-cascader style="width: 100%" v-model="form.workDetail.involvedDepIds" :props="depProps" :options="departList" :show-all-levels="false"/>
+          <el-form-item label="作业单位" prop="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :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" multiple>
+          <el-form-item label="作业负责人" prop="headUids">
+            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in workerList"
                   :key="item.uid"
@@ -88,8 +88,8 @@
 			</el-row>
       <el-row>
         <el-col :span="12">
-          <el-form-item label="分析人" prop="operatorUids">
-            <el-select v-model="form.operatorUids" multiple>
+          <el-form-item label="分析人" prop="analystUids">
+            <el-select v-model="form.analystUids" multiple clearable>
               <el-option
                   v-for="item in workerList"
                   :key="item.uid"
@@ -100,8 +100,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="关联其他特殊作业" prop="workDetail.otherSpecialWork">
-            <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+          <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
+            <el-select v-model="form.involveOtherWork" multiple clearable>
               <el-option
                   v-for="item in otherWorkList"
                   :key="item.value"
@@ -114,8 +114,8 @@
       </el-row>
       <el-row>
         <el-col :span="12">
-          <el-form-item label="分析人" prop="operatorUids">
-            <el-select v-model="form.operatorUids" multiple>
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
               <el-option
                   v-for="item in workerList"
                   :key="item.uid"
@@ -127,7 +127,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="绑定执法仪" prop="cameraIds">
-            <el-select v-model="form.cameraIds" multiple>
+            <el-select v-model="form.cameraIds" multiple clearable>
               <el-option
                   v-for="item in deviceList"
                   :key="item.id"
@@ -139,23 +139,34 @@
         </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="workTimeLine">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
             <el-date-picker
-                v-model="form.workTimeLine"
+                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="结束时间"
+                type="datetime"
+                style="width: 100%"
             />
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="预计(整体)完成时间" prop="workTimeLine">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
             <el-date-picker
-                v-model="form.workTimeLine"
+                v-model="form.expEndTime"
                 format="YYYY-MM-DD HH:mm"
                 value-format="YYYY-MM-DD HH:mm:00"
                 type="datetime"
@@ -166,9 +177,19 @@
       </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="备注" prop="info">
+            <el-form-item label="风险辨识" prop="riskIdentification">
               <el-input
-                  v-model="form.workContent"
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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="请输入作业备注"
@@ -176,26 +197,26 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-table :data="safeData" style="width: 100%" border>
-            <el-table-column type="index" label="序号" width="80px"/>
-            <el-table-column prop="name" label="安全措施"/>
-            <el-table-column prop="address" label="确认人">
-              <template #default="scope">
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+<!--            <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>
+<!--              </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="info">
-              <el-select v-model="form.operatorUids" multiple>
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple clearable>
                 <el-option
                     v-for="item in workerList"
                     :key="item.uid"
@@ -206,34 +227,58 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-table :data="form.reviewData" style="width: 100%" border>
-            <el-table-column prop="item" label="审批签字项目"/>
-            <el-table-column prop="isCheck" label="是否必签">
+<!--        <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>
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
               <template #default="scope">
-                <el-radio-group v-model="scope.row.isCheck">
-                  <el-radio :label="1">所有必签</el-radio>
-                  <el-radio :label="2">任一</el-radio>
-                  <el-radio :label="3">非必签</el-radio>
-                </el-radio-group>
+                <el-form-item label="" prop="acceptUid">
+                  <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="names" label="审批人">
+            <el-table-column prop="approvalUids" label="审批人" align="center">
               <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>
+                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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="info">
-              <el-select v-model="form.operatorUids">
+            <el-form-item label="完工验收" prop="acceptUid">
+              <el-select v-model="form.acceptUid" clearable>
                 <el-option
                     v-for="item in workerList"
                     :key="item.uid"
@@ -244,8 +289,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="现场开始结束确认人" prop="info">
-              <el-select v-model="form.operatorUids" multiple>
+            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
                 <el-option
                     v-for="item in workerList"
                     :key="item.uid"
@@ -279,79 +324,44 @@
 		workLevelList: Array<any>,
 		otherWorkList: Array<any>,
 		equipmentDialog: boolean,
+    props:{},
     depProps:{},
-    safeData: []
+    safetyMeasureBasicList: []
 	}
 	export default defineComponent({
 		name: 'fireForm',
-		components: {
-
-    },
-		props:['departList','workerList','deviceList'],
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
 		setup(props: any, context: any) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({
 				equipmentDialog: false,
+        safetyMeasureBasicList: [],
 				form: {
-					operatorUids: [],
-					workType: 1,
-					workLevel: null,
-					workContent: '',
-					workLocation: '',
-          maBaseId: null,
-					hazardIdentification: '',
+          workType: 1,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
           cameraIds: [],
-					workDetail:{
-						hotMethod: '',
-						otherSpecialWork: []
-					},
-          receiveUids: [],
-					workTimeLine: [],
-					expStartTime: '',
-					expEndTime: '',
-          reviewData: [
-            {
-              item: '作业负责人意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '车间主任意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '运营安环科意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '运营单位负责人意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '事业部安环科意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '事业部负责人审批意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '公司主要负责人审批意见',
-              isCheck: null,
-              names: []
-            },
-            {
-              item: '岗位当班班长验票情况',
-              isCheck: null,
-              names: []
-            }
-          ]
+          workDetail: {
+            workMethod: ''
+          }
 				},
 				workLevelList: [
 					{
@@ -401,31 +411,154 @@
 						value: 8
 					}
 				],
+        props:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          emitPath: false
+        },
         depProps:{
           expandTrigger: 'hover',
           label: 'depName',
-          value: 'depId'
-        },
-        safeData: []
+          value: 'depId',
+          checkStrictly: true,
+          emitPath: false
+        }
 			});
 			const ruleFormRef = ref<FormInstance>()
 			const applyRules = reactive<FormRules>({
-				operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				hazardIdentification: [{ 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' }],
+        involveOtherWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-				"workDetail.hotMethod": [{ 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' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.workMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
 			});
 
 			// 页面载入时执行方法
 			onMounted(() => {
-        state.form.involvedDepIds = userInfos.value.depId
-			});
+        getBasicData()
+      });
 
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            }
+            const res = await workApplyApi().submitFireApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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) => {
@@ -435,6 +568,12 @@
 			};
 			return {
 				renderMenu,
+        getBasicData,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
 				Search,
 				ruleFormRef,
 				applyRules,
@@ -451,7 +590,7 @@
 		overflow: hidden;
 		position: relative;
     overflow-y: scroll;
-    padding: 40px 0 100px;
+    padding: 0 0 120px;
 		.homeCard{
 			width: 100%;
 			padding: 20px;
@@ -461,11 +600,13 @@
 			margin-bottom: 20px;
 		}
 		.applyBtn{
-      position: absolute;
+      position: fixed;
+      left: 0;
+      bottom: 0;
       z-index: 999;
 			width: 100%;
 			background: #fff;
-			padding-top: 15px;
+			padding: 20px 0;
 			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
 			display: flex;
 			align-items: center;
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
new file mode 100644
index 0000000..d1fd79e
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
@@ -0,0 +1,735 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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 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="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="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 @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="关联其他特殊作业" prop="involveOtherWork">
+              <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-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 @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in 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" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+<!--            <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" multiple clearable>
+                <el-option
+                    v-for="item in 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="其他安全措施">-->
+<!--              <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>
+            <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-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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <el-dialog v-model="dialogVisible">
+      <img w-full :src="dialogImageUrl" alt="Preview Image" />
+    </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 axios from "axios";
+	interface stateType {
+		form: Object,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number,
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'groundForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 4,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            gbDesc: '',
+            gbPath: []
+          }
+				},
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            const res = await workApplyApi().submitGroundApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+              state.form.workDetail.gbPath = []
+              state.fileList = []
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.gbPath = state.form.workDetail.gbPath.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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) => {
+        const fileSize = rawFile.size / 1024 / 1024 < 5 ? '1' : '0'
+        if(fileSize === '0'){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过5M。'
+          });
+          return 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);
+                // }
+                console.log(state.form.workDetail.gbPath,'gbpath')
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+          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(false,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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/height.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
new file mode 100644
index 0000000..eb3e76d
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
@@ -0,0 +1,592 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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" multiple clearable>
+              <el-option
+                  v-for="item in 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="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="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 @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="guardianUids">
+            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-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 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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="form.approvalDepBasicList" style="width: 90%" border>
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid">
+                  <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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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';
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+	}
+	export default defineComponent({
+		name: 'heightForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 6,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hight: ''
+          }
+				},
+        workLevelList: [
+          {
+            label: "一级高处作业",
+            value: 4
+          },
+          {
+            label: "二级高处作业",
+            value: 5
+          },
+          {
+            label: "三级高处作业",
+            value: 6
+          },
+          {
+            label: "特级高处作业",
+            value: 7
+          }
+        ],
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            }
+            const res = await workApplyApi().submitHeightApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/hoist.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
new file mode 100644
index 0000000..bf9c233
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -0,0 +1,662 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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" multiple clearable>
+              <el-option
+                  v-for="item in 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="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="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 @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="workDetail.solicitorUids">
+            <el-select v-model="form.workDetail.solicitorUids" multiple clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-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 @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in 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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+<!--            <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" multiple clearable>
+                <el-option
+                    v-for="item in 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="其他安全措施">-->
+<!--              <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>
+            <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-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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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';
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+	}
+	export default defineComponent({
+		name: 'hoistForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 3,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            hoistingToolName: '',
+            weightMass: '',
+            solicitorUids: []
+          }
+				},
+        workLevelList: [
+          {
+            label: "一级吊装作业",
+            value: 8
+          },
+          {
+            label: "二级吊装作业",
+            value: 9
+          },
+          {
+            label: "三级吊装作业",
+            value: 10
+          }
+        ],
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        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' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            const res = await workApplyApi().submitHoistApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.solicitorUids = state.form.workDetail.solicitorUids.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/plate.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
new file mode 100644
index 0000000..4dddf76
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
@@ -0,0 +1,827 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传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" multiple clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-form-item>
+        </el-col>
+      </el-row>
+			<el-row>
+        <el-col :span="12">
+          <el-form-item label="作业单位" prop="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="departList" :show-all-levels="false"/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业负责人" prop="headUids">
+            <el-select v-model="form.headUids" multiple @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="guardianUids">
+            <el-select v-model="form.guardianUids" multiple @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in 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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="form.approvalDepBasicList" style="width: 90%" border>
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid">
+                  <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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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 {UploadProps} from "element-plus/es";
+  import axios from "axios";
+	interface stateType {
+		form: Object,
+		workLevelList: Array<any>,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number,
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'fireForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 8,
+          workLevel: null,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            pipingName: '',
+            bpCode: '',
+            media: '',
+            temperature: null,
+            pressure: null,
+            bpMaterialQuality: '',
+            bpSpecification: '',
+            bpLocationMapPath: [],
+            bpLocationDesc: '',
+            preparedByName: '',
+            preparedTime: ''
+          }
+				},
+        workLevelList: [
+          {
+            label: "抽盲板作业",
+            value: 11
+          },
+          {
+            label: "堵盲板作业",
+            value: 12
+          }
+        ],
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        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' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            const res = await workApplyApi().submitPlateApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+              state.form.workDetail.bpLocationMapPath = []
+              state.fileList = []
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.bpLocationMapPath = state.form.workDetail.bpLocationMapPath.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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) => {
+        const fileSize = rawFile.size / 1024 / 1024 < 5 ? '1' : '0'
+        if(fileSize === '0'){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过5M。'
+          });
+          return 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: []) => {
+        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(false,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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/power.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
new file mode 100644
index 0000000..5e3a2a4
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
@@ -0,0 +1,663 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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" multiple clearable>
+              <el-option
+                  v-for="item in 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" multiple clearable>
+                <el-option
+                    v-for="item in 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="workDepId">
+            <el-cascader style="width: 100%" v-model="form.workDepId" :props="depProps" :options="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 @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="analystUids">
+            <el-select v-model="form.analystUids" multiple clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-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 @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in 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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+<!--            <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" multiple clearable>
+                <el-option
+                    v-for="item in 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="其他安全措施">-->
+<!--              <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>
+            <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-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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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';
+	interface stateType {
+		form: Object,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+	}
+	export default defineComponent({
+		name: 'powerForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 7,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            powerAccessPoint: '',
+            workingVoltage: '',
+            equipmentAndPower: '',
+            electricityUids: []
+          }
+				},
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        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' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+        console.log(state.form.seDepId,'state.form.seDepId')
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            const res = await workApplyApi().submitPowerApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.electricityUids = state.form.workDetail.electricityUids.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/components/space.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
new file mode 100644
index 0000000..7f0331c
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
@@ -0,0 +1,602 @@
+<template>
+	<div class="home-container">
+		<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="departList2" :props="props" :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" multiple clearable>
+              <el-option
+                  v-for="item in 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="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="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 @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in 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="analystUids">
+            <el-select v-model="form.analystUids" multiple clearable>
+              <el-option
+                  v-for="item in 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="involveOtherWork">
+            <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-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 @change="getSafetyIds" clearable>
+              <el-option
+                  v-for="item in 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="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in 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-input
+                  v-model="form.riskIdentification"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入风险辨识"
+              />
+            </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>
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施" align="center"/>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="form.approvalDepBasicList" style="width: 90%" border>
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid">
+                  <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" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in 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 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="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable>
+                <el-option
+                    v-for="item in workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+	</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';
+	interface stateType {
+		form: Object,
+		otherWorkList: Array<any>,
+		equipmentDialog: boolean,
+    props:{},
+    depProps:{},
+    safetyMeasureBasicList: []
+	}
+	export default defineComponent({
+		name: 'spaceForm',
+		components: {},
+		props:['departList','departList2','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+        safetyMeasureBasicList: [],
+				form: {
+          workType: 2,
+          workLevel: 0,
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          analystUids: [],
+          guardianUids: [],
+          workDepId: null,
+          workContent: '',
+          workLocation: '',
+          riskIdentification: '',
+          involveOtherWork: '',
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUid: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            csName: '',
+            csOriginalName: ''
+          }
+				},
+				otherWorkList: [
+					{
+						label: "动火作业",
+						value: 1
+					},
+					{
+						label: "受限空间作业",
+						value: 2
+					},
+					{
+						label: "吊装作业",
+						value: 3
+					},
+					{
+						label: "动土作业",
+						value: 4
+					},
+					{
+						label: "断路作业",
+						value: 5
+					},
+					{
+						label: "高处作业",
+						value: 6
+					},
+					{
+						label: "临时用电作业",
+						value: 7
+					},
+					{
+						label: "盲板抽堵作业",
+						value: 8
+					}
+				],
+        props:{
+          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' }],
+        involveOtherWork: [{ 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' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+      });
+
+      const findParent = ()=>{
+        state.form.seDepId = findNearestDepLevel2DepId(props.departList2,state.form.applyDepId)
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        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
+          });
+        }
+      };
+
+      const getStartEndIds = ()=>{
+        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 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(',')
+            }
+            const res = await workApplyApi().submitSpaceApply(state.form)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              getBasicData()
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+            }
+          } else {
+            console.log('error submit!', fields)
+          }
+        })
+      }
+
+      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,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+		position: relative;
+    overflow-y: scroll;
+    padding: 0 0 120px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+      position: fixed;
+      left: 0;
+      bottom: 0;
+      z-index: 999;
+			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;
+		}
+	}
+
+	.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/zysq/index.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
index d271403..2b44843 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
@@ -1,29 +1,29 @@
 <template>
 	<div class="home-container">
-		<el-tabs type="border-card" @tab-change="switchTab">
-			<el-tab-pane label="动火作业">
-				<fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList = departmentList></fire-form>
+		<el-tabs type="border-card" @tab-change="switchTab" v-model="activeName" @tab-click="handleClick">
+			<el-tab-pane label="动火作业" name="fire">
+				<fire-form ref="fire" :workerList = allWorkers :deviceList = allDevices :departList=departmentList :departList2=departmentList2></fire-form>
 			</el-tab-pane>
-			<el-tab-pane label="受限空间作业">
-<!--				<space-form ref="space" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></space-form>-->
+			<el-tab-pane label="受限空间作业" name="space">
+				<space-form ref="space" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></space-form>
 			</el-tab-pane>
-			<el-tab-pane label="吊装作业">
-<!--				<hoist-form ref="hoist" :workerList = allWorkers :deviceList = allDevices></hoist-form>-->
+			<el-tab-pane label="吊装作业" name="hoist">
+				<hoist-form ref="hoist" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></hoist-form>
 			</el-tab-pane>
-			<el-tab-pane label="动土作业">
-<!--				<ground-form ref="ground" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></ground-form>-->
+			<el-tab-pane label="动土作业" name="ground">
+				<ground-form ref="ground" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></ground-form>
 			</el-tab-pane>
-			<el-tab-pane label="断路作业">
-<!--				<broken-form ref="broken" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></broken-form>-->
+			<el-tab-pane label="断路作业" name="broken">
+				<broken-form ref="broken" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></broken-form>
 			</el-tab-pane>
-			<el-tab-pane label="高处作业">
-<!--				<height-form ref="height" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></height-form>-->
+			<el-tab-pane label="高处作业" name="height">
+				<height-form ref="height" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></height-form>
 			</el-tab-pane>
-			<el-tab-pane label="临时用电作业">
-<!--				<power-form ref="power" :workerList = allWorkers :deviceList = allDevices></power-form>-->
+			<el-tab-pane label="临时用电作业" name="power">
+				<power-form ref="power" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></power-form>
 			</el-tab-pane>
-			<el-tab-pane label="盲板抽堵作业">
-<!--				<plate-form ref="plate" :workerList = allWorkers :deviceList = allDevices></plate-form>-->
+			<el-tab-pane label="盲板抽堵作业" name="plate">
+				<plate-form ref="plate" :workerList = allWorkers :departList = departmentList :departList2=departmentList2 :deviceList = allDevices></plate-form>
 			</el-tab-pane>
 		</el-tabs>
 <!--    <material-dialog ref="material"></material-dialog>-->
@@ -38,33 +38,37 @@
 	import { Session } from '/@/utils/storage';
 	import { Search } from '@element-plus/icons-vue'
 	import { ElMessage } from 'element-plus'
-	import type { FormInstance, FormRules } from 'element-plus'
+	import type { FormInstance, FormRules, TabsPaneContext } from 'element-plus'
 	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
 	import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
 
 	interface stateType {
+    activeName: string
 		allWorkers: Array<any>
 		departmentList: Array<any>
+    departmentList2: Array<any>
     allDevices: Array<any>
 	}
 	export default defineComponent({
 		name: 'apply',
 		components: {
 			fireForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue')),
-			// spaceForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue')),
-			// hoistForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue')),
-			// groundForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue')),
-			// brokenForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue')),
-			// heightForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue')),
-			// powerForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue')),
-			// plateForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue')),
+			spaceForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue')),
+			hoistForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue')),
+			groundForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue')),
+			brokenForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue')),
+			heightForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue')),
+			powerForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue')),
+			plateForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue')),
 		},
 		setup() {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({
+        activeName: 'fire',
 				allWorkers: [],
 				departmentList: [],
+        departmentList2:[],
         allDevices: []
 			});
       const fire = ref()
@@ -75,7 +79,17 @@
       const height = ref()
       const power = ref()
       const plate = ref()
-      const material = ref()
+
+      const handleClick = (tab: TabsPaneContext, event: Event) => {
+        if(tab.index == 0){fire.value.getBasicData()}
+        if(tab.index == 1){space.value.getBasicData()}
+        if(tab.index == 2){hoist.value.getBasicData()}
+        if(tab.index == 3){ground.value.getBasicData()}
+        if(tab.index == 4){broken.value.getBasicData()}
+        if(tab.index == 5){height.value.getBasicData()}
+        if(tab.index == 6){power.value.getBasicData()}
+        if(tab.index == 7){plate.value.getBasicData()}
+      }
 			// 获取用户列表
 			const getAll = async ()=>{
 				const res = await workApplyApi().getAllUsers()
@@ -94,6 +108,7 @@
 				let res = await teamManageApi().getAllDepartment();
 				if (res.data.code === '200') {
 					state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+          state.departmentList2 = state.departmentList[0].children
 				} else {
 					ElMessage({
 						type: 'warning',
@@ -116,10 +131,14 @@
       };
 
       const switchTab = (name)=>{
-        console.log(name,'name')
-        fire.value.form.resetFields()
-        material.value.maBaseId = null
-        material.value.receiveUids = []
+        // if(name == 'fire'){fire.value.getBasicData()}
+        // if(name == 'space'){space.value.getBasicData()}
+        // if(name == 'hoist'){hoist.value.getBasicData()}
+        // if(name == 'ground'){ground.value.getBasicData()}
+        // if(name == 'broken'){broken.value.getBasicData()}
+        // if(name == 'height'){height.value.getBasicData()}
+        // if(name == 'power'){power.value.getBasicData()}
+        // if(name == 'plate'){plate.value.getBasicData()}
       }
 
 
@@ -140,8 +159,8 @@
         hoist,
         plate,
         power,
-        material,
-        switchTab
+        switchTab,
+        handleClick
 			};
 		},
 	});
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index c76b6ca..b7dd2da 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -1498,6 +1498,7 @@
 .container{
   padding: 20px;
   background: url('../../../assets/spwbg.png') no-repeat center;
+  background-size: 100% 100%;
 
   .full{
     position:fixed;

--
Gitblit v1.9.2