From 3b75798cc41993f9016610296907d2338545a345 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 16 八月 2024 15:43:01 +0800
Subject: [PATCH] Default Changelist

---
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue    |   41 
 package-lock.json                                                             |  150 ++
 src/views/newSpecialWorkSystem/workTicket/zysq/index.vue                      |    8 
 src/views/system/saftyManage/component/saftyDialog.vue                        |    4 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue       |   42 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue            |   40 
 src/views/newHome/index.vue                                                   |   26 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue      |   46 
 src/views/specialWorkSystem/specialIndex/index.vue                            |  196 +-
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue    |   41 
 src/router/route.ts                                                           |   17 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue     |   45 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue           |   62 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue      | 1078 +++++++++++++++++++
 src/api/specialWorkSystem/workApply/index.ts                                  |   14 
 src/views/loginPage/component/accountLogin.vue                                |    1 
 src/router/index.ts                                                           |    6 
 src/views/system/saftyManage/index.vue                                        |    4 
 src/layout/navBars/breadcrumb/user.vue                                        |    3 
 src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue                      |   20 
 src/views/specialWorkSystem/flow/ruleofApp/index.vue                          |    3 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue |   18 
 src/utils/request.ts                                                          |    2 
 src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue                      |    2 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue          |   36 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue          |   52 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue            |  995 +++++++++++++++++
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue    |   57 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue     |   46 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue     |   45 
 .env.development                                                              |    4 
 src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue     |   56 
 src/views/system/user/index.vue                                               |    2 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue           |   40 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue           |   40 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue           |   40 
 src/views/specialWorkSystem/specialIndex/components/workRecord.vue            |    4 
 src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue          |   36 
 38 files changed, 2,824 insertions(+), 498 deletions(-)

diff --git a/.env.development b/.env.development
index 0f074d0..f852ed7 100644
--- a/.env.development
+++ b/.env.development
@@ -4,7 +4,7 @@
 #VITE_API_URL = 'http://192.168.0.35:8008'
 #李宇飞接口地址
 
-VITE_API_URL = 'http://192.168.0.70:8008'
+VITE_API_URL = 'http://192.168.2.11:8008'
 #张凤接口地址
 
 #VITE_API_URL = 'http://192.168.0.47:8008'
@@ -13,7 +13,7 @@
 #VITE_API_URL = 'http://192.168.0.179:8008'
 #施正红接口地址
 
-#VITE_API_URL = 'http://192.168.0.69:8008'
+#VITE_API_URL = 'http://192.168.0.30:8008'
 #戚会山接口地址
 
 #VITE_API_URL = 'http://121.239.169.27:16016/safeplatform'
diff --git a/package-lock.json b/package-lock.json
index 1e0dc6f..5a90871 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,10 +33,12 @@
 				"sortablejs": "^1.15.0",
 				"splitpanes": "^3.1.1",
 				"vue": "^3.2.36",
+				"vue-baidu-map-3x": "^1.0.35",
 				"vue-clipboard3": "^2.0.0",
 				"vue-grid-layout": "^3.0.0-beta1",
 				"vue-i18n": "^9.1.10",
 				"vue-router": "^4.0.15",
+				"vuedraggable": "^4.1.0",
 				"wangeditor": "^4.7.15",
 				"xlsx": "^0.18.5"
 			},
@@ -47,7 +49,7 @@
 				"@types/sortablejs": "^1.13.0",
 				"@typescript-eslint/eslint-plugin": "^5.27.0",
 				"@typescript-eslint/parser": "^5.27.0",
-				"@vitejs/plugin-vue": "^2.3.3",
+				"@vitejs/plugin-vue": "^2.3.4",
 				"@vue/compiler-sfc": "^3.2.36",
 				"dotenv": "^16.0.1",
 				"eslint": "^8.17.0",
@@ -880,9 +882,9 @@
 			}
 		},
 		"node_modules/@vitejs/plugin-vue": {
-			"version": "2.3.3",
-			"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
-			"integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+			"version": "2.3.4",
+			"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
+			"integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
 			"dev": true,
 			"engines": {
 				"node": ">=12.0.0"
@@ -1578,6 +1580,39 @@
 			"engines": {
 				"node": ">=8"
 			}
+		},
+		"node_modules/bmaplib.curveline": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmmirror.com/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz",
+			"integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q=="
+		},
+		"node_modules/bmaplib.distancetool": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmmirror.com/bmaplib.distancetool/-/bmaplib.distancetool-1.0.2.tgz",
+			"integrity": "sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA=="
+		},
+		"node_modules/bmaplib.heatmap": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmmirror.com/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz",
+			"integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q=="
+		},
+		"node_modules/bmaplib.lushu": {
+			"version": "1.0.7",
+			"resolved": "https://registry.npmmirror.com/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz",
+			"integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w=="
+		},
+		"node_modules/bmaplib.markerclusterer": {
+			"version": "1.0.13",
+			"resolved": "https://registry.npmmirror.com/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz",
+			"integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==",
+			"dependencies": {
+				"bmaplib.texticonoverlay": "^1.0.2"
+			}
+		},
+		"node_modules/bmaplib.texticonoverlay": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmmirror.com/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz",
+			"integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg=="
 		},
 		"node_modules/boolbase": {
 			"version": "1.0.0",
@@ -4490,6 +4525,24 @@
 				"@vue/shared": "3.2.36"
 			}
 		},
+		"node_modules/vue-baidu-map-3x": {
+			"version": "1.0.35",
+			"resolved": "https://registry.npmmirror.com/vue-baidu-map-3x/-/vue-baidu-map-3x-1.0.35.tgz",
+			"integrity": "sha512-1FDzxgd+X7MVcG8JbyyxDOSYRDUi96qEuuNICQmwlAE/EDwf4vz1oYRhRz05s/MuDpW7aIBlubF/PlSTpBlUEw==",
+			"dependencies": {
+				"bmaplib.curveline": "^1.0.0",
+				"bmaplib.distancetool": "^1.0.2",
+				"bmaplib.heatmap": "^1.0.4",
+				"bmaplib.lushu": "^1.0.7",
+				"bmaplib.markerclusterer": "^1.0.13",
+				"tiny-emitter": "^2.1.0",
+				"vue": "^3.2.25",
+				"vue-router": "^4.0.14"
+			},
+			"peerDependencies": {
+				"vue": "^3.2.25"
+			}
+		},
 		"node_modules/vue-clipboard3": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz",
@@ -4593,6 +4646,22 @@
 			"peerDependencies": {
 				"vue": "^3.2.0"
 			}
+		},
+		"node_modules/vuedraggable": {
+			"version": "4.1.0",
+			"resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz",
+			"integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
+			"dependencies": {
+				"sortablejs": "1.14.0"
+			},
+			"peerDependencies": {
+				"vue": "^3.0.1"
+			}
+		},
+		"node_modules/vuedraggable/node_modules/sortablejs": {
+			"version": "1.14.0",
+			"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz",
+			"integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
 		},
 		"node_modules/wangeditor": {
 			"version": "4.7.15",
@@ -4748,7 +4817,7 @@
 		},
 		"node_modules/xlsx": {
 			"version": "0.18.5",
-			"resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
+			"resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
 			"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
 			"dependencies": {
 				"adler-32": "~1.3.0",
@@ -5402,9 +5471,9 @@
 			}
 		},
 		"@vitejs/plugin-vue": {
-			"version": "2.3.3",
-			"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz",
-			"integrity": "sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==",
+			"version": "2.3.4",
+			"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz",
+			"integrity": "sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==",
 			"dev": true,
 			"requires": {}
 		},
@@ -5939,6 +6008,39 @@
 			"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
 			"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
 			"dev": true
+		},
+		"bmaplib.curveline": {
+			"version": "1.0.0",
+			"resolved": "https://registry.npmmirror.com/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz",
+			"integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q=="
+		},
+		"bmaplib.distancetool": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmmirror.com/bmaplib.distancetool/-/bmaplib.distancetool-1.0.2.tgz",
+			"integrity": "sha512-EvxMnQRH6xM036zx5OLPyTg5tMCTbFBuGTTHOtExLy2/T0X6v5Va0YE7c3IPm/a/Eo5V/ynYpOLOLZbRY8ccyA=="
+		},
+		"bmaplib.heatmap": {
+			"version": "1.0.4",
+			"resolved": "https://registry.npmmirror.com/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz",
+			"integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q=="
+		},
+		"bmaplib.lushu": {
+			"version": "1.0.7",
+			"resolved": "https://registry.npmmirror.com/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz",
+			"integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w=="
+		},
+		"bmaplib.markerclusterer": {
+			"version": "1.0.13",
+			"resolved": "https://registry.npmmirror.com/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz",
+			"integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==",
+			"requires": {
+				"bmaplib.texticonoverlay": "^1.0.2"
+			}
+		},
+		"bmaplib.texticonoverlay": {
+			"version": "1.0.2",
+			"resolved": "https://registry.npmmirror.com/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz",
+			"integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg=="
 		},
 		"boolbase": {
 			"version": "1.0.0",
@@ -7973,6 +8075,21 @@
 				"@vue/shared": "3.2.36"
 			}
 		},
+		"vue-baidu-map-3x": {
+			"version": "1.0.35",
+			"resolved": "https://registry.npmmirror.com/vue-baidu-map-3x/-/vue-baidu-map-3x-1.0.35.tgz",
+			"integrity": "sha512-1FDzxgd+X7MVcG8JbyyxDOSYRDUi96qEuuNICQmwlAE/EDwf4vz1oYRhRz05s/MuDpW7aIBlubF/PlSTpBlUEw==",
+			"requires": {
+				"bmaplib.curveline": "^1.0.0",
+				"bmaplib.distancetool": "^1.0.2",
+				"bmaplib.heatmap": "^1.0.4",
+				"bmaplib.lushu": "^1.0.7",
+				"bmaplib.markerclusterer": "^1.0.13",
+				"tiny-emitter": "^2.1.0",
+				"vue": "^3.2.25",
+				"vue-router": "^4.0.14"
+			}
+		},
 		"vue-clipboard3": {
 			"version": "2.0.0",
 			"resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz",
@@ -8052,6 +8169,21 @@
 			"integrity": "sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==",
 			"requires": {
 				"@vue/devtools-api": "^6.0.0"
+			}
+		},
+		"vuedraggable": {
+			"version": "4.1.0",
+			"resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz",
+			"integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
+			"requires": {
+				"sortablejs": "1.14.0"
+			},
+			"dependencies": {
+				"sortablejs": {
+					"version": "1.14.0",
+					"resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz",
+					"integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
+				}
 			}
 		},
 		"wangeditor": {
@@ -8172,7 +8304,7 @@
 		},
 		"xlsx": {
 			"version": "0.18.5",
-			"resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
+			"resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
 			"integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
 			"requires": {
 				"adler-32": "~1.3.0",
diff --git a/src/api/specialWorkSystem/workApply/index.ts b/src/api/specialWorkSystem/workApply/index.ts
index 83b5d0d..c00e5e5 100644
--- a/src/api/specialWorkSystem/workApply/index.ts
+++ b/src/api/specialWorkSystem/workApply/index.ts
@@ -186,6 +186,20 @@
                 data: data
             });
         },
