From e93d241d51765e701d89cd7f6f4088c6cb22949b Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 21 四月 2023 16:51:47 +0800
Subject: [PATCH] 修改

---
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue   |  122 +
 src/views/specialWorkSystem/workTicket/wdsqjl/index.vue                 |   14 
 src/views/newSpecialWorkSystem/workTicket/zysq/index.vue                |  192 ++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue |  125 +
 src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue      |  366 +++
 src/views/newSpecialWorkSystem/workTicket/wdsp/index.vue                |  815 ++++++++
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/hoistLog.vue  |  146 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue |  131 +
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/spaceLog.vue  |  149 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue  |  149 +
 src/views/intellectInspect/inspectIndex/index.vue                       |   42 
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/fireLog.vue   |  137 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue                |  877 +++++++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue  |  125 +
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/powerLog.vue  |  149 +
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/plateLog.vue  |  170 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue  |  128 +
 src/views/system/user/component/userDialog.vue                          |   71 
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/brokenLog.vue |  152 +
 src/views/system/user/index.vue                                         |    7 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue  |  128 +
 src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue              |  904 +++++++++
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/groundLog.vue |  152 +
 src/api/intellectInspectSystem/inspectIndex/index.ts                    |    8 
 src/views/newSpecialWorkSystem/workTicket/wdsp/components/heightLog.vue |  146 +
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue |  131 +
 26 files changed, 5,489 insertions(+), 47 deletions(-)

diff --git a/src/api/intellectInspectSystem/inspectIndex/index.ts b/src/api/intellectInspectSystem/inspectIndex/index.ts
index 7110a1d..be08173 100644
--- a/src/api/intellectInspectSystem/inspectIndex/index.ts
+++ b/src/api/intellectInspectSystem/inspectIndex/index.ts
@@ -11,6 +11,14 @@
             });
         },
 