+        submitOpenApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/apply/openJob`,
+                method: 'post',
+                data: data
+            });
+        },
+        modOpenApply: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/specialwork9step/work/mod/openJob`,
+                method: 'post',
+                data: data
+            });
+        },
         
         // 所有记录列表
         getApplyList: (data: object) => {
diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue
index 70ef2c0..1f01e1c 100644
--- a/src/layout/navBars/breadcrumb/user.vue
+++ b/src/layout/navBars/breadcrumb/user.vue
@@ -346,8 +346,7 @@
             if (!Cookies.get('token')) return false;
             const res = await menuApi.getMenuAdmin(Cookies.get('projectId') === null ? '' : Cookies.get('projectId'));
             if (res.data.code === '200') {
-                state.systemName = res.data.data[1].project.projectName;
-                console.log(state.systemName);
+                state.systemName = res.data.data[0].project.projectName;
             } else {
                 console.log('有问题');
             }
diff --git a/src/router/index.ts b/src/router/index.ts
index 322d85c..c562cd5 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -78,13 +78,15 @@
             Session.clear();
             NProgress.done();
         } else if (token && to.path === '/login') {
-            next('/home');
+            next('/newMenu');
+            NProgress.done();
+        } else if (token && to.path === '/newMenu') {
+            next();
             NProgress.done();
         } else {
             const storesRoutesList = useRoutesList(pinia);
             const { routesList } = storeToRefs(storesRoutesList);
             if (routesList.value.length === 0) {
-
                 // 后端控制路由:路由数据初始化,防止刷新时丢失
                 await initBackEndControlRoutes();
                 // 动态添加路由:防止非首页刷新时跳转回首页的问题
diff --git a/src/router/route.ts b/src/router/route.ts
index 27f6937..aa2cd7f 100644
--- a/src/router/route.ts
+++ b/src/router/route.ts
@@ -5,14 +5,14 @@
         path: '/',
         name: '/',
         component: () => import('/@/layout/index.vue'),
-        redirect: '/home',
+        redirect: '/newMenu',
         meta: {
             isKeepAlive: false
         },
         children: [
             {
-                path: '/home',
-                name: 'home',
+                path: '/newMenu',
+                name: 'newMenu',
                 component: () => import('/@/views/newHome/index.vue'),
                 meta: {
                     title: '首页',
@@ -85,7 +85,16 @@
         name: 'warningScreen',
         component: () => import('/@/views/riskWarningSys/warningBigScreen/index.vue'),
         meta: {
-            title: '预警预报'
+            title: '预警预报',
+        }
+    },
+    {
+        path: '/screenPage',
+        name: 'screenPage',
+        component: () => import('/@/views/riskWarningSys/warningBigScreen/indexs/index.vue'),
+        meta: {
+            title: '预警详情',
+            isKeepAlive: false
         }
     },
     {
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 9647e83..486f416 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -9,7 +9,7 @@
 // 配置新建一个 axios 实例
 const service = axios.create({
     // baseURL: import.meta.env.VITE_API_URL as any,
-    timeout: 500000,
+    timeout: 10000,
     headers: { 'Content-Type': 'application/json' }
 });
 
diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index d67fed6..5a1e9ca 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -244,6 +244,7 @@
         // 登录成功后的跳转
         const signInSuccess = async () => {
             // 初始化登录成功时间问候语
+            console.log('登录>>>')
             let currentTimeInfo = currentTime.value;
             // 登录成功,跳到转首页
             // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
index e2d09ca..96e8cd6 100644
--- a/src/views/newHome/index.vue
+++ b/src/views/newHome/index.vue
@@ -164,16 +164,16 @@
                     </div>
                     <img class="bgImg" src="../../assets/newMenu/card-6.png" />
                 </div>
-                <div class="grid-content cont-bg-2" v-throttle @click="toSmartFactory">
-                  <div class="toplayer">
-                    <img class="iconImg" src="../../assets/newMenu/icon13.png" />
-                    <div>
-                      <div class="itemTit">智能工厂系统</div>
-                      <div class="enTit">Intelligent Factory System</div>
-                    </div>
-                  </div>
-                  <img class="bgImg" src="../../assets/newMenu/card-13.png" />
-                </div>
+<!--                <div class="grid-content cont-bg-2" v-throttle @click="toSmartFactory">-->
+<!--                  <div class="toplayer">-->
+<!--                    <img class="iconImg" src="../../assets/newMenu/icon13.png" />-->
+<!--                    <div>-->
+<!--                      <div class="itemTit">智能工厂系统</div>-->
+<!--                      <div class="enTit">Intelligent Factory System</div>-->
+<!--                    </div>-->
+<!--                  </div>-->
+<!--                  <img class="bgImg" src="../../assets/newMenu/card-13.png" />-->
+<!--                </div>-->
                 <div class="grid-content cont-bg-2" @click="render('1')">
                     <div class="toplayer">
                         <img class="iconImg" src="../../assets/newMenu/icon11.png" />
@@ -413,8 +413,8 @@
             userInfos.value.projectId = state.projectId;
             await initBackEndControlRoutes().then(() => {
                 let linkToMenu = [...routesList.value];
-                if (linkToMenu && linkToMenu.length > 1) {
-                    router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[1]));
+                if (linkToMenu && linkToMenu.length > 0) {
+                    router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[0]));
                 } else {
                     ElMessage({ type: 'warning', message: '你没有该子系统的权限' });
                 }
@@ -432,7 +432,7 @@
 
         const renderToNew = () => {
             // window.open('http://222.92.213.22:18001/smartlab/', '_blank');
-          window.open('http://106.15.95.149:8005/nanoweb/foreground/', '_blank');
+          window.open('http://47.108.222.15:8000/', '_blank');
         };
         // //点击进入特殊作业
         // const toSpecialWorkSys = () => {
diff --git a/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
index f8fdcc8..10d99b1 100644
--- a/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/sqjl/index.vue
@@ -741,7 +741,7 @@
             }
         }
         &:last-of-type {
-            height: calc(100% - 100px);
+            height: calc(100% - 130px);
         }
     }
     .stepItem {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue
index 3d640aa..616cc6b 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue
@@ -291,8 +291,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -330,19 +330,18 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
 			</div>
 		</el-form>
@@ -419,7 +418,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -476,7 +475,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -527,9 +526,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         state.form.workDetail.involvedDepIds = row.workDetail.involvedDepIds.split(',').map(i=>Number(i))
         state.fileList = row.workDetail.bcPath.split(',').map(item => {
           return {
@@ -567,7 +566,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -706,7 +705,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modBrokenApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue
index a8915c1..ce336ee 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/detailLog.vue
@@ -37,7 +37,7 @@
         <div class="d-row">
           <div class="d-tit">作业范围、内容、方式</div><div class="d-cont">{{details.workDetail.gbDesc}}</div>
         </div>
-        <div class="d-row">
+        <div class="d-row" v-if="details.workDetail.gbPath !== ''">
           <div class="d-tit">示意图</div>
           <div class="d-cont">
             <el-image v-for="item in details.workDetail.gbPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
@@ -54,7 +54,7 @@
         <div class="d-row">
           <div class="d-tit">断路地段相关说明</div><div class="d-cont">{{details.workDetail.bcExplain}}</div>
         </div>
-        <div class="d-row">
+        <div class="d-row" v-if="details.workDetail.bcPath !== ''">
           <div class="d-tit">断路地段示意图</div>
           <div class="d-cont">
             <el-image v-for="(item,index) in details.workDetail.bcPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover"/>
@@ -103,12 +103,46 @@
           <div class="d-tit">盲板编号</div><div class="d-cont">{{details.workDetail.bpCode}}</div>
         </div>
         <div class="d-row">
-          <div class="d-tit">盲板位置相关描述</div><div class="d-cont">{{details.workDetail.bpLocationDesc}}</div>
+          <div class="d-tit">编制人</div><div class="d-cont">{{details.workDetail.preparedByName}}</div>
         </div>
         <div class="d-row">
+          <div class="d-tit">编制时间</div><div class="d-cont">{{details.workDetail.preparedTime}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">盲板位置相关描述</div><div class="d-cont">{{details.workDetail.bpLocationDesc}}</div>
+        </div>
+        <div class="d-row" v-if="details.workDetail.bpLocationMapPath !== ''">
           <div class="d-tit">盲板位置示意图</div>
           <div class="d-cont">
             <el-image v-for="item in details.workDetail.bpLocationMapPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
+          </div>
+        </div>
+      </div>
+      <div v-if="type == 9">
+        <div class="d-row">
+          <div class="d-tit">设备管线信息</div>
+          <div class="d-cont">
+            <el-table :data="details.workDetail.qpDetails" style="width: 90%" border>
+              <el-table-column prop="qpName" label="设备管线名称"/>
+              <el-table-column prop="originalHazardousMedia" label="原有危险介质"/>
+              <el-table-column prop="originalTemperature" label="原有温度(℃)"/>
+              <el-table-column prop="originalPressure" label="原有压力(kPa)"/>
+            </el-table>
+          </div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">编制人</div><div class="d-cont">{{details.workDetail.preparedBy}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">编制时间</div><div class="d-cont">{{details.workDetail.preparedTime}}</div>
+        </div>
+        <div class="d-row">
+          <div class="d-tit">安全工作方案</div><div class="d-cont">{{details.workDetail.workProgramme == 1?'有':'无'}}</div>
+        </div>
+        <div class="d-row" v-if="details.workDetail.sketchMapPath !== ''">
+          <div class="d-tit">示意图</div>
+          <div class="d-cont">
+            <el-image v-for="item in details.workDetail.sketchMapPath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
           </div>
         </div>
       </div>
@@ -152,7 +186,7 @@
         <div class="d-tit">安全措施确认人</div><div class="d-cont">{{details.safetyMeasureList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
       </div>
       <div class="d-row">
-        <div class="d-tit">完工验收人</div><div class="d-cont">{{details.acceptUser.userName + '(' + details.acceptUser.phone+ ')'}}</div>
+        <div class="d-tit">完工验收人</div><div class="d-cont">{{details.acceptUserList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
       </div>
       <div class="d-row">
         <div class="d-tit">现场开始结束确认人</div><div class="d-cont">{{details.startOrEndList.map(i=>{return i.userName + '(' + i.phone+ ')'}).join('、')}}</div>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue
index d984ea7..3d1d4bd 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/fireDialog.vue
@@ -301,8 +301,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -327,21 +327,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -408,7 +407,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -510,7 +509,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         "workDetail.methodList": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -557,10 +556,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        console.log(state.form.approvalDepBasicList,777)
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         state.form.workDetail.methodList = state.form.workDetail.workMethod.split(',')
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
@@ -597,7 +595,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -739,7 +737,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2EObj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2EObj(data.lastApprover)
             const res = await workApplyApi().modFireApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue
index 6d8e8a3..bb0cce6 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue
@@ -274,8 +274,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -313,19 +313,18 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
 			</div>
 		</el-form>
@@ -402,7 +401,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -448,7 +447,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -498,9 +497,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         state.fileList = row.workDetail.gbPath.split(',').map(item => {
           return {
             url:  item,
@@ -536,7 +535,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -683,7 +682,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modGroundApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue
index d587381..e99ba6e 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue
@@ -189,8 +189,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids">
-              <el-select v-model="form.safetyMeasureUids" multiple clearable>
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple filterable clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -216,9 +216,9 @@
                 </el-form-item>
               </template>
             </el-table-column>
-            <el-table-column prop="approvalUids" filterable label="审批人" align="center">
+            <el-table-column prop="approvalUids" label="审批人" align="center">
               <template #default="scope">
-                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                <el-select v-model="scope.row.approvalUids" multiple filterable :disabled="isFirstRow(scope.$index)" clearable>
                   <el-option
                       v-for="item in lists.workerList"
                       :key="item.uid"
@@ -232,8 +232,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" clearable filterable multiple>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -245,8 +245,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids">
-              <el-select v-model="form.startOrEndUids" multiple clearable>
+            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" multiple clearable filterable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -258,21 +258,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -337,7 +336,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -394,7 +393,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
@@ -441,9 +440,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
         }else{
@@ -472,7 +471,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -605,7 +604,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modHeightApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue
index d98c55a..6ec322f 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/hoistDialog.vue
@@ -297,8 +297,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -323,21 +323,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -403,7 +402,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -459,7 +458,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -509,9 +508,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
         }else{
@@ -541,7 +540,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -688,7 +687,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modHoistApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
index ecea5c2..8ead0fe 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/jsaReportDialog.vue
@@ -14,6 +14,14 @@
                       </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                      <el-form-item label="报告编号">
+                        <el-input
+                            v-model="jsaForm.judgeJsaCode"
+                            placeholder="请输入报告编号"
+                        />
+                      </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                       <el-form-item label="风险研判报告记录附件">
                         <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
                           <el-icon><Plus /></el-icon>
@@ -36,10 +44,14 @@
               <div class="d-tit">jsa风险研判结论</div><div class="d-cont">{{detail.judgeRecord}}</div>
             </div>
             <div class="d-row">
+              <div class="d-tit">报告编号</div><div class="d-cont">{{detail.judgeJsaCode}}</div>
+            </div>
+            <div class="d-row">
               <div class="d-tit">风险研判报告记录附件</div>
-              <div class="d-cont">
+              <div class="d-cont" v-if="detail.judgePicturePath">
                 <el-image v-for="item in detail.judgePicturePath?.split(',')" :preview-src-list="[item]" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" />
               </div>
+              <div class="d-cont" v-else>暂无附件</div>
             </div>
             <div class="d-row">
               <div class="d-tit">研判人</div><div class="d-cont">{{detail.judgeUname}}</div>
@@ -67,6 +79,7 @@
     jsaForm: {
         workApplyId: number | null;
         judgeRecord: string
+        judgeJsaCode: string
         judgePicturePath: Array<string>
     };
     jsaFormRules: {};
@@ -93,6 +106,7 @@
             jsaForm: {
               workApplyId: null,
               judgeRecord: '',
+              judgeJsaCode: '',
               judgePicturePath: []
             },
             jsaFormRules: {
@@ -111,10 +125,10 @@
             if (type === '上传') {
                 state.disabled = true;
                 state.title = '上传风险研判报告';
-                console.log(value.id,'id')
                 state.jsaForm = {
                   workApplyId: value.id,
                   judgeRecord: '',
+                  judgeJsaCode: '',
                   judgePicturePath: []
                 };
             } else {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue
new file mode 100644
index 0000000..fb45479
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue
@@ -0,0 +1,1078 @@
+<template>
+	<div class="home-container">
+    <el-dialog v-model="showDialog" title="修改申报" @close="clearFile" width="80%" :close-on-click-modal="false">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<div class="homeCard">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业申请单位" prop="applyDepId">
+            <el-cascader style="width: 100%" v-model="form.applyDepId" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="workContent">
+            <el-input
+                v-model="form.workContent"
+                :autosize="{ minRows: 1 }"
+                type="textarea"
+                placeholder="请输入作业内容"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="作业负责人" prop="headUids">
+            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in lists.workerList"
+                  :key="item.uid"
+                  :label="item.username"
+                  :value="item.uid"
+              />
+            </el-select>
+            <!--            <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+      </el-row>
+			<el-row>
+        <el-col :span="12">
+          <el-form-item label="作业单位" prop="workDepIds">
+            <el-cascader style="width: 100%" v-model="form.workDepIds" :props="depProps" @change="getWorkerList" :options="lists.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 clearable>
+              <el-option
+                  v-for="item in zyList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+            <!--            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+			</el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业地点" prop="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" class="valueSelect">
+            <el-form-item label="关联其他特殊作业">
+<!--              <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in otherWorkList"-->
+<!--                    :key="item.value"-->
+<!--                    :label="item.label"-->
+<!--                    :value="item.label"-->
+<!--                />-->
+<!--              </el-select>-->
+              <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+                <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.jhList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="绑定执法仪" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="设备管线信息" prop="workDetail.qpDetailList">
+              <el-table :data="form.workDetail.qpDetailList" style="width: 90%" border>
+                <el-table-column prop="qpName" label="设备管线名称"/>
+                <el-table-column prop="originalHazardousMedia" label="原有危险介质"/>
+                <el-table-column prop="originalTemperature" label="原有温度(℃)"/>
+                <el-table-column prop="originalPressure" label="原有压力(kPa)"/>
+                <el-table-column label="操作" width="100">
+                  <template #default="scope">
+                    <el-button size="small" text type="danger" @click="delInfo(scope.$index)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+              <el-button type="primary" style="width: 8%;margin-left: 2%" @click="addQPList">新增</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="编制人姓名" prop="workDetail.preparedBy">
+              <el-input
+                  v-model="form.workDetail.preparedBy"
+                  placeholder="请输入编制人姓名"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="编制时间" prop="workDetail.preparedTime">
+              <el-date-picker
+                  v-model="form.workDetail.preparedTime"
+                  format="YYYY-MM-DD HH:mm"
+                  value-format="YYYY-MM-DD HH:mm:00"
+                  type="datetime"
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="有无示意图" prop="workDetail.sketchMapStatus">
+              <el-radio-group v-model="form.workDetail.sketchMapStatus">
+                <el-radio :label="1">有</el-radio>
+                <el-radio :label="2">无</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="form.workDetail.sketchMapStatus == 1">
+            <el-form-item label="示意图" prop="workDetail.sketchMapPath">
+              <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-form-item label="安全工作方案" prop="workDetail.workProgramme">
+            <el-radio-group v-model="form.workDetail.workProgramme">
+              <el-radio :label="1">有</el-radio>
+              <el-radio :label="2">无</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                  v-for="item in lists.riskList"
+                  :key="item.id"
+                  :label="item.content"
+                  :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施"/>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <el-dialog v-model="qpVisible" @open="startAdd">
+      <el-form :model="qpForm" label-width="170px" ref="qpFormRef" :rules="qpFormRules">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="设备管线名称" prop="qpName">
+              <el-input
+                  v-model="qpForm.qpName"
+                  placeholder="请输入设备管线名称"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有危险介质" prop="originalHazardousMedia">
+              <el-input
+                  v-model="qpForm.originalHazardousMedia"
+                  placeholder="请输入原有危险介质"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有温度(℃)" prop="originalTemperature">
+              <el-input
+                  v-model="qpForm.originalTemperature"
+                  type="number"
+                  placeholder="请输入原有温度"
+              ><template #append>℃</template></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有压力(kPa)" prop="originalPressure">
+              <el-input
+                  v-model="qpForm.originalPressure"
+                  type="number"
+                  placeholder="请输入原有压力"
+              ><template #append>kPa</template></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+      <span class="dialog-footer">
+        <el-button type="primary" @click="confirmAdd(qpFormRef)">新增</el-button>
+      </span>
+      </template>
+    </el-dialog>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    <el-dialog v-model="dialogVisible">
+      <img w-full :src="dialogImageUrl" alt="Preview Image" />
+    </el-dialog>
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+  import {ElMessage, ElMessageBox, UploadProps, UploadUserFile} from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import axios from "axios";
+  import {userApi} from "/@/api/systemManage/user";
+  import {verifyPwd} from "/@/utils/toolsValidate";
+	interface stateType {
+    showDialog: boolean
+		form: Object,
+    qpForm: Object,
+		equipmentDialog: boolean,
+    qpVisible: boolean
+    zyList: []
+    props1:{},
+    depProps:{},
+    casProps:{}
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number
+    tabLoading: boolean
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'openForm',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        showDialog: false,
+        tabLoading: false,
+				equipmentDialog: false,
+        qpVisible: false,
+        safetyMeasureBasicList: [],
+        zyList: [],
+				form: {
+          id: null,
+          workType: 9,
+          workLevel: 0,
+          depIdList: [],
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepIds: [],
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUids: [],
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            qpDetailList: [],
+            preparedBy: '',
+            preparedTime: '',
+            sketchMapStatus: null,
+            sketchMapPath: [],
+            workProgramme: 1,
+          },
+          remark: ''
+				},
+        qpForm: {
+          qpName: '',
+          originalHazardousMedia: '',
+          originalTemperature: null,
+          originalPressure: null,
+        },
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId'
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          multiple: true,
+          checkStrictly: true,
+          emitPath: false
+        },
+        casProps: {
+          expandTrigger: 'hover',
+          value: 'uid',
+          label: 'username',
+          multiple: true,
+          lazy: true,
+          async lazyLoad(node, resolve){
+            const { value, level } = node
+            let nodes = []
+            if(level == 0){
+              nodes = props.lists.workerList
+            }else{
+              let res = await userApi().getCtf({uid: value})
+              if(res.data.code == 200){
+                nodes = res.data.data
+              }else{
+                ElMessage({
+                  type: 'warning',
+                  message: res.data.msg
+                })
+              }
+            }
+            nodes=nodes.map(item => ({
+              uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+              username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+              leaf: level >= 1
+            }))
+            resolve(nodes)
+          }
+        },
+        fileList: [],
+        imgLimit: 3,
+        uploadUrl: '',
+        dialogVisible: false,
+        dialogImageUrl: null,
+			});
+      // let validateList = (rule: any, value: any, callback: any)=>{
+      //   if(value.length==0){
+      //     callback(new Error('请完善设备管线信息'))
+      //   }else{
+      //     callback()
+      //   }
+      // }
+			const ruleFormRef = ref<FormInstance>()
+      const qpFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedBy": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedTime": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.sketchMapStatus": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.sketchMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.workProgramme": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        // "workDetail.qpDetailList": [{ required: true, validator: validateList, trigger: 'blur' }]
+			});
+      const qpFormRules = reactive<FormRules>({
+        qpName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalHazardousMedia: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalTemperature: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalPressure: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+      })
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        state.zyList = props.lists.spList.opList
+        getBasicData()
+      });
+
+      const openDialog = (row)=>{
+        state.zyList = props.lists.spList.opList
+        getBasicData()
+        Object.keys(state.form).forEach(key => {
+          if (row.hasOwnProperty(key)) {
+            state.form[key] = JSON.parse(JSON.stringify(row))[key]
+          }
+        })
+        state.form.operatorUids = row.operatorList.map(i=>i.userId)
+        state.form.headUids = row.headList.map(i=>i.userId)
+        state.form.analystUids = row.analystList.map(i=>i.userId)
+        state.form.guardianUids = row.guardianList.map(i=>i.userId)
+        state.form.involveOtherWork = row.otherWorkList.map(i=>i.otherWorkApplyId)
+        state.form.riskIdentification = row.riskIdentification.split(',')
+        state.form.cameraIds = row.workApprovalDeviceList.map(i=>i.deviceId)
+        state.form.safetyMeasureUids = row.safetyMeasureList.map(i=>i.userId)
+        state.form.approvalDepBasicList = row.approvalDepList.map((item)=>({
+          content: item.content,
+          approvalDepBasicId: item.approvalDepBasicId,
+          approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
+          approvalType: item.approvalType
+        }))
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
+        state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
+        // state.form.lastApprover = row.lastApprover.userId
+        if(row.workDetail.sketchMapPath && row.workDetail.sketchMapPath !== ''){
+          state.fileList = row.workDetail.sketchMapPath.split(',').map(item => {
+            return {
+              url:  item,
+              name: item.match(/specialWork9step\/(.*?)\?/)[1]
+            }
+          })
+          state.form.workDetail.sketchMapPath = row.workDetail.sketchMapPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1])
+        }else{
+          state.fileList = []
+          state.form.workDetail.sketchMapPath = []
+        }
+        state.form.workDetail.qpDetailList = row.workDetail.qpDetails
+        if(row.workDepList && row.workDepList.length>0){
+          state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
+        }else{
+          state.form.workDepIds.push(row.workDepId)
+        }
+        getWorkerList()
+        state.showDialog = true
+      }
+
+      const clearFile = ()=>{
+        state.form = {
+          id: null,
+          workType: 9,
+          workLevel: 0,
+          depIdList: [],
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepIds: [],
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUids: [],
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            qpDetailList: [],
+            preparedBy: '',
+            preparedTime: '',
+            sketchMapStatus: null,
+            sketchMapPath: [],
+            workProgramme: 1,
+          },
+          remark: ''
+        }
+        state.showDialog = false
+      }
+
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const addQPList = ()=>{
+        state.qpVisible = true
+      }
+
+      const startAdd =()=>{
+        state.qpForm={
+          qpName: '',
+          originalHazardousMedia: '',
+          originalTemperature: null,
+          originalPressure: null,
+        }
+      }
+
+      const confirmAdd=async (formEl: FormInstance | undefined)=>{
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            state.form.workDetail.qpDetailList.push(state.qpForm)
+            state.qpVisible = false
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const delInfo=(index: number)=>{
+        state.form.workDetail.qpDetailList.splice(index,1)
+      }
+
+      const getWorkerList = ()=>{
+        const filteredList = props.lists.spList.opList.filter(i => state.form.workDepIds.includes(i.depId));
+        if(filteredList && filteredList.length>0){
+          state.zyList = filteredList
+        }else{
+          state.zyList = props.lists.spList.opList
+        }
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const findParent = ()=>{
+        state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1]
+        state.form.seDepId = state.form.depIdList[0]
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        state.tabLoading = true
+        const res = await workApplyApi().getFormData(9)
+        if (res.data.code === '200') {
+          state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList))
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+        state.tabLoading = false
+      };
+
+      const getStartEndIds = (value)=>{
+        // let selected = value
+        // if(selected.length>1){
+        //   const temp = []
+        //   for(let i of selected){
+        //     const index = temp.findIndex(item => item[0] === i[0]);
+        //     if (index !== -1) {
+        //       temp[index] = i
+        //     }else{
+        //       temp.push(i)
+        //     }
+        //   }
+        //   state.form.headUids = temp
+        // }
+        // state.form.startOrEndUids = state.form.headUids
+        // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
+        state.form.startOrEndUids = state.form.headUids
+        state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const singleSelect=(value,type)=>{
+        let selected = value
+        if(selected.length>1){
+          const temp = []
+          for(let i of selected){
+            const index = temp.findIndex(item => item[0] === i[0]);
+            if (index !== -1) {
+              temp[index] = i
+            }else{
+              temp.push(i)
+            }
+          }
+          if(type == '作业人'){state.form.operatorUids = temp}
+          if(type == '监护人'){state.form.guardianUids = temp}
+          if(type == '确认人'){state.form.safetyMeasureUids = temp}
+          if(type == '结束人'){state.form.startOrEndUids = temp}
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            if(state.form.workDetail.sketchMapStatus == 2){
+              state.form.workDetail.sketchMapPath = []
+            }
+            state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {depIdList,...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUids = transform2Arr(data.acceptUids)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().modOpenApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              })
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              state.form.workDetail.sketchMapPath = []
+              state.fileList = []
+              state.form.workDetail.qpDetailList = []
+              clearFile()
+              context.emit('refresh')
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const findNearestDepLevel2DepId = (data, targetDepId) => {
+        let nearestDepId = null;
+
+        const traverseTree = (node) => {
+          if (node.depId === targetDepId) {
+            return true;
+          }
+
+          if (node.children && node.children.length > 0) {
+            for (const child of node.children) {
+              const found = traverseTree(child);
+              if (found) {
+                if (child.depLevel === 2) {
+                  nearestDepId = child.depId;
+                }
+                return true;
+              }
+            }
+          }
+
+          return false;
+        };
+
+        for (const root of data) {
+          traverseTree(root);
+        }
+
+        return nearestDepId;
+      };
+
+      const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+        console.log(uploadFile);
+      };
+
+      const handlePictureCardPreview = (uploadFile: { url: string }) => {
+        state.dialogImageUrl = uploadFile.url!;
+        state.dialogVisible = true;
+      };
+
+      const getUploadUrl = async(rawFile: any) => {
+        if(rawFile.size / 1024 / 1024 > 2){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过2M。'
+          });
+          return Promise.reject(false)
+        }else{
+          const res = await workApplyApi().getUpload9Url(rawFile.name)
+          state.form.workDetail.sketchMapPath.push(res.data.data.fileName)
+          state.uploadUrl = res.data.data.uploadUrl
+        }
+      };
+
+      const upload = async (params: any) => {
+        let reader = new FileReader();
+        reader.readAsArrayBuffer(params.file);
+        reader.onload = async () => {
+          axios
+              .put(state.uploadUrl, reader.result, {
+                header: { 'Content-Type': 'multipart/form-data' }
+              })
+              .then(() => {
+                // if (state.fileList.length === 2) {
+                // 	state.fileList.splice(0, 1);
+                // }
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+        if (file && file.status === "success") {
+          const result = new Promise((resolve, reject) => {
+            ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+                .then(() => {
+                  // console.log(state.workDetail.sketchMapPath,'path')
+                  const list = JSON.parse(JSON.stringify(state.form.workDetail.sketchMapPath))
+                  fileList.map((item, index) => {
+                    if (item.uid === file.uid) {
+                      fileList.splice(index, 1)
+                      state.form.workDetail.sketchMapPath.splice(index, 1)
+                      // 请求删除接口
+                      deletePic(list[index])
+                    }
+                  })
+                  console.log(state.form.workDetail.sketchMapPath, 'sketchMapPath')
+                })
+                .catch(() => {
+                  reject(false);
+                });
+          });
+          return result;
+        }
+      };
+
+      // 删除图片接口
+      const deletePic = async(fileName:string)=>{
+        const res = await workApplyApi().deleteFile({fileName: fileName})
+        if (res.data.code === '200') {
+          ElMessage({
+            type: 'success',
+            message: '删除成功!'
+          });
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      const showTip =()=>{
+        ElMessage({
+          type: 'warning',
+          message: '超出文件上传数量'
+        });
+      }
+
+      // 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+        clearFile,
+        openDialog,
+        addQPList,
+        startAdd,
+        confirmAdd,
+        delInfo,
+				renderMenu,
+        getBasicData,
+        getWorkerList,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        handlePreview,
+        getUploadUrl,
+        upload,
+        showTip,
+        handlePictureCardPreview,
+        beforeRemove,
+        openWorkSelect,
+        getSelected,
+        singleSelect,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+        qpFormRef,
+				applyRules,
+        qpFormRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue
index 3567cec..16ee8a3 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/plateDialog.vue
@@ -340,8 +340,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable clearable multiple>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -366,21 +366,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -453,7 +452,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -515,7 +514,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -573,9 +572,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         state.fileList = row.workDetail.bpLocationMapPath.split(',').map(item => {
           return {
             url:  item,
@@ -583,6 +582,7 @@
           }
         })
         state.form.workDetail.bpLocationMapPath = row.workDetail.bpLocationMapPath.split(',').map(item => item.match(/specialWork9step\/(.*?)\?/)[1])
+        console.log(state.fileList,state.form.workDetail.bpLocationMapPath,'854')
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
         }else{
@@ -611,7 +611,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -664,16 +664,6 @@
         const res = await workApplyApi().getFormData(8)
         if (res.data.code === '200') {
           state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList))
-          // if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
-          //   state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
-          //     content,
-          //     approvalDepBasicId: id,
-          //     approvalUids: [],
-          //     approvalType: null
-          //   }))
-          // }else{
-          //   state.form.approvalDepBasicList = []
-          // }
         } else {
           ElMessage({
             type: 'warning',
@@ -766,7 +756,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modPlateApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue
index 03b1c55..437d685 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue
@@ -312,8 +312,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -338,21 +338,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -417,7 +416,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -460,7 +459,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -511,9 +510,9 @@
           approvalType: item.approvalType
         }))
         state.form.workDetail.electricityUids = row.workDetail.electricityUids.split(',').map(i=>Number(i))
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
         }else{
@@ -543,7 +542,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -681,7 +680,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modPowerApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue
index 4b37e9d..d5e9798 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/components/spaceDialog.vue
@@ -251,8 +251,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -277,21 +277,20 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
-<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -356,7 +355,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -397,7 +396,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -447,10 +446,9 @@
           approvalUids: item.approvalPersonList.filter(j=>j.type == 5).map(i=>i.userId),
           approvalType: item.approvalType
         }))
-        console.log(state.form.approvalDepBasicList,777)
-        state.form.acceptUid = row.acceptUser.userId
+        state.form.acceptUids = row.acceptUserList.map(i=>i.userId)
         state.form.startOrEndUids = row.startOrEndList.map(i=>i.userId)
-        state.form.lastApprover = row.lastApprover.userId
+        // state.form.lastApprover = row.lastApprover.userId
         if(row.workDepList && row.workDepList.length>0){
           state.form.workDepIds = row.workDepList.map(i=>i.workDepId)
         }else{
@@ -480,7 +478,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -600,7 +598,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().modSpaceApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
index 4aa3e83..50bcae1 100644
--- a/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/wdsq/index.vue
@@ -106,6 +106,7 @@
                                 <el-table-column label="风险研判" align="center">
                                     <template #default="scope">
                                         <el-button v-if="scope.row.status == 0" link type="primary" size="small" @click="openReport('上传', scope.row)">上传研判报告</el-button>
+                                        <el-tag type="danger" v-else-if="scope.row.status == 15">已取消</el-tag>
                                         <el-tag type="danger" v-else-if="scope.row.status == 16">已废止</el-tag>
                                         <el-button v-else link type="primary" size="small" @click="openReport('查看', scope.row)">查看研判报告</el-button>
                                     </template>
@@ -113,9 +114,10 @@
                                 <el-table-column fixed="right" label="操作" align="center" width="150">
                                     <template #default="scope">
                                         <span v-if="scope.row.status == 16">已废止</span>
+                                        <span v-if="scope.row.status == 15">已取消</span>
                                         <el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="danger" size="small" :icon="Delete" @click="abortRecordBtn(scope.row)">取消</el-button>
                                         <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-                                        <el-button v-if="scope.row.status !== 16" link type="primary" size="small" v-throttle :icon="Edit" @click="openEdit(scope.row)">修改</el-button>
+                                        <el-button v-if="scope.row.status == 0 || scope.row.status == 1" link type="primary" size="small" v-throttle :icon="Edit" @click="openEdit(scope.row)">修改</el-button>
                                         <el-button link type="success" v-throttle v-if="scope.row.status == 0 || scope.row.status == 1" size="small" :icon="Download" @click="checkTicket(scope.row)">正式办票</el-button>
 <!--                                        <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button>-->
                                     </template>
@@ -151,7 +153,8 @@
                 <ground-dialog ref="groundRef" :lists="lists" @refresh="getListByPage"></ground-dialog>
                 <broken-dialog ref="brokenRef" :lists="lists" @refresh="getListByPage"></broken-dialog>
                 <height-dialog ref="heightRef" :lists="lists" @refresh="getListByPage"></height-dialog>
-      <power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog>
+                <power-dialog ref="powerRef" :lists="lists" @refresh="getListByPage"></power-dialog>
+                <open-dialog ref="openRef" :lists="lists" @refresh="getListByPage"></open-dialog>
     </div>
 </template>
 
@@ -220,7 +223,8 @@
       groundDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/groundDialog.vue')),
       brokenDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/brokenDialog.vue')),
       heightDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/heightDialog.vue')),
-      powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue'))
+      powerDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/powerDialog.vue')),
+      openDialog: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/wdsq/components/openDialog.vue'))
     },
     setup() {
         const userInfo = useUserInfo();
@@ -235,6 +239,7 @@
         const brokenRef = ref()
         const heightRef = ref()
         const powerRef = ref()
+        const openRef = ref()
         const state = reactive<stateType>({
             pageIndex1: 1,
             pageSize1: 10,
@@ -276,7 +281,8 @@
                 { id: 5, name: '断路作业' },
                 { id: 6, name: '高处作业' },
                 { id: 7, name: '临时用电作业' },
-                { id: 8, name: '盲板抽堵作业' }
+                { id: 8, name: '盲板抽堵作业' },
+                { id: 9, name: '打开作业' }
             ],
           lists: {
             workerList: [],
@@ -400,6 +406,9 @@
           }
           if(row.workType == 8){
             plateRef.value.openDialog(row)
+          }
+          if(row.workType == 9){
+            openRef.value.openDialog(row)
           }
         }
 
@@ -758,6 +767,7 @@
           brokenRef,
           heightRef,
           powerRef,
+          openRef,
           openEdit,
           getAllDepartment,
           checkTicket,
@@ -835,7 +845,7 @@
             }
         }
         &:last-of-type {
-            height: calc(100% - 100px);
+            height: calc(100% - 130px);
         }
     }
     .el-row {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
index 65d59ab..27b96a1 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/broken.vue
@@ -79,7 +79,7 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" filterable multiple :multiple-limit="1" @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -290,8 +290,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -329,19 +329,19 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
 			</div>
 		</el-form>
@@ -419,7 +419,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -594,7 +594,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -756,7 +756,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitBrokenApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
index e715770..f9288e6 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/fire.vue
@@ -58,7 +58,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -294,8 +294,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -320,21 +320,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -402,7 +402,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -623,7 +623,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.methodList": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -800,7 +800,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2EObj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2EObj(data.lastApprover)
             const res = await workApplyApi().submitFireApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
index 0f5a025..bb9c260 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/ground.vue
@@ -22,7 +22,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -273,8 +273,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -312,19 +312,19 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
 			</div>
 		</el-form>
@@ -402,7 +402,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -566,7 +566,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.gbDesc": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -727,7 +727,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitGroundApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
index 49be4fd..0ca2810 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/height.vue
@@ -55,7 +55,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" filterable multiple @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" filterable multiple :multiple-limit="1" @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -188,8 +188,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="安全措施确认人" filterable prop="safetyMeasureUids">
-              <el-select v-model="form.safetyMeasureUids" multiple clearable>
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" multiple clearable filterable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -215,9 +215,9 @@
                 </el-form-item>
               </template>
             </el-table-column>
-            <el-table-column prop="approvalUids" filterable label="审批人" align="center">
+            <el-table-column prop="approvalUids" label="审批人" align="center">
               <template #default="scope">
-                <el-select v-model="scope.row.approvalUids" multiple :disabled="isFirstRow(scope.$index)" clearable>
+                <el-select v-model="scope.row.approvalUids" multiple filterable :disabled="isFirstRow(scope.$index)" clearable>
                   <el-option
                       v-for="item in lists.workerList"
                       :key="item.uid"
@@ -231,8 +231,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -244,8 +244,8 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="现场开始结束确认人" filterable prop="startOrEndUids">
-              <el-select v-model="form.startOrEndUids" multiple clearable>
+            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -257,21 +257,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -337,7 +337,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -512,7 +512,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
@@ -670,7 +670,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitHeightApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
index 306cecb..449a455 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/hoist.vue
@@ -51,6 +51,18 @@
               />
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="吊装指挥" prop="workDetail.commanderUid">
+              <el-select v-model="form.workDetail.commanderUid" filterable clearable @change="getCommand">
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
         </el-row>
       <el-row>
         <el-col :span="12">
@@ -65,7 +77,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -296,8 +308,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -322,21 +334,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -403,12 +415,13 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
           workDetail: {
             hoistingToolName: '',
+            commanderUid: null,
             weightMass: '',
             solicitorUids: []
           }
@@ -577,7 +590,8 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.commanderUid": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -653,7 +667,11 @@
         // state.form.startOrEndUids = state.form.headUids
         // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
         state.form.startOrEndUids = state.form.headUids
-        state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+        // state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+      }
+
+      const getCommand =()=>{
+        state.form.approvalDepBasicList[0].approvalUids = [state.form.workDetail.commanderUid]
       }
 
       const getSafetyIds = ()=>{
@@ -738,8 +756,9 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
+            // data.commanderUid = transform2Obj(data.commanderUid)
             const res = await workApplyApi().submitHoistApply(data)
             if (res.data.code === '200') {
               ElMessage({
@@ -810,6 +829,7 @@
         getBasicData,
         getWorkerList,
         getStartEndIds,
+        getCommand,
         getSafetyIds,
         isFirstRow,
         submitForm,
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue
new file mode 100644
index 0000000..94d244a
--- /dev/null
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue
@@ -0,0 +1,995 @@
+<template>
+	<div class="home-container">
+		<el-form :model="form" label-width="180px" :rules="applyRules" ref="ruleFormRef">
+			<div class="homeCard">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业申请单位" prop="depIdList">
+            <el-cascader style="width: 100%" v-model="form.depIdList" :options="lists.departList2" :props="props1" :show-all-levels="false" placeholder="明确到具体车间" @change="findParent" clearable/>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="作业内容" prop="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="headUids">
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
+              <el-option
+                  v-for="item in lists.workerList"
+                  :key="item.uid"
+                  :label="item.username"
+                  :value="item.uid"
+              />
+            </el-select>
+            <!--            <el-cascader style="width: 100%" v-model="form.headUids" :options="lists.workerList" :props="casProps" @change="getStartEndIds" filterable :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+      </el-row>
+			<el-row>
+        <el-col :span="12">
+          <el-form-item label="作业单位" prop="workDepIds">
+            <el-cascader style="width: 100%" v-model="form.workDepIds" :props="depProps" @change="getWorkerList" :options="lists.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 clearable>
+              <el-option
+                  v-for="item in zyList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+            <!--            <el-cascader style="width: 100%" v-model="form.operatorUids" :options="lists.spList.opList" :props="cas2Props" @change="singleSelect($event,'作业人')" filterable :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+			</el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="作业地点" prop="workLocation">
+              <el-input
+                  v-model="form.workLocation"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业地点"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" class="valueSelect">
+            <el-form-item label="关联其他特殊作业">
+<!--              <el-select v-model="form.involveOtherWork" multiple clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in otherWorkList"-->
+<!--                    :key="item.value"-->
+<!--                    :label="item.label"-->
+<!--                    :value="item.label"-->
+<!--                />-->
+<!--              </el-select>-->
+              <el-select v-model="form.involveOtherWork" multiple clearable :teleported="false" @click="openWorkSelect">
+                <el-option v-for="item in lists.otherWorks" :key="item.workApplyId" :label="item.workContent" :value="item.workApplyId">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="监护人" prop="guardianUids">
+            <el-select v-model="form.guardianUids" filterable multiple clearable>
+              <el-option
+                  v-for="item in lists.spList.jhList"
+                  :key="item.uid"
+                  :label="item.realName"
+                  :value="item.uid"
+              />
+            </el-select>
+<!--            <el-cascader style="width: 100%" v-model="form.guardianUids" :options="lists.spList.jhList" :props="cas3Props" filterable @change="singleSelect($event,'监护人')" :show-all-levels="false"/>-->
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="绑定执法仪" prop="cameraIds">
+            <el-select v-model="form.cameraIds" multiple clearable>
+              <el-option
+                  v-for="item in lists.deviceList"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="设备管线信息" prop="workDetail.qpDetailList">
+              <el-table :data="form.workDetail.qpDetailList" style="width: 90%" border>
+                <el-table-column prop="qpName" label="设备管线名称"/>
+                <el-table-column prop="originalHazardousMedia" label="原有危险介质"/>
+                <el-table-column prop="originalTemperature" label="原有温度(℃)"/>
+                <el-table-column prop="originalPressure" label="原有压力(kPa)"/>
+                <el-table-column label="操作" width="100">
+                  <template #default="scope">
+                    <el-button size="small" text type="danger" @click="delInfo(scope.$index)">删除</el-button>
+                  </template>
+                </el-table-column>
+              </el-table>
+              <el-button type="primary" style="width: 8%;margin-left: 2%" @click="addQPList">新增</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="编制人姓名" prop="workDetail.preparedBy">
+              <el-input
+                  v-model="form.workDetail.preparedBy"
+                  placeholder="请输入编制人姓名"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="编制时间" prop="workDetail.preparedTime">
+              <el-date-picker
+                  v-model="form.workDetail.preparedTime"
+                  format="YYYY-MM-DD HH:mm"
+                  value-format="YYYY-MM-DD HH:mm:00"
+                  type="datetime"
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="有无示意图" prop="workDetail.sketchMapStatus">
+              <el-radio-group v-model="form.workDetail.sketchMapStatus">
+                <el-radio :label="1">有</el-radio>
+                <el-radio :label="2">无</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="form.workDetail.sketchMapStatus == 1">
+            <el-form-item label="示意图" prop="workDetail.sketchMapPath">
+              <el-upload accept="image/*" :auto-upload="true" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+                <el-icon><Plus /></el-icon>
+                <template #tip>
+                  <div class="el-upload__tip">上传jpg/png图片尺寸小于2M,最多可上传3张</div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-form-item label="安全工作方案" prop="workDetail.workProgramme">
+            <el-radio-group v-model="form.workDetail.workProgramme">
+              <el-radio :label="1">有</el-radio>
+              <el-radio :label="2">无</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)开始时间" prop="expStartTime">
+            <el-date-picker
+                v-model="form.expStartTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="预计(整体)完成时间" prop="expEndTime">
+            <el-date-picker
+                v-model="form.expEndTime"
+                format="YYYY-MM-DD HH:mm"
+                value-format="YYYY-MM-DD HH:mm:00"
+                type="datetime"
+                style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="风险辨识" prop="riskIdentification">
+              <el-select v-model="form.riskIdentification" multiple clearable>
+                <el-option
+                  v-for="item in lists.riskList"
+                  :key="item.id"
+                  :label="item.content"
+                  :value="item.content"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input
+                  v-model="form.remark"
+                  :autosize="{ minRows: 1 }"
+                  type="textarea"
+                  placeholder="请输入作业备注"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="safetyMeasureBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column type="index" label="序号" width="100px" align="center"/>
+            <el-table-column prop="measureContent" label="安全措施"/>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="安全措施确认人" prop="safetyMeasureUids">
+              <el-select v-model="form.safetyMeasureUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.safetyMeasureUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'确认人')" :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row style="display: flex;justify-content: center">
+          <el-table :data="form.approvalDepBasicList" style="width: 90%" border v-loading="tabLoading">
+            <el-table-column prop="content" label="审批签字项目" align="center"/>
+            <el-table-column prop="approvalType" label="是否必签" align="center">
+              <template #default="scope">
+                <el-form-item label="" prop="acceptUid" label-width="0">
+                  <el-radio-group v-model="scope.row.approvalType">
+                    <el-radio :label="0">所有必签</el-radio>
+                    <el-radio :label="1">任一</el-radio>
+                    <el-radio :label="2">非必签</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="approvalUids" label="审批人" align="center">
+              <template #default="scope">
+                <el-select v-model="scope.row.approvalUids" filterable multiple :disabled="isFirstRow(scope.$index)" clearable>
+                  <el-option
+                      v-for="item in lists.workerList"
+                      :key="item.uid"
+                      :label="item.username"
+                      :value="item.uid"
+                  />
+                </el-select>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.acceptUid" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="现场开始结束确认人" prop="startOrEndUids">
+              <el-select v-model="form.startOrEndUids" filterable multiple clearable>
+                <el-option
+                    v-for="item in lists.workerList"
+                    :key="item.uid"
+                    :label="item.username"
+                    :value="item.uid"
+                />
+              </el-select>
+<!--              <el-cascader style="width: 100%" v-model="form.startOrEndUids" :options="lists.workerList" :props="casProps" filterable @change="singleSelect($event,'结束人')" :show-all-levels="false"/>-->
+            </el-form-item>
+          </el-col>
+        </el-row>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+			</div>
+		</el-form>
+		<div class="applyBtn">
+			<el-button type="primary" size="large" v-throttle plain @click="submitForm(ruleFormRef)">提交申报</el-button>
+		</div>
+    <el-dialog v-model="qpVisible" @open="startAdd">
+      <el-form :model="qpForm" label-width="170px" ref="qpFormRef" :rules="qpFormRules">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="设备管线名称" prop="qpName">
+              <el-input
+                  v-model="qpForm.qpName"
+                  placeholder="请输入设备管线名称"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有危险介质" prop="originalHazardousMedia">
+              <el-input
+                  v-model="qpForm.originalHazardousMedia"
+                  placeholder="请输入原有危险介质"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有温度(℃)" prop="originalTemperature">
+              <el-input
+                  v-model="qpForm.originalTemperature"
+                  type="number"
+                  placeholder="请输入原有温度"
+              ><template #append>℃</template></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="原有压力(kPa)" prop="originalPressure">
+              <el-input
+                  v-model="qpForm.originalPressure"
+                  type="number"
+                  placeholder="请输入原有压力"
+              ><template #append>kPa</template></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+      <span class="dialog-footer">
+        <el-button type="primary" @click="confirmAdd(qpFormRef)">新增</el-button>
+      </span>
+      </template>
+    </el-dialog>
+    <work-select ref="workSelectRef" @refreshWorks="getSelected()"></work-select>
+    <el-dialog v-model="dialogVisible">
+      <img w-full :src="dialogImageUrl" alt="Preview Image" />
+    </el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Search, Edit } from '@element-plus/icons-vue'
+  import {ElMessage, ElMessageBox, UploadProps, UploadUserFile} from 'element-plus'
+	import type { FormInstance, FormRules } from 'element-plus'
+	import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
+  import workSelect from "/@/views/newSpecialWorkSystem/workTicket/zysq/components/workSelect.vue";
+  import axios from "axios";
+  import {userApi} from "/@/api/systemManage/user";
+  import {verifyPwd} from "/@/utils/toolsValidate";
+	interface stateType {
+		form: Object,
+    qpForm: Object,
+		equipmentDialog: boolean,
+    qpVisible: boolean
+    zyList: []
+    props1:{},
+    depProps:{},
+    casProps:{}
+    safetyMeasureBasicList: [],
+    fileList: Array<file>,
+    uploadUrl: string,
+    dialogVisible: Boolean,
+    dialogImageUrl: string | null,
+    imgLimit: number
+    tabLoading: boolean
+	}
+  interface file {
+    url: string;
+  }
+	export default defineComponent({
+		name: 'openForm',
+		components: {workSelect},
+		props:['lists'],
+		setup(props: any, context: any) {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({
+        tabLoading: false,
+				equipmentDialog: false,
+        qpVisible: false,
+        safetyMeasureBasicList: [],
+        zyList: [],
+				form: {
+          workType: 9,
+          workLevel: 0,
+          depIdList: [],
+          applyDepId: null,
+          seDepId: null,
+          expStartTime: '',
+          expEndTime: '',
+          operatorUids: [],
+          headUids: [],
+          guardianUids: [],
+          workDepIds: [],
+          workContent: '',
+          workLocation: '',
+          riskIdentification: [],
+          involveOtherWork: [],
+          safetyMeasureUids: [],
+          approvalDepBasicList: [],
+          acceptUids: [],
+          lastApprover: null,
+          startOrEndUids: [],
+          cameraIds: [],
+          workDetail: {
+            qpDetailList: [],
+            preparedBy: '',
+            preparedTime: '',
+            sketchMapStatus: null,
+            sketchMapPath: [],
+            workProgramme: 1,
+          },
+          remark: ''
+				},
+        qpForm: {
+          qpName: '',
+          originalHazardousMedia: '',
+          originalTemperature: null,
+          originalPressure: null,
+        },
+        props1:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId'
+        },
+        depProps:{
+          expandTrigger: 'hover',
+          label: 'depName',
+          value: 'depId',
+          multiple: true,
+          checkStrictly: true,
+          emitPath: false
+        },
+        casProps: {
+          expandTrigger: 'hover',
+          value: 'uid',
+          label: 'username',
+          multiple: true,
+          lazy: true,
+          async lazyLoad(node, resolve){
+            const { value, level } = node
+            let nodes = []
+            if(level == 0){
+              nodes = props.lists.workerList
+            }else{
+              let res = await userApi().getCtf({uid: value})
+              if(res.data.code == 200){
+                nodes = res.data.data
+              }else{
+                ElMessage({
+                  type: 'warning',
+                  message: res.data.msg
+                })
+              }
+            }
+            nodes=nodes.map(item => ({
+              uid: item.certNo +','+ item.certExpiredAt+','+item.certTypeName,
+              username: node.label + '(' +item.certTypeName +' ' + item.certExpiredAt + ')',
+              leaf: level >= 1
+            }))
+            resolve(nodes)
+          }
+        },
+        fileList: [],
+        imgLimit: 3,
+        uploadUrl: '',
+        dialogVisible: false,
+        dialogImageUrl: null,
+			});
+      // let validateList = (rule: any, value: any, callback: any)=>{
+      //   if(value.length==0){
+      //     callback(new Error('请完善设备管线信息'))
+      //   }else{
+      //     callback()
+      //   }
+      // }
+			const ruleFormRef = ref<FormInstance>()
+      const qpFormRef = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+        depIdList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        workDepIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        headUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        guardianUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        riskIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        cameraIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedBy": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.preparedTime": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.sketchMapStatus": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.sketchMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        "workDetail.workProgramme": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        // "workDetail.qpDetailList": [{ required: true, validator: validateList, trigger: 'blur' }]
+			});
+      const qpFormRules = reactive<FormRules>({
+        qpName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalHazardousMedia: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalTemperature: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        originalPressure: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+      })
+      const workSelectRef = ref()
+			// 页面载入时执行方法
+			onMounted(() => {
+        state.zyList = props.lists.spList.opList
+        getBasicData()
+      });
+      const openWorkSelect = ()=>{
+        workSelectRef.value.openDialog(state.form.involveOtherWork)
+      }
+
+      const addQPList = ()=>{
+        state.qpVisible = true
+      }
+
+      const startAdd =()=>{
+        state.qpForm={
+          qpName: '',
+          originalHazardousMedia: '',
+          originalTemperature: null,
+          originalPressure: null,
+        }
+      }
+
+      const confirmAdd=async (formEl: FormInstance | undefined)=>{
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            state.form.workDetail.qpDetailList.push(state.qpForm)
+            state.qpVisible = false
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const delInfo=(index: number)=>{
+        state.form.workDetail.qpDetailList.splice(index,1)
+      }
+
+      const getWorkerList = (val)=>{
+        const filteredList = props.lists.spList.opList.filter(i => state.form.workDepIds.includes(i.depId));
+        if(filteredList && filteredList.length>0){
+          state.zyList = filteredList
+        }else{
+          state.zyList = props.lists.spList.opList
+        }
+      }
+
+      const getSelected = ()=>{
+        state.form.involveOtherWork = workSelectRef.value.selected
+      }
+      const findParent = ()=>{
+        state.form.applyDepId = state.form.depIdList[state.form.depIdList.length - 1]
+        state.form.seDepId = state.form.depIdList[0]
+      }
+
+      // 获取基础数据
+      const getBasicData = async ()=>{
+        state.tabLoading = true
+        const res = await workApplyApi().getFormData(9)
+        if (res.data.code === '200') {
+          state.safetyMeasureBasicList = JSON.parse(JSON.stringify(res.data.data.safetyMeasureBasicList))
+          if(res.data.data.approvalDepBasicList && res.data.data.approvalDepBasicList.length>0){
+            state.form.approvalDepBasicList = res.data.data.approvalDepBasicList.map(({id,content})=>({
+              content,
+              approvalDepBasicId: id,
+              approvalUids: [],
+              approvalType: null
+            }))
+          }else{
+            state.form.approvalDepBasicList = []
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+        state.tabLoading = false
+      };
+
+      const getStartEndIds = (value)=>{
+        // let selected = value
+        // if(selected.length>1){
+        //   const temp = []
+        //   for(let i of selected){
+        //     const index = temp.findIndex(item => item[0] === i[0]);
+        //     if (index !== -1) {
+        //       temp[index] = i
+        //     }else{
+        //       temp.push(i)
+        //     }
+        //   }
+        //   state.form.headUids = temp
+        // }
+        // state.form.startOrEndUids = state.form.headUids
+        // state.form.approvalDepBasicList[0].approvalUids = [...new Set(state.form.headUids.map((i)=>i[0]))]
+        state.form.startOrEndUids = state.form.headUids
+        state.form.approvalDepBasicList[0].approvalUids = state.form.headUids
+      }
+
+      const getSafetyIds = ()=>{
+        state.form.safetyMeasureUids = state.form.guardianUids
+      }
+
+      const isFirstRow = (index)=> {
+        return index === 0;
+      }
+
+      const transformArr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i[0],
+            certificate: i[1].split(',')[0],
+            certExpiredAt: i[1].split(',')[1],
+            certTypeName: i[1].split(',')[2]
+          }
+        })
+      }
+
+      const transform2Arr = (arr: Array<any>)=>{
+        return arr.map((i)=>{
+          return {
+            uid: i,
+            certificate: '',
+            certExpiredAt: '',
+            certTypeName: ''
+          }
+        })
+      }
+
+      const transform2Obj = (id: any)=>{
+        return {
+          uid: id,
+          certificate: '',
+          certExpiredAt: '',
+          certTypeName: ''
+        }
+      }
+
+      const singleSelect=(value,type)=>{
+        let selected = value
+        if(selected.length>1){
+          const temp = []
+          for(let i of selected){
+            const index = temp.findIndex(item => item[0] === i[0]);
+            if (index !== -1) {
+              temp[index] = i
+            }else{
+              temp.push(i)
+            }
+          }
+          if(type == '作业人'){state.form.operatorUids = temp}
+          if(type == '监护人'){state.form.guardianUids = temp}
+          if(type == '确认人'){state.form.safetyMeasureUids = temp}
+          if(type == '结束人'){state.form.startOrEndUids = temp}
+        }
+      }
+
+      const submitForm = async (formEl: FormInstance | undefined) => {
+        if (!formEl) return
+        await formEl.validate(async (valid, fields) => {
+          if (valid) {
+            for(let i of state.form.approvalDepBasicList){
+              if(i.approvalUids.length == 0){
+                ElMessage({
+                  type: 'warning',
+                  message: '部分审批人未配置'
+                });
+                return
+              }
+            }
+            // if(Array.isArray(state.form.involveOtherWork)){
+            //   state.form.involveOtherWork = state.form.involveOtherWork.join(',')
+            // }
+            if(state.form.workDetail.sketchMapStatus == 2){
+              state.form.workDetail.sketchMapPath = []
+            }
+            state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.join(',')
+            state.form.riskIdentification = state.form.riskIdentification.join(',')
+            const {depIdList,...data} = state.form
+            data.operatorUids = transform2Arr(data.operatorUids)
+            data.headUids = transform2Arr(data.headUids)
+            data.guardianUids = transform2Arr(data.guardianUids)
+            data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
+            data.startOrEndUids = transform2Arr(data.startOrEndUids)
+            data.acceptUids = transform2Arr(data.acceptUids)
+            data.lastApprover = transform2Obj(data.lastApprover)
+            const res = await workApplyApi().submitOpenApply(data)
+            if (res.data.code === '200') {
+              ElMessage({
+                type: 'success',
+                message: '提交成功!'
+              });
+              formEl.resetFields()
+              state.form.guardianUids = []
+              state.form.involveOtherWork = []
+              getBasicData()
+              state.form.workDetail.sketchMapPath = []
+              state.fileList = []
+              state.form.workDetail.qpDetailList = []
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+              // state.form.involveOtherWork = state.form.involveOtherWork.split(',')
+              state.form.workDetail.sketchMapPath = state.form.workDetail.sketchMapPath.split(',')
+              state.form.riskIdentification = state.form.riskIdentification.split(',')
+            }
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: '有表单内容未完成,请再次检查完善'
+            })
+          }
+        })
+      }
+
+      const findNearestDepLevel2DepId = (data, targetDepId) => {
+        let nearestDepId = null;
+
+        const traverseTree = (node) => {
+          if (node.depId === targetDepId) {
+            return true;
+          }
+
+          if (node.children && node.children.length > 0) {
+            for (const child of node.children) {
+              const found = traverseTree(child);
+              if (found) {
+                if (child.depLevel === 2) {
+                  nearestDepId = child.depId;
+                }
+                return true;
+              }
+            }
+          }
+
+          return false;
+        };
+
+        for (const root of data) {
+          traverseTree(root);
+        }
+
+        return nearestDepId;
+      };
+
+      const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+        console.log(uploadFile);
+      };
+
+      const handlePictureCardPreview = (uploadFile: { url: string }) => {
+        state.dialogImageUrl = uploadFile.url!;
+        state.dialogVisible = true;
+      };
+
+      const getUploadUrl = async(rawFile: any) => {
+        if(rawFile.size / 1024 / 1024 > 2){
+          ElMessage({
+            type: 'warning',
+            message: '文件大小不能超过2M。'
+          });
+          return Promise.reject(false)
+        }else{
+          const res = await workApplyApi().getUpload9Url(rawFile.name)
+          state.form.workDetail.sketchMapPath.push(res.data.data.fileName)
+          state.uploadUrl = res.data.data.uploadUrl
+        }
+      };
+
+      const upload = async (params: any) => {
+        let reader = new FileReader();
+        reader.readAsArrayBuffer(params.file);
+        reader.onload = async () => {
+          axios
+              .put(state.uploadUrl, reader.result, {
+                header: { 'Content-Type': 'multipart/form-data' }
+              })
+              .then(() => {
+                // if (state.fileList.length === 2) {
+                // 	state.fileList.splice(0, 1);
+                // }
+              });
+        };
+      };
+
+      const beforeRemove = (file: {}, fileList: []) => {
+        if (file && file.status === "success") {
+          const result = new Promise((resolve, reject) => {
+            ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            })
+                .then(() => {
+                  // console.log(state.workDetail.sketchMapPath,'path')
+                  const list = JSON.parse(JSON.stringify(state.form.workDetail.sketchMapPath))
+                  fileList.map((item, index) => {
+                    if (item.uid === file.uid) {
+                      fileList.splice(index, 1)
+                      state.form.workDetail.sketchMapPath.splice(index, 1)
+                      // 请求删除接口
+                      deletePic(list[index])
+                    }
+                  })
+                  console.log(state.form.workDetail.sketchMapPath, 'sketchMapPath')
+                })
+                .catch(() => {
+                  reject(false);
+                });
+          });
+          return result;
+        }
+      };
+
+      // 删除图片接口
+      const deletePic = async(fileName:string)=>{
+        const res = await workApplyApi().deleteFile({fileName: fileName})
+        if (res.data.code === '200') {
+          ElMessage({
+            type: 'success',
+            message: '删除成功!'
+          });
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: res.data.msg
+          });
+        }
+      }
+
+      const showTip =()=>{
+        ElMessage({
+          type: 'warning',
+          message: '超出文件上传数量'
+        });
+      }
+
+      // 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+        addQPList,
+        startAdd,
+        confirmAdd,
+        delInfo,
+				renderMenu,
+        getBasicData,
+        getWorkerList,
+        getStartEndIds,
+        getSafetyIds,
+        isFirstRow,
+        submitForm,
+        findParent,
+        handlePreview,
+        getUploadUrl,
+        upload,
+        showTip,
+        handlePictureCardPreview,
+        beforeRemove,
+        openWorkSelect,
+        getSelected,
+        singleSelect,
+        workSelectRef,
+				Search,
+				ruleFormRef,
+        qpFormRef,
+				applyRules,
+        qpFormRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		width: 100%;
+    height: 100vh;
+		overflow: hidden;
+    overflow-y: scroll;
+    &::-webkit-scrollbar{
+      width: 0;
+      background-color: transparent;
+    }
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			box-sizing: border-box;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			width: 100%;
+			background: #fff;
+			padding: 20px 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
+			display: flex;
+			align-items: center;
+			justify-content: center;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+	}
+  .valueSelect{
+    ::v-deep(.el-popper){
+      display: none !important;
+    }
+  }
+	.tab-i{
+		margin-bottom: 15px;
+
+		&:last-of-type{
+			margin-bottom: 0;
+		}
+		::v-deep(.el-form-item){
+			.el-form-item__label{
+				margin-bottom: 4px;
+			}
+		}
+	}
+</style>
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
index df77756..15fa75d 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/plate.vue
@@ -144,7 +144,7 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -339,8 +339,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -365,21 +365,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -455,7 +455,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -637,7 +637,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         "workDetail.pipingName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -805,7 +805,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitPlateApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
index e5d46c7..031d931 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/power.vue
@@ -79,7 +79,7 @@
       <el-row>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -311,8 +311,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -337,21 +337,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -417,7 +417,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -578,7 +578,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -740,7 +740,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitPowerApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
index ffb5bd8..d026ece 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/components/space.vue
@@ -44,7 +44,7 @@
         </el-col>
         <el-col :span="12">
           <el-form-item label="作业负责人" prop="headUids">
-            <el-select v-model="form.headUids" multiple filterable @change="getStartEndIds" clearable>
+            <el-select v-model="form.headUids" multiple :multiple-limit="1" filterable @change="getStartEndIds" clearable>
               <el-option
                   v-for="item in lists.workerList"
                   :key="item.uid"
@@ -250,8 +250,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="完工验收" prop="acceptUid">
-              <el-select v-model="form.acceptUid" filterable clearable>
+            <el-form-item label="完工验收" prop="acceptUids">
+              <el-select v-model="form.acceptUids" filterable multiple clearable>
                 <el-option
                     v-for="item in lists.workerList"
                     :key="item.uid"
@@ -276,21 +276,21 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="最终审批人" prop="lastApprover">
-              <el-select v-model="form.lastApprover" filterable clearable>
-                <el-option
-                    v-for="item in lists.workerList"
-                    :key="item.uid"
-                    :label="item.username"
-                    :value="item.uid"
-                />
-              </el-select>
+<!--        <el-row>-->
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="最终审批人" prop="lastApprover">-->
+<!--              <el-select v-model="form.lastApprover" filterable clearable>-->
+<!--                <el-option-->
+<!--                    v-for="item in lists.workerList"-->
+<!--                    :key="item.uid"-->
+<!--                    :label="item.username"-->
+<!--                    :value="item.uid"-->
+<!--                />-->
+<!--              </el-select>-->
 <!--              <el-cascader style="width: 100%" v-model="form.lastApprover" :options="lists.workerList" :props="cas4Props" filterable :show-all-levels="false"/>-->