+        getPieCountExcepOrder: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/SafeCheckSmartScreen/select/countExcepOrderByPieChart`,
+                method: 'post',
+                data: data
+            });
+        },
+
         //
         getListExcepOrderByPage: (data: object) => {
             return request({
diff --git a/src/views/intellectInspect/inspectIndex/index.vue b/src/views/intellectInspect/inspectIndex/index.vue
index 9f6635f..43b8aae 100644
--- a/src/views/intellectInspect/inspectIndex/index.vue
+++ b/src/views/intellectInspect/inspectIndex/index.vue
@@ -24,20 +24,22 @@
                 <span class="tit">异常区域设备统计</span>
                 <div class="filter-part2">
                   <el-switch
-                      v-model="chartStatus"
+                      v-model="searchQuery.regionType"
                       inline-prompt
                       style="--el-switch-on-color: #13ce66; --el-switch-off-color: #13ce66"
                       active-text="区域"
                       inactive-text="设备"
+                      :active-value="2"
+                      :inactive-value="3"
                   />
                 </div>
               </div>
               <div class="chart" :id="sbtj"></div>
-              <el-radio-group v-model="period" size="small">
-                <el-radio border label="week">近7天</el-radio>
-                <el-radio border label="month">近30天</el-radio>
-                <el-radio border label="season">近90天</el-radio>
-                <el-radio border label="year">近一年</el-radio>
+              <el-radio-group v-model="searchQuery.timeType" size="small">
+                <el-radio border :label="1">近7天</el-radio>
+                <el-radio border :label="2">近30天</el-radio>
+                <el-radio border :label="3">近90天</el-radio>
+                <el-radio border :label="4">近一年</el-radio>
               </el-radio-group>
             </div>
           </div>
@@ -227,8 +229,10 @@
     classGroupList: Array<classGroup>;
     quotaList: [];
     inspectPointAllList: [];
-    chartStatus:boolean;
-    period: string;
+    searchQuery:{
+      regionType:number;
+      timeType: number;
+    }
     dialogVisible:boolean;
     workNum: string;
     beImgs: [];
@@ -263,8 +267,10 @@
             unusualData: [],
             unchecked: null,
             unusual: null,
-            chartStatus: true,
-            period: 'month',
+            searchQuery:{
+              regionType: 2,
+              timeType: 2,
+            },
             uncheckedList: [],
             abnormalList: [],
             workTypeList: [
@@ -302,7 +308,7 @@
               expandTrigger: 'hover',
               emitPath: false,
               value: 'depId',
-              label: 'depName',
+              label: 'name',
               checkStrictly: true
             },
             classGroupList: [],
@@ -322,8 +328,9 @@
 
         // 页面载入时执行方法
         onMounted(() => {
-            getDepartmentData();
+            // getDepartmentData();
             // getCountExcepOrder();
+            // getPieCountExcepOrder();
             getInspectRecord();
             getListExcepOrder();
             getDayData();
@@ -356,6 +363,17 @@
             });
           }
         }
+        const getPieCountExcepOrder = async ()=>{
+          let res = await inspectIndexApi().getPieCountExcepOrder(state.searchQuery);
+          if (res.data.code === '200') {
+            console.log('饼状图趋势数据>>>', res.data.data)
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.data.msg
+            });
+          }
+        }
         const acceptance =(row:object)=>{
           ElMessageBox.confirm(
               '确认完成验收并结束工单?',
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsp/components/brokenLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/brokenLog.vue
new file mode 100644
index 0000000..dcb6adc
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/brokenLog.vue
@@ -0,0 +1,152 @@
+<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="作业单位ID">
+				<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="期望开始时间">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/fireLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/fireLog.vue
new file mode 100644
index 0000000..ed30241
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/fireLog.vue
@@ -0,0 +1,137 @@
+<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="关联其他作业">
+				<el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" />
+			</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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/groundLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/groundLog.vue
new file mode 100644
index 0000000..244330e
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/groundLog.vue
@@ -0,0 +1,152 @@
+<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/heightLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/heightLog.vue
new file mode 100644
index 0000000..0fb8a7a
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/heightLog.vue
@@ -0,0 +1,146 @@
+<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="作业单位ID">
+				<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/hoistLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/hoistLog.vue
new file mode 100644
index 0000000..3b4dc2a
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/hoistLog.vue
@@ -0,0 +1,146 @@
+<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/plateLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/plateLog.vue
new file mode 100644
index 0000000..f307fc0
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/plateLog.vue
@@ -0,0 +1,170 @@
+<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/powerLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/powerLog.vue
new file mode 100644
index 0000000..f3c893c
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/powerLog.vue
@@ -0,0 +1,149 @@
+<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/components/spaceLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/spaceLog.vue
new file mode 100644
index 0000000..d9feabc
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/components/spaceLog.vue
@@ -0,0 +1,149 @@
+<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="关联其他作业">
+				<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.stepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="上一层级">-->
+<!--				<el-input v-model="details.preStepId" readonly />-->
+<!--			</el-form-item>-->
+<!--			<el-form-item label="下一层级">-->
+<!--				<el-input v-model="details.nextStepId" readonly />-->
+<!--			</el-form-item>-->
+			<el-form-item label="层级审批类型">
+				<el-input v-model="details.stepTypeDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号">
+				<el-input v-model="details.stepSerial" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间">
+				<el-input v-model="details.stepStartApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间">
+				<el-input v-model="details.stepFinishApprovalTime" readonly />
+			</el-form-item>
+			<el-form-item label="审批人姓名">
+				<el-input v-model="details.unitApprovalUname" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null"  label="单元审批开始时间">
+				<el-input v-model="details.unitApprovalStartTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间">
+				<el-input v-model="details.unitApprovalEndTime" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果">
+				<el-input v-model="details.unitResultDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态">
+				<el-input v-model="details.statusDesc" readonly />
+			</el-form-item>
+			<el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果">
+				<el-input v-model="details.stepApprovalResultDesc" 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/wdsp/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsp/index.vue
new file mode 100644
index 0000000..84dfa62
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsp/index.vue
@@ -0,0 +1,815 @@
+<template>
+    <div class="home-container">
+<!--        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">-->
+<!--            <el-tab-pane label="申请中" name="1">-->
+                <div style="height: 100%">
+                    <el-row class="homeCard">
+                        <span>作业类型:</span>
+                        <el-col :span="10">
+                            <div class="grid-content topInfo">
+                                <el-select v-model="searchWord">
+                                    <el-option
+                                            v-for="item in workType"
+                                            :key="item.id"
+                                            :label="item.name"
+                                            :value="item.id"
+                                    />
+                                </el-select>
+                                <el-button type="primary" @click="searchRecord">查询</el-button>
+                                <el-button plain @click="clearSearch">重置</el-button>
+                            </div>
+                        </el-col>
+                    </el-row>
+                    <div class="homeCard">
+                        <div class="main-card">
+                            <el-row class="cardTop">
+                                <el-col :span="12" class="mainCardBtn">
+                                    <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
+                                    <!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+                                    <!--									<el-button type="success" size="default">设置分类</el-button>-->
+                                </el-col>
+                                <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="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="applyTime" label="申请时间" width="180" />
+                                <el-table-column label="审批状态" align="center" width="180">
+                                    <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>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column fixed="right" label="操作" align="center" width="250">
+                                    <template #default="scope">
+                                        <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>-->
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            <div class="pageBtn">
+                                <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+                            </div>
+                        </div>
+                    </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>
+                    <template #footer>
+                      <span class="dialog-footer">
+                        <el-button type="primary" @click="dialogDetails = false"
+                        >确认</el-button
+                        >
+                      </span>
+                    </template>
+                </el-dialog>
+                <el-dialog v-model="dialogStatus" title="作业审批进度" center width="60%">
+                    <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
+                        <el-form-item label="申请作业人">
+                            <el-input v-model="approveInfo.operators" readonly type="textarea" />
+                        </el-form-item>
+                    </el-form>
+                    <div style="display: flex; flex-direction: column-reverse">
+                        <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
+                            <div class="stepNum">{{ item.stepSerial }}</div>
+                            <div class="stepCard">
+                                <el-card class="box-card" shadow="always">
+                                    <div class="text">
+                                        审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span>
+                                    </div>
+                                    <div class="text">
+                                        审批层级:<span class="bold-text">{{ item.typeDesc }}</span>
+                                    </div>
+                                    <div class="text" v-if="item.auditTypeDesc">
+                                        审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.startApprovalTime != null">
+                                        开始时间:<span>{{ item.startApprovalTime }}</span>
+                                    </div>
+                                    <div class="approveUnit">
+                                        <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
+                                        <div class="item-cont" v-for="i in item.stepUnits">
+                                            <span>{{ i.approvalUname }}</span
+                                            ><span>{{ i.resultDesc }}</span>
+                                        </div>
+                                    </div>
+                                    <div class="approveItem">
+                                        <div class="item-tit">
+                                            <span>审批项目</span>
+<!--                                            <span>类型</span>-->
+                                            <div>措施标准</div>
+                                        </div>
+                                        <div class="item-cont" v-for="i in item.stepItems">
+                                            <span>{{ i.itemName }}</span>
+<!--                                            <span>{{ i.typeDesc }}</span>-->
+                                            <div v-if="i.measure !== null">
+                                                <div>
+                                                    <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>措施内容:</span><span>{{ i.measure.context }}</span>
+                                                </div>
+                                            </div>
+                                            <div v-if="i.stand !== null">
+                                                <div>
+                                                    <span>标题名称:</span><span>{{ i.stand.title }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="text" v-show="item.expFinishApprovalTime != null">
+                                        期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.finishApprovalTime != null">
+                                        结束时间:<span>{{ item.finishApprovalTime }}</span>
+                                    </div>
+                                </el-card>
+                            </div>
+                        </div>
+                    </div>
+                </el-dialog>
+                <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+                    <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-tab-pane>-->
+<!--            <el-tab-pane label="已通过" name="2">-->
+<!--                <div style="height: 100%">-->
+<!--                    <el-row class="homeCard">-->
+<!--                        <el-col :span="8">-->
+<!--                            <div class="grid-content topInfo">-->
+<!--                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>-->
+<!--                                <el-button type="primary">查询</el-button>-->
+<!--                                <el-button plain>重置</el-button>-->
+<!--                            </div>-->
+<!--                        </el-col>-->
+<!--                    </el-row>-->
+<!--                    <div class="homeCard">-->
+<!--                        <div class="main-card">-->
+<!--                            <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">-->
+<!--                                <el-table-column type="selection" width="55" />-->
+<!--                                <el-table-column type="index" label="编号" width="200" />-->
+<!--                                <el-table-column property="level" label="作业证等级" width="180" sortable />-->
+<!--                                <el-table-column property="applyDate" label="申请日期" sortable />-->
+<!--                                <el-table-column property="name" label="申请人" width="180" />-->
+<!--                                <el-table-column property="department" label="申请部门" width="180" />-->
+<!--                                <el-table-column label="申请状态" width="180">-->
+<!--                                    <template #default="scope">-->
+<!--                                        <el-tag type="success">{{ scope.row.status }}</el-tag>-->
+<!--                                    </template>-->
+<!--                                </el-table-column>-->
+<!--                            </el-table>-->
+<!--                            <div class="pageBtn">-->
+<!--                                <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </el-tab-pane>-->
+<!--        </el-tabs>-->
+    </div>
+</template>
+
+<script lang="ts">
+import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { useRouter } from 'vue-router';
+import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { workApprovalApi } from '/@/api/specialWorkSystem/workApproval';
+import type { TabsPaneContext } from 'element-plus';
+import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+
+// 定义接口来定义对象的类型
+interface stateType {
+    applyData: Array<string>;
+    workTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    approveInfo: Object;
+    dialogDetails: boolean;
+    dialogStatus: boolean;
+    deleteDialog: boolean;
+    pageIndex1: number;
+    pageSize1: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize1: number;
+    activeName: string;
+    addRecord: {};
+    details: {};
+    statusInfo: {};
+    workType: Array<type>;
+    dialogType: number | null;
+    departmentList: Array<any>;
+    departmentRecursionList: Array<DepartmentState>;
+}
+interface type {
+    id: number;
+    name: string;
+}
+interface DepartmentState {
+    depId: number;
+    depName: string;
+}
+export default defineComponent({
+    name: 'myApproval',
+    components: {
+        fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue')),
+        space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue')),
+        hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue')),
+        ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue')),
+        broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue')),
+        height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue')),
+        power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue')),
+        plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue'))
+    },
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+        const router = useRouter();
+        const state = reactive<stateType>({
+            pageIndex1: 1,
+            pageSize1: 10,
+            totalSize1: 0,
+            dialogType: null,
+            activeName: '1',
+            departmentList: [],
+            departmentRecursionList: [],
+            chosenIndex: null,
+            searchWord: '',
+            applyData: [],
+            workTimeList: [],
+            multipleSelection: [],
+            approveInfo: {
+                approvalSteps: [],
+                operators: []
+            },
+            dialogDetails: false,
+            dialogStatus: false,
+            deleteDialog: false,
+            addRecord: {},
+            details: {},
+            statusInfo: {},
+            deleteId: null,
+            deleteArr: [],
+            workType: [
+                { id: 1, name: '动火作业' },
+                { id: 2, name: '受限空间作业' },
+                { id: 3, name: '吊装作业' },
+                { id: 4, name: '动土作业' },
+                { id: 5, name: '断路作业' },
+                { id: 6, name: '高处作业' },
+                { id: 7, name: '临时用电作业' },
+                { id: 8, name: '盲板抽堵作业' }
+            ]
+        });
+        interface User {
+            name: string;
+            list: [];
+            info: string;
+        }
+
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+
+        // 填写表单
+        const toApply = () => {
+            router.push({
+                path: 'zysq'
+            });
+        };
+
+        const handleClick = (tab: TabsPaneContext, event: Event) => {
+            console.log(tab, event);
+        };
+
+        // 获取部门列表
+        const getAllDepartment = async () => {
+            let res = await teamManageApi().getAllDepartment();
+            if (res.data.code === '200') {
+                state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+                recursion(state.departmentList);
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 获取层级审批数据
+        // const getApprovalData = async (id) => {
+        //     let res = await workApprovalApi().getApprovalData({workApplyId: id});
+        //     if (res.data.code === '200') {
+        //         console.log(res.data.data,'层级数据')
+        //         // state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+        //         // recursion(state.departmentList);
+        //     } else {
+        //         ElMessage({
+        //             type: 'warning',
+        //             message: res.data.msg
+        //         });
+        //     }
+        // };
+
+        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 data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };
+            let res = await workApprovalApi().getApprovalListPage(data);
+            if (res.data.code === '200') {
+                state.applyData = JSON.parse(JSON.stringify(res.data.data));
+                state.applyData = state.applyData.map((item) => {
+                    if (item.operators == null || item.operators == []) {
+                        item.operators = [];
+                    } else {
+                        item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
+                    }
+                    return item;
+                });
+                state.totalSize1 = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
+        // 重置搜索
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
+
+        // 查看进度
+        const viewStatus = (row) => {
+            getStatus({ workApplyId: row.workApplyId });
+            state.dialogStatus = true;
+        };
+
+        // 查询进度方法
+        const getStatus = async (data: any) => {
+            let res = await workApprovalApi().getApprovalStatus(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);
+                console.log(state.approveInfo, '我的审批');
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.workApplyId;
+            state.deleteDialog = true;
+        };
+
+        // 取消申请方法
+        const deleteRecord = async (data: any) => {
+            let res = await workApprovalApi().postAbord(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;
+        };
+
+        const handleSizeChange1 = (val: number) => {
+            state.pageSize1 = val;
+            getListByPage();
+        };
+        const handleCurrentChange1 = (val: number) => {
+            state.pageIndex1 = val;
+            getListByPage();
+        };
+
+        // 查看记录
+        const viewRecord = (row: any) => {
+            state.dialogType = row.workType
+            state.details = JSON.parse(JSON.stringify(row));
+            console.log(state.details,'details')
+            // getApprovalData(state.details.workApplyId)
+            if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){
+                state.details.workDetail.otherSpecialWork=[]
+            }
+            else {
+                console.log(state.details.workDetail.otherSpecialWork,'split')
+                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;
+        };
+
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllDepartment()
+        });
+
+        return {
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            Finished,
+            reLoadData,
+            toApply,
+            handleClick,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            viewStatus,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            handleSizeChange1,
+            handleCurrentChange1,
+            ...toRefs(state)
+        };
+    }
+});
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 144px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .demo-tabs {
+        width: 100%;
+        height: 100%;
+
+        &::v-deep(.el-tabs__content) {
+            height: calc(100% - 60px);
+        }
+
+        .el-tab-pane {
+            height: 100%;
+        }
+    }
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
+
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .stepItem {
+        display: flex;
+        align-items: flex-start;
+        margin-top: 30px;
+        margin-left: 30px;
+        padding-bottom: 30px;
+        padding-left: 40px;
+        border-left: 1px solid #a0cfff;
+        position: relative;
+        &:first-of-type {
+            margin-top: 30px;
+        }
+        &:first-of-type {
+            margin-bottom: 0;
+            border-left: none;
+        }
+        .stepNum {
+            position: absolute;
+            width: 40px;
+            height: 40px;
+            border-radius: 20px;
+            box-sizing: border-box;
+            font-size: 18px;
+            color: #333;
+            border: 1px solid #a0cfff;
+            line-height: 38px;
+            text-align: center;
+            left: -20px;
+            top: -30px;
+            background: #d9ecff;
+        }
+        .stepCard {
+            width: 100%;
+            margin-top: -30px;
+
+            .box-card {
+                width: 100%;
+
+                .card-header {
+                    display: flex;
+                    justify-content: space-between;
+                    align-items: center;
+
+                    span {
+                        font-weight: bold;
+                        margin-left: 10px;
+                    }
+                }
+
+                .text {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 10px;
+                    padding-left: 10px;
+
+                    span {
+                        color: #409eff;
+                    }
+
+                    .bold-text{
+                        font-weight: bolder;
+                    }
+
+                    &:last-of-type {
+                        margin-bottom: 0;
+                    }
+                }
+                .approveUnit {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    border: 1px solid #fff;
+                    background: #ecf8ff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: center;
+                                span {
+                                    width: 45%;
+                                    &:first-of-type {
+                                        width: 30%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+                .approveItem {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    background: #ecf8ff;
+                    border: 1px solid #fff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: flex-start;
+                                margin-bottom: 10px;
+                                span {
+                                    width: 50%;
+                                    &:first-of-type {
+                                        width: 25%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+            }
+        }
+        &:hover .card-header {
+            color: #0098f5;
+        }
+        &:hover .stepNum {
+            border: 2px solid #0098f5;
+            color: #0098f5;
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
+
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+    .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
new file mode 100644
index 0000000..b32213d
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenLog.vue
@@ -0,0 +1,131 @@
+<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/fireLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue
new file mode 100644
index 0000000..6386a7e
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireLog.vue
@@ -0,0 +1,122 @@
+<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
new file mode 100644
index 0000000..ed728d7
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundLog.vue
@@ -0,0 +1,131 @@
+<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
new file mode 100644
index 0000000..f95c6e9
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightLog.vue
@@ -0,0 +1,125 @@
+<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
new file mode 100644
index 0000000..1086537
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistLog.vue
@@ -0,0 +1,125 @@
+<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
new file mode 100644
index 0000000..69620a3
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateLog.vue
@@ -0,0 +1,149 @@
+<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
new file mode 100644
index 0000000..cf81c13
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerLog.vue
@@ -0,0 +1,128 @@
+<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
new file mode 100644
index 0000000..d6b4606
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceLog.vue
@@ -0,0 +1,128 @@
+<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
new file mode 100644
index 0000000..340b902
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
@@ -0,0 +1,877 @@
+<template>
+    <div class="home-container">
+<!--        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">-->
+<!--            <el-tab-pane label="申请中" name="1">-->
+                <div style="height: 100%">
+                    <el-row class="homeCard">
+                        <span>作业类型:</span>
+                        <el-col :span="10">
+                            <div class="grid-content topInfo">
+                                <el-select v-model="searchWord">
+                                    <el-option
+                                            v-for="item in workType"
+                                            :key="item.id"
+                                            :label="item.name"
+                                            :value="item.id"
+                                    />
+                                </el-select>
+
+                                <el-button type="primary" @click="searchRecord">查询</el-button>
+                                <el-button plain @click="clearSearch">重置</el-button>
+                            </div>
+                        </el-col>
+                    </el-row>
+                    <div class="homeCard">
+                        <div class="main-card">
+                            <el-row class="cardTop">
+                                <el-col :span="12" class="mainCardBtn">
+                                    <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
+                                    <!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+                                    <!--									<el-button type="success" size="default">设置分类</el-button>-->
+                                </el-col>
+                                <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">
+                                  <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>
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="applyTime" label="申请时间" width="180" />
+                                <el-table-column label="申请状态" align="center" width="180">
+                                    <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>
+                                    </template>
+                                </el-table-column>
+                                <el-table-column fixed="right" label="操作" align="center" width="300">
+                                    <template #default="scope">
+                                        <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>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            <div class="pageBtn">
+                                <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+                            </div>
+                        </div>
+                    </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>
+                    <template #footer>
+                      <span class="dialog-footer">
+                        <el-button type="primary" @click="dialogDetails = false"
+                        >确认</el-button
+                        >
+                      </span>
+                    </template>
+                </el-dialog>
+                <el-dialog v-model="dialogStatus" title="作业申请进度" width="60%">
+                    <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
+                        <el-form-item label="申请作业人">
+                            <el-input v-model="approveInfo.operators" readonly type="textarea" />
+                        </el-form-item>
+                    </el-form>
+                    <div style="display: flex; flex-direction: column-reverse">
+                        <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
+                            <div class="stepNum">{{ item.stepSerial }}</div>
+                            <div class="stepCard">
+                                <el-card class="box-card" shadow="always">
+                                    <div class="text">
+                                        审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span>
+                                    </div>
+                                    <div class="text">
+                                        审批类型:<span class="bold-text">{{ item.typeDesc }}</span>
+                                    </div>
+                                    <div class="text" v-if="item.auditTypeDesc">
+                                        审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.startApprovalTime != null">
+                                        开始时间:<span>{{ item.startApprovalTime }}</span>
+                                    </div>
+                                    <div class="approveUnit">
+                                        <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
+                                        <div class="item-cont" v-for="i in item.stepUnits">
+                                            <span>{{ i.approvalUname }}</span
+                                            ><span>{{ i.resultDesc }}</span>
+                                        </div>
+                                    </div>
+                                    <div class="approveItem">
+                                        <div class="item-tit">
+                                            <span>审批项目</span>
+<!--                                            <span>类型</span>-->
+                                            <div>措施标准</div>
+                                        </div>
+                                        <div class="item-cont" v-for="i in item.stepItems">
+                                            <span>{{ i.itemName }}</span>
+<!--                                            <span>{{ i.typeDesc }}</span>-->
+                                            <div v-if="i.measure !== null">
+                                                <div>
+                                                    <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>措施内容:</span><span>{{ i.measure.context }}</span>
+                                                </div>
+                                            </div>
+                                            <div v-if="i.stand !== null">
+                                                <div>
+                                                    <span>标题名称:</span><span>{{ i.stand.title }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="text" v-show="item.expFinishApprovalTime && item.expFinishApprovalTime != null">
+                                        期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.finishApprovalTime != null">
+                                        结束时间:<span>{{ item.finishApprovalTime }}</span>
+                                    </div>
+                                </el-card>
+                            </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>
+                    <template #footer>
+                                <span class="dialog-footer">
+                                    <el-button @click="downLoadDialog = false" size="default">取消</el-button>
+                                    <el-button type="primary" @click="conFirmDownLoad" size="default">确认</el-button>
+                                </span>
+                    </template>
+                </el-dialog>
+<!--            </el-tab-pane>-->
+<!--            <el-tab-pane label="已通过" name="2">-->
+<!--                <div style="height: 100%">-->
+<!--                    <el-row class="homeCard">-->
+<!--                        <el-col :span="8">-->
+<!--                            <div class="grid-content topInfo">-->
+<!--                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>-->
+<!--                                <el-button type="primary">查询</el-button>-->
+<!--                                <el-button plain>重置</el-button>-->
+<!--                            </div>-->
+<!--                        </el-col>-->
+<!--                    </el-row>-->
+<!--                    <div class="homeCard">-->
+<!--                        <div class="main-card">-->
+<!--                            <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">-->
+<!--                                <el-table-column type="selection" width="55" />-->
+<!--                                <el-table-column type="index" label="编号" width="200" />-->
+<!--                                <el-table-column property="level" label="作业证等级" width="180" sortable />-->
+<!--                                <el-table-column property="applyDate" label="申请日期" sortable />-->
+<!--                                <el-table-column property="name" label="申请人" width="180" />-->
+<!--                                <el-table-column property="department" label="申请部门" width="180" />-->
+<!--                                <el-table-column label="申请状态" width="180">-->
+<!--                                    <template #default="scope">-->
+<!--                                        <el-tag type="success">{{ scope.row.status }}</el-tag>-->
+<!--                                    </template>-->
+<!--                                </el-table-column>-->
+<!--                            </el-table>-->
+<!--                            <div class="pageBtn">-->
+<!--                                <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </el-tab-pane>-->
+<!--        </el-tabs>-->
+    </div>
+</template>
+
+<script lang="ts">
+import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { useRouter } from 'vue-router';
+import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+import type { TabsPaneContext } from 'element-plus';
+import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+import Cookies from 'js-cookie';
+import axios from 'axios';
+
+// 定义接口来定义对象的类型
+interface stateType {
+    applyData: Array<string>;
+    workTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    approveInfo: Object;
+    dialogDetails: boolean;
+    dialogStatus: boolean;
+    deleteDialog: boolean;
+    downLoadDialog: boolean;
+    pageIndex1: number;
+    pageSize1: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    downLoadId: null | number;
+    downLoadName: string;
+    searchWord: string;
+    totalSize1: number;
+    activeName: string;
+    addRecord: {};
+    details: {};
+    statusInfo: {};
+    workType: Array<type>;
+    dialogType: number | null;
+    departmentList: Array<any>;
+    departmentRecursionList: Array<DepartmentState>;
+}
+interface type {
+    id: number;
+    name: string;
+}
+interface DepartmentState {
+    depId: number;
+    depName: string;
+}
+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'))
+    },
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+        const router = useRouter();
+        const state = reactive<stateType>({
+            pageIndex1: 1,
+            pageSize1: 10,
+            totalSize1: 0,
+            dialogType: null,
+            activeName: '1',
+            departmentList: [],
+            departmentRecursionList: [],
+            chosenIndex: null,
+            searchWord: '',
+            applyData: [],
+            workTimeList: [],
+            multipleSelection: [],
+            approveInfo: {
+                approvalSteps: [],
+                operators: []
+            },
+            dialogDetails: false,
+            dialogStatus: false,
+            deleteDialog: false,
+            downLoadDialog: false,
+            addRecord: {},
+            details: {},
+            statusInfo: {},
+            deleteId: null,
+            downLoadId: null,
+            downLoadName: '',
+            deleteArr: [],
+            workType: [
+                { id: 1, name: '动火作业' },
+                { id: 2, name: '受限空间作业' },
+                { id: 3, name: '吊装作业' },
+                { id: 4, name: '动土作业' },
+                { id: 5, name: '断路作业' },
+                { id: 6, name: '高处作业' },
+                { id: 7, name: '临时用电作业' },
+                { id: 8, name: '盲板抽堵作业' }
+            ]
+        });
+        interface User {
+            name: string;
+            list: [];
+            info: string;
+        }
+
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+
+        // 填写表单
+        const toApply = () => {
+            router.push({
+                path: 'zysq'
+            });
+        };
+
+        const handleClick = (tab: TabsPaneContext, event: Event) => {
+        };
+
+        // 获取部门列表
+        const getAllDepartment = async () => {
+            let res = await teamManageApi().getAllDepartment();
+            if (res.data.code === '200') {
+                state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+                recursion(state.departmentList);
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        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 data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };
+            let res = await workApplyApi().getApplyListPage(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 = [];
+                    } else {
+                        item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
+                    }
+                    return item;
+                });
+                state.totalSize1 = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 表格数据格式化
+        const toNames = (row, column, cellValue, index) => {
+            if (row.list == []) {
+                return [];
+            } else {
+                const nameList = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.workTimeList.length; t++) {
+                        if (row.list[i] == state.workTimeList[t].id) {
+                            nameList.push(state.workTimeList[t].name);
+                        }
+                    }
+                }
+                return nameList.join();
+            }
+        };
+
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
+        // 重置搜索
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
+
+        // 查看进度
+        const viewStatus = (row) => {
+            getStatus({ workApplyId: row.workApplyId });
+            state.dialogStatus = true;
+        };
+
+        // 查询进度方法
+        const getStatus = async (data: any) => {
+            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);
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        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;
+        };
+
+        // 导出图表
+        const downLoadBtn = (row:any) =>{
+            state.downLoadId = row.workApplyId;
+            state.downLoadName = row.workTypeDesc + row.workPermitNo
+            state.downLoadDialog = true;
+        }
+
+        // 导出方法
+        const downLoadRecord = async (data: any) => {
+            // let res = await workApplyApi().postPrinting(data);
+            axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{
+                if (res) {
+                    const link = document.createElement('a')
+                    let blob = new Blob([res.data],{type: 'application/pdf'})
+                    link.style.display = "none";
+                    link.href = URL.createObjectURL(blob); // 创建URL
+                    link.setAttribute("download", state.downLoadName + "作业证.pdf");
+                    document.body.appendChild(link);
+                    link.click();
+                    document.body.removeChild(link);
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            })
+
+        };
+
+        const conFirmDownLoad = () => {
+            downLoadRecord({ applyWorkId: state.downLoadId });
+            state.downLoadDialog = false;
+        };
+
+        const handleSizeChange1 = (val: number) => {
+            state.pageSize1 = val;
+            getListByPage();
+        };
+        const handleCurrentChange1 = (val: number) => {
+            state.pageIndex1 = val;
+            getListByPage();
+        };
+
+        // 查看记录
+        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;
+        };
+
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllDepartment()
+        });
+
+        return {
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            Finished,
+            Download,
+            reLoadData,
+            toApply,
+            handleClick,
+            toNames,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            viewStatus,
+            deleteRecordBtn,
+            downLoadBtn,
+            conFirmDelete,
+            conFirmDownLoad,
+            getListByPage,
+            handleSizeChange1,
+            handleCurrentChange1,
+            ...toRefs(state)
+        };
+    }
+});
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 144px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .demo-tabs {
+        width: 100%;
+        height: 100%;
+
+        &::v-deep(.el-tabs__content) {
+            height: calc(100% - 60px);
+        }
+
+        .el-tab-pane {
+            height: 100%;
+        }
+    }
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
+
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .stepItem {
+        display: flex;
+        align-items: flex-start;
+        margin-top: 30px;
+        margin-left: 30px;
+        padding-bottom: 30px;
+        padding-left: 40px;
+        border-left: 1px solid #a0cfff;
+        position: relative;
+        &:first-of-type {
+            margin-top: 30px;
+        }
+        &:first-of-type {
+            margin-bottom: 0;
+            border-left: none;
+        }
+        .stepNum {
+            position: absolute;
+            width: 40px;
+            height: 40px;
+            border-radius: 20px;
+            box-sizing: border-box;
+            font-size: 18px;
+            color: #333;
+            border: 1px solid #a0cfff;
+            line-height: 38px;
+            text-align: center;
+            left: -20px;
+            top: -30px;
+            background: #d9ecff;
+        }
+        .stepCard {
+            width: 100%;
+            margin-top: -30px;
+
+            .box-card {
+                width: 100%;
+
+                .card-header {
+                    display: flex;
+                    justify-content: space-between;
+                    align-items: center;
+
+                    span {
+                        font-weight: bold;
+                        margin-left: 10px;
+                    }
+                }
+
+                .text {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 10px;
+                    padding-left: 10px;
+
+                    span {
+                        color: #409eff;
+                    }
+
+                    .bold-text{
+                        font-weight: bolder;
+                    }
+
+                    &:last-of-type {
+                        margin-bottom: 0;
+                    }
+                }
+                .approveUnit {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    border: 1px solid #fff;
+                    background: #ecf8ff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: center;
+                                span {
+                                    width: 45%;
+                                    &:first-of-type {
+                                        width: 30%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+                .approveItem {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    background: #ecf8ff;
+                    border: 1px solid #fff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: flex-start;
+                                margin-bottom: 10px;
+                                span {
+                                    width: 50%;
+                                    &:first-of-type {
+                                        width: 25%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+            }
+        }
+        &:hover .card-header {
+            color: #0098f5;
+        }
+        &:hover .stepNum {
+            border: 2px solid #0098f5;
+            color: #0098f5;
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
+
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+    .el-card {
+        border: 0;
+    }
+}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue
new file mode 100644
index 0000000..e38b1c2
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsqjl/index.vue
@@ -0,0 +1,904 @@
+<template>
+    <div class="home-container">
+<!--        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">-->
+<!--            <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>
+                            <div class="grid-content topInfo">
+                                <el-select v-model="searchWord">
+                                    <el-option
+                                            v-for="item in workType"
+                                            :key="item.id"
+                                            :label="item.name"
+                                            :value="item.id"
+                                    />
+                                </el-select>
+                            </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">
+                            <el-row class="cardTop">
+                                <el-col :span="12" class="mainCardBtn">
+                                    <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button>
+                                    <!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+                                    <!--									<el-button type="success" size="default">设置分类</el-button>-->
+                                </el-col>
+                                <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="workTypeDesc" label="作业类型" align="center"/>
+                                <el-table-column property="workLevelDesc" label="作业等级" align="center"/>
+                                <el-table-column property="materialStatus" label="物资状态" align="center" width="180">
+                                  <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>
+                                  </template>
+                                </el-table-column>
+                                <el-table-column property="applyTime" label="申请时间" width="180" align="center"/>
+                                <el-table-column label="申请状态" align="center" width="140">
+                                    <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>
+                                    </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">
+                                    <template #default="scope">
+                                        <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>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                            <div class="pageBtn">
+                                <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
+                            </div>
+                        </div>
+                    </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>
+                    <template #footer>
+                      <span class="dialog-footer">
+                        <el-button type="primary" @click="dialogDetails = false"
+                        >确认</el-button
+                        >
+                      </span>
+                    </template>
+                </el-dialog>
+                <el-dialog v-model="dialogStatus" title="作业申请进度" width="60%">
+                    <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px">
+                        <el-form-item label="申请作业人">
+                            <el-input v-model="approveInfo.operators" readonly type="textarea" />
+                        </el-form-item>
+                    </el-form>
+                    <div style="display: flex; flex-direction: column-reverse">
+                        <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem">
+                            <div class="stepNum">{{ item.stepSerial }}</div>
+                            <div class="stepCard">
+                                <el-card class="box-card" shadow="always">
+                                    <div class="text">
+                                        审批结果:<span>{{ item.approvalResultDesc }}</span>
+                                    </div>
+                                    <div class="text" v-if="item.approvalTypeDesc">
+                                        层级类型:<span>{{ item.approvalTypeDesc }}</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>
+                                    </div>
+                                    <div class="text" v-show="item.startApprovalTime != null">
+                                        开始时间:<span>{{ item.startApprovalTime }}</span>
+                                    </div>
+                                    <div class="approveUnit">
+                                        <div class="item-tit"><span>审批人</span><span>审批状态</span></div>
+                                        <div class="item-cont" v-for="i in item.stepUnits">
+                                            <span>{{ i.approvalUname }}</span
+                                            ><span>{{ i.resultDesc }}</span>
+                                        </div>
+                                    </div>
+                                    <div class="approveItem" v-if="item.contentType==1">
+                                        <div class="item-tit">
+                                            <span>审批项目</span>
+<!--                                            <span>类型</span>-->
+                                            <div>措施标准</div>
+                                        </div>
+                                        <div class="item-cont" v-for="i in item.stepItems">
+                                            <span>{{ i.itemName }}</span>
+<!--                                            <span>{{ i.typeDesc }}</span>-->
+                                            <div v-if="i.measure !== null">
+                                                <div>
+                                                    <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>措施内容:</span><span>{{ i.measure.context }}</span>
+                                                </div>
+                                            </div>
+                                            <div v-if="i.stand !== null">
+                                                <div>
+                                                    <span>标题名称:</span><span>{{ i.stand.title }}</span>
+                                                </div>
+                                                <div>
+                                                    <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="text" v-show="item.expFinishApprovalTime != null">
+                                        期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>
+                                    </div>
+                                    <div class="text" v-show="item.finishApprovalTime != null">
+                                        结束时间:<span>{{ item.finishApprovalTime }}</span>
+                                    </div>
+                                </el-card>
+                            </div>
+                        </div>
+                    </div>
+                </el-dialog>
+                <el-dialog v-model="downLoadDialog" title="提示" width="30%" center>
+                    <span>您确定要导出该条记录吗?</span>
+                    <template #footer>
+                                <span class="dialog-footer">
+                                    <el-button @click="downLoadDialog = false" size="default">取消</el-button>
+                                    <el-button type="primary" @click="conFirmDownLoad" size="default">确认</el-button>
+                                </span>
+                    </template>
+                </el-dialog>
+<!--            </el-tab-pane>-->
+<!--            <el-tab-pane label="已通过" name="2">-->
+<!--                <div style="height: 100%">-->
+<!--                    <el-row class="homeCard">-->
+<!--                        <el-col :span="8">-->
+<!--                            <div class="grid-content topInfo">-->
+<!--                                <el-input v-model="searchWord" placeholder="作业证名称"></el-input>-->
+<!--                                <el-button type="primary">查询</el-button>-->
+<!--                                <el-button plain>重置</el-button>-->
+<!--                            </div>-->
+<!--                        </el-col>-->
+<!--                    </el-row>-->
+<!--                    <div class="homeCard">-->
+<!--                        <div class="main-card">-->
+<!--                            <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">-->
+<!--                                <el-table-column type="selection" width="55" />-->
+<!--                                <el-table-column type="index" label="编号" width="200" />-->
+<!--                                <el-table-column property="level" label="作业证等级" width="180" sortable />-->
+<!--                                <el-table-column property="applyDate" label="申请日期" sortable />-->
+<!--                                <el-table-column property="name" label="申请人" width="180" />-->
+<!--                                <el-table-column property="department" label="申请部门" width="180" />-->
+<!--                                <el-table-column label="申请状态" width="180">-->
+<!--                                    <template #default="scope">-->
+<!--                                        <el-tag type="success">{{ scope.row.status }}</el-tag>-->
+<!--                                    </template>-->
+<!--                                </el-table-column>-->
+<!--                            </el-table>-->
+<!--                            <div class="pageBtn">-->
+<!--                                <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </el-tab-pane>-->
+<!--        </el-tabs>-->
+    </div>
+</template>
+
+<script lang="ts">
+import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { useRouter } from 'vue-router';
+import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+import type { TabsPaneContext } from 'element-plus';
+import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+import Cookies from 'js-cookie';
+import axios from 'axios';
+
+// 定义接口来定义对象的类型
+interface stateType {
+    applyData: Array<string>;
+    workTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    casProps: {};
+    approveInfo: Object;
+    dialogDetails: boolean;
+    dialogStatus: boolean;
+    deleteDialog: boolean;
+    downLoadDialog: boolean;
+    pageIndex1: number;
+    pageSize1: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    downLoadId: null | number;
+    downLoadName: string;
+    searchWord: number | null;
+    searchDep: number | null;
+    searchDate: Array<any>,
+    totalSize1: number;
+    activeName: string;
+    addRecord: {};
+    details: {};
+    statusInfo: {};
+    workType: Array<type>;
+    dialogType: number | null;
+    departmentList: Array<any>;
+    departmentRecursionList: Array<DepartmentState>;
+}
+interface type {
+    id: number;
+    name: string;
+}
+interface DepartmentState {
+    depId: number;
+    depName: string;
+}
+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'))
+    },
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+        const router = useRouter();
+        const state = reactive<stateType>({
+            pageIndex1: 1,
+            pageSize1: 10,
+            totalSize1: 0,
+            dialogType: null,
+            activeName: '1',
+            departmentList: [],
+            departmentRecursionList: [],
+            chosenIndex: null,
+            searchWord: null,
+            searchDep: null,
+            searchDate: [],
+            applyData: [],
+            workTimeList: [],
+            multipleSelection: [],
+            approveInfo: {
+                approvalSteps: [],
+                operators: []
+            },
+            casProps: {
+                expandTrigger: 'hover',
+                emitPath: false,
+                value: 'depId',
+                label: 'depName',
+                checkStrictly: true
+            },
+            dialogDetails: false,
+            dialogStatus: false,
+            deleteDialog: false,
+            downLoadDialog: false,
+            addRecord: {},
+            details: {},
+            statusInfo: {},
+            deleteId: null,
+            downLoadId: null,
+            downLoadName: '',
+            deleteArr: [],
+            workType: [
+                { id: 1, name: '动火作业' },
+                { id: 2, name: '受限空间作业' },
+                { id: 3, name: '吊装作业' },
+                { id: 4, name: '动土作业' },
+                { id: 5, name: '断路作业' },
+                { id: 6, name: '高处作业' },
+                { id: 7, name: '临时用电作业' },
+                { id: 8, name: '盲板抽堵作业' }
+            ]
+        });
+        interface User {
+            name: string;
+            list: [];
+            info: string;
+        }
+
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+
+        // 填写表单
+        const toApply = () => {
+            router.push({
+                path: 'zysq'
+            });
+        };
+
+        const handleClick = (tab: TabsPaneContext, event: Event) => {
+        };
+
+        // 获取部门列表
+        const getAllDepartment = async () => {
+            let res = await teamManageApi().getAllDepartment();
+            if (res.data.code === '200') {
+                state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+                // recursion(state.departmentList);
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 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);
+            if (res.data.code === '200') {
+                state.applyData = JSON.parse(JSON.stringify(res.data.data));
+                state.applyData = state.applyData.map((item) => {
+                    if (item.operators == null || item.operators == []) {
+                        item.operators = [];
+                    } else {
+                        item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);
+                    }
+                    return item;
+                });
+                state.totalSize1 = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 表格数据格式化
+        const toNames = (row, column, cellValue, index) => {
+            if (row.list == []) {
+                return [];
+            } else {
+                const nameList = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.workTimeList.length; t++) {
+                        if (row.list[i] == state.workTimeList[t].id) {
+                            nameList.push(state.workTimeList[t].name);
+                        }
+                    }
+                }
+                return nameList.join();
+            }
+        };
+
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == null && state.searchDep == null && state.searchDate == []) {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
+        // 重置搜索
+        const clearSearch = async () => {
+            state.searchWord = null;
+            state.searchDep = null;
+            state.searchDate = []
+            getListByPage();
+        };
+
+        // 查看进度
+        const viewStatus = (row) => {
+            getStatus({ workApplyId: row.workApplyId });
+        };
+
+        // 查询进度方法
+        const getStatus = async (data: any) => {
+            let res = await workApplyApi().getAllStatus(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',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.workApplyId;
+            state.deleteDialog = true;
+        };
+
+        // 导出图表
+        const downLoadBtn = (row:any) =>{
+            state.downLoadId = row.workApplyId;
+            state.downLoadName = row.workTypeDesc + row.workPermitNo
+            state.downLoadDialog = true;
+        }
+
+        // 导出方法
+        const downLoadRecord = async (data: any) => {
+            // let res = await workApplyApi().postPrinting(data);
+            axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{
+                if (res) {
+                    const link = document.createElement('a')
+                    let blob = new Blob([res.data],{type: 'application/pdf'})
+                    link.style.display = "none";
+                    link.href = URL.createObjectURL(blob); // 创建URL
+                    link.setAttribute("download", state.downLoadName + "作业证.pdf");
+                    document.body.appendChild(link);
+                    link.click();
+                    document.body.removeChild(link);
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: '导出失败'
+                    });
+                }
+            })
+
+        };
+
+        const conFirmDownLoad = () => {
+            downLoadRecord({ applyWorkId: state.downLoadId });
+            state.downLoadDialog = false;
+        };
+
+        const handleSizeChange1 = (val: number) => {
+            state.pageSize1 = val;
+            getListByPage();
+        };
+        const handleCurrentChange1 = (val: number) => {
+            state.pageIndex1 = val;
+            getListByPage();
+        };
+
+        // 查看记录
+        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;
+        };
+
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllDepartment()
+        });
+
+        return {
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            Finished,
+            Download,
+            reLoadData,
+            toApply,
+            handleClick,
+            toNames,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            viewStatus,
+            deleteRecordBtn,
+            downLoadBtn,
+            conFirmDownLoad,
+            getListByPage,
+            handleSizeChange1,
+            handleCurrentChange1,
+            ...toRefs(state)
+        };
+    }
+});
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 144px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .demo-tabs {
+        width: 100%;
+        height: 100%;
+
+        &::v-deep(.el-tabs__content) {
+            height: calc(100% - 60px);
+        }
+
+        .el-tab-pane {
+            height: 100%;
+        }
+    }
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
+
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .stepItem {
+        display: flex;
+        align-items: flex-start;
+        margin-top: 30px;
+        margin-left: 30px;
+        padding-bottom: 30px;
+        padding-left: 40px;
+        border-left: 1px solid #a0cfff;
+        position: relative;
+        &:first-of-type {
+            margin-top: 30px;
+        }
+        &:first-of-type {
+            margin-bottom: 0;
+            border-left: none;
+        }
+        .stepNum {
+            position: absolute;
+            width: 40px;
+            height: 40px;
+            border-radius: 20px;
+            box-sizing: border-box;
+            font-size: 18px;
+            color: #333;
+            border: 1px solid #a0cfff;
+            line-height: 38px;
+            text-align: center;
+            left: -20px;
+            top: -30px;
+            background: #d9ecff;
+        }
+        .stepCard {
+            width: 100%;
+            margin-top: -30px;
+
+            .box-card {
+                width: 100%;
+
+                .card-header {
+                    display: flex;
+                    justify-content: space-between;
+                    align-items: center;
+
+                    span {
+                        font-weight: bold;
+                        margin-left: 10px;
+                    }
+                }
+
+                .text {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 10px;
+                    padding-left: 10px;
+
+                    span {
+                        font-weight: bolder;
+                        color: #409eff;
+                    }
+
+                    &:last-of-type {
+                        margin-bottom: 0;
+                    }
+                }
+                .approveUnit {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    border: 1px solid #fff;
+                    background: #ecf8ff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                            &:last-of-type{
+                                text-align: center;
+                            }
+                        }
+                        & > div {
+                            flex: 1;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: center;
+                                span {
+                                    width: 45%;
+                                    &:first-of-type {
+                                        width: 30%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+                .approveItem {
+                    width: 100%;
+                    font-size: 14px;
+                    margin-bottom: 20px;
+                    padding: 10px 15px;
+                    background: #ecf8ff;
+                    border: 1px solid #fff;
+                    border-radius: 6px;
+                    .item-tit {
+                        width: 100%;
+                        display: flex;
+                        color: #409eff;
+                        align-items: flex-start;
+                        justify-content: space-between;
+                        padding-bottom: 10px;
+                        border-bottom: 1px solid #a0cfff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+                        }
+                    }
+                    .item-cont {
+                        width: 100%;
+                        display: flex;
+                        align-items: center;
+                        justify-content: space-between;
+                        padding: 10px 0;
+                        border-bottom: 1px solid #c6e2ff;
+
+                        & > span {
+                            flex: 1;
+                        }
+                        & > div {
+                            flex: 2;
+                            text-align: center;
+
+                            & > div {
+                                text-align: left;
+                                width: 100%;
+                                display: flex;
+                                justify-content: center;
+                                align-items: flex-start;
+                                margin-bottom: 10px;
+                                span {
+                                    width: 50%;
+                                    &:first-of-type {
+                                        width: 25%;
+                                    }
+                                }
+                            }
+                        }
+                        &:last-of-type {
+                            border-bottom: 0;
+                        }
+                    }
+                }
+            }
+        }
+        &:hover .card-header {
+            color: #0098f5;
+        }
+        &:hover .stepNum {
+            border: 2px solid #0098f5;
+            color: #0098f5;
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+
+        .topInfo {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
+
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.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;
+}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
new file mode 100644
index 0000000..8177e7c
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -0,0 +1,366 @@
+<template>
+	<div class="home-container">
+		<div style="height: 100%">
+		<el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef">
+			<div class="homeCard">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业申请单位" prop="workDetail.involvedDepIds">
+            <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :show-all-levels="false"/>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="动火级别" prop="workLevel">
+            <el-select v-model="form.workLevel">
+              <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.workContent"
+                :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.hotMethod">
+            <el-input
+                v-model="form.workDetail.hotMethod"
+                :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>
+              <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.involvedDepIds">
+            <el-cascader v-model="form.workDetail.involvedDepIds" :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-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>
+              <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="workDetail.otherSpecialWork">
+            <el-select v-model="form.workDetail.otherSpecialWork" multiple>
+              <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="operatorUids">
+            <el-select v-model="form.operatorUids" multiple>
+              <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>
+              <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="workTimeLine">
+            <el-date-picker
+                v-model="form.workTimeLine"
+                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-date-picker
+                v-model="form.workTimeLine"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+			</div>
+		</el-form>
+      <el-table :data="tableData" style="width: 100%">
+        <el-table-column type="index" label="序号"/>
+        <el-table-column prop="name" label="安全措施"/>
+        <el-table-column prop="address" label="确认人" />
+      </el-table>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button>
+		</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, 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
+	}
+	export default defineComponent({
+		name: 'fireForm',
+		components: {
+
+    },
+		props:['departList','workerList','deviceList'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				equipmentDialog: false,
+				form: {
+					operatorUids: [],
+					workType: 1,
+					workLevel: null,
+					workContent: '',
+					workLocation: '',
+          maBaseId: null,
+					hazardIdentification: '',
+          cameraIds: [],
+					workDetail:{
+						hotMethod: '',
+						otherSpecialWork: []
+					},
+          receiveUids: [],
+					workTimeLine: [],
+					expStartTime: '',
+					expEndTime: ''
+				},
+				workLevelList: [
+					{
+						label: "一级动火作业",
+						value: 1
+					},
+					{
+						label: "二级动火作业",
+						value: 2
+					},
+					{
+						label: "特级动火作业",
+						value: 3
+					}
+				],
+				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
+					}
+				]
+			});
+			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' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				"workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+			});
+
+			// 页面载入时执行方法
+			onMounted(() => {
+
+			});
+
+
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				Search,
+				ruleFormRef,
+				applyRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		position: relative;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding-top: 15px;
+			z-index: 5;
+			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
new file mode 100644
index 0000000..f4d8cee
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
@@ -0,0 +1,192 @@
+<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-tab-pane>
+			<el-tab-pane label="受限空间作业">
+<!--				<space-form ref="space" :workerList = allWorkers :departList = departmentList :deviceList = allDevices></space-form>-->
+			</el-tab-pane>
+			<el-tab-pane label="吊装作业">
+<!--				<hoist-form ref="hoist" :workerList = allWorkers :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>
+			<el-tab-pane label="断路作业">
+<!--				<broken-form ref="broken" :workerList = allWorkers :departList = departmentList :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>
+			<el-tab-pane label="临时用电作业">
+<!--				<power-form ref="power" :workerList = allWorkers :deviceList = allDevices></power-form>-->
+			</el-tab-pane>
+			<el-tab-pane label="盲板抽堵作业">
+<!--				<plate-form ref="plate" :workerList = allWorkers :deviceList = allDevices></plate-form>-->
+			</el-tab-pane>
+		</el-tabs>
+<!--    <material-dialog ref="material"></material-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 } from '@element-plus/icons-vue'
+	import { ElMessage } from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+	import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage";
+
+	interface stateType {
+		allWorkers: Array<any>
+		departmentList: 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')),
+		},
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+				allWorkers: [],
+				departmentList: [],
+        allDevices: []
+			});
+      const fire = ref()
+      const space = ref()
+      const hoist = ref()
+      const ground = ref()
+      const broken = ref()
+      const height = ref()
+      const power = ref()
+      const plate = ref()
+      const material = ref()
+			// 获取用户列表
+			const getAll = async ()=>{
+				const res = await workApplyApi().getAllUsers()
+				if (res.data.code === '200') {
+					state.allWorkers = JSON.parse(JSON.stringify(res.data.data))
+				} else {
+					ElMessage({
+						type: 'warning',
+						message: res.data.msg
+					});
+				}
+			};
+
+			// 获取部门列表
+			const getAllDepartment = async () => {
+				let res = await teamManageApi().getAllDepartment();
+				if (res.data.code === '200') {
+					state.departmentList = JSON.parse(JSON.stringify(res.data.data))
+				} else {
+					ElMessage({
+						type: 'warning',
+						message: res.data.msg
+					});
+				}
+			};
+
+      // 获取设备列表
+      const getAllDevice = async ()=>{
+        const res = await workApplyApi().getAllDevices()
+        if (res.data.code === '200') {
+          state.allDevices = JSON.parse(JSON.stringify(res.data.data))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      };
+
+      const switchTab = (name)=>{
+        console.log(name,'name')
+        fire.value.form.resetFields()
+        material.value.maBaseId = null
+        material.value.receiveUids = []
+      }
+
+
+			// 页面载入时执行方法
+			onMounted(() => {
+				getAll();
+				getAllDepartment();
+        getAllDevice()
+			});
+
+			return {
+				...toRefs(state),
+        fire,
+        space,
+        broken,
+        ground,
+        height,
+        hoist,
+        plate,
+        power,
+        material,
+        switchTab
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		position: relative;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			height: 80px;
+			z-index: 5;
+			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;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue
index be96b3c..e38b1c2 100644
--- a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue
+++ b/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue
@@ -63,16 +63,26 @@
                                   </template>
                                 </el-table-column>
                                 <el-table-column property="applyTime" label="申请时间" width="180" align="center"/>
-                                <el-table-column label="申请状态" align="center" width="180">
+                                <el-table-column label="申请状态" align="center" width="140">
                                     <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>
                                     </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">
                                     <template #default="scope">
                                         <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.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(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>
                                     </template>
                                 </el-table-column>
                             </el-table>
diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue
index 2e0d159..e978c9d 100644
--- a/src/views/system/user/component/userDialog.vue
+++ b/src/views/system/user/component/userDialog.vue
@@ -10,55 +10,55 @@
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="真实姓名" prop="realName">
-                            <el-input v-model.trim="userForm.realName" placeholder="请输入真实姓名" clearable></el-input>
+                            <el-input v-model.trim="userForm.realName" :disabled="allDisabled" placeholder="请输入真实姓名" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-                        <el-form-item label="关联角色" prop="roleId">
-                            <el-select v-model="userForm.roleId" placeholder="请选择" clearable class="w100">
+                        <el-form-item label="关联角色" prop="roleIds">
+                            <el-select v-model="userForm.roleIds" placeholder="请选择" clearable class="w100" multiple :disabled="allDisabled">
                                 <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option>
                             </el-select>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="部门" prop="depId">
-                            <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable class="w100" v-model="userForm.depId"> </el-cascader>
+                            <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable class="w100" v-model="userForm.depId" :disabled="allDisabled"> </el-cascader>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-                        <el-form-item label="职务" prop="positionId">
-                            <el-select v-model="userForm.positionId" placeholder="请选择" clearable class="w100">
+                        <el-form-item label="职务" prop="positionIds">
+                            <el-select v-model="userForm.positionIds" placeholder="请选择" clearable class="w100" multiple :disabled="allDisabled">
                                 <el-option v-for="item in dutyData" :key="item.positionId" :label="item.positionName" :value="item.positionId"> </el-option>
                             </el-select>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="手机号" prop="phone">
-                            <el-input v-model.trim="userForm.phone" placeholder="请输入手机号" clearable></el-input>
+                            <el-input v-model.trim="userForm.phone" placeholder="请输入手机号" clearable :disabled="allDisabled"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="身份证">
-                            <el-input v-model.trim="userForm.identify" placeholder="请输入身份证" clearable></el-input>
+                            <el-input v-model.trim="userForm.identify" placeholder="请输入身份证" clearable :disabled="allDisabled"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="邮箱">
-                            <el-input v-model.trim="userForm.email" placeholder="请输入" clearable></el-input>
+                            <el-input v-model.trim="userForm.email" placeholder="请输入" clearable :disabled="allDisabled"></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="性别" prop="gender">
-                            <el-select v-model="userForm.gender" placeholder="请选择" clearable class="w100">
+                            <el-select v-model="userForm.gender" placeholder="请选择" clearable class="w100" :disabled="allDisabled">
                                 <el-option v-for="item in sexList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
                             </el-select>
                         </el-form-item>
                     </el-col>
-                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-                        <el-form-item label="账户过期" prop="expireTime">
-                            <el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>
-                        </el-form-item>
-                    </el-col>
+<!--                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+<!--                        <el-form-item label="账户过期" prop="expireTime">-->
+<!--                            <el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>-->
+<!--                        </el-form-item>-->
+<!--                    </el-col>-->
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="!disabled">
                         <el-form-item label="账户密码" prop="password">
                             <el-input v-model.trim="userForm.password" placeholder="请输入" type="password" show-password>
@@ -67,7 +67,7 @@
                     </el-col>
                   <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                     <el-form-item label="用户类型" prop="type">
-                      <el-select v-model="userForm.type" placeholder="请选择" clearable class="w100">
+                      <el-select v-model="userForm.type" placeholder="请选择" clearable class="w100" :disabled="allDisabled">
                         <el-option v-for="item in userTypeList.filter(item => userForm.type === 1 ? item.id === 1 : item.id !== 1)" :key="item.id" :label="item.name" :value="item.id"> </el-option>
                       </el-select>
                     </el-form-item>
@@ -82,7 +82,7 @@
             <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button>
-                    <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button>
+                    <el-button type="primary" v-throttle @click="onSubmit" size="default" v-if="!allDisabled">确 定</el-button>
                 </span>
             </template>
         </el-dialog>
@@ -103,19 +103,19 @@
 interface UserState {
     title: string;
     disabled: boolean;
+    allDisabled: boolean;
     isShowUserDialog: boolean;
     userForm: {
         username: string;
         realName: string;
-        roleId: number | null;
+        roleIds: Array<number>
         depId: number | null;
-        positionId: number | null;
+        positionIds: Array<number>
         phone: string;
         email: string;
         gender: number | null;
         type: number | null;
         password: string;
-        expireTime: string;
         status: number;
         identify: string;
     };
@@ -136,32 +136,31 @@
         const state = reactive<UserState>({
             title: '',
             disabled: false,
+            allDisabled: false,
             isShowUserDialog: false,
             userForm: {
                 username: '', // 账户名称
                 realName: '', // 用户昵称
-                roleId: null, // 关联角色
+                roleIds: [], // 关联角色
                 depId: null, // 部门
                 phone: '', // 手机号
                 email: '', // 邮箱
                 identify: '',
                 gender: null, // 性别
                 password: '', // 账户密码
-                positionId: null, // 岗位
+                positionIds: [], // 岗位
                 type: null, // 用户类型
-                expireTime: '', // 账户过期
                 status: 1 // 用户状态
             },
             userFormRules:{
                 username: [{ required: true, message: '请填写用户名', trigger: 'blur' }],
                 realName: [{ required: true, message: '请填写真实姓名', trigger: 'blur' }],
-                roleId: [{ required: true, message: '请选择用户角色', trigger: 'change' }],
+                roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }],
                 depId: [{ required: true, message: '请选择部门', trigger: 'change' }],
-                positionId: [{ required: true, message: '请选择职务', trigger: 'change' }],
+                positionIds: [{ required: true, message: '请选择职务', trigger: 'change' }],
                 phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }],
                 type: [{ required: true, message: '请填写用户类型', trigger: 'blur' }],
                 gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
-                expireTime: [{ required: true, message: '请输入账户过期时间', trigger: 'blur' }],
                 password: [{ required: true, message: '请输入账户密码', trigger: 'blur' }],
             },
             departmentData: [], // 部门数据
@@ -185,26 +184,38 @@
             state.dutyData = dutyList
             if (type === '新增') {
                 state.disabled = false
+                state.allDisabled = false
                 state.title = '新增用户';
                 state.userForm = {
                     username: '',
                     realName: '',
-                    roleId: null,
+                    roleIds: [],
                     depId: null,
                     phone: '',
                     email: '',
                     identify: '',
-                    positionId: null,
+                    positionIds: [],
                     gender: null,
                     type: null,
                     password: '',
-                    expireTime: '',
                     status: 1
                 };
-            } else {
+            } else{
+              if(type === '修改'){
                 state.disabled = true
+                state.allDisabled = false
                 state.title = '修改用户';
                 state.userForm = JSON.parse(JSON.stringify(value));
+                state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles?.map(obj=>obj.roleId)
+                state.userForm.positionIds = JSON.parse(JSON.stringify(value)).positions?.map(obj=>obj.positionId)
+              }else{
+                state.disabled = true
+                state.allDisabled = true
+                state.title = '查看';
+                state.userForm = JSON.parse(JSON.stringify(value));
+                state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles?.map(obj=>obj.roleId)
+                state.userForm.positionIds = JSON.parse(JSON.stringify(value)).positions?.map(obj=>obj.positionId)
+              }
             }
         };
 
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index b652fea..9af926e 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -38,7 +38,7 @@
                 </el-table-column>
                 <el-table-column prop="positionId" label="职务" show-overflow-tooltip>
                     <template #default="scope">
-                        {{ parseNumber(scope.row.positionId) }}
+                        {{ scope.row.positions?.map(i=>i.positionName).join('、') }}
                     </template>
                 </el-table-column>
 <!--                <el-table-column prop="type" label="职务" show-overflow-tooltip>-->
@@ -46,7 +46,7 @@
 <!--                        {{ `${userTypeList.find(item => item.id === scope.row.type)?.name}` }}-->
 <!--                    </template>-->
 <!--                </el-table-column>-->
-                <el-table-column prop="department.depName" label="部门" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="depName" label="部门" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="email" label="邮箱" show-overflow-tooltip></el-table-column>
                 <el-table-column prop="status" label="用户状态" show-overflow-tooltip>
@@ -56,8 +56,9 @@
                     </template>
                 </el-table-column>
                 <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
-                <el-table-column label="操作" width="100">
+                <el-table-column label="操作" width="140">
                     <template #default="scope">
+                        <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('查看', scope.row)">查看</el-button>
                         <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('修改', scope.row)">修改</el-button>
                         <el-button style="color: red" :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">删除</el-button>
                     </template>

--
Gitblit v1.9.2