-            </el-form-item>
-          </el-col>
-        </el-row>
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
 			</div>
 		</el-form>
 		<div class="applyBtn">
@@ -356,7 +356,7 @@
           involveOtherWork: [],
           safetyMeasureUids: [],
           approvalDepBasicList: [],
-          acceptUid: null,
+          acceptUids: [],
           lastApprover: null,
           startOrEndUids: [],
           cameraIds: [],
@@ -515,7 +515,7 @@
         expStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         expEndTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         safetyMeasureUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-        acceptUid: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+        acceptUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         lastApprover: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
         startOrEndUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				"workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
@@ -676,7 +676,7 @@
             data.guardianUids = transform2Arr(data.guardianUids)
             data.safetyMeasureUids = transform2Arr(data.safetyMeasureUids)
             data.startOrEndUids = transform2Arr(data.startOrEndUids)
-            data.acceptUid = transform2Obj(data.acceptUid)
+            data.acceptUids = transform2Arr(data.acceptUids)
             data.lastApprover = transform2Obj(data.lastApprover)
             const res = await workApplyApi().submitSpaceApply(data)
             if (res.data.code === '200') {
diff --git a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
index fba0b5c..19a277c 100644
--- a/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
+++ b/src/views/newSpecialWorkSystem/workTicket/zysq/index.vue
@@ -25,6 +25,9 @@
 			<el-tab-pane :lazy="true" label="盲板抽堵作业" name="plate">
 				<plate-form ref="plate" :lists="lists"></plate-form>
 			</el-tab-pane>
+      <el-tab-pane :lazy="true" label="打开作业" name="open">
+        <open-form ref="open" :lists="lists"></open-form>
+      </el-tab-pane>
 		</el-tabs>
 <!--    <material-dialog ref="material"></material-dialog>-->
 <!--    <el-radio-group v-model="activeName" size="large" @change="(value)=>handleClick(value)">-->
@@ -81,6 +84,7 @@
 			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')),
+      openForm: defineAsyncComponent(() => import('/@/views/newSpecialWorkSystem/workTicket/zysq/components/open.vue')),
 		},
 		setup() {
 			const userInfo = useUserInfo()
@@ -111,6 +115,7 @@
       const height = ref()
       const power = ref()
       const plate = ref()
+      const open = ref()
 
       const handleClick = (tab: TabsPaneContext, event: Event) => {
         state.loading = true
@@ -205,7 +210,7 @@
 					// state.departmentList = JSON.parse(JSON.stringify(res.data.data))
           // state.departmentList2 = state.departmentList[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50)
           state.lists.departList = JSON.parse(JSON.stringify(res.data.data))
-          state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50)
+          state.lists.departList2 = JSON.parse(JSON.stringify(res.data.data))[0].children[0].children.filter(i=>i.depId == 32 || i.depId == 48 || i.depId == 49 || i.depId == 50 || i.depId == 10 || i.depId == 41 || i.depId == 46 || i.depId == 47)
 				} else {
 					ElMessage({
 						type: 'warning',
@@ -266,6 +271,7 @@
         hoist,
         plate,
         power,
+        open,
         handleClick,
         getOtherWork
 			};
diff --git a/src/views/specialWorkSystem/flow/ruleofApp/index.vue b/src/views/specialWorkSystem/flow/ruleofApp/index.vue
index df52430..ab589da 100644
--- a/src/views/specialWorkSystem/flow/ruleofApp/index.vue
+++ b/src/views/specialWorkSystem/flow/ruleofApp/index.vue
@@ -145,7 +145,8 @@
                 { id: 5, name: '断路作业' },
                 { id: 6, name: '高处作业' },
                 { id: 7, name: '临时用电作业' },
-                { id: 8, name: '盲板抽堵作业' }
+                { id: 8, name: '盲板抽堵作业' },
+                { id: 9, name: '打开作业' }
             ],
             workLevelList: [
                 { id: 3, name: '特级动火作业' },
diff --git a/src/views/specialWorkSystem/specialIndex/components/workRecord.vue b/src/views/specialWorkSystem/specialIndex/components/workRecord.vue
index bfe8a50..25b7d7e 100644
--- a/src/views/specialWorkSystem/specialIndex/components/workRecord.vue
+++ b/src/views/specialWorkSystem/specialIndex/components/workRecord.vue
@@ -21,10 +21,10 @@
         <div>操作内容:{{item.content}}</div>
         <div>操作意见:{{item.approvalOpinions}}</div>
         <div v-if="item.fileUrl" style="display: flex;align-items: flex-start">附件内容:
-          <el-image style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item.fileUrl" fit="cover" />
+          <el-image v-for="(i,index) in item.fileUrl.split(',')" :key="index" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="i" fit="cover" />
         </div>
         <div v-if="item.signUrl" style="display: flex;align-items: flex-start">签字图片:
-          <el-image style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item.signUrl" fit="cover" />
+          <el-image v-for="(i,index) in item.signUrl.split(',')" :key="index" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="i" fit="cover" />
         </div>
       </div>
     </div>
diff --git a/src/views/specialWorkSystem/specialIndex/index.vue b/src/views/specialWorkSystem/specialIndex/index.vue
index fb47fb3..08ce261 100644
--- a/src/views/specialWorkSystem/specialIndex/index.vue
+++ b/src/views/specialWorkSystem/specialIndex/index.vue
@@ -15,10 +15,38 @@
       </el-button>
     </div>
     <div class="topChart">
+<!--      <div class="chart-item">-->
+<!--        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>-->
+<!--        <div class="chart-tit">-->
+<!--          <span class="tit">各事业部关联作业分析</span>-->
+<!--          <div class="filter-part">-->
+<!--            <el-cascader :teleported="false" v-model="chartSearch2.depId" @change="changeDep2()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>-->
+<!--            <el-select v-model="chartSearch2.type" size="small" :teleported="false" @change="changeType2()">-->
+<!--              <el-option-->
+<!--                  v-for="item in workType1"-->
+<!--                  :key="item.id"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.id"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <div class="chart" :id="slfx"></div>-->
+<!--      </div>-->
       <div class="chart-item">
         <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
         <div class="chart-tit">
-          <span class="tit">八大作业各分类分布图</span>
+          <span class="tit">特殊作业数量趋势</span>
+          <div class="filter-part filter-part2">
+            <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
+          </div>
+        </div>
+        <div class="chart" :id="zyqs"></div>
+      </div>
+      <div class="chart-item">
+        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
+        <div class="chart-tit">
+          <span class="tit">作业分类分布图</span>
           <div class="filter-part filter-part2">
             <el-cascader :teleported="false" v-model="chartSearch1.depId" @change="changeDep1()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
           </div>
@@ -31,81 +59,48 @@
           <el-radio :label='365' border>近一年</el-radio>
         </el-radio-group>
       </div>
-      <div class="chart-item">
-        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
-        <div class="chart-tit">
-          <span class="tit">各事业部关联作业分析</span>
-          <div class="filter-part">
-            <el-cascader :teleported="false" v-model="chartSearch2.depId" @change="changeDep2()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
-            <el-select v-model="chartSearch2.type" size="small" :teleported="false" @change="changeType2()">
-              <el-option
-                  v-for="item in workType1"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-              />
-            </el-select>
-          </div>
-        </div>
-        <div class="chart" :id="slfx"></div>
-      </div>
     </div>
-    <div class="topChart">
-      <div class="chart-item">
-        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
-        <div class="chart-tit">
-          <span class="tit">关联作业趋势图</span>
-          <div class="filter-part filter-part2">
-            <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
-          </div>
-        </div>
-        <div class="chart" :id="zyqs"></div>
-      </div>
-      <div class="chart-item">
-        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
-        <div class="chart-tit">
-          <span class="tit">作业警报记录</span>
-          <div class="filter-part">
-<!--            <el-switch-->
-<!--                v-model="chartSearch4.type"-->
-<!--                inline-prompt-->
-<!--                style="&#45;&#45;el-switch-on-color: #13ce66; &#45;&#45;el-switch-off-color: #13ce66"-->
-<!--                active-text="作业人"-->
-<!--                inactive-text="监护人"-->
-<!--            />-->
-            <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)">
-              <el-option label="近7天" :value="7"/>
-              <el-option label="近30天" :value="30"/>
-              <el-option label="近90天" :value="90"/>
-              <el-option label="近1年" :value="365"/>
-            </el-select>
-            <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()">
-              <el-option
-                  v-for="item in workType1"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-              />
-            </el-select>
-          </div>
-        </div>
-        <div class="chart">
-          <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">
-            <el-table-column property="operatorUname" label="姓名" align="center"/>
-            <el-table-column property="deptName" label="所属部门" align="center"/>
-            <el-table-column property="warningCount" label="异常报警次数" align="center"/>
-<!--            <el-table-column property="role" label="角色" align="center"/>-->
-<!--            <el-table-column property="isCard" label="是否持证" align="center">-->
-<!--              <template #default="scope">-->
-<!--                <span>{{scope.row.isCard == 1?'是':'否'}}</span>-->
-<!--              </template>-->
-<!--            </el-table-column>-->
-          </el-table>
-<!--          <el-button type="text" size="small" style="margin-top: 10px">所有记录>></el-button>-->
-        </div>
-        <!--            <div class="chart" :id="slfx"></div>-->
-      </div>
-    </div>
+<!--    <div class="topChart">-->
+<!--      <div class="chart-item">-->
+<!--        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>-->
+<!--        <div class="chart-tit">-->
+<!--          <span class="tit">关联作业趋势图</span>-->
+<!--          <div class="filter-part filter-part2">-->
+<!--            <el-cascader :teleported="false" v-model="chartSearch3.depId" @change="changeDep3()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <div class="chart" :id="zyqs"></div>-->
+<!--      </div>-->
+<!--      <div class="chart-item">-->
+<!--        <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>-->
+<!--        <div class="chart-tit">-->
+<!--          <span class="tit">作业警报记录</span>-->
+<!--          <div class="filter-part">-->
+<!--            <el-select :teleported="false" v-model="chartSearch4.days" size="small" @change="(value)=>changeTime4(value)">-->
+<!--              <el-option label="近7天" :value="7"/>-->
+<!--              <el-option label="近30天" :value="30"/>-->
+<!--              <el-option label="近90天" :value="90"/>-->
+<!--              <el-option label="近1年" :value="365"/>-->
+<!--            </el-select>-->
+<!--            <el-select :teleported="false" v-model="chartSearch4.workType" size="small" @change="changeType4()">-->
+<!--              <el-option-->
+<!--                  v-for="item in workType1"-->
+<!--                  :key="item.id"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.id"-->
+<!--              />-->
+<!--            </el-select>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <div class="chart">-->
+<!--          <el-table ref="multipleTableRef" :data="warningData" style="width: 100%" stripe border :header-cell-style="{ background: '#fafafa' }">-->
+<!--            <el-table-column property="operatorUname" label="姓名" align="center"/>-->
+<!--            <el-table-column property="deptName" label="所属部门" align="center"/>-->
+<!--            <el-table-column property="warningCount" label="异常报警次数" align="center"/>-->
+<!--          </el-table>-->
+<!--        </div>-->
+<!--      </div>-->
+<!--    </div>-->
     <div>
       <div class="homeCard">
         <dv-border-box10 v-if="isFull==true" class="item-bg"></dv-border-box10>
@@ -143,7 +138,7 @@
 <!--            </div>-->
 <!--          </el-col>-->
           <el-col :span="6" style="display:flex;align-items: center;">
-            <span style="white-space: nowrap;margin-left: 20px">申请时间:</span>
+            <span style="white-space: nowrap">申请时间:</span>
             <div class="grid-content topInfo">
               <el-date-picker
                   v-model="searchDate"
@@ -159,13 +154,19 @@
             </div>
           </el-col>
           <el-col :span="4" style="display:flex;align-items: center">
-            <span style="white-space: nowrap;margin-left: 20px">作业票编号:</span>
+            <span style="white-space: nowrap">作业票编号:</span>
             <div class="grid-content topInfo">
               <el-input
                   v-model="searchParams.workPermitNo"
                   placeholder="请输入作业票编号"
                   size="small"
               />
+            </div>
+          </el-col>
+          <el-col :span="4" style="display:flex;align-items: center">
+            <span style="white-space: nowrap">申请单位:</span>
+            <div class="grid-content topInfo">
+              <el-cascader :teleported="false" v-model="searchParams.applyDepId" @change="changeDep4()" :options="departmentList" :props="casProps" :show-all-levels="false" size="small"/>
             </div>
           </el-col>
           <el-button type="primary" style="margin-left: 20px" @click="searchRecord" size="small">查询</el-button>
@@ -205,16 +206,26 @@
             <el-table-column property="applyUname" label="申请人" align="center"/>
             <el-table-column property="applyDepName" label="申请单位" align="center"/>
             <el-table-column property="applyTime" label="申请时间" align="center"/>
-            <el-table-column property="startUname" label="开始人" align="center">
+            <el-table-column property="workLocation" label="作业地点" align="center">
               <template #default="scope">
-                <span>{{scope.row.startUname?scope.row.startUname:'--'}}</span>
+                <span>{{scope.row.workLocation?scope.row.workLocation:'--'}}</span>
               </template>
             </el-table-column>
-            <el-table-column property="finishUname" label="结束人" align="center">
+            <el-table-column property="workContent" label="作业内容" align="center">
               <template #default="scope">
-                <span>{{scope.row.finishUname?scope.row.finishUname:'--'}}</span>
+                <span>{{scope.row.workContent?scope.row.workContent:'--'}}</span>
               </template>
             </el-table-column>
+<!--            <el-table-column property="startUname" label="开始人" align="center">-->
+<!--              <template #default="scope">-->
+<!--                <span>{{scope.row.startUname?scope.row.startUname:'&#45;&#45;'}}</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
+<!--            <el-table-column property="finishUname" label="结束人" align="center">-->
+<!--              <template #default="scope">-->
+<!--                <span>{{scope.row.finishUname?scope.row.finishUname:'&#45;&#45;'}}</span>-->
+<!--              </template>-->
+<!--            </el-table-column>-->
             <el-table-column property="workStartTime" label="作业开始时间" align="center">
               <template #default="scope">
                 <span>{{scope.row.workStartTime?scope.row.workStartTime:'--'}}</span>
@@ -417,7 +428,8 @@
         workPermitNo: '',
         startTime: '',
         endTime: '',
-        workAllStatus: null
+        workAllStatus: null,
+        applyDepId: null
       },
       dialogReview: false,
       departmentList: [],
@@ -455,7 +467,6 @@
         operators: []
       },
       casProps: {
-        expandTrigger: 'hover',
         emitPath: false,
         value: 'depId',
         label: 'depName',
@@ -472,7 +483,8 @@
         { id: 5, name: '断路作业' },
         { id: 6, name: '高处作业' },
         { id: 7, name: '临时用电作业' },
-        { id: 8, name: '盲板抽堵作业' }
+        { id: 8, name: '盲板抽堵作业' },
+        { id: 9, name: '打开作业' }
       ],
       workTypeList: [
         { id: 1, name: '动火作业' },
@@ -482,7 +494,8 @@
         { id: 5, name: '断路作业' },
         { id: 6, name: '高处作业' },
         { id: 7, name: '临时用电作业' },
-        { id: 8, name: '盲板抽堵作业' }
+        { id: 8, name: '盲板抽堵作业' },
+        { id: 9, name: '打开作业' }
       ],
       workStatusList: [
         {
@@ -560,6 +573,9 @@
     }
     const changeDep3=()=>{
       getDepMonth()
+    }
+    const changeDep4=()=>{
+      searchRecord()
     }
     const toFullscreen =()=>{
       const element = document.getElementById('bigScreen')
@@ -831,6 +847,7 @@
     }
     // 刷新
     const reLoadData = async () => {
+      state.pageIndex = 1
       getMydepList()
     };
 
@@ -882,6 +899,7 @@
 
     // 关键词查询记录
     const searchRecord = async () => {
+      state.pageIndex = 1
       getMydepList()
     };
     // 重置搜索
@@ -892,7 +910,8 @@
             workPermitNo: '',
             startTime: '',
             endTime: '',
-            workAllStatus: null
+            workAllStatus: null,
+            applyDepId: null
       }
       state.searchDate = []
       state.pageIndex = 1
@@ -1058,6 +1077,7 @@
       changeType2,
       changeType4,
       changeDep3,
+      changeDep4,
       toFullscreen,
       // handleReview,
       openVideo,
@@ -1120,7 +1140,7 @@
     justify-content: space-between;
     align-items: flex-start;
     margin-bottom: 20px;
-    height: 40%;
+    height: 50%;
     &:last-of-type{
       margin-bottom: 0;
     }
@@ -1178,6 +1198,8 @@
         width: 100%;
         height: 85%;
         overflow-y: scroll;
+        scrollbar-width: none; /* firefox */
+        -ms-overflow-style: none; /* IE 10+ */
         .el-table{
           //:deep(.el-table__inner-wrapper){
           //  height: 100% !important;
diff --git a/src/views/system/saftyManage/component/saftyDialog.vue b/src/views/system/saftyManage/component/saftyDialog.vue
index 48a99ea..715a7fa 100644
--- a/src/views/system/saftyManage/component/saftyDialog.vue
+++ b/src/views/system/saftyManage/component/saftyDialog.vue
@@ -142,6 +142,10 @@
             {
               label: "盲板抽堵作业",
               value: 8
+            },
+            {
+              label: "打开作业",
+              value: 9
             }
           ]
         });
diff --git a/src/views/system/saftyManage/index.vue b/src/views/system/saftyManage/index.vue
index afdc253..c72c07d 100644
--- a/src/views/system/saftyManage/index.vue
+++ b/src/views/system/saftyManage/index.vue
@@ -154,6 +154,10 @@
               {
                 label: "盲板抽堵作业",
                 value: 8
+              },
+              {
+                label: "打开作业",
+                value: 9
               }
             ]
         });
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 5aca7e7..2c935bc 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -12,7 +12,7 @@
                     size="default"
                 ></el-cascader>
                 <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.username" placeholder="请输入用户名" style="max-width: 180px;margin-left: 10px;margin-right: 10px"> </el-input>
-                <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.realName" placeholder="请输入真实姓名" style="max-width: 180px"> </el-input>
+<!--                <el-input size="default" v-model.trim="userTableData.listQuery.searchParams.realName" placeholder="请输入真实姓名" style="max-width: 180px"> </el-input>-->
                 <el-button size="default" type="primary" class="ml10" @click="initUserTableData">
                     <el-icon>
                         <ele-Search />

--
Gitblit v1.9.2