From 8b7c2fe49917d670eb2a03cecda23ea50961c494 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期二, 09 八月 2022 09:26:29 +0800
Subject: [PATCH] lct

---
 src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue          |  280 
 src/components/contingencyManagement/processForm/processForm.vue                                                    |  137 
 src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue       |  271 
 src/components/contingencyManagement/panManagement/component/approval.vue                                           |  224 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue                     |  515 
 src/components/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue                     |  242 
 src/api/doublePreventSystem/rectify/index.ts                                                                        |   10 
 src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue            |  627 +
 src/components/facilityManagement/InstrumentationInformation/index.vue                                              |  376 
 src/views/contingencyManagement/contingency/component/openAdd.vue                                                   |    6 
 src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue                        |  571 +
 src/components/contingencyManagement/panManagement/component/openAdd.vue                                            |  419 
 src/components/facilityManagement/safetyEquipment/index.vue                                                         |  377 
 src/components/facilityManagement/EquipmentStatistics/index.vue                                                     |   91 
 src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue                   |  392 
 src/components/contingencyManagement/abolishDialog/component/formInformationTop.vue                                 |  144 
 src/components/contingencyManagement/emergencyPlanStartRecord/index.vue                                             |  405 
 src/components/facilityManagement/keyEquipment/index.vue                                                            |  384 
 src/layout/navBars/breadcrumb/user.vue                                                                              |   50 
 src/components/contingencyManagement/processForm/component/formInformationTop.vue                                   |  144 
 src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts                                        |   12 
 src/components/contingencyManagement/panManagement/component/upData.vue                                             |  125 
 src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue                                       | 1081 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue              |  213 
 src/components/emergencySupplies/index.vue                                                                          |    2 
 src/api/contingencyManagement/emergencyResources/index.ts                                                           |   38 
 .env.development                                                                                                    |    8 
 src/components/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue                                    |  137 
 src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue      |  221 
 src/api/doublePreventSystem/check/index.ts                                                                          |    6 
 src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue         |  443 
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue                |  544 
 src/components/equipmentDailog/repairDailog.vue                                                                     |   37 
 src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue                                           | 1276 +-
 src/components/contingencyManagement/contingency/component/openAdd.vue                                              |  503 
 src/components/equipmentDailog/Dailog.vue                                                                           |  511 
 src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue                 |    1 
 src/views/system/menu/component/menuDialog.vue                                                                      |    1 
 src/views/system/personShiftManage/scheduleManage/schedule/index.vue                                                |  576 +
 src/api/doublePreventSystem/record/index.ts                                                                         |    6 
 src/api/intellectInspectSystem/RFID/index.ts                                                                        |   10 
 src/components/contingencyManagement/abolishDialog/component/formInformationTops.vue                                |  318 
 src/components/contingencyManagement/processForm/component/formInformationTops.vue                                  |  312 
 src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue                         |  502 
 src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue                           |  144 
 src/components/checkTemplate/index.vue                                                                              |   29 
 src/api/contingencyManagement/emergencyDrillEvaluation/index.ts                                                     |   30 
 src/api/facilityManagement/index.ts                                                                                 |  140 
 src/views/facilityManagement/InstrumentationInformation/index.vue                                                   |   12 
 src/api/intellectInspectSystem/facilityAreaManage/index.ts                                                          |   14 
 src/components/equipmentDailog/maintenanceDailog.vue                                                                |  133 
 src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue                      |  388 
 src/components/contingencyManagement/contingency/index.vue                                                          |  393 
 src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue           |  307 
 src/components/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue                                   |  120 
 src/components/contingencyManagement/processForm/component/lowerPlate.vue                                           |  120 
 src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue                                                  | 1700 +-
 src/components/facilityManagement/deviceType/component/Dailog.vue                                                   |  190 
 src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue                                          | 1131 -
 src/components/facilityManagement/ProductionEquipment/index.vue                                                     |  375 
 src/components/contingencyManagement/contingency/component/upData.vue                                               |  125 
 src/views/contingencyManagement/contingency/index.vue                                                               |   16 
 src/components/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue                            |  240 
 src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts                                                |   30 
 src/api/contingencyManagement/contingency/index.ts                                                                  |   54 
 src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue                        |  375 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue             |  164 
 src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue                                      | 1075 
 src/components/equipmentDailog/detectDailog.vue                                                                     |   39 
 src/components/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue                                 |  510 
 src/api/accidentManagementSystem/index.ts                                                                           |  140 
 src/components/equipmentDailog/standardDailog.vue                                                                   |    2 
 src/views/system/personShiftManage/scheduleManage/strategy/index.vue                                                |  673 +
 .idea/gtqt.iml                                                                                                      |    4 
 src/components/contingencyManagement/panManagement/component/startUp.vue                                            |  160 
 src/components/accidentManagementSystem/accidentReport/index.vue                                                    |  387 
 src/components/contingencyManagement/panManagement/index.vue                                                        |  626 +
 src/components/contingencyManagement/abolishDialog/abolishDialog.vue                                                |  139 
 src/stores/themeConfig.ts                                                                                           |  250 
 src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts                                     |   30 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue                     |  224 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue                           |    2 
 src/api/contingencyManagement/emergencyMaterialsInspection/index.ts                                                 |   30 
 src/api/contingencyManagement/emergencyPlan/index.ts                                                                |   48 
 src/components/contingencyManagement/panManagement/component/approvalProcess.vue                                    |  202 
 src/components/contingencyManagement/panManagement/component/abolishLibrary.vue                                     |  219 
 src/components/iconSelector/index.vue                                                                               |  477 
 src/api/doublePreventSystem/work/index.ts                                                                           |    8 
 src/api/doublePreventSystem/checkUnit/index.ts                                                                      |   10 
 src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue                      |  325 
 src/components/accidentManagementSystem/workInjuryDeclaration/index.vue                                             |  406 
 src/api/doublePreventSystem/riskControlMeasure/index.ts                                                             |   12 
 src/api/contingencyManagement/emergencyDrillPlan/index.ts                                                           |   30 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue                                         |   16 
 src/components/contingencyManagement/contingency/component/addEmergencyPersonnel.vue                                |  314 
 src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue    |  841 +
 src/views/system/personShiftManage/personTimeManage/durationManage/index.vue                                        |   14 
 src/components/contingencyManagement/panManagement/component/initiateApproval.vue                                   |  159 
 src/views/contingencyManagement/panManagement/index.vue                                                             |   17 
 src/utils/request.ts                                                                                                |   20 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/index.vue                                 |  396 
 src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts                                        |   27 
 src/views/contingencyManagement/abolishDialog/abolishDialog.vue                                                     |    4 
 src/components/facilityManagement/deviceType/index.vue                                                              |  130 
 src/components/equipmentDailog/DailogS.vue                                                                          |  431 
 src/api/intellectInspectSystem/inspectTargetManage/index.ts                                                         |   14 
 src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue                                    |  404 
 .env.production                                                                                                     |    6 
 src/components/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue                                |  400 
 src/api/goalManagement/index.ts                                                                                     |  253 
 src/api/contingencyManagement/emergencyDrillExecute/index.ts                                                        |   30 
 src/api/doublePreventSystem/safetyRiskEvent/index.ts                                                                |   10 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue                             |    7 
 src/views/facilityManagement/keyEquipment/index.vue                                                                 |    2 
 src/api/intellectInspectSystem/inspectPointManage/index.ts                                                          |   12 
 src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue                  |  219 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue                    |  235 
 src/views/contingencyManagement/panManagement/component/openAdd.vue                                                 |   91 
 src/assets/icon.png                                                                                                 |    0 
 src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue                                      |    3 
 src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts                                                          |   10 
 src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts                                         |   12 
 src/components/accidentManagementSystem/accidentExpress/index.vue                                                   |  346 
 src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue |  775 +
 src/components/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue                                 |  195 
 src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts                                          |   57 
 src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts                                        |   58 
 src/api/contingencyManagement/emergencyPlanLog/index.ts                                                             |   54 
 src/components/accidentManagementSystem/accidentExpress/component/openAdd.vue                                       |  474 
 src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue                    |  549 
 src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts                                    |   38 
 .env                                                                                                                |    2 
 src/api/workInjuryDeclaration/index.ts                                                                              |  120 
 src/api/doublePreventSystem/productionDevice/index.ts                                                               |   10 
 src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue                          |  440 
 /dev/null                                                                                                           |  718 -
 src/components/accidentManagementSystem/accidentReport/component/openAdd.vue                                        |  665 +
 src/components/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue                            |  461 
 src/components/contingencyManagement/abolishDialog/component/lowerPlate.vue                                         |  120 
 src/App.vue                                                                                                         |   11 
 src/api/doublePreventSystem/report/index.ts                                                                         |    8 
 141 files changed, 27,902 insertions(+), 6,082 deletions(-)

diff --git a/.env b/.env
index 1287485..e0dead4 100644
--- a/.env
+++ b/.env
@@ -5,4 +5,6 @@
 VITE_OPEN = false
 
 # public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
+#VITE_PUBLIC_PATH = 'http://121.239.169.27:6006'
 VITE_PUBLIC_PATH = 'http://121.239.169.27:6006'
+#VITE_PUBLIC_PATH = 'http://192.168.0.179:6006'
diff --git a/.env.development b/.env.development
index 0f86f0b..125ccf8 100644
--- a/.env.development
+++ b/.env.development
@@ -2,7 +2,11 @@
 ENV = 'development'
 
 # 本地环境接口地址
-VITE_API_URL = 'http://192.168.0.35:8008'
-VITE_API_URL_OUT = 'http://192.168.0.35:8008'
+#VITE_API_URL = 'http://192.168.0.35:8008'
+VITE_API_URL = 'http://192.168.0.29:8008'
 #VITE_API_URL = 'http://192.168.0.29:8008'
 #VITE_API_URL = 'http://192.168.0.69:8008'
+#VITE_API_URL = 'http://192.168.0.52:8011/safeplatform'
+#VITE_API_URL = 'http://121.239.169.27:16006/safeplatform'
+#VITE_API_URL_OUT = 'http://192.168.0.52:8011/safeplatform-out'
+VITE_API_URL_OUT = 'http://121.239.169.27:16006/safeplatform-out'
diff --git a/.env.production b/.env.production
index bf8d144..ead0942 100644
--- a/.env.production
+++ b/.env.production
@@ -2,5 +2,7 @@
 ENV = 'production'
 
 # 线上环境接口地址
-VITE_API_URL = 'http://121.239.169.27:16008/safeplatform'
-VITE_API_URL_OUT = 'http://121.239.169.27:16008/safeplatform-out'
+#VITE_API_URL = 'http://121.239.169.27:16008/safeplatform'
+#VITE_API_URL_OUT = 'http://121.239.169.27:16008/safeplatform-out'
+VITE_API_URL = 'http://121.239.169.27:16006/safeplatform'
+VITE_API_URL_OUT = 'http://121.239.169.27:16006/safeplatform-out'
diff --git a/.idea/gtqt.iml b/.idea/gtqt.iml
index c956989..7d9b6ff 100644
--- a/.idea/gtqt.iml
+++ b/.idea/gtqt.iml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="WEB_MODULE" version="4">
   <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/src/views/riskWarningSys/warning/web/node_modules/vue/src/platforms" />
+    </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
diff --git a/src/App.vue b/src/App.vue
index 3b67207..c738754 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -76,11 +76,12 @@
                 proxy.mittBus.on('getI18nConfig', (locale: string) => {
                     (state.i18nLocale as string | null) = locale;
                 });
-                // 获取缓存中的布局配置
-                // if (Local.get('themeConfig')) {
-                //     storesThemeConfig.setThemeConfig(Local.get('themeConfig'));
-                //     document.documentElement.style.cssText = Local.get('themeConfigStyle');
-                // }
+                // 获取缓存中的布局配置;
+                if (Local.get('themeConfig')) {
+                    storesThemeConfig.setThemeConfig(themeConfig.value);
+                    // storesThemeConfig.setThemeConfig(Local.get('themeConfig'));
+                    document.documentElement.style.cssText = Local.get('themeConfigStyle');
+                }
                 // 获取缓存中的全屏配置
                 if (Session.get('isTagsViewCurrenFull')) {
                     stores.setCurrenFullscreen(Session.get('isTagsViewCurrenFull'));
diff --git a/src/api/accidentManagementSystem/index.ts b/src/api/accidentManagementSystem/index.ts
index 1094a53..9b18856 100644
--- a/src/api/accidentManagementSystem/index.ts
+++ b/src/api/accidentManagementSystem/index.ts
@@ -1,106 +1,106 @@
 import request from '/@/utils/request';
 
-export function accidentManagementSystemApi(){
+export function accidentManagementSystemApi() {
     return {
         // 事故快报一览
-        accidentList:(params:object)=>{
-         return request({
-             url:"/accidentExpress/page/list",
-             method:"post",
-             data:params
-         })
+        accidentList: (params: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/page/list',
+                method: 'post',
+                data: params
+            });
         },
         // 事故快报新增
-        accidentAdd:(params:object)=>{
+        accidentAdd: (params: object) => {
             return request({
-                url:"/accidentExpress/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/add',
+                method: 'post',
+                data: params
+            });
         },
         // 事故快报详情
-        accidentScarh:(params:number)=>{
+        accidentScarh: (params: number) => {
             return request({
-               url:`/accidentExpress/info/${params}`,
-               method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/info/${params}`,
+                method: 'get'
+            });
         },
-         // 事故快报修改
-        accidentView:(params:object)=>{
+        // 事故快报修改
+        accidentView: (params: object) => {
             return request({
-                url:"/accidentExpress/update",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/update',
+                method: 'post',
+                data: params
+            });
         },
-         // 事故快报删除
-         accidentDele:(params:object)=>{
-             return request({
-                url:`/accidentExpress/batchDelete`,
-                method:"post",
-                data:params
-             })
-         },
+        // 事故快报删除
+        accidentDele: (params: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/batchDelete`,
+                method: 'post',
+                data: params
+            });
+        },
         //  工伤申报一览
-        workList:(params:object)=>{
+        workList: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/page/list",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/page/list',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报新增
-        workAdd:(params:object)=>{
+        workAdd: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/add',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报详情
-        workScarh:(params:number)=>{
+        workScarh: (params: number) => {
             return request({
-               url:`/workInjuryDeclaration/info/${params}`,
-               method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/info/${params}`,
+                method: 'get'
+            });
         },
         // 工伤申报修改
-        workView:(params:object)=>{
+        workView: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/update",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/update',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报删除/批量删除
-        workDelete:(params:object)=>{
+        workDelete: (params: object) => {
             return request({
-               url:`/workInjuryDeclaration/batchDelete`,
-               method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/batchDelete`,
+                method: 'post',
+                data: params
+            });
         },
         // 伤亡人员一览
-        casualtyList:(id:number)=>{
+        casualtyList: (id: number) => {
             return request({
-                url:`/accidentExpress/casualty/list/${id}`,
-                method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/list/${id}`,
+                method: 'get'
+            });
         },
         // 伤亡人员新增
-        casualtyAdd:(params:object)=>{
+        casualtyAdd: (params: object) => {
             return request({
-                url:`/accidentExpress/casualty/add`,
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/add`,
+                method: 'post',
+                data: params
+            });
         },
         // 伤亡人员删除
-        casualtyDel:(id:number)=>{
+        casualtyDel: (id: number) => {
             return request({
-                url:`/accidentExpress/casualty/del/${id}`,
-                method:"get",
-            })
-        },
-    }
-}
\ No newline at end of file
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/del/${id}`,
+                method: 'get'
+            });
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/contingency/index.ts b/src/api/contingencyManagement/contingency/index.ts
index d3222b2..b54e382 100644
--- a/src/api/contingencyManagement/contingency/index.ts
+++ b/src/api/contingencyManagement/contingency/index.ts
@@ -1,83 +1,83 @@
 import request from '/@/utils/request';
 
-export function contingencyApi(){
-    return{
+export function contingencyApi() {
+    return {
         //应急队伍一览
         getTeamManagementList: (params: object) => {
             return request({
-                url: `/emergencyTeam/page/list`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/page/list`,
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急队伍新增
-        addEmergencyTeam: (params:object) => {
+        addEmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyTeam/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍详情
-        seeEmergencyTeam: (params:number) => {
+        seeEmergencyTeam: (params: number) => {
             return request({
-                url: `/emergencyTeam/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/info/${params}`,
                 method: 'get'
             });
         },
         // 应急队伍编辑
         editEmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyTeam/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍删除
-        deleteEmergencyTeam: (params:object) => {
+        deleteEmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyTeam/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/batchDelete`,
                 method: 'post',
-                data:params
+                data: params
             });
         },
         // 应急队伍人员一览
         getEmergencyTeamPersonnelList: (params: number) => {
             return request({
-                url: `/emergencyTeam/memberList/${params}`,
-                method: 'get',
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/memberList/${params}`,
+                method: 'get'
                 // data:params
-            })
+            });
         },
         // 应急队伍人员新增
-        addEmergencyTeamPersonnel: (params:object) => {
+        addEmergencyTeamPersonnel: (params: object) => {
             return request({
-                url: `/emergencyTeam/addMember`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/addMember`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍人员详情
-        seeEmergencyTeamPersonnel: (params:number) => {
+        seeEmergencyTeamPersonnel: (params: number) => {
             return request({
-                url: `/emergencyTeam/infoMember/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/infoMember/${params}`,
                 method: 'get'
             });
         },
         // 应急队伍人员编辑
         editEmergencyTeamPersonnel: (params: object) => {
             return request({
-                url: `/emergencyTeam/updateMember`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/updateMember`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍人员删除
-        deleteEmergencyTeamPersonnel: (params:object) => {
+        deleteEmergencyTeamPersonnel: (params: object) => {
             return request({
-                url: `/emergencyTeam/deleteMember/${params}`,
-                method: 'get',
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/deleteMember/${params}`,
+                method: 'get'
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts b/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts
index 547de4c..b2f81aa 100644
--- a/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts
+++ b/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function emergencyDrillEvaluationApi(){
-    return{
+export function emergencyDrillEvaluationApi() {
+    return {
         // 应急演练实施评价一览
         getEmergencyDrillEvaluationList: (params: object) => {
             return request({
-                url: '/emergencyDrillEvaluation/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillEvaluation/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急演练实施评价新增
-        addEmergencyDrillEvaluation: (params:object) => {
+        addEmergencyDrillEvaluation: (params: object) => {
             return request({
-                url: `/emergencyDrillEvaluation/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急演练实施评价详情
-        seeEmergencyDrillEvaluation: (params:number) => {
+        seeEmergencyDrillEvaluation: (params: number) => {
             return request({
-                url: `/emergencyDrillEvaluation/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/info/${params}`,
                 method: 'get'
             });
         },
         // 应急演练实施评价编辑
         editEmergencyDrillEvaluation: (params: object) => {
             return request({
-                url: `/emergencyDrillEvaluation/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急演练实施评价删除
-        deleteEmergencyDrillEvaluation: (params:object) => {
+        deleteEmergencyDrillEvaluation: (params: object) => {
             return request({
-                url: `/emergencyDrillEvaluation/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyDrillExecute/index.ts b/src/api/contingencyManagement/emergencyDrillExecute/index.ts
index a5b380a..911ac5f 100644
--- a/src/api/contingencyManagement/emergencyDrillExecute/index.ts
+++ b/src/api/contingencyManagement/emergencyDrillExecute/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function emergencyDrillExecuteApi(){
-    return{
+export function emergencyDrillExecuteApi() {
+    return {
         // 应急演练实施一览
         getEmergencyDrillExecuteList: (params: object) => {
             return request({
-                url: '/emergencyDrillExecute/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillExecute/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急演练实施新增
-        addEmergencyDrillExecute: (params:object) => {
+        addEmergencyDrillExecute: (params: object) => {
             return request({
-                url: `/emergencyDrillExecute/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急演练实施详情
-        seeEmergencyDrillExecute: (params:number) => {
+        seeEmergencyDrillExecute: (params: number) => {
             return request({
-                url: `/emergencyDrillExecute/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/info/${params}`,
                 method: 'get'
             });
         },
         // 应急演练实施编辑
         editEmergencyDrillExecute: (params: object) => {
             return request({
-                url: `/emergencyDrillExecute/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急演练实施删除
-        deleteEmergencyDrillExecute: (params:any) => {
+        deleteEmergencyDrillExecute: (params: any) => {
             return request({
-                url: `/emergencyDrillExecute/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyDrillPlan/index.ts b/src/api/contingencyManagement/emergencyDrillPlan/index.ts
index e4ad774..110d032 100644
--- a/src/api/contingencyManagement/emergencyDrillPlan/index.ts
+++ b/src/api/contingencyManagement/emergencyDrillPlan/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function releaseDrillPlanApi(){
-    return{
+export function releaseDrillPlanApi() {
+    return {
         //演练计划发布一览
         getReleaseDrillPlanList: (params: object) => {
             return request({
-                url: '/emergencyDrillPlan/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillPlan/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 演练计划发布新增
-        addReleaseDrillPlan: (params:object) => {
+        addReleaseDrillPlan: (params: object) => {
             return request({
-                url: `/emergencyDrillPlan/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/add`,
                 method: 'post',
                 data: params
             });
         },
         // 演练计划发布详情
-        seeReleaseDrillPlan: (params:number) => {
+        seeReleaseDrillPlan: (params: number) => {
             return request({
-                url: `/emergencyDrillPlan/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/info/${params}`,
                 method: 'get'
             });
         },
         // 演练计划发布编辑
         editReleaseDrillPlan: (params: object) => {
             return request({
-                url: `/emergencyDrillPlan/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/update`,
                 method: 'post',
                 data: params
             });
         },
         // 演练计划发布删除
-        deleteReleaseDrillPlan: (params:object) => {
+        deleteReleaseDrillPlan: (params: object) => {
             return request({
-                url: `/emergencyDrillPlan/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts b/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts
index d9571c4..0809c93 100644
--- a/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts
+++ b/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function emergencyMaterialsInspectionApi(){
-    return{
+export function emergencyMaterialsInspectionApi() {
+    return {
         //应急物资检查一览
         getEmergencyMaterialsInspectionList: (params: object) => {
             return request({
-                url: '/emergencySuppliesInspect/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencySuppliesInspect/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急物资检查新增
-        addEmergencyMaterialsInspection: (params:object) => {
+        addEmergencyMaterialsInspection: (params: object) => {
             return request({
-                url: `/emergencySuppliesInspect/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急物资检查详情
-        seeEmergencyMaterialsInspection: (params:number) => {
+        seeEmergencyMaterialsInspection: (params: number) => {
             return request({
-                url: `/emergencySuppliesInspect/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/info/${params}`,
                 method: 'get'
             });
         },
         // 应急物资检查编辑
         editEmergencyMaterialsInspection: (params: object) => {
             return request({
-                url: `/emergencySuppliesInspect/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急物资检查删除
-        deleteEmergencyMaterialsInspection: (params:object) => {
+        deleteEmergencyMaterialsInspection: (params: object) => {
             return request({
-                url: `/emergencySuppliesInspect/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyPlan/index.ts b/src/api/contingencyManagement/emergencyPlan/index.ts
index fb79a63..4b7a323 100644
--- a/src/api/contingencyManagement/emergencyPlan/index.ts
+++ b/src/api/contingencyManagement/emergencyPlan/index.ts
@@ -1,64 +1,64 @@
 import request from '/@/utils/request';
 
-export function emergencyPlanApi(){
-    return{
+export function emergencyPlanApi() {
+    return {
         // 应急预案管理一览
         getEmergencyPlanList: (params: object) => {
             return request({
-                url: '/emergencyPlan/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlan/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急预案管理新增
         addEmergencyPlan: (params: object) => {
             return request({
-                url: `/emergencyPlan/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍详情
-        seeEmergencyTeam: (params:number) => {
+        seeEmergencyTeam: (params: number) => {
             return request({
-                url: `/emergencyPlan/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/info/${params}`,
                 method: 'get'
             });
         },
         // 应急队伍编辑
         editEmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyPlan/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍删除
-        deleteEmergencyTeam: (params:object) => {
+        deleteEmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyPlan/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/batchDelete`,
                 method: 'post',
                 data: params
             });
         },
         // 应急队伍废止
-        EmergencyTeam: (params:object) => {
+        EmergencyTeam: (params: object) => {
             return request({
-                url: `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=true`,
-                method: 'get',
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=true`,
+                method: 'get'
             });
         },
         // 应急队伍还原
-        reductionEmergencyTeam: (params:number) => {
+        reductionEmergencyTeam: (params: number) => {
             return request({
-                url: `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=false`,
-                method: 'get',
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=false`,
+                method: 'get'
             });
         },
         // 应急预案管理审批新增
         approvalEmergencyPlan: (params: object) => {
             return request({
-                url: `/emergencyWorkApprove/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/add`,
                 method: 'post',
                 data: params
             });
@@ -66,7 +66,7 @@
         // 应急预案管理审批修改
         editApprovalEmergencyPlan: (params: object) => {
             return request({
-                url: `/emergencyWorkApprove/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/update`,
                 method: 'post',
                 data: params
             });
@@ -74,7 +74,7 @@
         // 应急预案管理审批查看
         approvalProcessEmergencyPlan: (params: number) => {
             return request({
-                url: `/emergencyWorkApprove/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/info/${params}`,
                 method: 'get',
                 data: params
             });
@@ -82,10 +82,10 @@
         // 审批一览
         processEmergencyPlan: (params: object) => {
             return request({
-                url: `/emergencyWorkApprove/page/list`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/page/list`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyPlanLog/index.ts b/src/api/contingencyManagement/emergencyPlanLog/index.ts
index ce58752..80c1885 100644
--- a/src/api/contingencyManagement/emergencyPlanLog/index.ts
+++ b/src/api/contingencyManagement/emergencyPlanLog/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function emergencyPlanLogApi(){
-    return{
+export function emergencyPlanLogApi() {
+    return {
         // 应急预案启动记录一览
         getEmergencyPlanLogList: (params: object) => {
             return request({
-                url: '/emergencyPlanLog/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急预案启动记录新增
-        addEmergencyPlanLog:(params:object)=>{
+        addEmergencyPlanLog: (params: object) => {
             return request({
-                url:"/emergencyPlanLog/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/add',
+                method: 'post',
+                data: params
+            });
         },
         // 应急预案启动记录详情
-        seeEmergencyPlanLog:(params:number)=>{
+        seeEmergencyPlanLog: (params: number) => {
             return request({
-                url:`/emergencyPlanLog/info/${params}`,
-                method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlanLog/info/${params}`,
+                method: 'get'
+            });
         },
         // 应急预案启动记录修改
-        editEmergencyPlanLog:(params:object)=>{
+        editEmergencyPlanLog: (params: object) => {
             return request({
-                url:"/emergencyPlanLog/update",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/update',
+                method: 'post',
+                data: params
+            });
         },
         // 应急预案启动记录删除
-        deleteEmergencyPlanLog:(params:object)=>{
+        deleteEmergencyPlanLog: (params: object) => {
             return request({
-                url:`/emergencyPlanLog/batchDelete`,
-                method:"post",
-                data:params
-            })
-        },
-    }
-}
\ No newline at end of file
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlanLog/batchDelete`,
+                method: 'post',
+                data: params
+            });
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/emergencyResources/index.ts b/src/api/contingencyManagement/emergencyResources/index.ts
index 15f2778..d1c0a9b 100644
--- a/src/api/contingencyManagement/emergencyResources/index.ts
+++ b/src/api/contingencyManagement/emergencyResources/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function emergencySuppliesApi(){
-    return{
+export function emergencySuppliesApi() {
+    return {
         // 应急物资一览
-        getEmergencySuppliesList:(params:object)=>{
+        getEmergencySuppliesList: (params: object) => {
             return request({
-                url:"/emergencySupplies/page/list",
-                method:'post',
-                data:params,
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencySupplies/page/list',
+                method: 'post',
+                data: params
             });
         },
         // 应急物资新增
-        addEmergencySupplies:(params:object)=>{
+        addEmergencySupplies: (params: object) => {
             return request({
-                url:"/emergencySupplies/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencySupplies/add',
+                method: 'post',
+                data: params
+            });
         },
         // 应急物资详情
-        seeEmergencySupplies: (params:number) => {
+        seeEmergencySupplies: (params: number) => {
             return request({
-                url: `/emergencySupplies/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/info/${params}`,
                 method: 'get'
             });
         },
         // 应急物资编辑
         editEmergencySupplies: (params: object) => {
             return request({
-                url: `/emergencySupplies/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急物资删除
-        deleteEmergencySupplies: (params:object) => {
+        deleteEmergencySupplies: (params: object) => {
             return request({
-                url: `/emergencySupplies/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts b/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts
index b0412ce..082041c 100644
--- a/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts
+++ b/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts
@@ -1,45 +1,45 @@
 import request from '/@/utils/request';
 
-export function maintenanceEmergencyMaterialsApi(){
-    return{
+export function maintenanceEmergencyMaterialsApi() {
+    return {
         //应急物资保养一览
         getMaintenanceEmergencyMaterialsList: (params: object) => {
             return request({
-                url: '/emergencySuppliesMaintain/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/emergencySuppliesMaintain/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 应急物资保养新增
-        addMaintenanceEmergencyMaterials: (params:object) => {
+        addMaintenanceEmergencyMaterials: (params: object) => {
             return request({
-                url: `/emergencySuppliesMaintain/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/add`,
                 method: 'post',
                 data: params
             });
         },
         // 应急物资保养详情
-        seeMaintenanceEmergencyMaterials: (params:number) => {
+        seeMaintenanceEmergencyMaterials: (params: number) => {
             return request({
-                url: `/emergencySuppliesMaintain/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/info/${params}`,
                 method: 'get'
             });
         },
         // 应急物资保养编辑
         editMaintenanceEmergencyMaterials: (params: object) => {
             return request({
-                url: `/emergencySuppliesMaintain/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/update`,
                 method: 'post',
                 data: params
             });
         },
         // 应急物资保养删除
-        deleteMaintenanceEmergencyMaterials: (params:object) => {
+        deleteMaintenanceEmergencyMaterials: (params: object) => {
             return request({
-                url: `/emergencySuppliesMaintain/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/batchDelete`,
                 method: 'post',
                 data: params
             });
-        },
-    }
-}
\ No newline at end of file
+        }
+    };
+}
diff --git a/src/api/doublePreventSystem/check/index.ts b/src/api/doublePreventSystem/check/index.ts
index 031fb54..2bf8d00 100644
--- a/src/api/doublePreventSystem/check/index.ts
+++ b/src/api/doublePreventSystem/check/index.ts
@@ -5,7 +5,7 @@
         // v1
         getHiddenCheckList: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/select/getRectifyOverPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/select/getRectifyOverPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         submitHiddenCheck: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/update/reportRectify`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/reportRectify`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         getAllHiddenCheckList: () => {
             return request({
-                url: `/prevent/device/select/listDevices`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/checkUnit/index.ts b/src/api/doublePreventSystem/checkUnit/index.ts
index 8085f50..70a60d9 100644
--- a/src/api/doublePreventSystem/checkUnit/index.ts
+++ b/src/api/doublePreventSystem/checkUnit/index.ts
@@ -5,7 +5,7 @@
         // v1
         getCheckUnitList: (data: object) => {
             return request({
-                url: `/prevent/taskUnit/select/getTaskUnitPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/select/getTaskUnitPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addCheckUnit: (data: object) => {
             return request({
-                url: `/prevent/taskUnit/insert/saveTaskUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/insert/saveTaskUnit`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modCheckUnit: (data: object) => {
             return request({
-                url: `/prevent/taskUnit/update/updateTaskUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/update/updateTaskUnit`,
                 method: 'post',
                 data: data
             });
@@ -29,14 +29,14 @@
         // v1
         deleteCheckUnit: (data: object) => {
             return request({
-                url: `/prevent/taskUnit/delete/deleteTaskUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/delete/deleteTaskUnit`,
                 method: 'post',
                 data: data
             });
         },
         getAllCheckUnitList: () => {
             return request({
-                url: `/prevent/taskUnit/select/listTaskUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/select/listTaskUnit`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/productionDevice/index.ts b/src/api/doublePreventSystem/productionDevice/index.ts
index 4f59f32..f090b09 100644
--- a/src/api/doublePreventSystem/productionDevice/index.ts
+++ b/src/api/doublePreventSystem/productionDevice/index.ts
@@ -5,7 +5,7 @@
         // v1
         getProductionDeviceList: (data: object) => {
             return request({
-                url: `/prevent/device/select/getDevicePage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/select/getDevicePage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addProductionDevice: (data: object) => {
             return request({
-                url: `/prevent/device/insert/saveDevice`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/insert/saveDevice`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modProductionDevice: (data: object) => {
             return request({
-                url: `/prevent/device/update/updateDevice`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/update/updateDevice`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteProductionDevice: (data: object) => {
             return request({
-                url: `/prevent/device/delete/deleteDevice`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/delete/deleteDevice`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         getAllProductionDeviceList: () => {
             return request({
-                url: `/prevent/device/select/listDevices`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/record/index.ts b/src/api/doublePreventSystem/record/index.ts
index 2ee8ad4..38122d7 100644
--- a/src/api/doublePreventSystem/record/index.ts
+++ b/src/api/doublePreventSystem/record/index.ts
@@ -5,7 +5,7 @@
         // v1
         getRecordList: (data: object) => {
             return request({
-                url: `/prevent/checkTask/select/getTaskPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkTask/select/getTaskPage`,
                 method: 'post',
                 data: data
             });
@@ -14,7 +14,7 @@
         // v1
         submitRecord: (data: object) => {
             return request({
-                url: `/prevent/checkTask/update/updateTask`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkTask/update/updateTask`,
                 method: 'post',
                 data: data
             });
@@ -22,7 +22,7 @@
 
         getTask: (data: object) => {
             return request({
-                url: `/prevent/checkTask/update/taskToUser`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkTask/update/taskToUser`,
                 method: 'post',
                 data: data
             });
diff --git a/src/api/doublePreventSystem/rectify/index.ts b/src/api/doublePreventSystem/rectify/index.ts
index d9e054e..eb04e43 100644
--- a/src/api/doublePreventSystem/rectify/index.ts
+++ b/src/api/doublePreventSystem/rectify/index.ts
@@ -5,7 +5,7 @@
         // v1
         getHiddenRectifyList: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/select/getDangerRectifyPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/select/getDangerRectifyPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         submitHiddenRectify: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/update/applyReport`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/applyReport`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         delayHiddenRectifyTime: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/update/timeOutRectify`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/timeOutRectify`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteHiddenRectify: (data: object) => {
             return request({
-                url: `/prevent/dangerRectify/delete/deleteDangerRectify`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/delete/deleteDangerRectify`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         getAllHiddenRectifyList: () => {
             return request({
-                url: `/prevent/device/select/listDevices`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/report/index.ts b/src/api/doublePreventSystem/report/index.ts
index 9d2f64f..89e12ef 100644
--- a/src/api/doublePreventSystem/report/index.ts
+++ b/src/api/doublePreventSystem/report/index.ts
@@ -5,7 +5,7 @@
         // v1
         getHiddenReportList: (data: object) => {
             return request({
-                url: `/prevent/dangerManage/select/getDangerManagePage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/select/getDangerManagePage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addHiddenReport: (data: object) => {
             return request({
-                url: `/prevent/dangerManage/insert/saveDangerManage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/insert/saveDangerManage`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modHiddenReport: (data: object) => {
             return request({
-                url: `/prevent/dangerManage/update/updateDangerManage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/update/updateDangerManage`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteHiddenReport: (data: object) => {
             return request({
-                url: `/prevent/dangerManage/delete/deleteDangerManage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/delete/deleteDangerManage`,
                 method: 'post',
                 data: data
             });
diff --git a/src/api/doublePreventSystem/riskControlMeasure/index.ts b/src/api/doublePreventSystem/riskControlMeasure/index.ts
index 28f2311..c9d4955 100644
--- a/src/api/doublePreventSystem/riskControlMeasure/index.ts
+++ b/src/api/doublePreventSystem/riskControlMeasure/index.ts
@@ -5,7 +5,7 @@
         // v1
         getRiskControlMeasureList: (data: object) => {
             return request({
-                url: `/prevent/riskControlMeasure/select/getRiskControlMeasurePage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/getRiskControlMeasurePage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addRiskControlMeasure: (data: object) => {
             return request({
-                url: `/prevent/riskControlMeasure/insert/saveRiskControlMeasure`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/insert/saveRiskControlMeasure`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modRiskControlMeasure: (data: object) => {
             return request({
-                url: `/prevent/riskControlMeasure/update/updateRiskControlMeasure`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/update/updateRiskControlMeasure`,
                 method: 'post',
                 data: data
             });
@@ -29,20 +29,20 @@
         // v1
         deleteRiskControlMeasure: (data: object) => {
             return request({
-                url: `/prevent/riskControlMeasure/delete/deleteRiskControlMeasure`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/delete/deleteRiskControlMeasure`,
                 method: 'post',
                 data: data
             });
         },
         getAllRiskControlMeasureList: () => {
             return request({
-                url: `/prevent/riskControlMeasure/select/listControlMeasure`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/listControlMeasure`,
                 method: 'post'
             });
         },
         getClassifyData: () => {
             return request({
-                url: `/prevent/riskControlMeasure/select/listMeasures`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/listMeasures`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts b/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
index 8f93426..58e8d2f 100644
--- a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
+++ b/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts
@@ -5,7 +5,7 @@
         // v1
         getSafetyRiskAnalyseUnitList: (data: object) => {
             return request({
-                url: `/prevent/riskAnaUnit/select/getRiskUnitPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/select/getRiskUnitPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addSafetyRiskAnalyseUnit: (data: object) => {
             return request({
-                url: `/prevent/riskAnaUnit/insert/saveRiskAnaUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/insert/saveRiskAnaUnit`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modSafetyRiskAnalyseUnit: (data: object) => {
             return request({
-                url: `/prevent/riskAnaUnit/update/updateRiskAnaUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/update/updateRiskAnaUnit`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteSafetyRiskAnalyseUnit: (data: object) => {
             return request({
-                url: `/prevent/riskAnaUnit/delete/deleteRiskAnaUnit`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/delete/deleteRiskAnaUnit`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         getAllSafetyRiskAnalyseUnitList: () => {
             return request({
-                url: `/prevent/riskEvent/select/listRiskUnits`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/listRiskUnits`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/safetyRiskEvent/index.ts b/src/api/doublePreventSystem/safetyRiskEvent/index.ts
index 0aa7087..4eb648e 100644
--- a/src/api/doublePreventSystem/safetyRiskEvent/index.ts
+++ b/src/api/doublePreventSystem/safetyRiskEvent/index.ts
@@ -5,7 +5,7 @@
         // v1
         getSafetyRiskEventList: (data: object) => {
             return request({
-                url: `/prevent/riskEvent/select/getRiskEventPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/getRiskEventPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addSafetyRiskEvent: (data: object) => {
             return request({
-                url: `/prevent/riskEvent/insert/saveRiskEvent`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/insert/saveRiskEvent`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modSafetyRiskEvent: (data: object) => {
             return request({
-                url: `/prevent/riskEvent/update/updateRiskEvent`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/update/updateRiskEvent`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteSafetyRiskEvent: (data: object) => {
             return request({
-                url: `/prevent/riskEvent/delete/deleteRiskEvent`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/delete/deleteRiskEvent`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         getAllSafetyRiskEventList: () => {
             return request({
-                url: `/prevent/riskEvent/select/getListEvents`,
+                url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/getListEvents`,
                 method: 'post'
             });
         }
diff --git a/src/api/doublePreventSystem/work/index.ts b/src/api/doublePreventSystem/work/index.ts
index 71a64bd..c4737e4 100644
--- a/src/api/doublePreventSystem/work/index.ts
+++ b/src/api/doublePreventSystem/work/index.ts
@@ -5,7 +5,7 @@
         // v1
         getWorkList: (data: object) => {
             return request({
-                url: `/prevent/checkWork/select/getCheckWorkPage`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkWork/select/getCheckWorkPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addWork: (data: object) => {
             return request({
-                url: `/prevent/checkWork/insert/saveCheckWork`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkWork/insert/saveCheckWork`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modWork: (data: object) => {
             return request({
-                url: `/prevent/checkWork/update/updateCheckWork`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkWork/update/updateCheckWork`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteWork: (data: object) => {
             return request({
-                url: `/prevent/checkWork/delete/deleteCheckWork`,
+                url: import.meta.env.VITE_API_URL + `/prevent/checkWork/delete/deleteCheckWork`,
                 method: 'post',
                 data: data
             });
diff --git a/src/api/facilityManagement/index.ts b/src/api/facilityManagement/index.ts
index 52ea447..ffb78be 100644
--- a/src/api/facilityManagement/index.ts
+++ b/src/api/facilityManagement/index.ts
@@ -1,104 +1,104 @@
 import request from '/@/utils/request';
-export function facilityManagementApi(){
-    return{
+export function facilityManagementApi() {
+    return {
         // 设备设施类型管理 查询单条数据
-        getequipmentTypeMngDetail:(params:any)=>{
+        getequipmentTypeMngDetail: (params: any) => {
             return request({
-                url:`/equipmentTypeMng/selectOne/${params}`,
-                method:"get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 设备设施类型管理 新增或者修改数据
-        getequipmentTypeMngAddOrUpdate:(params:object)=>{
+        getequipmentTypeMngAddOrUpdate: (params: object) => {
             return request({
-                url:"/equipmentTypeMng/addOrUpdate",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/equipmentTypeMng/addOrUpdate',
+                method: 'post',
+                data: params
+            });
         },
-         // 设备设施类型管理 删除 
-         getequipmentTypeMngDelete:(params:any)=>{
+        // 设备设施类型管理 删除
+        getequipmentTypeMngDelete: (params: any) => {
             return request({
-                url:`/equipmentTypeMng/delete`,
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/delete`,
+                method: 'post',
+                data: params
+            });
         },
-         // 设备设施类型管理 查询树状数据 
-         getequipmentTypeMngTreeData:()=>{
+        // 设备设施类型管理 查询树状数据
+        getequipmentTypeMngTreeData: () => {
             return request({
-                url:`/equipmentTypeMng/treeData`,
-                method:"get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/treeData`,
+                method: 'get'
+            });
         },
         // 仪器仪表信息、生产设备设施、安全设备设施 查询单条数据
-        getequipmentInfoDetail:(params:any)=>{
+        getequipmentInfoDetail: (params: any) => {
             return request({
-                url:`/equipmentInfo/selectOne/${params}`,
-                method:"get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 仪器仪表信息、生产设备设施、安全设备设施 新增或者修改数据
-        getequipmentInfoAddOrUpdate:(params:object)=>{
+        getequipmentInfoAddOrUpdate: (params: object) => {
             return request({
-                url:"/equipmentInfo/addOrUpdate",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/addOrUpdate',
+                method: 'post',
+                data: params
+            });
         },
-        // 仪器仪表信息、生产设备设施、安全设备设施 删除 
-        getequipmentInfoDelete:(params:any)=>{
+        // 仪器仪表信息、生产设备设施、安全设备设施 删除
+        getequipmentInfoDelete: (params: any) => {
             return request({
-                url:`/equipmentInfo/delete`,
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 仪器仪表信息、生产设备设施、安全设备设施 分页查询数据
-        getequipmentInfoList:(params:object)=>{
+        getequipmentInfoList: (params: object) => {
             return request({
-                url:"/equipmentInfo/page/list",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/page/list',
+                method: 'post',
+                data: params
+            });
         },
-         // 仪器仪表信息、生产设备设施、安全设备设施 统计
-         getequipmentInfoStatistics:()=>{
+        // 仪器仪表信息、生产设备设施、安全设备设施 统计
+        getequipmentInfoStatistics: () => {
             return request({
-                url:`/equipmentInfo/statistics`,
-                method:"get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/statistics`,
+                method: 'get'
+            });
         },
         // 重点监管装置/设备 查询单条数据
-        getkeypointEquipmentInfoDetail:(params:any)=>{
+        getkeypointEquipmentInfoDetail: (params: any) => {
             return request({
-                url:`/keypointEquipmentInfo/selectOne/${params}`,
-                method:"get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 重点监管装置/设备 新增或者修改数据
-        getkeypointEquipmentInfoAddOrUpdate:(params:object)=>{
+        getkeypointEquipmentInfoAddOrUpdate: (params: object) => {
             return request({
-                url:`/keypointEquipmentInfo/addOrUpdate`,
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/addOrUpdate`,
+                method: 'post',
+                data: params
+            });
         },
         // 重点监管装置/设备 删除
-        getkeypointEquipmentInfoDetele:(params:any)=>{
+        getkeypointEquipmentInfoDetele: (params: any) => {
             return request({
-                url:`/keypointEquipmentInfo/delete`,
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/delete`,
+                method: 'post',
+                data: params
+            });
         },
-         // 重点监管装置/设备 分页查询数据
-         getkeypointEquipmentInfoAddOrList:(params:object)=>{
+        // 重点监管装置/设备 分页查询数据
+        getkeypointEquipmentInfoAddOrList: (params: object) => {
             return request({
-                url:`/keypointEquipmentInfo/page/list`,
-                method:"post",
-                data:params
-            })
-        },
-    }
-}
\ No newline at end of file
+                url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/page/list`,
+                method: 'post',
+                data: params
+            });
+        }
+    };
+}
diff --git a/src/api/goalManagement/index.ts b/src/api/goalManagement/index.ts
index 83745aa..412f1a7 100644
--- a/src/api/goalManagement/index.ts
+++ b/src/api/goalManagement/index.ts
@@ -1,276 +1,273 @@
-
 import request from '/@/utils/request';
 export function goalManagementApi() {
     return {
         // 目标设置、目标指标分解列表
         getTargetMngList: (params: object) => {
             return request({
-                url: "/targetMng/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetMng/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 目标设置详情
         getTargetMngDetail: (params: any) => {
             return request({
-                url: `/targetMng/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetMng/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 目标设置新增或者修改数据
         getTargetMngAddOrupdata: (params: object) => {
             return request({
-                url: "/targetMng/addOrUpdate",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetMng/addOrUpdate',
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 目标设置删除
         getTargetMngDelete: (params: any) => {
             return request({
-                url: `/targetMng/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetMng/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 目标指标分解-新增或者修改数据
         gettargetDivideDetail: (params: object) => {
             return request({
-                url: "/targetDivideDetail/addOrUpdate",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetDivideDetail/addOrUpdate',
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 统计
         getEquipmentInfo: () => {
             return request({
-                url: "/equipmentInfo/statistics",
-                method: "get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/statistics',
+                method: 'get'
+            });
         },
         // 目标责任书 分页查询数据
         gettargetDutyfileInfoList: (params: object) => {
             return request({
-                url: "/targetDutyfileInfo/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetDutyfileInfo/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 目标责任书 查询单条数据
         gettargetDutyfileInfoDetail: (params: number) => {
             return request({
-                url: `/targetDutyfileInfo/selectOne/${params}`,
-                method: "get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/selectOne/${params}`,
+                method: 'get'
+            });
         },
-        // 目标责任书 新增或者修改数据 
+        // 目标责任书 新增或者修改数据
         gettargetDutyfileInfoAddorUpdata: (params: any) => {
             return request({
-                url: `/targetDutyfileInfo/addOrUpdate`,
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/addOrUpdate`,
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 目标责任书 删除
         gettargetDutyfileInfoDelete: (params: any) => {
             return request({
-                url: `/targetDutyfileInfo/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 奖惩标准设定 分页查询数据
         getrewardPunishmentStandardList: (params: object) => {
             return request({
-                url: "/rewardPunishmentStandard/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentStandard/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        // 奖惩标准设定 查询单条数据 
+        // 奖惩标准设定 查询单条数据
         getrewardPunishmentStandardDetail: (params: any) => {
             return request({
-                url: `/rewardPunishmentStandard/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentStandard/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 奖惩标准设定 新增或者修改数据
         getrewardPunishmentStandardaddOrUpdate: (params: object) => {
             return request({
-                url: "/rewardPunishmentStandard/addOrUpdate",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentStandard/addOrUpdate',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        // 奖惩标准设定 删除 
+        // 奖惩标准设定 删除
         getrewardPunishmentStandardDelete: (params: any) => {
             return request({
-                url: `/rewardPunishmentStandard/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentStandard/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 奖惩记录 分页查询数据
         getrewardPunishmentList: (params: object) => {
             return request({
-                url: "/rewardPunishmentDetail/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentDetail/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        // 奖惩记录 查询单条数据 
+        // 奖惩记录 查询单条数据
         getrewardPunishmentDetail: (params: any) => {
             return request({
-                url: `/rewardPunishmentDetail/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 奖惩记录 新增或者修改数据
         getrewardPunishmentAddOrUpdate: (params: object) => {
             return request({
-                url: `/rewardPunishmentDetail/addOrUpdate`,
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/addOrUpdate`,
+                method: 'post',
                 data: params
-            })
+            });
         },
-        // 奖惩记录 删除 
+        // 奖惩记录 删除
         getrewardPunishmentDelete: (params: any) => {
             return request({
-                url: `/rewardPunishmentDetail/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 绩效考核管理 安全考核管理 分页查询数据
         getexamineMngList: (params: object) => {
             return request({
-                url: "/examineMng/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/examineMng/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  绩效考核管理 安全考核管理 查询单条数据 
+        //  绩效考核管理 安全考核管理 查询单条数据
         getexamineMngDetail: (params: any) => {
             return request({
-                url: `/examineMng/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/examineMng/selectOne/${params}`,
+                method: 'get'
+            });
         },
         //  绩效考核管理 安全考核管理 新增或者修改数据
         getexamineMngAddOrUpdate: (params: object) => {
             return request({
-                url: `/examineMng/addOrUpdate`,
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + `/examineMng/addOrUpdate`,
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  绩效考核管理 安全考核管理 删除 
+        //  绩效考核管理 安全考核管理 删除
         getexamineMngDelete: (params: any) => {
             return request({
-                url: `/examineMng/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/examineMng/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 绩效考核管理 考核标准设定 分页查询数据
         getexamineTemplateList: (params: object) => {
             return request({
-                url: "/examineTemplate/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/examineTemplate/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  绩效考核管理 考核标准设定 查询单条数据 
+        //  绩效考核管理 考核标准设定 查询单条数据
         getexamineTemplateDetail: (params: any) => {
             return request({
-                url: `/examineTemplate/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/selectOne/${params}`,
+                method: 'get'
+            });
         },
         //  绩效考核管理 考核标准设定 新增或者修改数据
         getexamineTemplateAddOrUpdate: (params: object) => {
             return request({
-                url: `/examineTemplate/addOrUpdate`,
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/addOrUpdate`,
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  绩效考核管理 考核标准设定 删除 
+        //  绩效考核管理 考核标准设定 删除
         getexamineTemplateDelete: (params: any) => {
             return request({
-                url: `/examineTemplate/delete`,
-                method: "post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/delete`,
+                method: 'post',
+                data: params
+            });
         },
         // 目标汇总 分页查询数据
         gettargetDutySummaryList: (params: object) => {
             return request({
-                url: "/targetDutySummary/page/list",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetDutySummary/page/list',
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  目标汇总 查询单条数据 
+        //  目标汇总 查询单条数据
         gettargetDutySummaryDetail: (params: any) => {
             return request({
-                url: `/targetDutySummary/selectOne/${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/selectOne/${params}`,
+                method: 'get'
+            });
         },
         //  目标汇总 新增或者修改数据
         gettargetDutySummaryAddOrUpdate: (params: object) => {
             return request({
-                url: `/targetDutySummary/addOrUpdate`,
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/addOrUpdate`,
+                method: 'post',
                 data: params
-            })
+            });
         },
-        //  目标汇总 删除 
+        //  目标汇总 删除
         gettargetDutySummaryDelete: (params: any) => {
             return request({
-                url: `/targetDutySummary/delete?ids=${params}`,
-                method: "get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/delete?ids=${params}`,
+                method: 'get'
+            });
         },
         // 安全目标考核 查询单条数据
         gettargetExamineDetail: (params: any) => {
             return request({
-                url: `/targetExamine/selectOne/${params}`,
-                method: "get"
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/targetExamine/selectOne/${params}`,
+                method: 'get'
+            });
         },
         // 安全目标考核 新增或者修改数据
         gettargetExamineAddOrUpdate: (params: object) => {
             return request({
-                url: "/targetExamine/addOrUpdate",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/targetExamine/addOrUpdate',
+                method: 'post',
                 data: params
-            })
+            });
         },
         //   目标检查上报 (有疑问) 新增或者修改数据 ---???
         getworkApproveAddOrUpdate: (params: object) => {
             return request({
-                url: "/workApprove/submitApprove",
-                method: "post",
+                url: import.meta.env.VITE_API_URL_OUT + '/workApprove/submitApprove',
+                method: 'post',
                 data: params
-            })
+            });
         },
         // 部门树
         getTreedepartment: () => {
             return request({
-                    url:"/department/list",
-                    method: "post"
-                })
-
+                url: import.meta.env.VITE_API_URL_OUT + '/department/list',
+                method: 'post'
+            });
         },
         // 人员
-        getManName:(params:any)=>{
+        getManName: (params: any) => {
             return request({
-                url:`/account/dep/list?depId=${params}`,
-                method:"get"
-            })
+                url: `/account/dep/list?depId=${params}`,
+                method: 'get'
+            });
         }
-
-    }
-}
\ No newline at end of file
+    };
+}
diff --git a/src/api/intellectInspectSystem/RFID/index.ts b/src/api/intellectInspectSystem/RFID/index.ts
index 3b09576..3cbe317 100644
--- a/src/api/intellectInspectSystem/RFID/index.ts
+++ b/src/api/intellectInspectSystem/RFID/index.ts
@@ -5,7 +5,7 @@
         // v1
         getRFIDList: (data: object) => {
             return request({
-                url: `/SafeCheckRfid/select/listRfidByPage`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/select/listRfidByPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addRFID: (data: object) => {
             return request({
-                url: `/SafeCheckRfid/insert/saveRfid`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/insert/saveRfid`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modRFID: (data: object) => {
             return request({
-                url: `/SafeCheckRfid/update/updateRfidById`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/update/updateRfidById`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         deleteRFID: (data: object) => {
             return request({
-                url: `/SafeCheckRfid/delete/deleteRfidById`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/delete/deleteRfidById`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         getAllRFIDList: () => {
             return request({
-                url: `/SafeCheckRfid/select/listRfidName`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/select/listRfidName`,
                 method: 'get'
             });
         }
diff --git a/src/api/intellectInspectSystem/facilityAreaManage/index.ts b/src/api/intellectInspectSystem/facilityAreaManage/index.ts
index 154918e..3c71309 100644
--- a/src/api/intellectInspectSystem/facilityAreaManage/index.ts
+++ b/src/api/intellectInspectSystem/facilityAreaManage/index.ts
@@ -5,7 +5,7 @@
         // v1
         getFacilityAreaList: (data: object) => {
             return request({
-                url: `/safeCheckRegion/select/listRegionByPage`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionByPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         getFacilityAreaById: (data: object) => {
             return request({
-                url: `/safeCheckRegion/select/getRegionById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/getRegionById`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         addFacilityArea: (data: object) => {
             return request({
-                url: `/safeCheckRegion/insert/saveRegion`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/insert/saveRegion`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         modFacilityArea: (data: object) => {
             return request({
-                url: `/safeCheckRegion/update/updateRegionById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/update/updateRegionById`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         deleteFacilityArea: (data: object) => {
             return request({
-                url: `/safeCheckRegion/delete/deleteRegionById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/delete/deleteRegionById`,
                 method: 'post',
                 data: data
             });
@@ -45,14 +45,14 @@
         // v1
         getAllFacilityAreaList: () => {
             return request({
-                url: `/safeCheckRegion/select/listRegionName`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionName`,
                 method: 'get'
             });
         },
         // v1
         getFacilityAreaType: () => {
             return request({
-                url: `/SafeCheckRegionType/select/listRegionType`,
+                url: import.meta.env.VITE_API_URL + `/SafeCheckRegionType/select/listRegionType`,
                 method: 'get'
             });
         }
diff --git a/src/api/intellectInspectSystem/inspectPointManage/index.ts b/src/api/intellectInspectSystem/inspectPointManage/index.ts
index ecf9c37..fc9b8b4 100644
--- a/src/api/intellectInspectSystem/inspectPointManage/index.ts
+++ b/src/api/intellectInspectSystem/inspectPointManage/index.ts
@@ -5,7 +5,7 @@
         // v1
         getInspectPointList: (data: object) => {
             return request({
-                url: `/safeCheckPoint/select/listPointByPage`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckPoint/select/listPointByPage`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         getInspectPointById: (data: object) => {
             return request({
-                url: `/safeCheckPoint/select/getPointById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckPoint/select/getPointById`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         addInspectPoint: (data: object) => {
             return request({
-                url: `/safeCheckPoint/insert/savePoint`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckPoint/insert/savePoint`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         modInspectPoint: (data: object) => {
             return request({
-                url: `/safeCheckPoint/update/updatePointById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckPoint/update/updatePointById`,
                 method: 'post',
                 data: data
             });
@@ -37,7 +37,7 @@
         // v1
         deleteInspectPoint: (data: object) => {
             return request({
-                url: `/safeCheckPoint/delete/deletePointById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckPoint/delete/deletePointById`,
                 method: 'post',
                 data: data
             });
@@ -45,7 +45,7 @@
         // v1
         getAllInspectPointList: () => {
             return request({
-                url: `/safeCheckRegion/select/listRegionName`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionName`,
                 method: 'get'
             });
         }
diff --git a/src/api/intellectInspectSystem/inspectTargetManage/index.ts b/src/api/intellectInspectSystem/inspectTargetManage/index.ts
index 6d03aaa..cec17ec 100644
--- a/src/api/intellectInspectSystem/inspectTargetManage/index.ts
+++ b/src/api/intellectInspectSystem/inspectTargetManage/index.ts
@@ -5,7 +5,7 @@
         // v1
         getInspectTargetList: (data: object) => {
             return request({
-                url: `/safeCheckQuota/select/listQuotaByPage`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuota/select/listQuotaByPage`,
                 method: 'post',
                 data: data
             });
@@ -13,14 +13,14 @@
         // v1
         getInspectTargetById: (id: number) => {
             return request({
-                url: `/safeCheckQuota/select/getQuotaById?id=${id}`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuota/select/getQuotaById?id=${id}`,
                 method: 'get'
             });
         },
         // v1
         addInspectTarget: (data: object) => {
             return request({
-                url: `/safeCheckQuota/insert/saveQuota`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuota/insert/saveQuota`,
                 method: 'post',
                 data: data
             });
@@ -28,7 +28,7 @@
         // v1
         modInspectTarget: (data: object) => {
             return request({
-                url: `/safeCheckQuota/update/updateQuotaById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuota/update/updateQuotaById`,
                 method: 'post',
                 data: data
             });
@@ -36,7 +36,7 @@
         // v1
         deleteInspectTarget: (data: object) => {
             return request({
-                url: `/safeCheckQuota/delete/deleteQuotaById`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuota/delete/deleteQuotaById`,
                 method: 'post',
                 data: data
             });
@@ -44,14 +44,14 @@
         // v1
         getAllInspectTargetList: () => {
             return request({
-                url: `/prevent/device/select/listDevices`,
+                url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`,
                 method: 'post'
             });
         },
         // v1
         getQuotaTypeList: () => {
             return request({
-                url: `/safeCheckQuotaType/select/listQuotaType`,
+                url: import.meta.env.VITE_API_URL + `/safeCheckQuotaType/select/listQuotaType`,
                 method: 'get'
             });
         }
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts
index fa82be1..99ee915 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts
@@ -5,7 +5,7 @@
         // 分页获取休息日列表
         getAllBreakTimeRuleByPage: (data: object) => {
             return request({
-                url: `/breakTime/getAllBreakTimeRuleByPage`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/getAllBreakTimeRuleByPage`,
                 method: 'post',
                 data: data
             });
@@ -14,7 +14,7 @@
         // 新增休息日
         addBreakTime: (data: object) => {
             return request({
-                url: `/breakTime/addBreakTimeRule`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/addBreakTimeRule`,
                 method: 'post',
                 data: data
             });
@@ -23,7 +23,7 @@
         // 修改休息日
         updateBreakTime: (data: object) => {
             return request({
-                url: `/breakTime/updateBreakTimeRule`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/updateBreakTimeRule`,
                 method: 'post',
                 data: data
             });
@@ -32,7 +32,7 @@
         // 删除休息日
         deleteBreakTime: (data: object) => {
             return request({
-                url: `/breakTime/deleteBreakTimeRule`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/deleteBreakTimeRule`,
                 method: 'post',
                 data: data
             });
@@ -41,10 +41,10 @@
         // 删除休息日
         deleteBatch: (data: object) => {
             return request({
-                url: `/breakTime/deleteBatchBreakTimeRule`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/deleteBatchBreakTimeRule`,
                 method: 'post',
                 data: data
             });
-        },
+        }
     };
 }
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
index 08b29b6..751c76e 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
@@ -3,56 +3,56 @@
 export function holidayGroupApi() {
     return {
         //休息时间组分页列表
-        getRecordPage: (data: object)=>{
+        getRecordPage: (data: object) => {
             return request({
-                url: `/breakTime/getAllBreakTimeGroupByPage`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/getAllBreakTimeGroupByPage`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 休息时间组新增
-        addRecord: (data: object)=>{
+        addRecord: (data: object) => {
             return request({
-                url: `/breakTime/addBreakTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/addBreakTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 休息时间组修改
-        updateRecord: (data: object)=>{
+        updateRecord: (data: object) => {
             return request({
-                url: `/breakTime/updateBreakTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/updateBreakTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 休息时间组删除
-        deleteRecord: (data: object)=>{
+        deleteRecord: (data: object) => {
             return request({
-                url: `/breakTime/deleteBreakTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/deleteBreakTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 休息时间组批量删除
-        deletBatchRecord: (data: object)=>{
+        deletBatchRecord: (data: object) => {
             return request({
-                url: `/breakTime/deleteBatchBreakTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/deleteBatchBreakTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         //休息时间列表
-        getAllBreak: ()=>{
+        getAllBreak: () => {
             return request({
-                url: `/breakTime/getAllBreakTimeRule`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/getAllBreakTimeRule`,
                 method: 'get'
-            })
-        },
+            });
+        }
     };
 }
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts
index 895f601..d378691 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts
@@ -3,85 +3,84 @@
 export function teamManageApi() {
     return {
         //班组分页列表
-        getRecordPage: (data: object)=>{
+        getRecordPage: (data: object) => {
             return request({
-                url: `/schedule/group/page/list`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/page/list`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         //班组列表
-        getRecord: (data: object)=>{
+        getRecord: (data: object) => {
             return request({
-                url: `/schedule/group/list`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/list`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         //班组-班组成员分页列表
-        getAllRecordPage: (data: object)=>{
+        getAllRecordPage: (data: object) => {
             return request({
-                url: `/schedule/group/member/page/list`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/member/page/list`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         //所有部门列表
-        getAllDepartment: ()=>{
+        getAllDepartment: () => {
             return request({
-                url: `/department/list`,
+                url: import.meta.env.VITE_API_URL + `/department/list`,
                 method: 'post'
-            })
+            });
         },
 
-
         //用户-部门所有用户
-        getAllMember: (data: number)=>{
+        getAllMember: (data: number) => {
             return request({
-                url: `/account/dep/list?depId=${data}`,
+                url: import.meta.env.VITE_API_URL + `/account/dep/list?depId=${data}`,
                 method: 'get',
                 data: data
-            })
+            });
         },
 
         // 班组-班组成员列表
-        getAllRecord: (data: object)=>{
+        getAllRecord: (data: object) => {
             return request({
-                url: `/schedule/group/member/list`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/member/list`,
                 method: 'get',
                 data: data
-            })
+            });
         },
 
         // 班组新增
-        addRecord: (data: object)=>{
+        addRecord: (data: object) => {
             return request({
-                url: `/schedule/group/add`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/add`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 班组修改
-        updateRecord: (data: object)=>{
+        updateRecord: (data: object) => {
             return request({
-                url: `/schedule/group/mod`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/mod`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 班组删除
-        deleteRecord: (data: object)=>{
+        deleteRecord: (data: object) => {
             return request({
-                url: `/schedule/group/del`,
+                url: import.meta.env.VITE_API_URL + `/schedule/group/del`,
                 method: 'post',
                 data: data
-            })
-        },
+            });
+        }
 
         // 时间策略批量删除
         // deletBatchRecord: (data: object)=>{
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts
index 0a4a38e..1e9365f 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts
@@ -2,42 +2,41 @@
 
 export function teamStrategyApi() {
     return {
-
         //获取班组策略分页列表
-        getRecordPage: (data: object)=>{
+        getRecordPage: (data: object) => {
             return request({
-                url: `/schedule/groupStrategy/page/list`,
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/page/list`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 班组策略新增
-        addRecord: (data: object)=>{
+        addRecord: (data: object) => {
             return request({
-                url: `/schedule/groupStrategy/add`,
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/add`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 班组策略修改
-        updateRecord: (data: object)=>{
+        updateRecord: (data: object) => {
             return request({
-                url: `/schedule/groupStrategy/mod`,
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/mod`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 班组策略删除
-        deleteRecord: (data: object)=>{
+        deleteRecord: (data: object) => {
             return request({
-                url: `/schedule/groupStrategy/del`,
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/del`,
                 method: 'post',
                 data: data
-            })
-        },
+            });
+        }
 
         // 时间策略批量删除
         // deletBatchRecord: (data: object)=>{
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts
index d07dbad..e33a1cd 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts
@@ -3,83 +3,81 @@
 export function timeStrategyApi() {
     return {
         //获取工作时间组列表
-        getWorkTimeList: ()=>{
+        getWorkTimeList: () => {
             return request({
-                url: `/workTime/getWorkTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimeGroup`,
                 method: 'get'
-            })
+            });
         },
 
         //获取休息时间组列表
-        getRestTimeList: ()=>{
+        getRestTimeList: () => {
             return request({
-                url: `/breakTime/getAllBreakTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/breakTime/getAllBreakTimeGroup`,
                 method: 'get'
-            })
+            });
         },
 
         //时间策略分页列表
-        getRecordPage: (data: object)=>{
+        getRecordPage: (data: object) => {
             return request({
-                url: `/timeStrategy/getAllTimeStrategyByPage`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getAllTimeStrategyByPage`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 时间策略全部列表
-        getAllRecord: ()=>{
+        getAllRecord: () => {
             return request({
-                url: `/timeStrategy/getAllTimeStrategy`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getAllTimeStrategy`,
                 method: 'get'
-            })
+            });
         },
 
-
-
         //根据id获取时间策略列表
-        getRecordById: (data:object)=>{
+        getRecordById: (data: object) => {
             return request({
-                url: `/timeStrategy/getTimeStrategyById`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getTimeStrategyById`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 时间策略新增
-        addRecord: (data: object)=>{
+        addRecord: (data: object) => {
             return request({
-                url: `/timeStrategy/addTimeStrategy`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/addTimeStrategy`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 时间策略修改
-        updateRecord: (data: object)=>{
+        updateRecord: (data: object) => {
             return request({
-                url: `/timeStrategy/updateTimeStrategy`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/updateTimeStrategy`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 时间策略删除
-        deleteRecord: (data: object)=>{
+        deleteRecord: (data: object) => {
             return request({
-                url: `/timeStrategy/deleteTimeStrategy`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/deleteTimeStrategy`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 时间策略批量删除
-        deletBatchRecord: (data: object)=>{
+        deletBatchRecord: (data: object) => {
             return request({
-                url: `/timeStrategy/deleteBatchTimeStrategy`,
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/deleteBatchTimeStrategy`,
                 method: 'post',
                 data: data
-            })
-        },
+            });
+        }
     };
 }
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts
index f3bc789..6bde267 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts
@@ -5,7 +5,7 @@
         // 获取工作时间段列表
         getWorkTimePeriod: () => {
             return request({
-                url: `/workTime/getWorkTimePeriod`,
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimePeriod`,
                 method: 'get'
             });
         },
@@ -13,7 +13,7 @@
         //工作时间段分页列表
         postPeriodPage: (data: object) => {
             return request({
-                url: `/workTime/getWorkTimePeriodByPage?pageSiz`,
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimePeriodByPage?pageSiz`,
                 method: 'post',
                 data: data
             });
@@ -22,7 +22,7 @@
         // 新增工作时间段
         postWorkTimePeriod: (data: object) => {
             return request({
-                url: `/workTime/addWorkTimePeriod`,
+                url: import.meta.env.VITE_API_URL + `/workTime/addWorkTimePeriod`,
                 method: 'post',
                 data: data
             });
@@ -31,7 +31,7 @@
         // 修改工作时间段
         updateWorkTimePeriod: (data: object) => {
             return request({
-                url: `/workTime/updateWorkTimePeriod`,
+                url: import.meta.env.VITE_API_URL + `/workTime/updateWorkTimePeriod`,
                 method: 'post',
                 data: data
             });
@@ -40,7 +40,7 @@
         // 删除工作时间段
         deletWorkTimePeriod: (data: object) => {
             return request({
-                url: `/workTime/deletWorkTimePeriod`,
+                url: import.meta.env.VITE_API_URL + `/workTime/deletWorkTimePeriod`,
                 method: 'post',
                 data: data
             });
@@ -49,7 +49,7 @@
         // 批量删除
         deleteBatchWorkTimePeriod: (data: any) => {
             return request({
-                url: `/workTime/deleteBatchWorkTimePeriod`,
+                url: import.meta.env.VITE_API_URL + `/workTime/deleteBatchWorkTimePeriod`,
                 method: 'post',
                 data: data
             });
diff --git a/src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts
index 52360cc..564f5e4 100644
--- a/src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts
+++ b/src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts
@@ -3,48 +3,48 @@
 export function workingHoursSetApi() {
     return {
         //工作时间组分页列表
-        postWorkTimeGroupPage: (data: object)=>{
+        postWorkTimeGroupPage: (data: object) => {
             return request({
-                url: `/workTime/getWorkTimeGroupByPage`,
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimeGroupByPage`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 工作时间组新增
-        addWorkTimeGroup: (data: object)=>{
+        addWorkTimeGroup: (data: object) => {
             return request({
-                url: `/workTime/addWorkTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/workTime/addWorkTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 工作时间组修改
-        updateWorkTimeGroup: (data: object)=>{
+        updateWorkTimeGroup: (data: object) => {
             return request({
-                url: `/workTime/updateWorkTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/workTime/updateWorkTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 工作时间组删除
-        deleteWorkTimeGroup: (data: object)=>{
+        deleteWorkTimeGroup: (data: object) => {
             return request({
-                url: `/workTime/deleteWorkTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/workTime/deleteWorkTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         },
 
         // 工作时间组批量删除
-        deletBatchWorkTimeGroup: (data: object)=>{
+        deletBatchWorkTimeGroup: (data: object) => {
             return request({
-                url: `/workTime/deletBatchWorkTimeGroup`,
+                url: import.meta.env.VITE_API_URL + `/workTime/deletBatchWorkTimeGroup`,
                 method: 'post',
                 data: data
-            })
+            });
         }
     };
 }
diff --git a/src/api/workInjuryDeclaration/index.ts b/src/api/workInjuryDeclaration/index.ts
index e8edf72..630f412 100644
--- a/src/api/workInjuryDeclaration/index.ts
+++ b/src/api/workInjuryDeclaration/index.ts
@@ -1,123 +1,123 @@
 import request from '/@/utils/request';
 
-export function accidentManagementSystemApi(){
+export function accidentManagementSystemApi() {
     return {
         // 事故快报一览
-        accidentList:(params:object)=>{
+        accidentList: (params: object) => {
             return request({
-                url:"/accidentExpress/page/list",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/page/list',
+                method: 'post',
+                data: params
+            });
         },
         // 事故快报新增
-        accidentAdd:(params:object)=>{
+        accidentAdd: (params: object) => {
             return request({
-                url:"/accidentExpress/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/add',
+                method: 'post',
+                data: params
+            });
         },
         // 事故快报详情
-        accidentScarh:(params:number)=>{
+        accidentScarh: (params: number) => {
             return request({
-                url:`/accidentExpress/info/${params}`,
-                method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/info/${params}`,
+                method: 'get'
+            });
         },
         // 事故快报修改
-        accidentView:(params:object)=>{
+        accidentView: (params: object) => {
             return request({
-                url:"/accidentExpress/update",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/update',
+                method: 'post',
+                data: params
+            });
         },
         // 事故快报删除
-        accidentDele:(params:object)=>{
+        accidentDele: (params: object) => {
             return request({
-                url:`/accidentExpress/batchDelete/${params}`,
-                method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/batchDelete/${params}`,
+                method: 'get'
+            });
         },
 
         // 事故报告一览
         getAccidentReportList: (params: object) => {
             return request({
-                url: '/accidentReport/page/list',
+                url: import.meta.env.VITE_API_URL_OUT + '/accidentReport/page/list',
                 method: 'post',
-                data:params
-            })
+                data: params
+            });
         },
         // 事故报告新增
         addAccidentReport: (params: object) => {
             return request({
-                url: `/accidentReport/add`,
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/add`,
                 method: 'post',
                 data: params
             });
         },
         // 事故报告详情
-        seeAccidentReport: (params:number) => {
+        seeAccidentReport: (params: number) => {
             return request({
-                url: `/accidentReport/info/${params}`,
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/info/${params}`,
                 method: 'get'
             });
         },
         // 事故报告编辑
         editAccidentReport: (params: object) => {
             return request({
-                url: `/accidentReport/update`,
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/update`,
                 method: 'post',
                 data: params
             });
         },
         // 事故报告删除
-        deleteAccidentReport: (params:object) => {
+        deleteAccidentReport: (params: object) => {
             return request({
-                url: `/accidentReport/batchDelete`,
+                url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/batchDelete`,
                 method: 'post',
-                data:params
+                data: params
             });
         },
 
         //  工伤申报一览
-        workList:(params:object)=>{
+        workList: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/page/list",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/page/list',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报新增
-        workAdd:(params:object)=>{
+        workAdd: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/add",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/add',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报详情
-        seeAccidentManagementSystem:(params:number)=>{
+        seeAccidentManagementSystem: (params: number) => {
             return request({
-                url:`workInjuryDeclaration/info/${params}`,
-                method:"get",
-            })
+                url: import.meta.env.VITE_API_URL_OUT + `workInjuryDeclaration/info/${params}`,
+                method: 'get'
+            });
         },
         // 工伤申报修改
-        workView:(params:object)=>{
+        workView: (params: object) => {
             return request({
-                url:"/workInjuryDeclaration/update",
-                method:"post",
-                data:params
-            })
+                url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/update',
+                method: 'post',
+                data: params
+            });
         },
         // 工伤申报删除/批量删除
-        workDelete:(params:object)=>{
+        workDelete: (params: object) => {
             return request({
-                url:`/workInjuryDeclaration/batchDelete/${params}`,
-                method:"get",
-            })
-        },
-    }
-}
\ No newline at end of file
+                url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/batchDelete/${params}`,
+                method: 'get'
+            });
+        }
+    };
+}
diff --git a/src/assets/icon.png b/src/assets/icon.png
new file mode 100644
index 0000000..342ace7
--- /dev/null
+++ b/src/assets/icon.png
Binary files differ
diff --git a/src/components/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue b/src/components/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue
new file mode 100644
index 0000000..c586c23
--- /dev/null
+++ b/src/components/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue
@@ -0,0 +1,461 @@
+<template>
+    <div class="system-edit-user-container">
+        <el-dialog
+                title="编辑伤亡人员"
+                v-model="isShowDialog"
+                width="769px"
+                draggable
+                :fullscreen="full"
+        >
+            <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+            <el-form
+                    ref="ruleFormRef"
+                    :model="ruleForm"
+                    size="default"
+                    label-width="120px"
+            >
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="姓名" prop="name">
+                            <el-input v-model="ruleForm.name" placeholder="请输入姓名"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="性别" prop="sex">
+                            <el-select v-model="ruleForm.gender" class="w100" placeholder="请选择人员性别">
+                                <el-option label="男" value="false"></el-option>
+                                <el-option label="女" value="true"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="身份证号码" prop="teamName">
+                            <el-input v-model="ruleForm.card" placeholder="请输入身份证号码"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="伤害描述">
+                            <el-input v-model="ruleForm.injuryDesc" type="textarea" placeholder="请输入内容"
+                                      maxlength="150"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="受损描述">
+                            <el-input v-model="ruleForm.damageDesc" type="textarea" placeholder="请输入内容"
+                                      maxlength="150"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-button v-if="!disabled" size="default" type="primary" @click="onAdd()">添加</el-button>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-table :data="tableData" style="width: 100%">
+                            <el-table-column prop="name" label="姓名"/>
+                            <el-table-column prop="gender" label="性别">
+                                <template #default="scope">
+                                    <div v-if="scope.row.gender==false">
+                                        男
+                                    </div>
+                                    <div v-else>
+                                        女
+                                    </div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="card" label="身份证"/>
+                            <el-table-column prop="injuryDesc" label="伤害描述"/>
+                            <el-table-column prop="damageDesc" label="受损描述"/>
+                            <el-table-column v-if="!disabled" label="操作" width="60" align="center" fixed="right">
+                                <template #default="scope">
+                                    <el-button size="small" text type="primary" @click="onDelete(scope.row.id)">
+                                        删除
+                                    </el-button>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel" size="default">关闭</el-button>
+          <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+				</span>
+            </template>
+        </el-dialog>
+        <CheckTemplate ref="Shows"/>
+        <userSelections ref="userRef"/>
+        <RegionsDialog ref="openRef"/>
+    </div>
+</template>
+
+<script lang="ts">
+    import {
+        reactive,
+        ref,
+        defineComponent
+    } from 'vue';
+
+    import type {
+        UploadUserFile,
+        FormInstance,
+        // FormRules,
+    } from 'element-plus'
+    import {ElMessage} from 'element-plus';
+    import {
+        Search,
+        FullScreen
+    } from '@element-plus/icons-vue'
+    import UserSelections from "/@/components/userSelections/index.vue"
+    import CheckTemplate from '/@/components/checkTemplate/index.vue'
+    import RegionsDialog from '/@/components/regionsDialog/index.vue'
+    import {accidentManagementSystemApi} from '/@/api/accidentManagementSystem';
+
+    export default defineComponent({
+        name: 'openEdit',
+        components: {
+            CheckTemplate,
+            UserSelections,
+            RegionsDialog,
+        },
+        setup() {
+            const isShowDialog = ref(false)
+
+            const ruleFormRef = ref<FormInstance>()
+            //定义表单
+            const accidentExpressId = ref()
+            const ruleForm = reactive({
+                accidentExpressId: accidentExpressId,
+                name: '', // 姓名
+                gender: '', //性别
+                card: '', // 身份证
+                injuryDesc: '', // 伤害描述
+                damageDesc: '', // 受损描述
+            });
+            const tableData = ref([])
+            const disabled = ref([])
+            // 打开弹窗
+            const openDialog = (id, type) => {
+                accidentExpressId.value = id
+                isShowDialog.value = true;
+                disabled.value = type
+                onList()
+            };
+            // 一览
+            const onList = () => {
+                accidentManagementSystemApi()
+                    .casualtyList(accidentExpressId.value)
+                    .then((res) => {
+                        if (res.data.code == '200') {
+                            tableData.value = res.data.data
+                            console.log('伤亡人员一览', tableData.value)
+                        }
+                    })
+            };
+            // 添加
+            const onAdd = () => {
+                if (accidentExpressId.value != null && accidentExpressId.value != '') {
+                    accidentManagementSystemApi()
+                        .casualtyAdd(ruleForm)
+                        .then((res) => {
+                            if (res.data.code == 200) {
+                                ElMessage({
+                                    showClose: true,
+                                    message: '添加成功',
+                                    type: 'success',
+                                });
+                                onList()
+                            }
+                        })
+                } else {
+                    ElMessage({
+                        showClose: true,
+                        message: '请先添加事故快报',
+                        type: 'error',
+                    });
+                }
+            };
+            // 删除
+            const onDelete = (id) => {
+                accidentManagementSystemApi()
+                    .casualtyDel(id)
+                    .then((res) => {
+                        if (res.data.code == 200) {
+                            ElMessage({
+                                showClose: true,
+                                message: '删除成功',
+                                type: 'success',
+                            });
+                            onList()
+                        }
+                    })
+            };
+            // 关闭弹窗
+            const closeDialog = () => {
+                isShowDialog.value = false;
+            };
+            // 取消
+            const onCancel = () => {
+                closeDialog();
+            };
+            //日期选择器
+            const value1 = ref('')
+            // 上传附件
+            const fileList = ref<UploadUserFile[]>([])
+            // 可选择树
+            const treeSelect = ref()
+            const tree = [
+                {
+                    value: '1',
+                    label: 'Level one 1',
+                    children: [
+                        {
+                            value: '1-1',
+                            label: 'Level two 1-1',
+                            children: [
+                                {
+                                    value: '1-1-1',
+                                    label: 'Level three 1-1-1',
+                                },
+                            ],
+                        },
+                    ],
+                },
+                {
+                    value: '2',
+                    label: 'Level one 2',
+                    children: [
+                        {
+                            value: '2-1',
+                            label: 'Level two 2-1',
+                            children: [
+                                {
+                                    value: '2-1-1',
+                                    label: 'Level three 2-1-1',
+                                },
+                            ],
+                        },
+                        {
+                            value: '2-2',
+                            label: 'Level two 2-2',
+                            children: [
+                                {
+                                    value: '2-2-1',
+                                    label: 'Level three 2-2-1',
+                                },
+                            ],
+                        },
+                    ],
+                },
+                {
+                    value: '3',
+                    label: 'Level one 3',
+                    children: [
+                        {
+                            value: '3-1',
+                            label: 'Level two 3-1',
+                            children: [
+                                {
+                                    value: '3-1-1',
+                                    label: 'Level three 3-1-1',
+                                },
+                            ],
+                        },
+                        {
+                            value: '3-2',
+                            label: 'Level two 3-2',
+                            children: [
+                                {
+                                    value: '3-2-1',
+                                    label: 'Level three 3-2-1',
+                                },
+                            ],
+                        },
+                    ],
+                },
+            ]
+            //定义树形下拉框
+            const responsibleDepartment = ref()
+            const data = [
+                {
+                    value: '1',
+                    label: '广汇能源综合物流发展有限责任公司',
+                    children: [
+                        {
+                            value: '1-1',
+                            label: '经营班子',
+                            children: [],
+                        },
+                    ],
+                },
+                {
+                    value: '2',
+                    label: '生产运行部',
+                    children: [
+                        {
+                            value: '2-1',
+                            label: '灌装一班',
+                            children: []
+                        },
+                        {
+                            value: '2-2',
+                            label: '工艺四班',
+                            children: [],
+                        },
+                    ],
+                },
+                {
+                    value: '3',
+                    label: '设备部',
+                    children: [
+                        {
+                            value: '3-1',
+                            label: '仪表班',
+                            children: [],
+                        },
+                        {
+                            value: '3-2',
+                            label: '机修班',
+                            children: [],
+                        },
+                    ],
+                },
+            ]
+            // 必填项提示
+            // const rules = reactive<FormRules>({
+            //   teamName: [
+            //     {
+            //       required: true,
+            //       message: '队伍名称不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            //   teamLevel: [
+            //     {
+            //       required: true,
+            //       message: '队伍级别不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            //   teamLeader: [
+            //     {
+            //       required: true,
+            //       message: '队伍负责人不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            //   responsibleDepartment: [
+            //     {
+            //       required: true,
+            //       message: '负责人部门不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            //   teamPhone: [
+            //     {
+            //       required: true,
+            //       message: '负责人手机不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            //   telephone: [
+            //     {
+            //       required: true,
+            //       message: '固定电话不能为空',
+            //       trigger: 'change',
+            //     },
+            //   ],
+            // })
+            // 表单提交验证必填项
+            const submitForm = async (formEl: FormInstance | undefined) => {
+                if (!formEl) return
+                await formEl.validate((valid, fields) => {
+                    if (valid) {
+                        console.log('submit!')
+                        closeDialog();
+                    } else {
+                        console.log('error submit!', fields)
+                    }
+                })
+
+            }
+            // 应急队伍弹窗
+            const Shows = ref()
+            const daiInpt = () => {
+                Shows.value.openDailog()
+            }
+            // 选择区域弹窗
+            const openRef = ref()
+            const regionsDialog = () => {
+                openRef.value.openDailog()
+            }
+            // 打开用户选择弹窗
+            const userRef = ref();
+            const openUser = () => {
+                userRef.value.openDialog();
+            };
+            //全屏
+            const full = ref(false);
+            const toggleFullscreen = () => {
+                if (full.value == false) {
+                    full.value = true;
+                } else {
+                    full.value = false;
+                }
+            };
+            return {
+                openDialog,
+                closeDialog,
+                isShowDialog,
+                onCancel,
+                fileList,
+                responsibleDepartment,
+                data,
+                Search,
+                ruleForm,
+                value1,
+                treeSelect,
+                tree,
+                daiInpt,
+                Shows,
+                ruleFormRef,
+                submitForm,
+                // rules,
+                openUser,
+                userRef,
+                regionsDialog,
+                openRef,
+                toggleFullscreen,
+                FullScreen,
+                full,
+                tableData,
+                onAdd,
+                onDelete,
+                accidentExpressId,
+                disabled
+            };
+        },
+    });
+</script>
+<style scoped lang="scss">
+    .textarea {
+        height: 168px !important;
+    }
+
+    .textarea ::v-deep .el-textarea__inner {
+        height: 168px !important;
+    }
+
+    ::v-deep .el-table__cell {
+        font-weight: 400;
+    }
+
+    .el-divider--horizontal {
+        height: 0;
+        margin: 0;
+        border-top: transparent;
+    }
+
+    .el-select {
+        width: 100%;
+    }
+</style>
\ No newline at end of file
diff --git a/src/components/accidentManagementSystem/accidentExpress/component/openAdd.vue b/src/components/accidentManagementSystem/accidentExpress/component/openAdd.vue
new file mode 100644
index 0000000..50a59d7
--- /dev/null
+++ b/src/components/accidentManagementSystem/accidentExpress/component/openAdd.vue
@@ -0,0 +1,474 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" @close="closeDialog(ruleFormRef)">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" size="default" label-width="140px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故名称" prop="accidentName">
+							<el-input v-model="ruleForm.accidentName" :disabled="disabled" placeholder="请填写事故名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故部门" placeholder="请选择" prop="accidentDepartmentId">
+							<el-tree-select
+								v-model="ruleForm.accidentDepartmentId"
+								:disabled="disabled"
+								:props="propse"
+								:data="newTreeList"
+								class="w100"
+								placeholder="请选择"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="发生地点" prop="occurrencePlace">
+							<el-input v-model="ruleForm.occurrencePlace" :disabled="disabled" placeholder="请填写发生地点"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="发生时间" prop="occurrenceTime">
+							<!--<el-input v-model="ruleForm.occurrenceTime" :disabled="disabled" placeholder="请填写发生时间"></el-input>-->
+							<el-date-picker
+								:disabled="disabled"
+								v-model="ruleForm.occurrenceTime"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故原因" prop="accidentCause">
+							<el-select v-model="ruleForm.accidentCause" :disabled="disabled" class="w100" placeholder="请选择">
+								<el-option label="人的不安全行为" value="1"></el-option>
+								<el-option label="物的不安全状态" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="是否有伤亡" prop="casualties">
+							<el-radio-group v-model="ruleForm.casualties" :disabled="disabled" @change="typeChang">
+								<el-radio :label="true">是</el-radio>
+								<el-radio :label="false">否</el-radio>
+							</el-radio-group>
+							<el-button v-if="ruleForm.casualties" type="primary" style="margin-left: 20px" :icon="Edit" @click="openDai" round plain />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故简要经过" prop="accidentBriefProcess">
+							<el-input
+								v-model="ruleForm.accidentBriefProcess"
+								:disabled="disabled"
+								type="textarea"
+								placeholder="请填写事故简要经过"
+								maxlength="150"
+							></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故原因初步分析" prop="accidentCausesPreliminaryAnalysis">
+							<el-input
+								v-model="ruleForm.accidentCausesPreliminaryAnalysis"
+								:disabled="disabled"
+								type="textarea"
+								placeholder="请填写事故原因初步分析"
+								maxlength="150"
+							></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急防范措施" prop="emergencyPrecautions">
+							<el-input
+								v-model="ruleForm.emergencyPrecautions"
+								:disabled="disabled"
+								type="textarea"
+								placeholder="请填写应急防范措施"
+								maxlength="150"
+							></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="事故照片" prop="fileList">
+							<!--<el-input v-model="ruleForm.fileList" :disabled="disabled"-->
+							<!--type="textarea" placeholder="请填写应急防范措施" maxlength="150"></el-input>-->
+							<uploaderImg :fileList="fileListDemo"></uploaderImg>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<NumberOfCasualties ref="ShowUser"></NumberOfCasualties>
+		<CheckTemplate ref="Shows" />
+		<userSelections ref="userRef" />
+		<RegionsDialog ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, ref, defineComponent, defineEmits, onMounted } from 'vue';
+
+import type { UploadUserFile, FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen, Edit } from '@element-plus/icons-vue';
+import NumberOfCasualties from '/@/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue';
+import UserSelections from '/@/components/userSelections/index.vue';
+import CheckTemplate from '/@/components/checkTemplate/index.vue';
+import uploaderImg from '/@/components/uploaderImg/index.vue';
+import RegionsDialog from '/@/components/regionsDialog/index.vue';
+import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		CheckTemplate,
+		UserSelections,
+		RegionsDialog,
+		NumberOfCasualties,
+		uploaderImg,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			emergencyPrecautions: '',
+			accidentCausesPreliminaryAnalysis: '',
+			accidentBriefProcess: '',
+			casualties: '',
+			accidentCause: '',
+			occurrenceTime: '',
+			occurrencePlace: '',
+			accidentDepartmentId: '',
+			accidentName: '',
+			fileList: [],
+			id: '',
+		});
+		const titles = ref();
+		const disabled = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看事故快报' || title == '修改事故快报') {
+				accidentManagementSystemApi()
+					.accidentScarh(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+						}
+					});
+			}
+		};
+		//日期选择器
+		const value1 = ref('');
+		// 上传附件
+		const fileList = ref<UploadUserFile[]>([]);
+		const fileListDemo = ref<UploadUserFile[]>([
+			{
+				name: 'food.jpeg',
+				url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
+			},
+			{
+				name: 'food.jpeg',
+				url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
+			},
+		]);
+		// 可选择树
+		const treeSelect = ref();
+
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = [];
+		//el-tree-select回显
+		const propse = {
+			label: 'depName',
+			children: 'children',
+		};
+		const newTreeList = [];
+		//得到部门树
+		const department = async () => {
+			await goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+						getTreeList(res.data.data, newTreeList);
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		// 递归树状数据且修改字段名
+		const getTreeList = (treeList, newTreeList) => {
+			treeList.map((c) => {
+				let tempData = {
+					depName: c.depName,
+					value: c.depId,
+					children: [],
+				};
+				if (c.children && c.children.length > 0) {
+					tempData.children = [];
+					getTreeList(c.children, tempData.children);
+				}
+				newTreeList.push(tempData);
+			});
+		};
+		onMounted(() => {
+			department();
+		});
+		// 必填项提示
+		const rules = reactive<FormRules>({
+			accidentName: [
+				{
+					required: true,
+					message: '事故名称不能为空',
+					trigger: 'change',
+				},
+			],
+			accidentDepartmentId: [
+				{
+					required: true,
+					message: '事故部门不能为空',
+					trigger: 'change',
+				},
+			],
+			occurrencePlace: [
+				{
+					required: true,
+					message: '发生地点不能为空',
+					trigger: 'change',
+				},
+			],
+			occurrenceTime: [{ type: 'date', required: true, message: '发生时间不能为空', trigger: 'blur' }],
+			accidentCause: [
+				{
+					required: true,
+					message: '事故原因不能为空',
+					trigger: 'change',
+				},
+			],
+			casualties: [
+				{
+					required: true,
+					message: '是否有伤亡不能为空',
+					trigger: 'change',
+				},
+			],
+			accidentBriefProcess: [
+				{
+					required: true,
+					message: '事故简要经过不能为空',
+					trigger: 'change',
+				},
+			],
+			accidentCausesPreliminaryAnalysis: [
+				{
+					required: true,
+					message: '事故原因初步分析不能为空',
+					trigger: 'change',
+				},
+			],
+			emergencyPrecautions: [
+				{
+					required: true,
+					message: '应急防范措施不能为空',
+					trigger: 'change',
+				},
+			],
+		});
+		// 子传父
+		// const emit=defineEmits(['myAdd'])
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建事故快报') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						ruleForm.value.id = null;
+						accidentManagementSystemApi()
+							.accidentAdd(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改事故快报') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						ruleForm.value.fileList = [
+							// {
+							// 	fileUrl: 'url',
+							// 	fileName: 'name',
+							// },
+						];
+						accidentManagementSystemApi()
+							.accidentView(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+			}
+			ruleForm.value = {
+				accidentExpressId: '',
+				emergencyPrecautions: '',
+				accidentCausesPreliminaryAnalysis: '',
+				accidentBriefProcess: '',
+				casualties: '',
+				accidentCause: '',
+				occurrenceTime: '',
+				occurrencePlace: '',
+				accidentDepartmentId: '',
+				accidentName: '',
+				fileList: [],
+			};
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		const closeDialog = (formEl: FormInstance | undefined) => {
+			formEl.resetFields();
+			console.log(ruleForm);
+			isShowDialog.value = false;
+		};
+		// 是否有伤亡弹窗
+		const typeChang = () => {
+			console.log('tag', ruleForm);
+		};
+		const ShowUser = ref();
+		const openDai = () => {
+			ShowUser.value.openDialog(ruleForm.value.id, disabled.value);
+		};
+		// 应急队伍弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDialog();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			ShowUser,
+			typeChang,
+			openDialog,
+			isShowDialog,
+			fileList,
+			responsibleDepartment,
+			data,
+			Search,
+			Edit,
+			ruleForm,
+			value1,
+			treeSelect,
+			daiInpt,
+			Shows,
+			ruleFormRef,
+			submitForm,
+			resetForm,
+			rules,
+			openUser,
+			userRef,
+			regionsDialog,
+			openDai,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disabled,
+			emit,
+			propse,
+			department,
+			getTreeList,
+			newTreeList,
+			closeDialog,
+			fileListDemo,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
diff --git a/src/components/accidentManagementSystem/accidentExpress/index.vue b/src/components/accidentManagementSystem/accidentExpress/index.vue
new file mode 100644
index 0000000..ce1a6df
--- /dev/null
+++ b/src/components/accidentManagementSystem/accidentExpress/index.vue
@@ -0,0 +1,346 @@
+<template>
+	<div class="system-user-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-input size="default" v-model="listQuery.searchParams.accidentName" placeholder="事故名称" style="max-width: 215px" />
+				<el-button size="default" type="primary" class="ml10" @click="listApi"> 查询 </el-button>
+				<el-button size="default" class="ml10" @click="submitReset"> 重置 </el-button>
+			</div>
+			<div class="button_Line">
+				<div class="button_Left">
+					<el-button size="default" type="primary" @click="onOpenAdd">
+						<el-icon> <Plus /> </el-icon>新建
+					</el-button>
+					<el-button size="default" type="warning" plain :disabled="warning">
+						<el-icon> <Edit /> </el-icon>修改
+					</el-button>
+					<el-button size="default" type="danger" @click="onDeleteAll" plain :disabled="danger">
+						<el-icon> <Delete /> </el-icon>删除
+					</el-button>
+				</div>
+				<div class="button_Right">
+					<!-- <el-button @click="upButton">
+						<el-icon>
+							<Upload />
+						</el-icon>
+					</el-button>
+					<el-button>
+						<el-icon>
+							<Download />
+						</el-icon>
+					</el-button>
+					<el-button>
+						<el-icon>
+							<Refresh />
+						</el-icon>
+					</el-button> -->
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column align="center" type="selection" width="55" />
+				<el-table-column align="center" prop="accidentName" label="事故名称" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="deptName" label="事故部门" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="occurrencePlace" label="发生地点" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="occurrenceTime" label="发生时间" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="accidentCause" label="事故原因" show-overflow-tooltip sortable>
+					<template #default="scope">
+						<div v-if="scope.row.accidentCause=='1'">人的不安全行为</div>
+						<div v-if="scope.row.accidentCause=='2'">物的不安全状态</div>
+					</template>
+				</el-table-column>
+				<el-table-column align="center" prop="createName" label="创建人" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="gmtModitify" label="更新时间" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column label="操作" width="260" align="center" fixed="right">
+					<template #default="scope">
+						<!-- <el-button size="small" text disabled>
+							<el-icon style="margin-right: 5px"> <Upload /> </el-icon>上报
+						</el-button> -->
+						<el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <EditPen /> </el-icon>修改
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('详情', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <View /> </el-icon>详情
+						</el-button>
+						<el-button size="small" text type="primary" @click="onDelete(scope.row.id)">
+							<el-icon style="margin-right: 5px"> <Delete /> </el-icon>删除
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</el-card>
+		<OpenAdd ref="addRef" @myAdd="onMyAdd" />
+		<upData ref="upShow"></upData>
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, onMounted, ref, defineComponent } from 'vue';
+import { ElTable, ElMessage, ElMessageBox } from 'element-plus';
+import { Plus, View, Download, Refresh, EditPen, Edit, Delete, Upload } from '@element-plus/icons-vue';
+import OpenAdd from '/@/views/accidentManagementSystem/accidentExpress/component/openAdd.vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem';
+export default defineComponent({
+	name: 'index',
+	components: {
+		EditPen,
+		Plus,
+		Upload,
+		Download,
+		Refresh,
+		Edit,
+		Delete,
+		UpData,
+		OpenAdd,
+		View,
+	},
+
+	setup() {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				accidentName: '',
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 列表数据请求
+		const listApi = async () => {
+			let res = await accidentManagementSystemApi().accidentList(listQuery);
+			if (res.data.code == 200) {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					message: res.data.msg,
+					type: 'error',
+				});
+			}
+		};
+		onMounted(() => {
+			listApi();
+		});
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams.accidentName = '';
+			listApi();
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			listQuery.pageSize = val;
+			listApi();
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			listQuery.pageIndex = val;
+			listApi();
+		};
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+
+		// 打开新增弹窗
+		const addRef = ref();
+		const onOpenAdd = () => {
+			addRef.value.openDialog('新建事故快报',false);
+		};
+		// 新增后刷新
+		const onMyAdd = (e: boolean) => {
+			if (e) {
+				listApi();
+			} else {
+				listApi();
+			}
+		};
+		// 删除
+		const onDelete = (data: any) => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					accidentManagementSystemApi()
+						.accidentDele([data])
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								listApi();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 多选删除
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					accidentManagementSystemApi()
+						.accidentDele(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								listApi();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 上传
+		const upShow = ref();
+		const upButton = () => {
+			upShow.value.openDialog();
+		};
+
+		// 打开修改用户弹窗
+		const onEdit = (val: string, row: object) => {
+			if (val == '详情') {
+				addRef.value.openDialog('查看事故快报',row,true);
+			} else {
+				addRef.value.openDialog('修改事故快报',row,false);
+			}
+		};
+
+		return {
+			upButton,
+			upShow,
+			tableData,
+			pageIndex,
+			pageSize,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onEdit,
+			onOpenAdd,
+			addRef,
+			listQuery,
+			listApi,
+			submitReset,
+			warning,
+			danger,
+			handleSelectionChange,
+			onMyAdd,
+			onDelete,
+			deletAll,
+			onDeleteAll,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.table_Box {
+	padding: 20px;
+	background-color: #fff;
+}
+.tableForm {
+	margin-top: 10px;
+}
+/*按钮行*/
+.button_Line {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/accidentManagementSystem/accidentReport/component/openAdd.vue b/src/components/accidentManagementSystem/accidentReport/component/openAdd.vue
new file mode 100644
index 0000000..de8cecb
--- /dev/null
+++ b/src/components/accidentManagementSystem/accidentReport/component/openAdd.vue
@@ -0,0 +1,665 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="800px" draggable :fullscreen="full" @close="closeDialog(ruleFormRef)">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" :rules="rules" label-width="140px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故快报" prop="accidentName">
+							<el-input v-model="ruleForm.accidentName" :disabled="true" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故部门" placeholder="请选择" prop="accidentDepartmentId">
+							<!--<el-input v-model="ruleForm.accidentDepartmentName" class="input-with-select" />-->
+							<el-tree-select v-model="ruleForm.accidentDepartmentId" :disabled="true" :data="newTreeList"
+											:props="propse" class="w100" placeholder="请选择" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故发生地点" prop="occurrencePlace">
+							<el-input v-model="ruleForm.occurrencePlace" :disabled="true" placeholder="请填写发生地点"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="发生时间" prop="occurrenceTime">
+							<el-date-picker
+								v-model="ruleForm.occurrenceTime"
+								:disabled="true"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故类别" prop="accidentType">
+							<el-select v-model="ruleForm.accidentType" :disabled="disabled" class="w100" placeholder="请选择">
+								<el-option label="人员伤亡事故" value="人员伤亡事故"></el-option>
+								<el-option label="火灾爆炸事故" value="火灾爆炸事故"></el-option>
+								<el-option label="危险品泄露事故" value="危险品泄露事故"></el-option>
+								<el-option label="设备事故" value="设备事故"></el-option>
+								<el-option label="工艺事故" value="工艺事故"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故等级" prop="accidentGrade">
+							<el-select v-model="ruleForm.accidentGrade" :disabled="disabled" class="w100" placeholder="请选择">
+								<el-option label="特别重大" value="人员伤亡事故"></el-option>
+								<el-option label="重大" value="重大"></el-option>
+								<el-option label="较大" value="较大"></el-option>
+								<el-option label="一般" value="一般"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="经济损失" prop="economicLoss">
+							<el-input v-model="ruleForm.economicLoss" :disabled="disabled" placeholder="请填写经济损失"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="轻伤人数" prop="minorInjuryNum">
+							<el-input v-model="ruleForm.minorInjuryNum" :disabled="disabled" placeholder="请填写轻伤人数"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="重伤人数" prop="seriousInjuryNum">
+							<el-input v-model="ruleForm.seriousInjuryNum" :disabled="disabled" placeholder="请填写重伤人数"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="死亡人数" prop="deathNum">
+							<el-input v-model="ruleForm.deathNum" :disabled="disabled" placeholder="请填写死亡人数"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故原因" prop="accidentCause">
+							<el-input v-model="ruleForm.accidentCause" :disabled="disabled" placeholder="请填写事故原因"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="要求报告完成期限" prop="reportDeadline">
+							<el-date-picker
+								v-model="ruleForm.reportDeadline"
+								:disabled="disabled"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故级别" prop="accidentLevel">
+							<el-select v-model="ruleForm.accidentLevel" :disabled="disabled" class="w100" placeholder="请选择">
+								<el-option label="特大事故" value="特大事故"></el-option>
+								<el-option label="重大事故" value="重大事故"></el-option>
+								<el-option label="较大事故" value="较大事故"></el-option>
+								<el-option label="一般事故" value="一般事故"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故延期申请" prop="accidentDelayApply">
+							<el-input v-model="ruleForm.accidentDelayApply" :disabled="disabled" placeholder="请填写事故延期申请"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="原因综合分析(直接分析)" prop="comprehensiveAnalysisDirect">
+							<el-input
+								v-model="ruleForm.comprehensiveAnalysisDirect"
+								:disabled="disabled"
+								type="textarea"
+								placeholder="请填写原因综合分析(直接分析)"
+								maxlength="150"
+							></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="原因综合分析(间接分析)" prop="comprehensiveAnalysisIndirect">
+							<el-input
+								v-model="ruleForm.comprehensiveAnalysisIndirect"
+								:disabled="disabled"
+								type="textarea"
+								placeholder="请填写原因综合分析(间接分析)"
+								maxlength="150"
+							></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="整改措施" prop="rectificationMeasures">
+							<el-input v-model="ruleForm.rectificationMeasures" :disabled="disabled"
+									  type="textarea" placeholder="请填写整改措施" maxlength="150"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故处理" prop="accidentHandling">
+							<el-input v-model="ruleForm.accidentHandling" :disabled="disabled"
+									  type="textarea" placeholder="请填写事故处理" maxlength="150"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="填写人" prop="fillInUserName">
+							<el-input v-model="ruleForm.fillInUserName" :disabled="true"
+									  placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="填写日期" prop="fillInTime">
+							<el-date-picker
+								v-model="ruleForm.fillInTime"
+								:disabled="disabled"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</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="ruleForm.describe" type="textarea" placeholder="请填写应急防范措施" maxlength="150"></el-input>-->
+					<!--            </el-form-item>-->
+					<!--          </el-col>-->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="相关人员笔录" prop="relevantPersonnelRecords">
+							<el-input v-model="ruleForm.relevantPersonnelRecords" :disabled="disabled"
+									  type="textarea" placeholder="请填写相关人员笔录" maxlength="150"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故状态" prop="status">
+							<el-select v-model="ruleForm.status" :disabled="statusDisabled" class="w100" placeholder="请选择">
+								<el-option label="处理中" :value="1"></el-option>
+								<el-option label="已处理" :value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="事故分析会议纪要" prop="fileList">
+							<uploaderImg :fileList="fileList" :disabled="disabled"></uploaderImg>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="其他材料" prop="otherMaterials">
+							<el-input v-model="ruleForm.otherMaterials" :disabled="disabled"
+									  type="textarea" placeholder="请填写其他材料" maxlength="150"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<AccidentName @selectItem="onSelectItem" ref="Shows" />
+		<DailogSearchUserManger @SearchUser="onUser" ref="userRef"  />
+		<RegionsDialog ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, ref, defineComponent,onMounted } from 'vue';
+
+import type { UploadUserFile, FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import AccidentName from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue';
+import RegionsDialog from '/@/components/regionsDialog/index.vue';
+import uploaderImg from '/@/components/uploaderImg/index.vue';
+import { emergencySuppliesApi } from '/@/api/contingencyManagement/emergencyResources';
+import { accidentManagementSystemApi } from '/@/api/workInjuryDeclaration';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		AccidentName,
+		DailogSearchUserManger,
+		RegionsDialog,
+		uploaderImg
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			accidentExpressId:'',
+			accidentExpressName:'',
+			accidentDepartmentId:'',
+			accidentDepartmentName:'',
+			occurrencePlace:'',
+			occurrenceTime:'',
+
+
+
+			accidentType: '',
+			accidentGrade: '',
+			economicLoss: '',
+			minorInjuryNum: '',
+			seriousInjuryNum: '',
+			deathNum: '',
+			accidentCause: '',
+			reportDeadline: '',
+			accidentLevel: '',
+			accidentDelayApply: '',
+			comprehensiveAnalysisDirect: '',
+			comprehensiveAnalysisIndirect: '',
+			rectificationMeasures: '',
+			accidentHandling: '',
+			fillInUserUid: '',
+			fillInUserName:'',
+			fillInTime: '',
+			relevantPersonnelRecords: '',
+			otherMaterials: '',
+			fileList: [],
+			status:''
+		});
+		const titles = ref();
+		const disabled = ref();
+		const statusDisabled = ref(true)
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean,statusDisabledFlag:string) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if(statusDisabledFlag.value=='first'){
+				ruleForm.value.status = 1
+			}else if(statusDisabledFlag.value=='second'){
+				ruleForm.value.status = 2
+			}
+			if (title == '修改事故报告') {
+				statusDisabled.value = false
+			}else {
+				statusDisabled.value = true
+			}
+			if (title == '查看事故报告' || title == '修改事故报告') {
+				accidentManagementSystemApi()
+					.seeAccidentReport(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+						}
+					});
+			}
+		};
+		// 关闭弹窗
+		const closeDialog = (formEl: FormInstance | undefined) => {
+			formEl.resetFields();
+			console.log(ruleForm)
+			isShowDialog.value = false;
+		};
+		// 取消
+		const onCancel = (formEl: FormInstance | undefined) => {
+			closeDialog(formEl);
+		};
+		//日期选择器
+		const value1 = ref('');
+		// 上传附件
+		const fileList = ref<UploadUserFile[]>([]);
+		// 可选择树
+		const treeSelect = ref();
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = [
+		];
+		// 必填项提示
+		const rules = reactive<FormRules>({
+			accidentDepartmentId: [
+				{
+					required: true,
+					message: '事故部门不能为空',
+					trigger: 'change',
+				},
+			],
+			occurrenceTime: [
+				{
+					required: true,
+					message: '发生时间不能为空',
+					trigger: 'blur',
+				},
+			],
+			accidentType: [
+				{
+					required: true,
+					message: '事故类别不能为空',
+					trigger: 'change',
+				},
+			],
+			accidentGrade: [
+				{
+					required: true,
+					message: '事故等级不能为空',
+					trigger: 'change',
+				},
+			],
+			economicLoss: [
+				{
+					required: true,
+					message: '经济损失不能为空',
+					trigger: 'change',
+				},
+			],
+			reportDeadline: [
+				{
+					required: true,
+					message: '要求报告完成期限不能为空',
+					trigger: 'blur',
+				},
+			],
+			accidentLevel: [
+				{
+					required: true,
+					message: '事故级别不能为空',
+					trigger: 'change',
+				},
+			],
+			comprehensiveAnalysisDirect: [
+				{
+					required: true,
+					message: '原因综合分析(直接分析)不能为空',
+					trigger: 'blur',
+				},
+			],
+			comprehensiveAnalysisIndirect: [
+				{
+					required: true,
+					message: '原因综合分析(间接分析)不能为空',
+					trigger: 'blur',
+				},
+			],
+			rectificationMeasures: [
+				{
+					required: true,
+					message: '整改措施不能为空',
+					trigger: 'blur',
+				},
+			],
+			accidentHandling: [
+				{
+					required: true,
+					message: '事故处理不能为空',
+					trigger: 'change',
+				},
+			],
+			fillInUserName: [
+				{
+					required: true,
+					message: '填写人不能为空',
+					trigger: 'change',
+				},
+			],
+			fillInTime: [
+				{
+					type: 'date',
+					required: true,
+					message: '填写日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			status: [
+				{
+					required: true,
+					message: '事故状态不能为空',
+					trigger: 'change',
+				},
+			],
+		});
+		//事故快报回填
+		const onSelectItem = (item: any) => {
+			console.log('item', item[0]);
+			ruleForm.value.accidentExpressId = item[0].id
+			ruleForm.value.accidentName = item[0].accidentName
+			ruleForm.value.accidentDepartmentId = item[0].accidentDepartmentId
+			ruleForm.value.accidentDepartmentName = item[0].deptName
+			ruleForm.value.occurrencePlace = item[0].occurrencePlace
+			ruleForm.value.occurrenceTime = item[0].occurrenceTime
+		};
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建事故报告') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						accidentManagementSystemApi()
+							.addAccidentReport(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改事故报告') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						//TODO 上传组件待定
+						ruleForm.value.fileList = []
+						isShowDialog.value = false;
+						accidentManagementSystemApi()
+							.editAccidentReport(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+				ruleForm.value = {
+					accidentExpressId:'',
+					accidentExpressName:'',
+					accidentDepartmentId:'',
+					accidentDepartmentName:'',
+					occurrencePlace:'',
+					occurrenceTime:'',
+
+
+
+					accidentType: '',
+					accidentGrade: '',
+					economicLoss: '',
+					minorInjuryNum: '',
+					seriousInjuryNum: '',
+					deathNum: '',
+					accidentCause: '',
+					reportDeadline: '',
+					accidentLevel: '',
+					accidentDelayApply: '',
+					comprehensiveAnalysisDirect: '',
+					comprehensiveAnalysisIndirect: '',
+					rectificationMeasures: '',
+					accidentHandling: '',
+					fillInUserUid: '',
+					fillInUserName:'',
+					fillInTime: '',
+					relevantPersonnelRecords: '',
+					otherMaterials: '',
+					fileList: [],
+					status:''
+				};
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		const handleChange = (val: number) => {
+			console.log(val);
+		};
+		// 应急队伍弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		const onUser = (userItem: any) => {
+			ruleForm.value.fillInUserUid = userItem[0].uid;
+			ruleForm.value.fillInUserName = userItem[0].realName;
+		};
+		//el-tree-select回显
+		const propse = {
+			label: 'depName',
+			children: 'children',
+		};
+		const newTreeList = [];
+		//得到部门树
+		const department = async () => {
+			await goalManagementApi()
+					.getTreedepartment()
+					.then((res) => {
+						if (res.data.code == 200) {
+							data.value = res.data.data;
+							getTreeList(res.data.data, newTreeList);
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 递归树状数据且修改字段名
+		const getTreeList = (treeList, newTreeList) => {
+			treeList.map((c) => {
+				let tempData = {
+					depName: c.depName,
+					value: c.depId,
+					children: [],
+				};
+				if (c.children && c.children.length > 0) {
+					tempData.children = [];
+					getTreeList(c.children, tempData.children);
+				}
+				newTreeList.push(tempData);
+			});
+		};
+		onMounted(() => {
+			department();
+		});
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			onCancel,
+			fileList,
+			responsibleDepartment,
+			data,
+			Search,
+			ruleForm,
+			value1,
+			treeSelect,
+			daiInpt,
+			Shows,
+			ruleFormRef,
+			submitForm,
+			rules,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			onUser,
+			resetForm,
+			titles,
+			disabled,
+			emit,
+			handleChange,
+			onSelectItem,
+			newTreeList,
+			department,
+			getTreeList,
+			propse,
+			statusDisabled
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+::v-deep .el-form-item--default .el-form-item__label {
+	height: 100%;
+	text-align: right;
+}
+</style>
diff --git a/src/components/accidentManagementSystem/accidentReport/index.vue b/src/components/accidentManagementSystem/accidentReport/index.vue
new file mode 100644
index 0000000..6694d4b
--- /dev/null
+++ b/src/components/accidentManagementSystem/accidentReport/index.vue
@@ -0,0 +1,387 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+        <el-tab-pane
+            v-for="item in editableTabs"
+            :key="item.name"
+            :label="item.title"
+            :name="item.name"
+            >
+          <div class="button_Line">
+            <div class="button_Left">
+              <el-button size="default" type="primary"  @click="onOpenAdd">
+                <el-icon>
+                  <Plus />
+                </el-icon>新建
+              </el-button>
+              <el-button size="default" type="warning" plain :disabled="warning">
+                <el-icon>
+                  <Edit />
+                </el-icon>修改
+              </el-button>
+              <el-button size="default" type="danger" plain @click="onDeleteAll" :disabled="danger">
+                <el-icon>
+                  <Delete />
+                </el-icon>删除
+              </el-button>
+            </div>
+            <div class="button_Right">
+              <el-button @click="upButton">
+                <el-icon>
+                  <Upload />
+                </el-icon>
+              </el-button>
+              <el-button>
+                <el-icon>
+                  <Download />
+                </el-icon>
+              </el-button>
+              <el-button>
+                <el-icon>
+                  <Refresh />
+                </el-icon>
+              </el-button>
+            </div>
+          </div>
+          <el-table
+              :data="tableData"
+              style="width: 100%"
+              ref="multipleTableRef"
+              @selection-change="handleSelectionChange"
+          >
+            <el-table-column
+                type="selection"
+                width="55"
+            />
+            <el-table-column prop="accidentName" label="事故名称" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="deptName" label="事故部门" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="accidentType" label="事故类别" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="accidentGrade" label="事故等级" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="occurrencePlace" label="发生地点" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="occurrenceTime" label="发生时间" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column label="操作" width="260" align="center" fixed="right">
+              <template #default="scope">
+                <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+                  <el-icon style="margin-right: 5px"> <View /> </el-icon>查看
+                </el-button>
+                <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+                  <el-icon style="margin-right: 5px"> <EditPen /> </el-icon>修改
+                </el-button>
+                <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)"> 删除 </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="pages">
+            <el-pagination
+                v-model:currentPage="pageIndex"
+                v-model:page-size="pageSize"
+                :page-sizes="[10, 20, 30]"
+                :pager-count="5"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="40"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+          </div>
+        </el-tab-pane>
+        <!--<el-tab-pane label="已处理" name="second"></el-tab-pane>-->
+      </el-tabs>
+    </el-card>
+    <OpenAdd ref="addRef" @myAdd="onMyAdd" />
+<!--    <upData ref="upShow"></upData>-->
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  // ElTable,
+  ElMessageBox,
+  ElMessage,
+  TabsPaneContext,
+} from 'element-plus';
+import {
+  Plus,
+  Upload,
+  Download,
+  Refresh,
+  EditPen,
+  View,
+  Delete,
+  Edit,
+} from '@element-plus/icons-vue'
+import OpenAdd from '/@/views/accidentManagementSystem/accidentReport/component/openAdd.vue'
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import {accidentManagementSystemApi} from "/@/api/workInjuryDeclaration";
+
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    EditPen,
+    Plus,
+    Upload,
+    Download,
+    Refresh,
+    UpData,
+    Edit,
+    Delete,
+    OpenAdd,
+    View,
+  },
+  setup() {
+    const activeName = ref('first')
+    const statusDisabledFlag = ref('first')//控制弹窗中的事件状态是否可以修改
+    const handleClick = (tab: TabsPaneContext, event: Event) => {
+        if(tab.props.name=='first'){
+            listQuery.searchParams.status=1
+            statusDisabledFlag.value = 'first'
+            listApi()
+        }else if(tab.props.name=='second'){
+            listQuery.searchParams.status=2
+            statusDisabledFlag.value = 'second'
+            listApi()
+        }
+    }
+
+      const editableTabs = ref([
+          {
+              title: '处理中',
+              name: 'first',
+          },
+          {
+              title: '已处理',
+              name: 'second',
+          },
+      ])
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        status: 1,
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 请求列表数据
+    const listApi = async () => {
+      let res = await accidentManagementSystemApi().getAccidentReportList(listQuery);
+      // console.log(res);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage.error(res.data.msg);
+      }
+    };
+    const warning = ref(true);
+    const danger = ref(true);
+    const deletAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+        let arr = [];
+        for (let i = 0; i < valId.length; i++) {
+            arr.push(valId[i].id);
+        }
+        deletAll.value = arr;
+      // console.log(deletAll.value);
+      if (val.length == 1) {
+        warning.value = false;
+        danger.value = false;
+      } else if (val.length == 0) {
+        warning.value = true;
+        danger.value = true;
+      } else {
+        warning.value = true;
+        danger.value = false;
+      }
+    };
+    // 页面加载时
+    onMounted(() => {
+      listApi();
+    });
+    // 打开新建用户弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建事故报告','',false,statusDisabledFlag);
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 打开修改用户弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看事故报告',row,true,statusDisabledFlag);
+      } else {
+        addRef.value.openDialog('修改事故报告',row,false,statusDisabledFlag);
+      }
+    };
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+    // 删除用户
+    const onRowDel = (data: any) => {
+        var deleteList = [data]
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            accidentManagementSystemApi()
+                .deleteAccidentReport(deleteList)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            accidentManagementSystemApi()
+                .deleteAccidentReport(deletAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+    };
+    return {
+      onOpenAdd,
+      addRef,
+      activeName,
+      handleClick,
+      // upButton,
+      // upShow,
+      tableData,
+      pageIndex,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      listApi,
+      handleSelectionChange,
+      warning,
+      danger,
+      listQuery,
+      onRowDel,
+      total,
+      onMyAdd,
+      onDeleteAll,
+      onEdit,
+      editableTabs
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue b/src/components/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue
new file mode 100644
index 0000000..d349645
--- /dev/null
+++ b/src/components/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue
@@ -0,0 +1,240 @@
+<template>
+	<div>
+		<el-dialog v-model="dialogVisible" title="选择事故名称" width="900px" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-row>
+				<el-col :span="18">
+					<el-row>
+						<el-form ref="ruleFormRef" :model="ruleForm" :inline="true" status-icon>
+							<!--<el-form-item>-->
+							<!--<el-input size="default" v-model="listQuery.searchParams.id" placeholder="id"  style="min-width: 215px;"/>-->
+							<!--</el-form-item>-->
+							<el-form-item>
+								<el-input size="default" v-model="listQuery.searchParams.accidentName" placeholder="事故名称" style="min-width: 215px" />
+							</el-form-item>
+							<!--<el-form-item>-->
+							<!--<el-input size="default" v-model="listQuery.searchParams.deptName" placeholder="事故部门"  style="min-width: 215px;"/>-->
+							<!--</el-form-item>-->
+							<!--<el-form-item>-->
+							<!--<el-input size="default" v-model="listQuery.searchParams.occurrencePlace" placeholder="发生地点"  style="min-width: 215px;"/>-->
+							<!--</el-form-item>-->
+							<!--<el-form-item>-->
+							<!--<el-input size="default" v-model="listQuery.searchParams.occurrenceTime" placeholder="发生时间"  style="min-width: 215px;"/>-->
+							<!--</el-form-item>-->
+							<el-form-item>
+								<el-button size="default" type="primary" @click="listApi">查询</el-button>
+								<el-button size="default" @click="submitReset">重置</el-button>
+								<el-button size="default" :icon="Delete" @click="handleClose">清除选择</el-button>
+							</el-form-item>
+						</el-form>
+					</el-row>
+					<!--<el-table :data="tableData" style="width: 100%;margin-top:20px">-->
+					<!--<el-table-column type="selection" width="55" />-->
+					<!--<el-table-column align="center" prop="date" label="id" />-->
+					<!--<el-table-column align="center" prop="name" label="事故名称"/>-->
+					<!--<el-table-column align="center" prop="date" label="事故部门" />-->
+					<!--<el-table-column align="center" prop="name" label="发生地点"/>-->
+					<!--<el-table-column align="center" prop="name" label="发生时间"/>-->
+					<!--</el-table>-->
+					<!--<div class="pages">-->
+					<!--<el-pagination-->
+					<!--v-model:currentPage="currentPage4"-->
+					<!--v-model:page-size="pageSize4"-->
+					<!--:page-sizes="[100, 200, 300, 400]"-->
+					<!--:small="small"-->
+					<!--:disabled="disabled"-->
+					<!--:background="background"-->
+					<!--layout="total, sizes, prev, pager, next, jumper"-->
+					<!--:total="400"-->
+					<!--@size-change="handleSizeChange"-->
+					<!--@current-change="handleCurrentChange"-->
+					<!--/>-->
+					<!--</div>-->
+					<el-table :data="tableData" style="width: 100%" ref="multipleTableRef">
+						<el-table-column align="center">
+							<template #default="scope">
+								<el-radio-group v-model="radio1">
+									<el-radio :label="scope.row.id" size="large" @click="checkedItem(scope.row)">{{ null }}</el-radio>
+								</el-radio-group>
+							</template>
+						</el-table-column>
+						<!--<el-table-column prop="id" label="id" show-overflow-tooltip></el-table-column>-->
+						<el-table-column prop="accidentName" label="事故名称" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="deptName" label="事故部门" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="occurrencePlace" label="发生地点" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="occurrenceTime" label="发生时间" show-overflow-tooltip></el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="pageIndex"
+							v-model:page-size="pageSize"
+							:page-sizes="[10, 20, 30]"
+							:pager-count="5"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</el-col>
+				<el-col :span="6">
+					<el-tag v-for="tag in dynamicTags" :key="tag" class="mx-1" style="margin: 5px" closable :disable-transitions="false" @close="handleClose()">
+						{{ tag.accidentName }}
+					</el-tag>
+				</el-col>
+			</el-row>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+					<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref } from 'vue';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import {
+	// ElTable,
+	ElMessage,
+} from 'element-plus';
+import { accidentManagementSystemApi } from '/@/api/workInjuryDeclaration';
+export default defineComponent({
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+			listApi();
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				accidentName: '',
+			},
+		});
+		//单选按钮
+		const radio1 = ref('');
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+		const checkedItem = (row: object) => {
+			dynamicTags.value = [row];
+		};
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams = {};
+			listApi();
+		};
+		const submitForm = () => {
+			emit('selectItem', dynamicTags.value);
+			dialogVisible.value = false;
+		};
+		//查询list数据
+		const listApi = async () => {
+			let res = await accidentManagementSystemApi().accidentList(listQuery);
+			if (res.data.code == 200) {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage.error(res.data.msg);
+			}
+		};
+		// 右方点击添加后显示标签
+		const dynamicTags = ref([]);
+		const handleClose = () => {
+			dynamicTags.value = [];
+			radio1.value = '';
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			tableData,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			Delete,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			pageIndex,
+			pageSize,
+			total,
+			listApi,
+			listQuery,
+			radio1,
+			checkedItem,
+			submitReset,
+			submitForm,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-form--inline .el-form-item {
+	margin-bottom: 18px !important;
+	margin-right: 12px;
+}
+/*分页*/
+.pages {
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
diff --git a/src/components/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue b/src/components/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
new file mode 100644
index 0000000..581cd61
--- /dev/null
+++ b/src/components/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
@@ -0,0 +1,510 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="769px" draggable :fullscreen="full" @close="closeDialog(ruleFormRef)">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :rules="rules">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="申报人姓名" prop="declareUserName">
+							<el-input v-model="ruleForm.declareUserName" :disabled="disabled" placeholder="请填写申报人姓名"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="申报人性别" prop="declareUserGender">
+							<el-radio-group v-model="ruleForm.declareUserGender" :disabled="disabled">
+								<el-radio :label="false">男</el-radio>
+								<el-radio :label="true">女</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="申报人部门" placeholder="请选择" prop="declareDepartmentId">
+							<el-tree-select v-model="ruleForm.declareDepartmentId" :disabled="disabled"
+											:data="newTreeList" :props="propse" class="w100" placeholder="请选择" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故名称" prop="accidentName">
+							<el-input v-model="ruleForm.accidentName" :disabled="true" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="事故发生时间" prop="occurrenceTime">
+							<el-date-picker
+								v-model="ruleForm.occurrenceTime"
+								:disabled="true"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="工伤类型" prop="workInjuryType">
+							<el-select v-model="ruleForm.workInjuryType" :disabled="disabled" class="w100" placeholder="请选择">
+								<el-option label="轻微伤" value="轻微伤"></el-option>
+								<el-option label="轻伤" value="轻伤"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="申报日期" prop="declareDate">
+							<el-date-picker
+								v-model="ruleForm.declareDate"
+								:disabled="disabled"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="损失工时" prop="lostTime">
+							<el-input v-model="ruleForm.lostTime" :disabled="disabled" placeholder="请填写损失工时"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="就诊医院" prop="visitHospital">
+							<el-input v-model="ruleForm.visitHospital" :disabled="disabled" placeholder="请填写就诊医院"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="就诊结果" prop="visitResult">
+							<el-input v-model="ruleForm.visitResult" :disabled="disabled" placeholder="请填写就诊结果"></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="相关附件">
+							<uploaderImg :fileList="fileList" :disabled="disabled"></uploaderImg>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="注意事项" prop="mattersNeedingAttention">
+							<el-input v-model="ruleForm.mattersNeedingAttention" :disabled="disabled" placeholder="请填写注意事项"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="材料是否齐全" prop="completeMaterials">
+							<el-radio-group v-model="ruleForm.completeMaterials" :disabled="disabled">
+								<el-radio :label="false">否</el-radio>
+								<el-radio :label="true">是</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="备注" prop="remark">
+							<el-input v-model="ruleForm.remark" :disabled="disabled" type="textarea" placeholder="请填写备注" maxlength="150"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<AccidentName @selectItem="onSelectItem" ref="showRef" />
+		<userSelections ref="userRef" />
+		<RegionsDialog ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import {
+	reactive,
+	ref,
+	defineComponent,
+	onMounted
+} from 'vue';
+
+import type { UploadUserFile, FormInstance,FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import UserSelections from '/@/components/userSelections/index.vue';
+import AccidentName from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue';
+import RegionsDialog from '/@/components/regionsDialog/index.vue';
+import uploaderImg from '/@/components/uploaderImg/index.vue';
+import { emergencySuppliesApi } from '/@/api/contingencyManagement/emergencyResources';
+import { accidentManagementSystemApi } from '/@/api/workInjuryDeclaration';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		AccidentName,
+		UserSelections,
+		RegionsDialog,
+		uploaderImg
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			declareUserName: '',
+			declareUserGender: '',
+			declareDepartmentId: '',
+			accidentName:'',
+			accidentExpressId: '',
+			workInjuryType: '',
+			declareDate: '',
+			lostTime: '',
+			visitHospital: '',
+			visitResult: '',
+			mattersNeedingAttention: '',
+			completeMaterials: '',
+			remark: '',
+			fileList: [
+				{
+					fileName: '',
+					fileUrl: '',
+				},
+			],
+		});
+		const titles = ref();
+		const disabled = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看工伤申报' || title == '修改工伤申报') {
+				accidentManagementSystemApi()
+					.seeAccidentManagementSystem(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+						}
+					});
+			}
+		};
+		//日期选择器
+		const value1 = ref('');
+		// 上传附件
+		const fileList = ref<UploadUserFile[]>([]);
+		// 可选择树
+		const treeSelect = ref();
+		const tree = [
+		];
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = [
+
+		];
+		//el-tree-select回显
+		const propse = {
+			label: 'depName',
+			children: 'children',
+		};
+		const newTreeList = [];
+		//得到部门树
+		const department = async () => {
+			await goalManagementApi()
+					.getTreedepartment()
+					.then((res) => {
+						if (res.data.code == 200) {
+							data.value = res.data.data;
+							getTreeList(res.data.data, newTreeList);
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 递归树状数据且修改字段名
+		const getTreeList = (treeList, newTreeList) => {
+			treeList.map((c) => {
+				let tempData = {
+					depName: c.depName,
+					value: c.depId,
+					children: [],
+				};
+				if (c.children && c.children.length > 0) {
+					tempData.children = [];
+					getTreeList(c.children, tempData.children);
+				}
+				newTreeList.push(tempData);
+			});
+		};
+		onMounted(() => {
+			department();
+		});
+		// 关闭弹窗
+		const closeDialog = (formEl: FormInstance | undefined) => {
+			formEl.resetFields();
+			isShowDialog.value = false;
+		};
+		// 必填项提示
+		const rules = reactive<FormRules>({
+			declareUserName: [
+				{
+				  required: true,
+				  message: '申报人姓名不能为空',
+				  trigger: 'change',
+				},
+			  ],
+			declareUserGender: [
+				{
+				  required: true,
+				  message: '申报人性别不能为空',
+				  trigger: 'change',
+				},
+			  ],
+			declareDepartmentId: [
+				{
+				  required: true,
+				  message: '申报人部门不能为空',
+				  trigger: 'change',
+				},
+			  ],
+			accidentName: [
+				{
+				  required: true,
+				  message: '事故名称不能为空',
+				  trigger: 'change',
+				},
+			  ],
+			workInjuryType: [
+				{
+				  required: true,
+				  message: '工伤类型不能为空',
+				  trigger: 'change',
+				},
+			  ],
+			declareDate: [
+				{
+				  required: true,
+				  message: '申报日期不能为空',
+				  trigger: 'blur',
+				},
+			  ],
+			lostTime: [
+				{
+					required: true,
+					message: '损失工时不能为空',
+					trigger: 'change',
+				},
+			],
+			visitHospital: [
+				{
+					required: true,
+					message: '就诊医院不能为空',
+					trigger: 'change',
+				},
+			],
+			visitResult: [
+				{
+					required: true,
+					message: '就诊结果不能为空',
+					trigger: 'change',
+				},
+			],
+			mattersNeedingAttention: [
+				{
+					required: true,
+					message: '注意事项不能为空',
+					trigger: 'change',
+				},
+			],
+			completeMaterials: [
+				{
+					required: true,
+					message: '材料状态不能为空',
+					trigger: 'change',
+				},
+			],
+			remark: [
+				{
+					required: true,
+					message: '备注不能为空',
+					trigger: 'change',
+				},
+			]
+		})
+
+		// 事故名称弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		//事故快报回填
+		const onSelectItem = (item: any) => {
+			console.log('item', item);
+			ruleForm.value.accidentExpressId = item[0].id
+			ruleForm.value.accidentName = item[0].accidentName
+			ruleForm.value.occurrenceTime = item[0].occurrenceTime
+
+		};
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建工伤申报') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						accidentManagementSystemApi()
+							.workAdd(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改工伤申报') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						accidentManagementSystemApi()
+							.workView(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+				ruleForm.value = {
+					declareUserName: '',
+					declareUserGender: '',
+					declareDepartmentId: '',
+					accidentExpressId: '',
+					workInjuryType: '',
+					declareDate: '',
+					lostTime: '',
+					visitHospital: '',
+					visitResult: '',
+					mattersNeedingAttention: '',
+					completeMaterials: '',
+					remark: '',
+					fileList: [
+						{
+							fileName: '',
+							fileUrl: '',
+						},
+					],
+				};
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDialog();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			daiInpt,
+			openDialog,
+			isShowDialog,
+			fileList,
+			responsibleDepartment,
+			data,
+			Search,
+			ruleForm,
+			value1,
+			treeSelect,
+			tree,
+			showRef,
+			ruleFormRef,
+			submitForm,
+			rules,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			resetForm,
+			titles,
+			disabled,
+			emit,
+			onSelectItem,
+			department,
+			getTreeList,
+			newTreeList,
+			propse,
+			closeDialog,
+			uploaderImg
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
diff --git a/src/components/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue b/src/components/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue
new file mode 100644
index 0000000..f3ef29b
--- /dev/null
+++ b/src/components/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue
@@ -0,0 +1,400 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        title="新建事故快报"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="事故名称" prop="teamName">
+              <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="事故部门"  placeholder="请选择">
+              <el-tree-select
+                  v-model="ruleForm.responsibleDepartment"
+                  :data="data" class="w100"
+                  placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="发生地点" prop="teamLeader">
+              <el-input v-model="ruleForm.teamName" placeholder="请填写发生地点"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="发生时间" prop="telephone">
+              <el-date-picker
+                  v-model="value1"
+                  type="datetime"
+                  class="w100"
+                  placeholder="选择日期时间"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="事故原因" prop="teamLevel">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="人的不安全行为" value="admin"></el-option>
+                <el-option label="物的不安全状态" value="common"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="是否有伤亡">
+              <el-radio-group v-model="ruleForm.resource">
+                <el-radio label="是" />
+                <el-radio label="否" />
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="事故简要经过">
+              <el-input v-model="ruleForm.describe" type="textarea" placeholder="请填写事故简要经过" maxlength="150"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="事故原因初步分析">
+              <el-input v-model="ruleForm.describe" type="textarea" placeholder="请填写事故原因初步分析" maxlength="150"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="应急防范措施">
+              <el-input v-model="ruleForm.describe" type="textarea" placeholder="请填写应急防范措施" maxlength="150"></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="事故照片">
+              <el-input v-model="ruleForm.describe" type="textarea" placeholder="请填写应急防范措施" maxlength="150"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel" size="default">关闭</el-button>
+          <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <CheckTemplate ref="Shows"/>
+    <userSelections ref="userRef"/>
+    <RegionsDialog ref="openRef"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  reactive,
+  ref,
+  defineComponent
+} from 'vue';
+
+import type {
+  UploadUserFile,
+  FormInstance,
+  // FormRules,
+} from 'element-plus'
+
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from '/@/components/checkTemplate/index.vue'
+import RegionsDialog from '/@/components/regionsDialog/index.vue'
+
+export default defineComponent({
+  name: 'openEdit',
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+  setup() {
+    const isShowDialog = ref(false)
+
+    const ruleFormRef = ref<FormInstance>()
+    //定义表单
+    const ruleForm = reactive({
+      teamName: '', // 队伍名称
+      teamLeader: '', //队伍负责人
+      department: [], // 负责人部门
+      phone: '', // 负责人手机
+      telephone: '', // 固定电话
+    });
+    // 打开弹窗
+    const openDialog = () => {
+      // state.ruleForm = row;
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+    //日期选择器
+    const value1 = ref('')
+    // 上传附件
+    const fileList = ref<UploadUserFile[]>([])
+    // 可选择树
+    const treeSelect = ref()
+    const tree = [
+      {
+        value: '1',
+        label: 'Level one 1',
+        children: [
+          {
+            value: '1-1',
+            label: 'Level two 1-1',
+            children: [
+              {
+                value: '1-1-1',
+                label: 'Level three 1-1-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: 'Level one 2',
+        children: [
+          {
+            value: '2-1',
+            label: 'Level two 2-1',
+            children: [
+              {
+                value: '2-1-1',
+                label: 'Level three 2-1-1',
+              },
+            ],
+          },
+          {
+            value: '2-2',
+            label: 'Level two 2-2',
+            children: [
+              {
+                value: '2-2-1',
+                label: 'Level three 2-2-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: 'Level one 3',
+        children: [
+          {
+            value: '3-1',
+            label: 'Level two 3-1',
+            children: [
+              {
+                value: '3-1-1',
+                label: 'Level three 3-1-1',
+              },
+            ],
+          },
+          {
+            value: '3-2',
+            label: 'Level two 3-2',
+            children: [
+              {
+                value: '3-2-1',
+                label: 'Level three 3-2-1',
+              },
+            ],
+          },
+        ],
+      },
+    ]
+    //定义树形下拉框
+    const responsibleDepartment = ref()
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '经营班子',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: '生产运行部',
+        children: [
+          {
+            value: '2-1',
+            label: '灌装一班',
+            children: []
+          },
+          {
+            value: '2-2',
+            label: '工艺四班',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: '设备部',
+        children: [
+          {
+            value: '3-1',
+            label: '仪表班',
+            children: [],
+          },
+          {
+            value: '3-2',
+            label: '机修班',
+            children: [],
+          },
+        ],
+      },
+    ]
+    // 必填项提示
+    // const rules = reactive<FormRules>({
+    //   teamName: [
+    //     {
+    //       required: true,
+    //       message: '队伍名称不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLevel: [
+    //     {
+    //       required: true,
+    //       message: '队伍级别不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLeader: [
+    //     {
+    //       required: true,
+    //       message: '队伍负责人不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   responsibleDepartment: [
+    //     {
+    //       required: true,
+    //       message: '负责人部门不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamPhone: [
+    //     {
+    //       required: true,
+    //       message: '负责人手机不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   telephone: [
+    //     {
+    //       required: true,
+    //       message: '固定电话不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    // })
+    // 表单提交验证必填项
+    const submitForm = async (formEl: FormInstance | undefined) => {
+      if (!formEl) return
+      await formEl.validate((valid, fields) => {
+        if (valid) {
+          console.log('submit!')
+        } else {
+          console.log('error submit!', fields)
+        }
+      })
+    }
+    // 应急队伍弹窗
+    const Shows=ref()
+    const daiInpt=()=>{
+      Shows.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      onCancel,
+      fileList,
+      responsibleDepartment,
+      data,
+      Search,
+      ruleForm,
+      value1,
+      treeSelect,
+      tree,
+      daiInpt,
+      Shows,
+      ruleFormRef,
+      submitForm,
+      // rules,
+      openUser,
+      userRef,
+      regionsDialog,
+      openRef,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/accidentManagementSystem/workInjuryDeclaration/index.vue b/src/components/accidentManagementSystem/workInjuryDeclaration/index.vue
new file mode 100644
index 0000000..503246d
--- /dev/null
+++ b/src/components/accidentManagementSystem/workInjuryDeclaration/index.vue
@@ -0,0 +1,406 @@
+<template>
+    <div class="system-user-container">
+        <el-card shadow="hover">
+            <div class="system-user-search mb15">
+                <el-form ref="ruleFormRef" size="default" label-width="80px" :inline="true">
+                    <el-form-item prop="telephone">
+                        <el-input v-model="listQuery.searchParams.accidentName" placeholder="请选择事故快报" :disabled="true"
+                                  class="input-with-select">
+                            <template #append>
+                                <el-button :icon="Search" @click="daiInpt"/>
+                            </template>
+                        </el-input>
+                    </el-form-item>
+                    <el-button size="default" type="primary" class="ml10" @click="listApi"> 查询</el-button>
+                    <el-button size="default" class="ml10" @click="submitReset"> 重置</el-button>
+                </el-form>
+            </div>
+            <div class="button_Line">
+                <div class="button_Left">
+                    <el-button size="default" type="primary" @click="onOpenAdd">
+                        <el-icon>
+                            <Plus/>
+                        </el-icon>
+                        新建
+                    </el-button>
+                    <el-button size="default" type="warning" plain :disabled="warning">
+                        <el-icon>
+                            <Edit/>
+                        </el-icon>
+                        修改
+                    </el-button>
+                    <el-button size="default" type="danger" plain @click="onDeleteAll" :disabled="danger">
+                        <el-icon>
+                            <Delete/>
+                        </el-icon>
+                        删除
+                    </el-button>
+                </div>
+                <div class="button_Right">
+                    <el-button @click="upButton">
+                        <el-icon>
+                            <Upload/>
+                        </el-icon>
+                    </el-button>
+                    <el-button>
+                        <el-icon>
+                            <Download/>
+                        </el-icon>
+                    </el-button>
+                    <el-button>
+                        <el-icon>
+                            <Refresh/>
+                        </el-icon>
+                    </el-button>
+                </div>
+            </div>
+            <el-table :data="tableData" style="width: 100%" ref="multipleTableRef"
+                      @selection-change="handleSelectionChange">
+                <el-table-column type="selection" width="55"/>
+                <el-table-column prop="declareUserName" label="申报人名称" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column prop="deptName" label="申报人部门" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column prop="accidentName" label="事故名称" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column prop="workInjuryType" label="工商类型" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column prop="declareDate" label="申报日期" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column prop="visitHospital" label="就诊医院" show-overflow-tooltip sortable></el-table-column>
+                <el-table-column label="操作" width="260" align="center" fixed="right">
+                    <template #default="scope">
+                        <!--<el-button size="small" text disabled>-->
+                        <!--<el-icon style="margin-right: 5px"> <Upload /> </el-icon>上报-->
+                        <!--</el-button>-->
+                        <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+                            <el-icon style="margin-right: 5px">
+                                <View/>
+                            </el-icon>
+                            查看
+                        </el-button>
+                        <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+                            <el-icon style="margin-right: 5px">
+                                <EditPen/>
+                            </el-icon>
+                            修改
+                        </el-button>
+                        <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)"> 删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="pages">
+                <el-pagination
+                        v-if="tableData.length == 0 ? false : true"
+                        v-model:currentPage="pageIndex"
+                        v-model:page-size="pageSize"
+                        :page-sizes="[10, 20, 30]"
+                        :pager-count="5"
+                        layout="total, sizes, prev, pager, next, jumper"
+                        :total="total"
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                />
+            </div>
+        </el-card>
+        <AccidentName ref="showRef" @selectItem="onSelectItem"/>
+        <OpenAdd ref="addRef" @myAdd="onMyAdd"/>
+        <!--		<OpenEdit ref="editRef" />-->
+        <upData ref="upShow"></upData>
+    </div>
+</template>
+
+<script lang="ts">
+    import {
+        // toRefs,
+        reactive,
+        // onMounted,
+        ref,
+        defineComponent,
+        onMounted,
+    } from 'vue';
+    import {
+        ElMessageBox,
+        ElMessage
+    } from 'element-plus';
+    import {
+        Plus,
+        Download,
+        Refresh,
+        View,
+        EditPen,
+        Edit,
+        Delete,
+        Search,
+        Upload
+    } from '@element-plus/icons-vue';
+    import AccidentName from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue';
+    import OpenAdd from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue';
+    import OpenEdit from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue';
+    import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+    import {accidentManagementSystemApi} from '/@/api/accidentManagementSystem';
+
+    export default defineComponent({
+        name: 'index',
+        components: {
+            OpenEdit,
+            EditPen,
+            Plus,
+            Upload,
+            Download,
+            Refresh,
+            Edit,
+            View,
+            Delete,
+            UpData,
+            OpenAdd,
+            AccidentName,
+        },
+        setup() {
+            //列表参数
+            const listQuery = reactive({
+                pageIndex: 1,
+                pageSize: 10,
+                searchParams: {
+                    accidentExpressId: "",
+                },
+            });
+            //搜索条件回填
+            const onSelectItem = (item: any) => {
+                console.log('item', item[0].accidentName);
+                listQuery.searchParams.accidentExpressId = item[0].id
+                listQuery.searchParams.accidentName = item[0].accidentName
+            };
+            // 定义表格数据
+            const tableData = ref([]);
+            // 请求列表数据
+            const listApi = async () => {
+                let res = await accidentManagementSystemApi().workList(listQuery);
+                if (res.data.code == 200) {
+                    tableData.value = res.data.data;
+                    pageIndex.value = res.data.pageIndex;
+                    pageSize.value = res.data.pageSize;
+                    total.value = res.data.total;
+                } else {
+                    ElMessage.error(res.data.msg);
+                }
+            };
+            onMounted(() => {
+                listApi();
+            });
+            // 重置
+            const submitReset = () => {
+                listQuery.searchParams.accidentExpressId = ''
+                listQuery.searchParams.accidentName = ''
+                listApi();
+            }
+            const warning = ref(true);
+            const danger = ref(true);
+            const deletAll = ref();
+            const handleSelectionChange = (val: any) => {
+                let valId = JSON.parse(JSON.stringify(val));
+                let arr = [];
+                for (let i = 0; i < valId.length; i++) {
+                    arr.push(valId[i].id);
+                }
+                deletAll.value = arr;
+                if (val.length == 1) {
+                    warning.value = false;
+                    danger.value = false;
+                } else if (val.length == 0) {
+                    warning.value = true;
+                    danger.value = true;
+                } else {
+                    warning.value = true;
+                    danger.value = false;
+                }
+            };
+            // 事故名称弹窗
+            const showRef = ref();
+            const daiInpt = () => {
+                showRef.value.openDailog();
+            };
+            // 打开新增弹窗
+            const addRef = ref();
+            const onOpenAdd = () => {
+                addRef.value.openDialog('新建工伤申报', false);
+            };
+            // 新增后刷新
+            const onMyAdd = (e: boolean) => {
+                if (e) {
+                    listApi();
+                } else {
+                    listApi();
+                }
+            };
+            // 上传
+            const upShow = ref();
+            const upButton = () => {
+                upShow.value.openDialog();
+            };
+
+            // 打开修改用户弹窗
+            // const editRef = ref();
+            const onEdit = (val: string, row: object) => {
+                if (val == '详情') {
+                    addRef.value.openDialog('查看工伤申报', row, true);
+                } else {
+                    addRef.value.openDialog('修改工伤申报', row, false);
+                }
+            };
+            // 删除用户
+            const onRowDel = (data: any) => {
+                ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+                    confirmButtonText: '确认',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                })
+                    .then(() => {
+                        accidentManagementSystemApi()
+                            .workDelete([data])
+                            .then((res) => {
+                                if (res.data.code == 200) {
+                                    ElMessage({
+                                        showClose: true,
+                                        message: res.data.msg,
+                                        type: 'success',
+                                    });
+                                    listApi();
+                                } else {
+                                    ElMessage({
+                                        showClose: true,
+                                        message: res.data.msg,
+                                        type: 'error',
+                                    });
+                                    listApi();
+                                }
+                            });
+                    })
+                    .catch(() => {
+                    });
+            };
+            // 多选删除
+            const onDeleteAll = () => {
+                ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                })
+                    .then(() => {
+                        accidentManagementSystemApi()
+                            .workDelete(deletAll.value)
+                            .then((res) => {
+                                if (res.data.code == 200) {
+                                    ElMessage({
+                                        showClose: true,
+                                        message: res.data.msg,
+                                        type: 'success',
+                                    });
+                                    listApi();
+                                } else {
+                                    ElMessage({
+                                        showClose: true,
+                                        message: res.data.msg,
+                                        type: 'error',
+                                    });
+                                    listApi();
+                                }
+                            });
+                    })
+                    .catch(() => {
+                    });
+            };
+            // 分页
+            const pageIndex = ref();
+            const pageSize = ref();
+            const total = ref();
+            // 分页改变
+            const handleSizeChange = (val: number) => {
+                listQuery.pageSize = val;
+            };
+            // 分页未改变
+            const handleCurrentChange = (val: number) => {
+                listQuery.pageIndex = val;
+            };
+            return {
+                daiInpt,
+                showRef,
+                upButton,
+                upShow,
+                tableData,
+                pageIndex,
+                pageSize,
+                handleSizeChange,
+                handleCurrentChange,
+                onEdit,
+                onOpenAdd,
+                addRef,
+                // editRef,
+                listApi,
+                Search,
+                submitReset,
+                onDeleteAll,
+                handleSelectionChange,
+                warning,
+                danger,
+                listQuery,
+                onRowDel,
+                total,
+                onMyAdd,
+                onSelectItem
+            };
+        },
+    });
+</script>
+<style scoped lang="scss">
+    .table_Box {
+        padding: 20px;
+        background-color: #fff;
+    }
+
+    .tableForm {
+        margin-top: 10px;
+    }
+
+    /*按钮行*/
+    .button_Line {
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+    }
+
+    //分页
+    .pages {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 15px;
+    }
+
+    ::v-deep .el-pagination .el-pager li {
+        margin: 0 5px;
+        background-color: #f4f4f5;
+        color: #606266;
+        min-width: 30px;
+        border-radius: 2px;
+    }
+
+    ::v-deep .el-pagination .el-pager li.is-active {
+        background-color: #409eff;
+        color: #fff;
+    }
+
+    ::v-deep .el-pagination .btn-prev {
+        margin: 0 5px;
+        background-color: #f4f4f5;
+        color: #606266;
+        min-width: 30px;
+        border-radius: 2px;
+    }
+
+    ::v-deep .el-pagination button:disabled {
+        color: #c0c4cc;
+    }
+
+    ::v-deep .el-pagination .btn-next {
+        margin: 0 5px;
+        background-color: #f4f4f5;
+        color: #606266;
+        min-width: 30px;
+        border-radius: 2px;
+    }
+</style>
\ No newline at end of file
diff --git a/src/components/checkTemplate/index.vue b/src/components/checkTemplate/index.vue
index 15734ac..24f6c25 100644
--- a/src/components/checkTemplate/index.vue
+++ b/src/components/checkTemplate/index.vue
@@ -26,10 +26,10 @@
             :data="tableData"
             ref="multipleTableRef"
             style="width: 100%;margin-top:20px"
-            @cell-click="radio"
+            @selection-change="handleSelectionChange"
         >
-          <el-table-column width="55">
-            <template #default="scope">
+          <el-table-column type="selection" width="55" v-if="types==0">
+            <template #default="scope" v-if="types!=0">
               <el-radio-group v-model="radio1">
                 <el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
               </el-radio-group>
@@ -88,14 +88,16 @@
 import {
   ElMessage,
 } from 'element-plus';
-import {contingencyApi} from "/@/api/contingency";
+import {contingencyApi} from "/@/api/contingencyManagement/contingency";
 
 export default defineComponent({
   setup(props, { emit }) {
+    const types=ref()
     const dialogVisible = ref<boolean>(false);
-    const openDailog = () => {
+    const openDailog = (type:any) => {
+      types.value=type
       dialogVisible.value = true;
-      onSubmit();
+      // onSubmit();
     };
     // 搜索条件
     const listQuery = reactive({
@@ -123,10 +125,17 @@
       }
     }
     const submitForm = () => {
-      let obj = JSON.parse(JSON.stringify(dynamicTags.value));
-      emit('SearchUser', obj[0]);
+      if(types.value==0){
+        emit('SearchUser',dynamicTags.value,types.value);
+      }
+      else {
+        emit('SearchUser',dynamicTags.value[0],types.value);
+      }
       dialogVisible.value = false;
     };
+    const handleSelectionChange = (val:any) => {
+      dynamicTags.value=val
+    }
     // 重置
     const submitReset = () => {
       listQuery.searchParams.teamName = '';
@@ -157,6 +166,7 @@
     };
     const radio1 = ref('');
     const radio = (event: any) => {
+      console.log(event)
       dynamicTags.value[0] = event;
     };
     onMounted(() => {
@@ -192,7 +202,8 @@
       radio,
       radio1,
       submitForm,
-
+      types,
+      handleSelectionChange,
     };
   },
 });
diff --git a/src/components/contingencyManagement/abolishDialog/abolishDialog.vue b/src/components/contingencyManagement/abolishDialog/abolishDialog.vue
new file mode 100644
index 0000000..69dba30
--- /dev/null
+++ b/src/components/contingencyManagement/abolishDialog/abolishDialog.vue
@@ -0,0 +1,139 @@
+<template>
+  <div class="system-user-container">
+  <h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+  <div class="box">
+    <el-menu
+        :default-active="activeIndex"
+        class="el-menu-demo"
+        background-color="#ebeef5"
+        text-color="#fff"
+        active-text-color="#fff"
+        mode="horizontal"
+        @select="handleSelect"
+    >
+      <el-menu-item index="1">表单信息</el-menu-item>
+      <el-menu-item index="2">流程图</el-menu-item>
+    </el-menu>
+    <div v-if="activeIndex == 1" class="navType">
+      <formInformationTop v-if="false"></formInformationTop>
+      <formInformationTops></formInformationTops>
+    </div>
+    <div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+      <div class="title2">流程图
+        <!-- <img src=""> -->
+      </div>
+      <div style="width:100%;height:400px"></div>
+    </div>
+  </div>
+  <lowerPlate></lowerPlate>
+  <div class="btns">
+    <el-button type="primary">启动</el-button>
+  </div>
+  </div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+  components:{lowerPlate,formInformationTop,formInformationTops},
+  setup() {
+    const activeIndex = ref<any>('1');
+    const handleSelect = (key: string, keyPath: string[]) => {
+      // console.log(key, keyPath);
+      activeIndex.value = key;
+    };
+    const form = reactive({
+      name: '',
+      region: '',
+      date1: '',
+      date2: '',
+      delivery: false,
+      type: [],
+      resource: '',
+      desc: '',
+    });
+
+    const router=useRouter()
+    const Type=onMounted(()=>{
+      // console.log("xxxxxxx",router)
+    })
+
+    return {
+      activeIndex,
+      handleSelect,
+      form,
+      router,
+      Type
+    };
+  },
+});
+</script>
+<style scoped>
+.title {
+  text-align: center;
+  font-size: 16px;
+  margin-bottom: 20px;
+}
+.box{
+  border: 1px solid #dcdfe6;
+  box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+  background-color: #fff;
+  padding: 15px;
+}
+.tiao{
+  width: 100%;
+  height: 1px;
+  background-color: #dcdfe6;
+  margin: 30px 0 ;
+  position: relative;
+}
+.typeS{
+  width: 80px;
+  background-color: #fff;
+  position: absolute;
+  left: 30px;
+  top: -9px;
+  font-size: 14px;
+  text-align: center;
+}
+.logoColor{
+  background-color: #67c23a;
+  color: #fff;
+  padding:  5px 8px;
+  border-radius: 5px;
+  margin-right: 5px;
+}
+.btns{
+  width: 100%;
+  padding:20px 0;
+  background-color: #fff;
+  position: fixed;
+  bottom: 0px;
+  left: 0px;
+  text-align: center;
+  box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+
+}
+.title2{
+  padding: 20px 0 20px 10px;
+  width: 100%;
+  border: 1px solid #dcdfe6;
+}
+
+/*弹窗底部边框线*/
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+/*弹窗顶部边框线*/
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
diff --git a/src/components/contingencyManagement/abolishDialog/component/formInformationTop.vue b/src/components/contingencyManagement/abolishDialog/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/components/contingencyManagement/abolishDialog/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/components/contingencyManagement/abolishDialog/component/formInformationTops.vue b/src/components/contingencyManagement/abolishDialog/component/formInformationTops.vue
new file mode 100644
index 0000000..68ae8a6
--- /dev/null
+++ b/src/components/contingencyManagement/abolishDialog/component/formInformationTops.vue
@@ -0,0 +1,318 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案名称">
+					<el-input v-model="form.name" disabled placeholder="请填写预案名称"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="适用部门">
+          <el-tree-select
+              class="select"
+              placeholder="请选择"
+              v-model="value"
+              :data="data"
+              :render-after-expand="false"
+              show-checkbox
+              multiple
+              clearable
+              disabled
+          />
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案类型">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="综合应急预案" value="shanghai" />
+            <el-option label="现场处置方案" value="beijing" />
+            <el-option label="专项应急预案" value="shanghai" />
+            <el-option label="其它预案" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="危险源关联">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="是" value="shanghai" />
+            <el-option label="否" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案级别">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="公司及" value="shanghai" />
+            <el-option label="分厂级" value="beijing" />
+            <el-option label="车间级" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="编写人">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser" disabled/>
+            </template>
+          </el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="编写部门" disabled placeholder="请选择">
+          <el-tree-select
+              class="select"
+              v-model="value2"
+              :data="dataSelect"
+              :render-after-expand="false"
+              multiple
+              check-strictly
+              check-on-click-node
+              clearable
+              disabled
+          />
+				</el-form-item>
+			</el-col>
+      <el-col :span="12">
+        <el-form-item label="发布实施日期">
+          <el-date-picker v-model="datetime" type="datetime" disabled placeholder="选择日期时间" style="width: 100%" />
+        </el-form-item>
+      </el-col>
+		</el-row>
+    <el-row>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="应急队伍" prop="telephone" @click="daiInpt" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" disabled/>
+            </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="预案附件">
+          <el-upload
+              v-model:file-list="fileList"
+              class="upload-demo"
+              action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+              :on-change="handleChange"
+              disabled
+          >
+            <el-button type="primary" disabled
+            >点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+                添加相关附件
+              </div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="区域名称" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" disabled @click="regionsDialog"/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+    </el-row>
+	</el-form>
+  <checkTemplate ref="ShowRef"/>
+  <userSelections ref="userRef"/>
+  <RegionsDialog ref="openRef"/>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  ref,
+  reactive
+} from 'vue';
+import {
+  Search
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from "/@/components/checkTemplate/index.vue"
+import RegionsDialog from "/@/components/regionsDialog/index.vue";
+export default defineComponent({
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+	setup() {
+		const form = reactive({
+			name: '',
+      value: '',
+      value2: '',
+      teamLeader: '',
+
+      // data: '',
+      // dataSelect: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+
+    // 可选择树形选择框
+    const value = ref()
+
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 树形选择框
+    const value2 = ref()
+
+    const dataSelect = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 应急队伍弹窗
+    const ShowRef=ref()
+    const daiInpt=()=>{
+      ShowRef.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开编写人选择用户弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    // 日期选择
+    const datetime = ref('')
+		return {
+			form,
+      value,
+      data,
+      value2,
+      dataSelect,
+      openUser,
+      userRef,
+      Search,
+      ShowRef,
+      daiInpt,
+      openRef,
+      datetime,
+      regionsDialog,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0;
+}
+.select{
+  width: 100%;
+}
+.select ::v-deep .el-select{
+  width: 100%;
+}
+</style>
diff --git a/src/components/contingencyManagement/abolishDialog/component/lowerPlate.vue b/src/components/contingencyManagement/abolishDialog/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/components/contingencyManagement/abolishDialog/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期">
+						<el-date-picker v-model="form.date1" type="date" placeholder="下级审批日期" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+	    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/contingency/component/addEmergencyPersonnel.vue b/src/components/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
new file mode 100644
index 0000000..de19c3f
--- /dev/null
+++ b/src/components/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
@@ -0,0 +1,314 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="40%"
+        draggable
+        :fullscreen="full"
+        @close="resetForm(ruleFormRef)"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          :rules="rules"
+          :disabled="disabled"
+          label-width="90px">
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="选择人员" prop="name">
+              <el-input
+                  v-model="ruleForm.userName"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员工号" prop="jobNumber">
+              <el-input v-model="ruleForm.jobNumber" placeholder="请填写人员工号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员名称" prop="name">
+              <el-input v-model="ruleForm.name" placeholder="请填写人员名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员性别" prop="gender">
+              <el-radio-group v-model="ruleForm.gender">
+                <el-radio :label="false">男</el-radio>
+                <el-radio :label="true">女</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="手机号码" prop="phone">
+              <el-input v-model="ruleForm.phone" placeholder="请填写手机号码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="职位" prop="position">
+              <el-input v-model="ruleForm.position" placeholder="请填写职位"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+          <el-button size="default" type="primary" @click="addForm(ruleFormRef)">继续添加</el-button>
+					<el-button size="default" @click="resetForm(ruleFormRef)">关闭</el-button>
+          <el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)" >确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <DailogSearchUserManger ref="userRef" @SearchUser="onUser"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  reactive,
+  defineComponent
+} from 'vue';
+
+import type {
+  FormRules,
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen,
+} from '@element-plus/icons-vue'
+import DailogSearchUserManger from "/@/components/DailogSearchUserManger/index.vue"
+import {contingencyApi} from "/@/api/contingencyManagement/contingency";
+
+export default defineComponent({
+  name: 'addTeamLeader',
+  components: {
+    // Search,
+    DailogSearchUserManger
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+    const ruleFormRef = ref<FormInstance>()
+    const ruleForm = ref ({
+      teamId: '',
+      userUid: '',
+      userName:'',
+      gender: '',
+      jobNumber: '', // 人员工号
+      name: '', // 人员名称
+      phone: '', // 手机号码
+      position: '', // 职位
+    });
+    const rules = reactive<FormRules>({
+      jobNumber: [
+        {
+          required: true,
+          message: '人员工号不能为空',
+          trigger: 'change',
+        },
+      ],
+      personnelName: [
+        {
+          required: true,
+          message: '人员名称不能为空',
+          trigger: 'change',
+        },
+      ],
+      personnelGender: [
+        {
+          required: true,
+          message: '人员性别不能为空',
+          trigger: 'change',
+        },
+      ],
+      phone: [
+        {
+          required: true,
+          message: '手机号码不能为空',
+          trigger: 'change',
+        },
+      ],
+      position: [
+        {
+          required: true,
+          message: '职位不能为空',
+          trigger: 'change',
+        },
+      ],
+    })
+    const titles = ref();
+    const disabled = ref();
+    //继续添加
+    const addForm = (formEl: FormInstance | undefined) => {
+      emit('myAdd', ruleForm.value);
+      formEl.resetFields();
+    }
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '新建应急队伍人员') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            // console.log('-------',ruleForm.value)
+            // emit('myAdd', ruleForm.value);
+            contingencyApi()
+                .addEmergencyTeamPersonnel(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+      else if (title == '修改应急队伍人员') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            contingencyApi()
+                .editEmergencyTeamPersonnel(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          teamId: '',
+          userUid: '',
+          userName:'',
+          gender: '',
+          jobNumber: '', // 人员工号
+          name: '', // 人员名称
+          phone: '', // 手机号码
+          position: '', // 职位
+        };
+      }
+    }
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+
+    // 打开弹窗
+    const openDialog = (title: string, id: number,teamId:number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      ruleForm.value.teamId = teamId
+
+      if (title == '查看应急队伍人员' || title == '修改应急队伍人员') {
+        contingencyApi()
+            .seeEmergencyTeamPersonnel(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+              }
+            });
+      }
+    };
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDailog();
+    };
+    const onUser = (e:any) => {
+      ruleForm.value.userUid=e[0].uid
+      ruleForm.value.userName=e[0].realName
+      ruleForm.value.gender=e[0].sex
+      ruleForm.value.name=e[0].username
+      ruleForm.value.jobNumber=e[0].jobNumber
+      ruleForm.value.phone=e[0].phone
+      ruleForm.value.position=e[0].position
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      // closeDialog,
+      isShowDialog,
+      ruleFormRef,
+      // submitForm,
+      // onCancel,
+      ruleForm,
+      rules,
+      Search,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      resetForm,
+      titles,
+      disabled,
+      emit,
+      openUser,
+      userRef,
+      onUser,
+      addForm,
+      submitForm,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/contingency/component/openAdd.vue b/src/components/contingencyManagement/contingency/component/openAdd.vue
new file mode 100644
index 0000000..e853358
--- /dev/null
+++ b/src/components/contingencyManagement/contingency/component/openAdd.vue
@@ -0,0 +1,503 @@
+<template>
+    <div class="system-edit-user-container">
+        <el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" @close="resetForm(ruleFormRef)">
+            <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+            <el-form ref="ruleFormRef" :model="ruleForm" size="default" :rules="rules" label-width="120px"
+                     :disabled="disabled">
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍名称" prop="teamName">
+                            <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍级别" prop="teamLevel">
+                            <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                                <el-option label="公司" value="1"></el-option>
+                                <el-option label="分厂-车间" value="2"></el-option>
+                                <el-option label="工序-班组等" value="3"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍负责人" prop="principalName">
+                            <el-input v-model="ruleForm.principalName" placeholder="请选择" class="input-with-select">
+                                <template #append>
+                                    <el-button :icon="Search" @click="openUser"/>
+                                </template>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="负责人部门" prop="principalDepartmentId">
+                            <el-tree-select v-model="ruleForm.principalDepartmentId" :data="data" class="w100"
+                                            :props="propse" clearable placeholder="请选择"/>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="负责人手机" prop="principalPhone">
+                            <el-input v-model="ruleForm.principalPhone" placeholder="请填写负责人手机"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="固定电话" prop="telephoneNumber">
+                            <el-input v-model="ruleForm.telephoneNumber" placeholder="请填写固定电话"></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="队伍描述" prop="teamDesc">
+                            <el-input class="textarea" v-model="ruleForm.teamDesc" type="textarea" maxlength="150"
+                                      placeholder="请填写队伍描述"></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="相关附件" prop="fileList">
+                            <el-upload
+                                    v-model:file-list="fileList"
+                                    class="upload-demo"
+                                    action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+                                    :on-change="handleChange"
+                            >
+                                <el-button type="primary">点击上传</el-button>
+                                <template #tip>
+                                    <div class="el-upload__tip">添加相关附件</div>
+                                </template>
+                            </el-upload>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <el-row :gutter="35">
+                <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                    <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+                        <el-tab-pane label="应急队伍人员" name="first" >
+                            <el-button type="primary" size="default" @click="onAddEmergencyPersonnel" :disabled="disabled">新增
+                            </el-button>
+                            <el-table
+                                    :data="tableData"
+                                    style="width: 100%; margin-top: 15px"
+                                    ref="multipleTableRef"
+                                    :header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+                                    :disabled="disabled"
+                            >
+                                <el-table-column prop="jobNumber" label="人员工号" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="name" label="人员名称" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="phone" label="手机号码" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="position" label="职位" show-overflow-tooltip></el-table-column>
+                                <el-table-column label="操作" width="250" align="center">
+                                    <template #default="scope">
+                                        <el-button :disabled="disabled" size="small" @click="onEdit('查看应急队伍人员',scope.row.id)">查看
+                                        </el-button>
+                                        <el-button :disabled="disabled" size="small" @click="onEdit('修改应急队伍人员',scope.row.id)"
+                                                   style="margin-right: 5px">编辑
+                                        </el-button>
+                                        <el-button :disabled="disabled" size="small" @click="onRowDel(scope.row.id)"
+                                                   style="margin-right: 5px">删除
+                                        </el-button>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </el-tab-pane>
+                    </el-tabs>
+                </el-col>
+            </el-row>
+            <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" v-if="disabled == true ? false : true" type="primary"
+                               @click="onSubmit(titles, ruleFormRef)">确定</el-button>
+				</span>
+            </template>
+        </el-dialog>
+        <AddEmergencyPersonnel ref="addRef" @myAdd="onMyAdd"/>
+        <DailogSearchUserManger ref="userRef" @SearchUser="onUser"/>
+    </div>
+</template>
+
+<script lang="ts">
+    import {
+        reactive,
+        ref,
+        defineComponent,
+        onMounted,
+        // toRefs,
+    } from 'vue';
+    import {
+        ElMessage,
+        ElMessageBox,
+    } from 'element-plus';
+
+    import type {
+        UploadUserFile,
+        TabsPaneContext,
+        FormInstance,
+        FormRules,
+    } from 'element-plus'
+
+    import {
+        Search,
+        FullScreen
+    } from '@element-plus/icons-vue'
+    import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue";
+    import DailogSearchUserManger from "/@/components/DailogSearchUserManger/index.vue"
+    import {contingencyApi} from "/@/api/contingencyManagement/contingency";
+    import {goalManagementApi} from "/@/api/goalManagement";
+    // import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan";
+
+
+    export default defineComponent({
+        name: 'openAdd',
+        components: {
+            AddEmergencyPersonnel,
+            DailogSearchUserManger,
+        },
+        setup(prop, {emit}) {
+            const isShowDialog = ref(false);
+            const ruleFormRef = ref<FormInstance>();
+            const ruleForm = ref({
+                teamName: '', // 队伍名称
+                teamLevel: '', // 队伍级别
+                principalUid: '', // 队伍负责人
+                principalName: '',
+                principalDepartmentId: '',  //负责人部门
+                principalPhone: '', // 负责人手机
+                telephoneNumber: '', // 固定电话
+                teamDesc: '',  //队伍描述
+                fileList: [
+                    {
+                        fileUrl: 'url',
+                        fileName: 'name',
+                    }
+                ],
+                memberList: []
+            });
+            const titles = ref();
+            const disabled = ref();
+            const peopleInsertBtn = ref(false)
+            const teamId = ref()
+            // 打开弹窗
+            const openDialog = (title: string, id: number, type: boolean) => {
+                isShowDialog.value = true;
+                titles.value = title;
+                disabled.value = type;
+                teamId.value = id
+                //如果是新增  无法添加人员
+                if(title == '新建应急队伍管理'){
+                    peopleInsertBtn.value = true
+                }else{
+                    peopleInsertBtn.value = false
+                }
+                if (title == '查看应急队伍管理' || title == '修改应急队伍管理') {
+                    contingencyApi()
+                        .seeEmergencyTeam(id)
+                        .then((res) => {
+                            if (res.data.code == 200) {
+                                ruleForm.value = res.data.data;
+                                listApi()
+                            }
+                        });
+                }
+            }
+            // 上传附件
+            const fileList = ref<UploadUserFile[]>([])
+
+            //部门树
+            const department = () => {
+                goalManagementApi()
+                    .getTreedepartment()
+                    .then((res) => {
+                        if (res.data.code == 200) {
+                            data.value = res.data.data;
+                        } else {
+                            ElMessage.error(res.data.msg);
+                        }
+                    });
+            };
+            //定义树形下拉框
+            const principalDepartmentId = ref()
+            const propse = {
+                label: 'depName',
+                children: 'children',
+                value: 'depId',
+            };
+            const data = ref()
+            onMounted(() => {
+                department();
+            });
+            // 打开用户选择弹窗
+            const userRef = ref();
+            const openUser = () => {
+                userRef.value.openDailog();
+            };
+            const onUser = (e: any) => {
+                ruleForm.value.principalUid = e[0].uid
+                ruleForm.value.principalName = e[0].realName
+            };
+            //定义tabs切换
+            const activeName = ref('first')
+            const handleClick = (tab: TabsPaneContext, event: Event) => {
+                console.log(tab, event)
+            }
+
+            // 必填项提示
+            const rules = reactive<FormRules>({
+                teamName: [
+                    {
+                        required: true,
+                        message: '队伍名称不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                teamLevel: [
+                    {
+                        required: true,
+                        message: '队伍级别不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalUid: [
+                    {
+                        required: true,
+                        message: '队伍负责人不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalDepartmentId: [
+                    {
+                        required: true,
+                        message: '负责人部门不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalPhone: [
+                    {
+                        required: true,
+                        message: '负责人手机不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                telephoneNumber: [
+                    {
+                        required: true,
+                        message: '固定电话不能为空',
+                        trigger: 'change',
+                    },
+                ],
+            })
+            //全屏
+            const full = ref(false);
+            const toggleFullscreen = () => {
+                if (full.value == false) {
+                    full.value = true;
+                } else {
+                    full.value = false;
+                }
+            };
+            const onSubmit = async (title: string, formEl: FormInstance | undefined) => {
+                if (title == '新建应急队伍管理') {
+                    if (!formEl) return;
+                    await formEl.validate((valid, fields) => {
+                        if (valid) {
+                            isShowDialog.value = false;
+                            contingencyApi()
+                                .addEmergencyTeam(ruleForm.value)
+                                .then((res) => {
+                                    if (res.data.code == 200) {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: res.data.msg,
+                                            type: 'success',
+                                        });
+                                        emit('myAdd', true);
+                                    } else {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: res.data.msg,
+                                            type: 'error',
+                                        });
+                                        emit('myAdd', true);
+                                    }
+                                    formEl.resetFields();
+                                });
+                        } else {
+                            console.log('error submit!', fields);
+                        }
+                    });
+                } else if (title == '修改应急队伍管理') {
+                    if (!formEl) return;
+                    await formEl.validate((valid, fields) => {
+                        if (valid) {
+                            isShowDialog.value = false;
+                            contingencyApi()
+                                .editEmergencyTeam(ruleForm.value)
+                                .then((res) => {
+                                    if (res.data.code == 200) {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: '修改成功',
+                                            type: 'success',
+                                        });
+                                        emit('myAdd', true);
+                                    } else {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: res.data.msg,
+                                            type: 'error',
+                                        });
+                                        emit('myAdd', true);
+                                    }
+                                    formEl.resetFields();
+                                });
+                        } else {
+                            console.log('error submit!', fields);
+                        }
+                    });
+                    formEl.resetFields();
+                    ruleForm.value = {
+                        teamName: '', // 队伍名称
+                        teamLevel: '', // 队伍级别
+                        principalUid: '', // 队伍负责人
+                        principalDepartmentId: '',  //负责人部门
+                        principalPhone: '', // 负责人手机
+                        telephoneNumber: '', // 固定电话
+                        teamDesc: '',  //队伍描述
+                        fileList: [
+                            {
+                                fileUrl: 'url',
+                                fileName: 'name',
+                            }
+                        ],
+                        memberList: []
+                    };
+                }
+            };
+            const resetForm = (formEl: FormInstance | undefined) => {
+                isShowDialog.value = false;
+                if (!formEl) return;
+                formEl.resetFields();
+                tableData.value=[]
+            };
+            // 定义表格数据
+            const tableData = ref([]);
+            //添加队伍负责人弹窗
+            const addRef = ref();
+            const onAddEmergencyPersonnel = () => {
+                //未添加队伍 无法修改人员
+                if(peopleInsertBtn.value == true){
+                    ElMessage({
+                        showClose: true,
+                        message: '请先添加应急队伍',
+                        type: 'warning',
+                    });
+                }else {
+                    addRef.value.openDialog('新建应急队伍人员','',teamId.value);
+                }
+
+            };
+            // 请求列表数据
+            const listApi = async () => {
+                let res = await contingencyApi().getEmergencyTeamPersonnelList(teamId.value);
+                if (res.data.code == 200) {
+                    tableData.value = res.data.data;
+                } else {
+                    ElMessage.error(res.data.msg);
+                }
+            };
+            // 新增后刷新
+            const onMyAdd = (e: object) => {
+                listApi();
+                // console.log(e)
+                // item.value = e
+                // tableData.value.push(item.value)
+                // console.log(tableData)
+            };
+            // 打开修改弹窗
+            const onEdit = (val: string, row: object) => {
+                if (val == '查看应急队伍人员') {
+                    addRef.value.openDialog('查看应急队伍人员', row,teamId.value, true);
+                } else {
+                    addRef.value.openDialog('修改应急队伍人员', row,teamId.value, false);
+                }
+            };
+            // 删除
+            const onRowDel = (data: any) => {
+                ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+                    confirmButtonText: '确认',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                }).then(() => {
+                    contingencyApi()
+                        .deleteEmergencyTeamPersonnel(data)
+                        .then((res) => {
+                            if (res.data.code == 200) {
+                                ElMessage({
+                                    showClose: true,
+                                    message: res.data.msg,
+                                    type: 'success',
+                                });
+                                listApi()
+                            } else {
+                                ElMessage({
+                                    showClose: true,
+                                    message: res.data.msg,
+                                    type: 'error',
+                                });
+                                listApi()
+                            }
+                        });
+                })
+                    .catch(() => {
+                    });
+            };
+            return {
+                openDialog,
+                fileList,
+                principalDepartmentId,
+                data,
+                activeName,
+                handleClick,
+                tableData,
+                Search,
+                resetForm,
+                isShowDialog,
+                ruleFormRef,
+                ruleForm,
+                rules,
+                addRef,
+                userRef,
+                titles,
+                disabled,
+                propse,
+                emit,
+                onSubmit,
+                openUser,
+                onAddEmergencyPersonnel,
+                toggleFullscreen,
+                FullScreen,
+                full,
+                onUser,
+                onMyAdd,
+                listApi,
+                onEdit,
+                onRowDel,
+                department,
+                peopleInsertBtn,
+                teamId
+            };
+        },
+    });
+</script>
+<style scoped lang="scss">
+    .textarea {
+        height: 168px !important;
+    }
+
+    .textarea ::v-deep .el-textarea__inner {
+        height: 168px !important;
+    }
+
+    ::v-deep .el-table__cell {
+        font-weight: 400;
+    }
+</style>
+
diff --git a/src/components/contingencyManagement/contingency/component/upData.vue b/src/components/contingencyManagement/contingency/component/upData.vue
new file mode 100644
index 0000000..cc3e2d0
--- /dev/null
+++ b/src/components/contingencyManagement/contingency/component/upData.vue
@@ -0,0 +1,125 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="导入Excel"
+      width="50%"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-upload
+        v-model:file-list="fileList"
+        class="upload-demo"
+        action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+        multiple
+        :on-preview="handlePreview"
+        :on-remove="handleRemove"
+        :before-remove="beforeRemove"
+        :limit="3"
+        :on-exceed="handleExceed"
+    >
+      <el-button size="default">下载模板</el-button>
+      <el-button size="default" type="primary">点击上传</el-button>
+      <template #tip>
+        <div class="el-upload__tip">
+          只允许导入“xls”或“xlsx”格式文件!
+        </div>
+      </template>
+    </el-upload>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { ref,
+  defineComponent,
+} from "vue";
+import {
+  ElMessage,
+  ElMessageBox
+} from "element-plus";
+import type {
+  UploadProps,
+  UploadUserFile,
+} from "element-plus";
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+export default defineComponent({
+  setup() {
+    let dialogVisible =ref<boolean>(false)
+    const fileList = ref<UploadUserFile[]>([
+      // {
+      //   name: "element-plus-logo.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+      // {
+      //   name: "element-plus-logo2.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+    ]);
+
+    const handleRemove: UploadProps["onRemove"] = (file, uploadFiles) => {
+      console.log(file, uploadFiles);
+    };
+
+    const handlePreview: UploadProps["onPreview"] = (uploadFile) => {
+      console.log(uploadFile);
+    };
+
+    const handleExceed: UploadProps["onExceed"] = (files, uploadFiles) => {
+      ElMessage.warning(
+          `The limit is 3, you selected ${
+              files.length
+          } files this time, add up to ${
+              files.length + uploadFiles.length
+          } totally`
+      );
+    };
+
+    const beforeRemove: UploadProps["beforeRemove"] = (
+        uploadFile,
+        uploadFiles
+    ) => {
+      return ElMessageBox.confirm(
+          `Cancel the transfert of ${uploadFile.name} ?`
+      ).then(
+          () => true,
+          () => false
+      );
+    };
+    // 打开弹窗
+    const openDialog = (type:string,value:any,projectList: any,projectId:string) => {
+      dialogVisible.value=true
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      fileList,
+      handleRemove,
+      handlePreview,
+      handleExceed,
+      beforeRemove,
+      openDialog,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-upload__tip{
+  margin-left: 100px;
+  margin-top: 20px;
+}
+::v-deep .el-dialog__header{
+  border-bottom: 1px solid #e8e8e8;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/contingency/index.vue b/src/components/contingencyManagement/contingency/index.vue
new file mode 100644
index 0000000..2196936
--- /dev/null
+++ b/src/components/contingencyManagement/contingency/index.vue
@@ -0,0 +1,393 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="system-user-search mb15">
+        <el-form :inline="true" class="demo-form-inline">
+          <el-form-item>
+            <el-input size="default" v-model="listQuery.searchParams.teamName" placeholder="队伍名称"> </el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-select size="default" v-model="listQuery.searchParams.teamType" placeholder="请选择队伍级别">
+              <el-option label="公司" value="1"></el-option>
+              <el-option label="分厂-车间" value="2"></el-option>
+              <el-option label="工序-班组等" value="3"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+             <el-button size="default" type="primary" class="ml10" @click="onSubmit">
+               查询
+             </el-button>
+             <el-button size="default" class="ml10"  @click="submitReset">
+               重置
+             </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="button_Line">
+        <div class="button_Left">
+          <el-button size="default" type="primary"  @click="onOpenAdd">
+            <el-icon>
+              <Plus />
+            </el-icon>新建
+          </el-button>
+          <el-button size="default" type="warning" plain :disabled="warning">
+            <el-icon>
+              <Edit />
+            </el-icon>修改
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+<!--        <div class="button_Right">-->
+<!--          <el-button size="default" @click="upButton">-->
+<!--            <el-icon>-->
+<!--              <Upload />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button size="default">-->
+<!--            <el-icon>-->
+<!--              <Download />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button size="default">-->
+<!--            <el-icon>-->
+<!--              <Refresh />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--        </div>-->
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          ref="multipleTableRef"
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="teamName" label="队伍名称" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.teamLevel == 1">公司</span>
+            <span v-if="scope.row.teamLevel == 2">分厂-车间</span>
+            <span v-if="scope.row.teamLevel == 3">工序-班组等</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="attachments" label="相关附件" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column label="操作" width="200" align="center" fixed="right">
+          <template #default="scope">
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <EditPen />
+              </el-icon>修改
+            </el-button>
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            @size-change="onHandleSizeChange"
+            @current-change="onHandleCurrentChange"
+            class="mt15"
+            :pager-count="5"
+            :page-sizes="[10, 20, 30]"
+            v-model:currentPage="pageIndex"
+            background
+            v-model:page-size="pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+        >
+        </el-pagination>
+      </div>
+    </el-card>
+    <OpenAdd ref="addRef"  @myAdd="onMyAdd" />
+    <upData ref="upShow"></upData>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+} from 'element-plus';
+import { Plus,
+  Edit,
+  Delete,
+  // Upload,
+  // Download,
+  // Refresh,
+  View,
+  EditPen,
+} from '@element-plus/icons-vue'
+
+import OpenAdd from '../../contingencyManagement/contingency/component/openAdd.vue'
+import UpData from '../../contingencyManagement/contingency/component/upData.vue';
+import {contingencyApi} from "../../../api/contingencyManagement/contingency";
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenAdd,
+    View,
+    EditPen,
+    Plus,
+    Edit,
+    Delete,
+    // Upload,
+    // Download,
+    // Refresh,
+    UpData,
+    contingencyApi
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        teamName: "",
+        teamType: "",
+      }
+    })
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表数据请求
+    const onSubmit = async () => {
+      let res = await contingencyApi().getTeamManagementList(listQuery)
+      if(res.data.code === '200'){
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      }else{
+        ElMessage({
+          showClose: true,
+          type:'error',
+          message:res.data.msg
+        })
+      }
+    }
+    // 重置
+    const submitReset = () => {
+      listQuery.searchParams.teamName = '';
+      listQuery.searchParams.teamType = '';
+      onSubmit();
+    };
+    const warning = ref(true);
+    const danger = ref(true);
+    const deleteAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deleteAll.value = arr;
+      if (val.length == 1) {
+        warning.value = false;
+        danger.value = false;
+      } else if (val.length == 0) {
+        warning.value = true;
+        danger.value = true;
+      } else {
+        warning.value = true;
+        danger.value = false;
+      }
+    };
+
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+    // 打开新增应急队伍弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建应急队伍管理');
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        onSubmit();
+      } else {
+        onSubmit();
+      }
+    };
+    // 打开修改应急队伍弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看应急队伍管理',row,true);
+      } else {
+        addRef.value.openDialog('修改应急队伍管理',row,false);
+      }
+    };
+    // 删除用户
+    const onRowDel = (data: any) => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        contingencyApi()
+          .deleteEmergencyTeam([data])
+          .then((res) => {
+            if (res.data.code == 200) {
+              ElMessage({
+                showClose: true,
+                message: res.data.msg,
+                type: 'success',
+              });
+              onSubmit();
+            } else {
+              ElMessage({
+                showClose: true,
+                message: res.data.msg,
+                type: 'error',
+              });
+              onSubmit();
+            }
+          });
+      }).catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            contingencyApi()
+                .deleteEmergencyTeam(deleteAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    onSubmit();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    onSubmit();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const onHandleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      onSubmit();
+    };
+    const onHandleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      onSubmit();
+    };
+    // 页面加载时
+    onMounted(() => {
+      onSubmit();
+    });
+    return {
+      listQuery,
+      onSubmit,
+      // upButton,
+      // upShow,
+      onOpenAdd,  //新增
+      addRef,
+      pageIndex,
+      pageSize,
+      total,
+      onEdit,
+      handleSelectionChange,
+      submitReset,
+      onRowDel,
+      onMyAdd,
+      tableData,
+      onDeleteAll,
+      onHandleSizeChange,
+      onHandleCurrentChange,
+      deleteAll,
+      warning,
+      danger,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+  .button_Line{
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+.el-form .el-form-item{
+  margin-bottom: 0px!important;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
new file mode 100644
index 0000000..07f4e5f
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
@@ -0,0 +1,841 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="900px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练名称" prop="emergencyPlanName">
+              <el-input :disabled="true" v-model="ruleForm.emergencyPlanName" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练地点" prop="drillAddress">
+              <el-input :disabled="true" v-model="ruleForm.drillAddress" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="主办部门"  placeholder="请选择" prop="departmentId">
+              <!--<el-tree-select-->
+                  <!--v-model="ruleForm.departmentId"-->
+                  <!--:data="data" class="w100"-->
+                  <!--placeholder="请选择"/>-->
+
+              <el-tree-select :disabled="true" v-model="ruleForm.departmentId"
+                              :data="newTreeList" :props="propse" class="w100" placeholder="请选择" />
+            </el-form-item>
+
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练方式" prop="drillWay">
+              <el-select :disabled="true" v-model="ruleForm.drillWay" class="w100" placeholder="请选择">
+                <el-option label="综合" value="0"></el-option>
+                <el-option label="桌面" value="1"></el-option>
+                <el-option label="专项" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="应急预案" prop="drillName" >
+              <el-input
+                  :disabled="true"
+                  v-model="ruleForm.drillName"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="daiInpt"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练级别" prop="drillLevel">
+              <el-select :disabled="true" v-model="ruleForm.drillLevel" class="w100" placeholder="请选择">
+                <el-option label="公司级" value="1"></el-option>
+                <el-option label="分厂级" value="2"></el-option>
+                <el-option label="车间级" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制日期" prop="makingPlanDate">
+              <el-date-picker :disabled="true" v-model="ruleForm.makingPlanDate"
+                              value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划演练日期" prop="drillPlanDate">
+              <el-date-picker :disabled="true" v-model="ruleForm.drillPlanDate"
+                              value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="修改时间" prop="updateDate">
+              <el-date-picker :disabled="true" v-model="ruleForm.updateDate" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制人" prop="makingUserUid">
+              <el-input :disabled="true" v-model="ruleForm.makingUserName" placeholder="请填写计划定制人"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="制定部门" prop="makingDepartmentId">
+              <!--<el-tree-select-->
+                  <!--v-model="ruleForm.makingDepartmentId"-->
+                  <!--:data="data" class="w100"-->
+                  <!--placeholder="请选择"/>-->
+
+              <el-tree-select :disabled="true" v-model="ruleForm.makingDepartmentId"
+                              :data="newTreeList" :props="propse" class="w100" placeholder="请选择" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练人员" prop="planUserListString" >
+              <el-input
+                  :disabled="true"
+                  v-model="ruleForm.planUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="openUser"/>
+                </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="演练目的" prop="purpose">
+              <el-input
+                  :disabled="true"
+                  v-model="ruleForm.purpose"
+                  placeholder="请填写演练目的"
+                  class="input-with-select textarea"
+                  type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练负责人" prop="chargeUserListString" >
+              <el-input
+                  :disabled="true"
+                  v-model="ruleForm.chargeUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="保险措施" prop="insuranceMeasures">
+              <el-input :disabled="true" v-model="ruleForm.insuranceMeasures" placeholder="请填写保险措施"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练经费" prop="drillExpense">
+              <el-input :disabled="true" v-model="ruleForm.drillExpense" placeholder="请填写演练经费"></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="备注信息" prop="remark">
+              <el-input
+                  :disabled="true"
+                  v-model="ruleForm.remark"
+                  placeholder="请填写备注信息"
+                  class="input-with-select textarea"
+                  type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;">
+            <el-form-item label="预案附件">
+              <el-upload
+                  v-model:file-list="fileList"
+                  class="upload-demo"
+                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+                  :on-change="handleChange"
+              >
+                <el-button type="primary"
+                >点击上传</el-button>
+                <template #tip>
+                  <div class="el-upload__tip">
+                    添加相关附件
+                  </div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="实际到场人员" prop="executeUserListString" >
+              <el-input
+                  v-model="ruleForm.executeUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+                  :disabled="true"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </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="演练过程描述" prop="processDesc">
+              <el-input :disabled="true" v-model="ruleForm.processDesc" class="textarea" type="textarea" placeholder="请填写演练过程描述"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练记录人" prop="recordUserName" >
+              <el-input
+                  v-model="ruleForm.recordUserName"
+                  placeholder="请选择"
+                  class="input-with-select"
+                  :disabled="true"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练记录时间" prop="drillRecordDate">
+              <el-date-picker
+                  v-model="ruleForm.drillRecordDate"
+                  class="w100"
+                  type="datetime"
+                  placeholder="选择日期时间"
+                  :disabled="true"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <div class="el-divider--horizontal">
+              <div class="el-divider__text">
+                <h3>评价</h3>
+              </div>
+            </div>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练负责人" prop="evaluationUserListString" >
+              <el-input
+                  v-model="ruleForm.evaluationUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+                  :disabled="disabled"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="预案评审-适宜性" prop="suitable">
+              <el-select :disabled="disabled" v-model="ruleForm.suitable" class="w100" placeholder="请选择">
+                <el-option label="全部能够执行" value="1"></el-option>
+                <el-option label="全部不能够执行" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="预案评审-充分性" prop="sufficient">
+              <el-select :disabled="disabled" v-model="ruleForm.sufficient" class="w100" placeholder="请选择">
+                <el-option label="完全满足应急要求" value="1"></el-option>
+                <el-option label="不完全满足应急要求" value="2"></el-option>
+                <el-option label="完全不满足应急要求" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员到位情况" prop="arrival">
+              <el-select :disabled="disabled" v-model="ruleForm.arrival" class="w100" placeholder="请选择">
+                <el-option label="迅速准确,基本按时到位" value="1"></el-option>
+                <el-option label="未按时到位" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="物资到位情况-现场物资" prop="supplies">
+              <el-select :disabled="disabled" v-model="ruleForm.supplies" class="w100" placeholder="请选择">
+                <el-option label="现场物资充分,全部有效" value="1"></el-option>
+                <el-option label="现场物资不充分" value="2"></el-option>
+                <el-option label="现场没有物资" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="物资到位情况-个人防护" prop="protection">
+              <el-select :disabled="disabled" v-model="ruleForm.protection" class="w100" placeholder="请选择">
+                <el-option label="全部人员防护到位" value="1"></el-option>
+                <el-option label="人员未防护到位" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="协调组织情况-整体组织" prop="whole">
+              <el-select :disabled="disabled" v-model="ruleForm.whole" class="w100" placeholder="请选择">
+                <el-option label="协调基本顺利,能够满足要求" value="1"></el-option>
+                <el-option label="协调不顺利" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="协调组织情况-疏散组分工" prop="division">
+              <el-select :disabled="disabled" v-model="ruleForm.division" class="w100" placeholder="请选择">
+                <el-option label="安全,快速" value="1"></el-option>
+                <el-option label="安全,不快速" value="2"></el-option>
+                <el-option label="不安全,快速" value="3"></el-option>
+                <el-option label="不安全,不快速" value="4"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="实战效果评价" prop="effect">
+              <el-select :disabled="disabled" v-model="ruleForm.effect" class="w100" placeholder="请选择">
+                <el-option label="基本达到目的,部分环节有待改进" value="1"></el-option>
+                <el-option label="未达到目的" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="支援部门和协作有效性-报告上级" prop="report">
+              <el-select :disabled="disabled" v-model="ruleForm.report" class="w100" placeholder="请选择">
+                <el-option label="报告及时" value="1"></el-option>
+                <el-option label="报告不及时" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="支援部门和协作有效性-安全部门" prop="safety">
+              <el-select :disabled="disabled" v-model="ruleForm.safety" class="w100" placeholder="请选择">
+                <el-option label="按要求协作" value="1"></el-option>
+                <el-option label="未按要求协作" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="支援部门和协作有效性-救援后勤部门" prop="rescue">
+              <el-select :disabled="disabled" v-model="ruleForm.rescue" class="w100" placeholder="请选择">
+                <el-option label="按要求协作" value="1"></el-option>
+                <el-option label="未按要求协作" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="支援部门和协作有效性-警戒撤离配合" prop="evacuate">
+              <el-select :disabled="disabled" v-model="ruleForm.evacuate" class="w100" placeholder="请选择">
+                <el-option label="按要求配合" value="1"></el-option>
+                <el-option label="未按要求配合" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="是否需要修改应急预案" prop="needModify">
+              <el-select :disabled="disabled" v-model="ruleForm.needModify" class="w100" placeholder="请选择">
+                <el-option label="是" :value="true"></el-option>
+                <el-option label="否" :value="false"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="存在问题和改进措施" prop="questionAndImprove">
+              <el-input :disabled="disabled" v-model="ruleForm.questionAndImprove" class="textarea" type="textarea" placeholder="请填写备注信息"></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="修改内容" prop="modifyContent">
+              <el-input :disabled="disabled" v-model="ruleForm.modifyContent" class="textarea" type="textarea" placeholder="请填写修改内容"></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="附件列表">
+              <el-upload
+                  v-model:file-list="ruleForm.userList"
+                  class="upload-demo"
+                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+                  :on-change="handleChange"
+              >
+                <el-button type="primary"
+                >点击上传</el-button>
+                <template #tip>
+                  <div class="el-upload__tip">
+                    添加相关附件
+                  </div>
+                </template>
+              </el-upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+                    <el-button v-if="!disabled" size="default" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <RegionsDialog ref="Shows" @SearchUser="onUser"/>
+    <DailogSearchUser ref="userRef" @SearchUser="selectUser"/>
+<!--    <RegionsDialog ref="openRef"/>-->
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  reactive,
+  ref,
+  defineComponent,
+  onMounted,
+} from 'vue';
+
+import {
+  UploadUserFile,
+  FormInstance,
+  ElMessage
+} from 'element-plus'
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import RegionsDialog from "/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue"
+import DailogSearchUser from "/@/components/DailogSearchUser/index.vue"
+import {emergencyDrillEvaluationApi} from "/@/api/contingencyManagement/emergencyDrillEvaluation";
+import {goalManagementApi} from "/@/api/goalManagement";
+export default defineComponent({
+  name: 'approvalProgress',
+  components: {
+    UserSelections,
+    RegionsDialog,
+    DailogSearchUser
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+
+    const ruleFormRef = ref<FormInstance>()
+    //定义表单
+    const ruleForm = ref ({
+      drillPlanId: '',
+      suitable: '',
+      sufficient: '',
+      arrival: '',
+      supplies: '',
+      protection: '',
+      whole: '',
+      division: '',
+      effect: '',
+      report: '',
+      safety: '',
+      rescue: '',
+      evacuate: '',
+      needModify: '',
+      questionAndImprove: '',
+      modifyContent: '',
+      fileList: [
+        {
+          fileName: 'name',
+          fileUrl: 'url',
+        }
+      ],
+      userList: [
+      ]
+    });
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    const openDialog = (title: string, id: number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      if (title == '查看演练实施评价') {
+        emergencyDrillEvaluationApi()
+            .seeEmergencyDrillEvaluation(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+                ruleForm.value.planUserListString=''
+                ruleForm.value.chargeUserListString=''
+                ruleForm.value.executeUserListString=''
+                ruleForm.value.evaluationUserListString=''
+                //演练人员
+                for(var a = 0;a<res.data.data.planUserList.length;a++){
+                  ruleForm.value.planUserListString += res.data.data.planUserList[a].userName+';'
+                }
+                //演练负责人员
+                for(var a = 0;a<res.data.data.planChargeUserList.length;a++){
+                  ruleForm.value.chargeUserListString += res.data.data.planChargeUserList[a].userName+';'
+                }
+                //实际到场人员
+                for(var a = 0;a<res.data.data.executeUserList.length;a++){
+                  ruleForm.value.executeUserListString += res.data.data.executeUserList[a].userName+';'
+                }
+                //演练负责人(评价)
+                for(var a = 0;a<res.data.data.evaluationUserList.length;a++){
+                  ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';'
+                }
+              }
+            });
+      }
+      if(title=='演练实施评价'){
+        emergencyDrillEvaluationApi()
+                .seeEmergencyDrillEvaluation(id)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ruleForm.value = res.data.data;
+                    ruleForm.value.planUserListString=''
+                    ruleForm.value.chargeUserListString=''
+                    ruleForm.value.executeUserListString=''
+                    ruleForm.value.evaluationUserListString=''
+                    for(var a = 0;a<res.data.data.planUserList.length;a++){
+                      ruleForm.value.planUserListString += res.data.data.planUserList[a].userName+';'
+                    }
+                    for(var a = 0;a<res.data.data.planChargeUserList.length;a++){
+                      ruleForm.value.chargeUserListString += res.data.data.planChargeUserList[a].userName+';'
+                    }
+                    for(var a = 0;a<res.data.data.executeUserList.length;a++){
+                      ruleForm.value.executeUserListString += res.data.data.executeUserList[a].userName+';'
+                    }
+                    //演练负责人(评价)
+                    for(var a = 0;a<res.data.data.evaluationUserList.length;a++){
+                      ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';'
+                    }
+                  }
+                });
+      }
+      if(title=='演练实施查看评价'){
+        emergencyDrillEvaluationApi()
+                .seeEmergencyDrillEvaluation(id)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ruleForm.value = res.data.data;
+                    ruleForm.value.planUserListString=''
+                    ruleForm.value.chargeUserListString=''
+                    ruleForm.value.executeUserListString=''
+                    ruleForm.value.evaluationUserListString=''
+                    for(var a = 0;a<res.data.data.planUserList.length;a++){
+                      ruleForm.value.planUserListString += res.data.data.planUserList[a].userName+';'
+                    }
+                    for(var a = 0;a<res.data.data.planChargeUserList.length;a++){
+                      ruleForm.value.chargeUserListString += res.data.data.planChargeUserList[a].userName+';'
+                    }
+                    for(var a = 0;a<res.data.data.executeUserList.length;a++){
+                      ruleForm.value.executeUserListString += res.data.data.executeUserList[a].userName+';'
+                    }
+                    //演练负责人(评价)
+                    for(var a = 0;a<res.data.data.evaluationUserList.length;a++){
+                      ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';'
+                    }
+                  }
+                });
+      }
+    };
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+    //日期选择器
+    const value1 = ref('')
+    // 上传附件
+    const fileList = ref<UploadUserFile[]>([])
+    // 可选择树
+    const treeSelect = ref()
+    const tree = [
+      ,
+    ]
+    //定义树形下拉框
+    const responsibleDepartment = ref()
+    const data = [
+
+    ]
+    // 必填项提示
+    // const rules = reactive<FormRules>({
+    //   teamName: [
+    //     {
+    //       required: true,
+    //       message: '队伍名称不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLevel: [
+    //     {
+    //       required: true,
+    //       message: '队伍级别不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLeader: [
+    //     {
+    //       required: true,
+    //       message: '队伍负责人不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   responsibleDepartment: [
+    //     {
+    //       required: true,
+    //       message: '负责人部门不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamPhone: [
+    //     {
+    //       required: true,
+    //       message: '负责人手机不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   telephone: [
+    //     {
+    //       required: true,
+    //       message: '固定电话不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    // })
+
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      //演练负责人(评价)
+      ruleForm.value.userList = ruleForm.value.evaluationUserList
+      // console.log(ruleForm.value.evaluationUserList)
+      // ruleForm.value.userList=[]
+      // for(var a = 0;a<ruleForm.value.evaluationUserList.length;a++){
+      //   // += res.data.data.evaluationUserList[a].userName+';'
+      // }
+      if (title == '演练实施评价') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            // console.log(ruleForm.value)
+            emergencyDrillEvaluationApi()
+                    .editEmergencyDrillEvaluation(ruleForm.value)
+            // emergencyDrillExecuteApi()
+            //         .editEmergencyDrillExecute(ruleForm.value)
+                    .then((res) => {
+                      if (res.data.code == 200) {
+                        ElMessage({
+                          showClose: true,
+                          message: '评价成功',
+                          type: 'success',
+                        });
+                        emit('myAdd', true);
+                      } else {
+                        ElMessage({
+                          showClose: true,
+                          message: res.data.msg,
+                          type: 'error',
+                        });
+                        emit('myAdd', true);
+                      }
+                      formEl.resetFields();
+                    });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        isShowDialog.value = false;
+        formEl.resetFields();
+        ruleForm.value = {
+          drillRecordDate: '', // 演练记录时间
+          drillPlanId: '', //演练计划ID
+          drillName:'',
+          recordUserUid: '', // 记录人ID
+          processDesc: '', // 演练过程描述
+          userList: [
+            {
+              userUid: '',
+            },
+            {
+              userUid: '',
+            }
+          ]
+        };
+      }
+    }
+    // 应急队伍弹窗
+    const Shows=ref()
+    const daiInpt=()=>{
+      Shows.value.openDailog()
+    }
+    const onUser = (e:any) => {
+      ruleForm.value.drillPlanId=e.id
+    };
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDailog(0);
+    };
+
+    const selectUser = (e) =>{
+      ruleForm.value.evaluationUserListString=''
+      ruleForm.value.evaluationUserList=[]
+      for(var a = 0;a<e.length;a++){
+        ruleForm.value.evaluationUserList.push(
+                {
+                  userName: e[a].realName,
+                  userUid: e[a].uid,
+                }
+        )
+        ruleForm.value.evaluationUserListString+=e[a].realName+';'
+      }
+    }
+    //el-tree-select回显
+    const propse = {
+      label: 'depName',
+      children: 'children',
+    };
+    const newTreeList = [];
+    //得到部门树
+    const department = async () => {
+      await goalManagementApi()
+              .getTreedepartment()
+              .then((res) => {
+                if (res.data.code == 200) {
+                  data.value = res.data.data;
+                  getTreeList(res.data.data, newTreeList);
+                } else {
+                  ElMessage.error(res.data.msg);
+                }
+              });
+    };
+    // 递归树状数据且修改字段名
+    const getTreeList = (treeList, newTreeList) => {
+      treeList.map((c) => {
+        let tempData = {
+          depName: c.depName,
+          value: c.depId,
+          children: [],
+        };
+        if (c.children && c.children.length > 0) {
+          tempData.children = [];
+          getTreeList(c.children, tempData.children);
+        }
+        newTreeList.push(tempData);
+      });
+    };
+    onMounted(() => {
+      department();
+    });
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      onCancel,
+      fileList,
+      responsibleDepartment,
+      data,
+      Search,
+      ruleForm,
+      value1,
+      treeSelect,
+      tree,
+      daiInpt,
+      Shows,
+      onUser,
+      ruleFormRef,
+      // rules,
+      openUser,
+      userRef,
+      regionsDialog,
+      openRef,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      resetForm,
+      titles,
+      disabled,
+      emit,
+      propse,
+      department,
+      newTreeList,
+      selectUser,
+      submitForm
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-form .el-form-item{
+  margin-bottom: 18px !important;
+  display: flex;
+  align-items: flex-start;
+}
+::v-deep .el-form-item--default .el-form-item__label{
+  text-align: right;
+  height: 100%;
+}
+.textarea{
+  height: 90px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 90px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+.el-divider--horizontal {
+  display: block;
+  height: 1px;
+  width: 100%;
+  margin: 24px 0;
+  background-color: #dcdfe6;
+  position: relative;
+}
+.el-divider__text {
+  position: absolute;
+  background-color: #fff;
+  padding: 0 20px;
+  color: #303133;
+  left: 50%;
+  font-weight: 500;
+  font-size: 14px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
new file mode 100644
index 0000000..6469b53
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
@@ -0,0 +1,307 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="应急演练计划--修改审批进度" v-model="isShowDialog" width="769px" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<!-- <img class="process-status-img" src=""> -->
+			<el-tabs type="border-card">
+				<el-tab-pane label="流转记录">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流转记录</span>
+							</div>
+						</template>
+						<div>
+							<el-steps :active="2">
+								<el-step title="开始" description="胡海涛,2022-07-09 20:41:50" />
+								<el-step title="一级审批" description="管理员,2022-07-09 20:41:50" />
+							</el-steps>
+						</div>
+						<el-table :data="tableData" stripe style="width: 100%">
+							<el-table-column prop="date" label="执行环节" width="120" />
+							<el-table-column prop="name" label="执行人" width="120" />
+							<el-table-column prop="address" label="开始时间" width="100" />
+							<el-table-column prop="address" label="结束时间" width="100" />
+							<el-table-column prop="address" label="办理状态" width="100" />
+							<el-table-column prop="address" label="审批意见" width="100" />
+							<el-table-column prop="address" label="任务历时" width="100" />
+						</el-table>
+					</el-card>
+				</el-tab-pane>
+				<el-tab-pane label="流程信息">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流程信息</span>
+							</div>
+						</template>
+						<div>
+							<el-timeline>
+								<el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)">
+									<el-card>
+										<h4 style="margin: 10px 0; padding-bottom: 10px">一级审批</h4>
+										<el-row>
+											<el-col class="tip" :span="22" :offset="1">
+												<div class="item">
+													<span class="label">审批人:</span>
+													<span class="value">管理员</span>
+												</div>
+												<div class="item">
+													<span class="label">办理状态:</span>
+													<span class="value">
+														<!--                             <el-tag-->
+														<!--                                 v-for="item in items"-->
+														<!--                                 :key="item.label"-->
+														<!--                                 :type="item.type"-->
+														<!--                                 class="mx-1"-->
+														<!--                                 effect="dark"-->
+														<!--                             >-->
+														<!--                               {{ item.label }}-->
+														<!--                             </el-tag>-->
+														<p class="text">等待审核</p>
+													</span>
+												</div>
+												<div class="item">
+													<span class="label">审批意见:</span>
+													<span class="value">等待审核</span>
+												</div>
+												<div class="item">
+													<span class="label">开始时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">结束时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">用时:</span>
+													<span class="value">0秒</span>
+												</div>
+											</el-col>
+										</el-row>
+									</el-card>
+								</el-timeline-item>
+								<el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)">
+									<el-card>
+										<h4>开始</h4>
+										<el-row>
+											<el-col class="tip" :span="22" :offset="1">
+												<div class="item">
+													<span class="label">审批人:</span>
+													<span class="value">胡海涛</span>
+												</div>
+												<div class="item">
+													<span class="label">办理状态:</span>
+													<span class="value">
+														<p class="text">开始</p>
+													</span>
+												</div>
+												<div class="item">
+													<span class="label">审批意见:</span>
+													<span class="value">等待审核</span>
+												</div>
+												<div class="item">
+													<span class="label">开始时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">结束时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">用时:</span>
+													<span class="value">0秒</span>
+												</div>
+											</el-col>
+										</el-row>
+									</el-card>
+								</el-timeline-item>
+							</el-timeline>
+						</div>
+					</el-card>
+				</el-tab-pane>
+				<el-tab-pane label="流程图">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流程图</span>
+							</div>
+						</template>
+						<div></div>
+					</el-card>
+				</el-tab-pane>
+			</el-tabs>
+		</el-dialog>
+		<RegionsDialog ref="Shows" />
+		<UserCheckbox ref="userRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+
+import type { TagProps } from 'element-plus';
+
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import UserCheckbox from '/@/components/userCheckbox/index.vue';
+import RegionsDialog from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		RegionsDialog,
+		UserCheckbox,
+	},
+	setup() {
+		const isShowDialog = ref(false);
+		// 打开弹窗
+		const openDialog = () => {
+			// state.ruleForm = row;
+			isShowDialog.value = true;
+		};
+		// 关闭弹窗
+		const closeDialog = () => {
+			isShowDialog.value = false;
+		};
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+		];
+
+		type Item = { type: TagProps['type']; label: string };
+
+		const items = ref<Array<Item>>([{ type: '', label: '等待审核' }]);
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			Search,
+			tableData,
+			items,
+			toggleFullscreen,
+			FullScreen,
+			full,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.process-status-img {
+	width: 128px;
+	height: auto;
+	position: absolute;
+	right: 10px;
+	top: 60px;
+	z-index: 999;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer {
+	border-top: 1px solid #e8e8e8;
+	border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+	border-bottom: 1px solid #e8e8e8;
+	margin-right: 0;
+	border-radius: 4px 4px 0 0;
+}
+//tabs字体颜色
+::v-deep .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
+	color: #a9d86e !important;
+}
+.card-header {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+//.box-card {
+//  width: 480px;
+//}
+//步骤条字体大小
+::v-deep .el-step__icon-inner {
+	font-size: 14px !important;
+}
+//步骤条颜色
+::v-deep .el-step__line {
+	background-color: #409eff;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+	background-color: #f6f7fa;
+	font-weight: 400;
+	color: #909399;
+}
+.el-table .sort-caret.ascending {
+	border-bottom-color: #c0c4cc;
+}
+
+.tip {
+	padding: 8px 16px;
+	background-color: #ecf8ff;
+	border-radius: 4px;
+	border-left: 5px solid #50bfff;
+	margin: 20px 0;
+}
+.item {
+	height: 32px;
+	line-height: 32px;
+	margin-bottom: 8px;
+}
+.item .label {
+	display: inline-block;
+	height: 100%;
+	width: 70px;
+	font-size: 14px;
+	color: #5e6d82;
+	text-align: end;
+	vertical-align: top;
+}
+.item .value {
+	padding-left: 10px;
+	font-size: 14px;
+	max-width: calc(100% - 90px);
+	color: #5e6d82;
+	display: inline-block;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+}
+.text {
+	background-color: #409eff;
+	color: #fff;
+	border-width: 1px;
+	border-style: solid;
+	border-radius: 4px;
+	height: 24px;
+	padding: 0 8px;
+	line-height: 22px;
+	display: inline-block;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue
new file mode 100644
index 0000000..bc66e00
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue
@@ -0,0 +1,775 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+          :disabled="disabled"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="整改标题" prop="emergencyPlanName">
+              <el-input v-model="ruleForm.emergencyPlanName" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="整改单编号" prop="teamName">
+              <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="整改来源" prop="teamLeader">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="演练评价等" value="admin"></el-option>
+                <el-option label="现场处置方案" value="common"></el-option>
+                <el-option label="专项应急预案" value="common"></el-option>
+                <el-option label="其他预案" value="common"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="整改对象名称" prop="teamLeader">
+              <el-input v-model="ruleForm.teamName" placeholder="请填写整改对象名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="不合格因素" prop="teamLevel">
+              <el-input v-model="ruleForm.name" class="textarea" type="textarea"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="整改要求" prop="teamLevel">
+              <el-input v-model="ruleForm.name" class="textarea" type="textarea"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="隐患等级" prop="teamLeader">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="一般">一般</el-option>
+                <el-option label="重大">重大</el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="隐患后果" prop="teamLeader">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="死亡">死亡</el-option>
+                <el-option label="重伤">重伤</el-option>
+                <el-option label="轻伤">轻伤</el-option>
+                <el-option label="火灾">火灾</el-option>
+                <el-option label="交通事故">交通事故</el-option>
+                <el-option label="财产损失">财产损失</el-option>
+                <el-option label="其它">其它</el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="隐患类型" prop="teamLeader">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="化学品管理" value="admin"></el-option>
+                <el-option label="管理制度缺陷" value="common"></el-option>
+                <el-option label="设计缺陷" value="admin"></el-option>
+                <el-option label="其它" value="common"></el-option>
+                <el-option label="现场管理" value="admin"></el-option>
+                <el-option label="消防安全" value="common"></el-option>
+                <el-option label="消防安全" value="common"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="区域名称" prop="telephone">
+              <el-input
+                  v-model="ruleForm.teamLeader"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="regionsDialog"/>
+                </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="隐患照片" prop="telephone">-->
+<!--              <el-upload-->
+<!--                  class="avatar-uploader"-->
+<!--                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"-->
+<!--                  :show-file-list="false"-->
+<!--                  :on-success="handleAvatarSuccess"-->
+<!--                  :before-upload="beforeAvatarUpload"-->
+<!--              >-->
+<!--                <img v-if="imageUrl" :src="imageUrl" class="avatar" />-->
+<!--                <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>-->
+<!--              </el-upload>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="发现人" prop="telephone" >
+              <el-input
+                  v-model="ruleForm.teamLeader"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="发现日期" prop="telephone">
+              <el-date-picker
+                  v-model="value1"
+                  class="w100"
+                  type="datetime"
+                  placeholder="选择日期时间"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="填报人" prop="telephone" >
+              <el-input
+                  v-model="ruleForm.teamLeader"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="填报日期" prop="telephone">
+              <el-date-picker
+                  v-model="value1"
+                  class="w100"
+                  type="datetime"
+                  placeholder="选择日期时间"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="填报人部门"  placeholder="请选择">
+              <el-tree-select
+                  v-model="ruleForm.responsibleDepartment"
+                  :data="data" class="w100"
+                  placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="现场整改" prop="teamPhone">
+              <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                <el-option label="是" value="admin"></el-option>
+                <el-option label="否" value="common"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="责任部门"  placeholder="请选择">
+              <el-tree-select
+                  v-model="ruleForm.responsibleDepartment"
+                  :data="data" class="w100"
+                  placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+              <el-tab-pane label="组织整改" name="first">
+                <el-row style="margin: 0">
+                  <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="padding-left: 17.5px;padding-right: 17.5px;">
+                    <el-form-item label="整改意见" prop="teamLevel">
+                      <el-input v-model="ruleForm.name" class="textarea" type="textarea" placeholder="请填写整改意见"></el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" style="padding-left: 17.5px;padding-right: 17.5px;">
+                    <el-form-item label="整改期限" prop="telephone">
+                      <el-date-picker
+                          v-model="value1"
+                          class="w100"
+                          type="datetime"
+                          placeholder="选择日期时间"
+                      />
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" style="padding-left: 17.5px;padding-right: 17.5px;">
+                    <el-form-item label="填报人" prop="telephone" >
+                      <el-input
+                          v-model="ruleForm.teamLeader"
+                          placeholder="请选择"
+                          class="input-with-select"
+                      >
+                        <template #append>
+                          <el-button :icon="Search" @click="openUser"/>
+                        </template>
+                      </el-input>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" style="padding-left: 17.5px;padding-right: 17.5px;">
+                    <el-form-item label="填报日期" prop="telephone">
+                      <el-date-picker
+                          v-model="value1"
+                          class="w100"
+                          type="datetime"
+                          placeholder="选择日期时间"
+                      />
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+              </el-tab-pane>
+            </el-tabs>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+          <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <CheckTemplate ref="Shows"/>
+    <userSelections ref="userRef"/>
+    <RegionsDialog ref="openRef"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  reactive,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessage
+}
+from  'element-plus'
+import type {
+  TabsPaneContext,
+  FormInstance,
+  UploadProps,
+} from 'element-plus'
+import {
+  Search,
+  Plus,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from '/@/components/checkTemplate/index.vue'
+import RegionsDialog from '/@/components/regionsDialog/index.vue'
+import {releaseDrillPlanApi} from "/@/api/contingencyManagement/emergencyDrillPlan";
+import {emergencyDrillEvaluationApi} from "/@/api/contingencyManagement/emergencyDrillEvaluation";
+
+export default defineComponent({
+  name: 'rectificationDialog',
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+
+    const ruleFormRef = ref<FormInstance>()
+    //定义表单
+    const ruleForm = reactive({
+      id: '',
+      drillPlanId: '',
+      suitable: '',
+      sufficient: '',
+      arrival: '',
+      supplies: '',
+      protection: '',
+      whole: '',
+      division: '',
+      effect: '',
+      report: '',
+      safety: '',
+      rescue: '',
+      evacuate: '',
+      needModify: '',
+      questionAndImprove: '',
+      modifyContent: '',
+      fileList: [
+        {
+          fileName: 'name',
+          fileUrl: 'url',
+        }
+      ],
+      userList: [
+        {
+          userUid: ''
+        },
+        {
+          userUid: ''
+        }
+      ]
+    });
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    const openDialog = (title: string, id: number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      // if (title == '查看演练实施评价' || title == '修改演练实施评价') {
+      //   releaseDrillPlanApi()
+      //       .seeReleaseDrillPlan(id)
+      //       .then((res) => {
+      //         if (res.data.code == 200) {
+      //           ruleForm.value = res.data.data;
+      //         }
+      //       });
+      // }
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+    //日期选择器
+    const value1 = ref('')
+    // 可选择树
+    const treeSelect = ref()
+    const tree = [
+      {
+        value: '1',
+        label: 'Level one 1',
+        children: [
+          {
+            value: '11',
+            label: 'Level two 1-1',
+            children: [
+              {
+                value: '111',
+                label: 'Level three 1-1-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: 'Level one 2',
+        children: [
+          {
+            value: '21',
+            label: 'Level two 2-1',
+            children: [
+              {
+                value: '211',
+                label: 'Level three 2-1-1',
+              },
+            ],
+          },
+          {
+            value: '22',
+            label: 'Level two 2-2',
+            children: [
+              {
+                value: '221',
+                label: 'Level three 2-2-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: 'Level one 3',
+        children: [
+          {
+            value: '31',
+            label: 'Level two 3-1',
+            children: [
+              {
+                value: '311',
+                label: 'Level three 3-1-1',
+              },
+            ],
+          },
+          {
+            value: '32',
+            label: 'Level two 3-2',
+            children: [
+              {
+                value: '321',
+                label: 'Level three 3-2-1',
+              },
+            ],
+          },
+        ],
+      },
+    ]
+    //定义树形下拉框
+    const responsibleDepartment = ref()
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '11',
+            label: '经营班子',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: '生产运行部',
+        children: [
+          {
+            value: '21',
+            label: '灌装一班',
+            children: []
+          },
+          {
+            value: '22',
+            label: '工艺四班',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: '设备部',
+        children: [
+          {
+            value: '31',
+            label: '仪表班',
+            children: [],
+          },
+          {
+            value: '32',
+            label: '机修班',
+            children: [],
+          },
+        ],
+      },
+    ]
+    // 必填项提示
+    // const rules = reactive<FormRules>({
+    //   teamName: [
+    //     {
+    //       required: true,
+    //       message: '队伍名称不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLevel: [
+    //     {
+    //       required: true,
+    //       message: '队伍级别不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamLeader: [
+    //     {
+    //       required: true,
+    //       message: '队伍负责人不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   responsibleDepartment: [
+    //     {
+    //       required: true,
+    //       message: '负责人部门不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   teamPhone: [
+    //     {
+    //       required: true,
+    //       message: '负责人手机不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    //   telephone: [
+    //     {
+    //       required: true,
+    //       message: '固定电话不能为空',
+    //       trigger: 'change',
+    //     },
+    //   ],
+    // })
+    // 应急队伍弹窗
+    // 表单提交验证必填项
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '查看演练实施评价') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyDrillEvaluationApi()
+                .addEmergencyDrillEvaluation(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+      else if (title == '修改演练实施评价') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyDrillEvaluationApi()
+                .editEmergencyDrillEvaluation(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          id: '',
+          drillPlanId: '',
+          suitable: '',
+          sufficient: '',
+          arrival: '',
+          supplies: '',
+          protection: '',
+          whole: '',
+          division: '',
+          effect: '',
+          report: '',
+          safety: '',
+          rescue: '',
+          evacuate: '',
+          needModify: '',
+          questionAndImprove: '',
+          modifyContent: '',
+          fileList: [
+            {
+              fileName: 'name',
+              fileUrl: 'url',
+            }
+          ],
+          userList: [
+            {
+              userUid: ''
+            },
+            {
+              userUid: ''
+            }
+          ]
+        };
+      }
+    }
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+    const Shows=ref()
+    const daiInpt=()=>{
+      Shows.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    const activeName = ref('first')
+
+    const handleClick = (tab: TabsPaneContext, event: Event) => {
+      console.log(tab, event)
+    }
+    // 上传图片
+    const imageUrl = ref('')
+
+    const handleAvatarSuccess: UploadProps['onSuccess'] = (
+        response,
+        uploadFile
+    ) => {
+      imageUrl.value = URL.createObjectURL(uploadFile.raw!)
+    }
+
+    const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => {
+      if (rawFile.type !== 'image/jpeg') {
+        ElMessage.error('Avatar picture must be JPG format!')
+        return false
+      } else if (rawFile.size / 1024 / 1024 > 2) {
+        ElMessage.error('Avatar picture size can not exceed 2MB!')
+        return false
+      }
+      return true
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      onCancel,
+      responsibleDepartment,
+      data,
+      Search,
+      ruleForm,
+      value1,
+      treeSelect,
+      tree,
+      daiInpt,
+      Shows,
+      ruleFormRef,
+      // rules,
+      openUser,
+      userRef,
+      regionsDialog,
+      openRef,
+      activeName,
+      handleClick,
+      handleAvatarSuccess,
+      beforeAvatarUpload,
+      Plus,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      submitForm,
+      emit,
+      titles,
+      disabled,
+      resetForm,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-form .el-form-item{
+  margin-bottom: 18px !important;
+}
+::v-deep .el-form-item--default .el-form-item__label{
+  text-align: right;
+  height: 100%;
+}
+.textarea{
+  height: 50px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 50px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+.el-divider--horizontal {
+  display: block;
+  height: 1px;
+  width: 100%;
+  margin: 24px 0;
+  background-color: #dcdfe6;
+  position: relative;
+}
+.el-divider__text {
+  position: absolute;
+  background-color: #fff;
+  padding: 0 20px;
+  color: #303133;
+  left: 50%;
+  font-weight: 500;
+  font-size: 14px;
+}
+////上传图片
+//.avatar-uploader .avatar {
+//  width: 178px;
+//  height: 178px;
+//  display: block;
+//}
+
+</style>
+
+<!--<style scoped>-->
+<!--.avatar-uploader .avatar {-->
+<!--  width: 178px;-->
+<!--  height: 178px;-->
+<!--  display: block;-->
+<!--}-->
+<!--</style>-->
+<!--<style>-->
+<!--.avatar-uploader .el-upload {-->
+<!--  border: 1px dashed var(&#45;&#45;el-border-color);-->
+<!--  border-radius: 6px;-->
+<!--  cursor: pointer;-->
+<!--  position: relative;-->
+<!--  overflow: hidden;-->
+<!--  transition: var(&#45;&#45;el-transition-duration-fast);-->
+<!--}-->
+
+<!--.avatar-uploader .el-upload:hover {-->
+<!--  border-color: var(&#45;&#45;el-color-primary);-->
+<!--}-->
+
+<!--.el-icon.avatar-uploader-icon {-->
+<!--  font-size: 28px;-->
+<!--  color: #8c939d;-->
+<!--  width: 178px;-->
+<!--  height: 178px;-->
+<!--  text-align: center;-->
+<!--}-->
+<!--</style>-->
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue
new file mode 100644
index 0000000..bba7134
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue
@@ -0,0 +1,502 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+        <el-tab-pane label="待评价" name="first">
+          <div class="button_Line mb15">
+            <div class="button_Left">
+              <!--<el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">-->
+                <!--<el-icon>-->
+                  <!--<Delete />-->
+                <!--</el-icon>删除-->
+              <!--</el-button>-->
+            </div>
+<!--            <div class="button_Right">-->
+<!--              <el-button @click="upButton">-->
+<!--                <el-icon>-->
+<!--                  <Upload />-->
+<!--                </el-icon>-->
+<!--              </el-button>-->
+<!--              <el-button>-->
+<!--                <el-icon>-->
+<!--                  <Download />-->
+<!--                </el-icon>-->
+<!--              </el-button>-->
+<!--              <el-button>-->
+<!--                <el-icon>-->
+<!--                  <Refresh />-->
+<!--                </el-icon>-->
+<!--              </el-button>-->
+<!--            </div>-->
+          </div>
+          <el-table
+              :data="tableData"
+              style="width: 100%"
+              ref="multipleTableRef"
+              @selection-change="handleSelectionChange"
+          >
+            <el-table-column
+                type="selection"
+                width="55"
+            />
+            <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+              <template #default="scope">
+                <div v-if="scope.row.drillWay=='0'">综合</div>
+                <div v-if="scope.row.drillWay=='1'">桌面</div>
+                <div v-if="scope.row.drillWay=='2'">专项</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+              <template #default="scope">
+                <div v-if="scope.row.drillLevel=='1'">公司级</div>
+                <div v-if="scope.row.drillLevel=='2'">分厂级</div>
+                <div v-if="scope.row.drillLevel=='3'">车间级</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillRecordDate" label="演练记录日期" show-overflow-tooltip sortable></el-table-column>
+<!--            <el-table-column prop="attachments" label="应急预案" show-overflow-tooltip sortable></el-table-column>-->
+            <el-table-column label="操作" width="260" align="center" fixed="right">
+              <template #default="scope">
+                <!--<el-button size="small" text disabled>-->
+                  <!--<el-icon style="margin-right: 5px;">-->
+                    <!--<EditPen />-->
+                  <!--</el-icon>评价-->
+                <!--</el-button>-->
+<!--                <el-button size="small" text type="primary" @click="onFlowChart(scope.row.id)">-->
+<!--                  审批进度-->
+<!--                </el-button>-->
+                <!--<el-button size="small" text type="primary" @click="onApprovalProgress('详情',scope.row.id)">-->
+                  <!--<el-icon style="margin-right: 5px;">-->
+                    <!--<EditPen />-->
+                  <!--</el-icon>查看评价-->
+                <!--</el-button>-->
+
+                <el-button size="small" text type="primary" @click="onApprovalProgress('评价',scope.row.id)">
+                  <el-icon style="margin-right: 5px;">
+                    <EditPen />
+                  </el-icon>评价
+                </el-button>
+
+                <!--<el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">-->
+                  <!--<el-icon style="margin-right: 5px;">-->
+                    <!--<EditPen />-->
+                  <!--</el-icon>整改-->
+                <!--</el-button>-->
+                <!--<el-button size="small" text disabled @click="onOpenEdit(scope.row)">-->
+                  <!--查看整改-->
+                <!--</el-button>-->
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="pages">
+            <el-pagination
+                v-if="tableData.length == 0 ? false : true"
+                v-model:currentPage="pageIndex"
+                v-model:page-size="pageSize"
+                :page-sizes="[10, 20, 30]"
+                :pager-count="5"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+          </div>
+        </el-tab-pane>
+        <el-tab-pane label="已评价" name="second">
+          <div class="button_Line mb15">
+            <div class="button_Left">
+              <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+                <el-icon>
+                  <Delete />
+                </el-icon>删除
+              </el-button>
+            </div>
+            <!--            <div class="button_Right">-->
+            <!--              <el-button @click="upButton">-->
+            <!--                <el-icon>-->
+            <!--                  <Upload />-->
+            <!--                </el-icon>-->
+            <!--              </el-button>-->
+            <!--              <el-button>-->
+            <!--                <el-icon>-->
+            <!--                  <Download />-->
+            <!--                </el-icon>-->
+            <!--              </el-button>-->
+            <!--              <el-button>-->
+            <!--                <el-icon>-->
+            <!--                  <Refresh />-->
+            <!--                </el-icon>-->
+            <!--              </el-button>-->
+            <!--            </div>-->
+          </div>
+          <el-table
+              :data="tableData"
+              style="width: 100%"
+              ref="multipleTableRef"
+              @selection-change="handleSelectionChange"
+          >
+            <el-table-column
+                    type="selection"
+                    width="55"
+            />
+            <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+              <template #default="scope">
+                <div v-if="scope.row.drillWay=='0'">综合</div>
+                <div v-if="scope.row.drillWay=='1'">桌面</div>
+                <div v-if="scope.row.drillWay=='2'">专项</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+              <template #default="scope">
+                <div v-if="scope.row.drillLevel=='1'">公司级</div>
+                <div v-if="scope.row.drillLevel=='2'">分厂级</div>
+                <div v-if="scope.row.drillLevel=='3'">车间级</div>
+              </template>
+            </el-table-column>
+            <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="drillRecordDate" label="演练记录日期" show-overflow-tooltip sortable></el-table-column>
+            <!--            <el-table-column prop="attachments" label="应急预案" show-overflow-tooltip sortable></el-table-column>-->
+            <el-table-column label="操作" width="260" align="center" fixed="right">
+              <template #default="scope">
+                <!--<el-button size="small" text disabled>-->
+                  <!--<el-icon style="margin-right: 5px;">-->
+                    <!--<EditPen />-->
+                  <!--</el-icon>评价-->
+                <!--</el-button>-->
+                <!--                <el-button size="small" text type="primary" @click="onFlowChart(scope.row.id)">-->
+                <!--                  审批进度-->
+                <!--                </el-button>-->
+                <el-button size="small" text type="primary" @click="onApprovalProgress('查看评价',scope.row.id)">
+                  <el-icon style="margin-right: 5px;">
+                    <EditPen />
+                  </el-icon>查看评价
+                </el-button>
+                <!--<el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">-->
+                  <!--<el-icon style="margin-right: 5px;">-->
+                    <!--<EditPen />-->
+                  <!--</el-icon>整改-->
+                <!--</el-button>-->
+                <!--<el-button size="small" text disabled @click="onOpenEdit(scope.row)">-->
+                  <!--查看整改-->
+                <!--</el-button>-->
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="pages">
+            <el-pagination
+                v-if="tableData.length == 0 ? false : true"
+                v-model:currentPage="pageIndex"
+                v-model:page-size="pageSize"
+                :page-sizes="[10, 20, 30]"
+                :pager-count="5"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+          </div>
+        </el-tab-pane>
+      </el-tabs>
+    </el-card>
+    <ApprovalProgress ref="approvalRef" @myAdd="onMyAdd" />
+<!--    <FlowChart ref="flowRef" />-->
+    <RectificationDialog ref="rectificationRef" @myAdd="onMyAdds" />
+<!--    <upData ref="upShow"></upData>-->
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessage,
+  ElMessageBox,
+  TabsPaneContext,
+} from 'element-plus';
+import {
+  Plus,
+  // Upload,
+  // Download,
+  // Refresh,
+  Delete,
+  EditPen,
+} from '@element-plus/icons-vue'
+// import FlowChart from '/@/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue'
+import ApprovalProgress from '/@/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue';
+// import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import RectificationDialog from '/@/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue';
+import {emergencyDrillEvaluationApi} from '/@/api/contingencyManagement/emergencyDrillEvaluation'
+import {emergencyDrillExecuteApi} from "/@/api/contingencyManagement/emergencyDrillExecute";
+
+
+// 定义接口来定义对象的类型
+// interface TableDataRow {
+// }
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    EditPen,
+    Plus,
+    // Upload,
+    // Download,
+    // Refresh,
+    // UpData,
+    Delete,
+    ApprovalProgress,
+    RectificationDialog,
+    // FlowChart
+  },
+  setup() {
+    const activeName = ref('first')
+    const handleClick = (tab: TabsPaneContext, event: Event) => {
+      console.log(tab, event)
+      if(tab.props.name=='first'){
+        listQuery.searchParams.status=false
+        listApi()
+      }else if(tab.props.name=='second'){
+        listQuery.searchParams.status=true
+        listApi()
+      }
+    }
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        status:false
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+
+    // 列表数据请求
+    const listApi = async () => {
+      // let res = await emergencyDrillEvaluationApi().getEmergencyDrillEvaluationList(listQuery);
+      let res = await emergencyDrillExecuteApi().getEmergencyDrillExecuteList(listQuery);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'error',
+        });
+      }
+    };
+
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+
+    // 审批进度弹窗
+    // const flowRef = ref();
+    // const onFlowChart = (row: TableDataRow) => {
+    //   flowRef.value.openDialog(row);
+    // };
+    // 打开修改弹窗
+    const rectificationRef = ref();
+    const onEdit = (val: string, row: object) => {
+      if (val == '修改') {
+        rectificationRef.value.openDialog('修改演练实施评价',row,false);
+      } else {
+        // rectificationRef.value.openDialog('修改演练实施评价',row,false);
+      }
+    };
+    const onMyAdds = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 审批进度弹窗
+    const approvalRef = ref();
+    const onApprovalProgress = (val: string, row: object) => {
+      if (val == '详情') {
+        approvalRef.value.openDialog('查看演练实施评价', row, true);
+      }
+      if (val == '评价') {
+        approvalRef.value.openDialog('演练实施评价', row, false);
+      }
+      if (val == '查看评价') {
+        approvalRef.value.openDialog('演练实施查看评价', row, true);
+      }
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 整改弹窗
+    // const rectificationRef = ref();
+    // const onEdit = () => {
+    //   rectificationRef.value.openDialog();
+    // };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            emergencyDrillEvaluationApi()
+                .deleteEmergencyDrillEvaluation(deletAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      listApi();
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      listApi();
+    };
+    const danger = ref(true);
+    const deletAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deletAll.value = arr;
+      // console.log(deletAll.value);
+      if (val.length == 1) {
+        danger.value = false;
+      }  else if (val.length == 0) {
+        danger.value = true;
+      } else {
+        danger.value = false;
+      }
+    };
+    onMounted(() => {
+      listApi();
+    });
+    return {
+      activeName,
+      handleClick,
+      // upButton,
+      // upShow,
+      tableData,
+      // onOpenEdit,  //编辑
+      pageIndex,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      onApprovalProgress,
+      approvalRef,
+      onEdit,
+      rectificationRef,
+      // onFlowChart,
+      // flowRef,
+      onDeleteAll,
+      danger,
+      total,
+      handleSelectionChange,
+      onMyAdd,
+      onMyAdds,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
new file mode 100644
index 0000000..15f3892
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
@@ -0,0 +1,627 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+        @close="resetForm(ruleFormRef)"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+          :disabled="disabled"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="演练名称" prop="drillName">
+              <el-input
+                  v-model="ruleForm.drillName"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="regionsDialog"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练地点" prop="drillAddress">
+              <el-input :disabled="true" v-model="drillRuleForm.drillAddress" placeholder="请填写演练地点"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="主办部门"  placeholder="请选择" prop="departmentId">
+              <el-tree-select
+                      :disabled="true"
+                      v-model="drillRuleForm.departmentId"
+                      :data="deptData"
+                      check-strictly
+                      class="w100"
+                      :props="propse"
+                      clearable
+                      placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练方式" prop="drillWay">
+              <el-select :disabled="true" v-model="drillRuleForm.drillWay" class="w100" placeholder="请选择">
+                <el-option label="综合" value="0"></el-option>
+                <el-option label="桌面" value="1"></el-option>
+                <el-option label="专项" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="应急预案" prop="planName" >
+              <el-input
+                      :disabled="true"
+                      v-model="drillRuleForm.planName"
+                      placeholder="请选择"
+                      class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="daiInpt"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练级别" prop="drillLevel">
+              <el-select :disabled="true" v-model="drillRuleForm.drillLevel" class="w100" placeholder="请选择">
+                <el-option label="公司级" value="1"></el-option>
+                <el-option label="分厂级" value="2"></el-option>
+                <el-option label="车间级" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制日期" prop="makingPlanDate">
+              <el-date-picker :disabled="true" v-model="drillRuleForm.makingPlanDate"
+                              value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划演练日期" prop="drillPlanDate">
+              <el-date-picker :disabled="true" v-model="drillRuleForm.drillPlanDate"
+                              value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="修改时间" prop="gmtModitify">
+              <el-date-picker :disabled="true" v-model="drillRuleForm.gmtModitify"
+                              value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制人" prop="makingUserName">
+              <el-input :disabled="true" v-model="drillRuleForm.makingUserName" placeholder="请填写计划定制人"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="制定部门" prop="makingDepartmentId">
+              <el-tree-select
+                      :disabled="true"
+                      v-model="drillRuleForm.makingDepartmentId"
+                      check-strictly
+                      :data="deptData"
+                      class="w100"
+                      :props="propse"
+                      clearable
+                      placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练人员" prop="userListString" >
+              <el-input
+                      :disabled="true"
+                      v-model="drillRuleForm.userListString"
+                      placeholder="请选择"
+                      class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="openUser(0)"/>
+                </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="演练目的" prop="purpose">
+              <el-input
+                      :disabled="true"
+                      v-model="drillRuleForm.purpose"
+                      placeholder="请填写演练目的"
+                      class="input-with-select textarea"
+                      type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练负责人" prop="chargeUserListString" >
+              <el-input
+                      :disabled="true"
+                      v-model="drillRuleForm.chargeUserListString"
+                      placeholder="请选择"
+                      class="input-with-select"
+              >
+                <template #append>
+                  <el-button :disabled="true" :icon="Search" @click="openUser(1)"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="保险措施" prop="insuranceMeasures">
+              <el-input :disabled="true" v-model="drillRuleForm.insuranceMeasures" placeholder="请填写保险措施"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练经费" prop="drillExpense">
+              <el-input :disabled="true" v-model="drillRuleForm.drillExpense" placeholder="请填写演练经费"></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="备注信息" prop="remark">
+              <el-input
+                      :disabled="true"
+                      v-model="drillRuleForm.remark"
+                      placeholder="请填写备注信息"
+                      class="input-with-select textarea"
+                      type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+
+
+
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="实际到场人员" prop="autualUserListString" >
+              <el-input
+                  v-model="ruleForm.autualUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </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="演练过程描述" prop="processDesc">
+              <el-input
+                  v-model="ruleForm.processDesc"
+                  placeholder="请填写演练目的"
+                  class="textarea"
+                  type="textarea"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练记录人" prop="recordUserName" >
+              <el-input
+                  v-model="ruleForm.recordUserName"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="daiInpt"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练记录时间" prop="drillRecordDate">
+              <el-date-picker
+                  class="w100"
+                  v-model="ruleForm.drillRecordDate"
+                  type="datetime"
+                  placeholder="选择日期时间"
+                  value-format="YYYY-MM-DD HH:mm:ss"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+          <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <!--记录人-->
+    <DailogSearchUser ref="Shows" @SearchUser="onUser"/>
+    <!--到场人员-->
+    <DailogSearchUser ref="userRef" @SearchUser="selectDCuser"/>
+    <RegionsDialog ref="openRef" @SearchUser="onUsers"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // reactive,
+  ref,
+  defineComponent,
+  onMounted,
+} from 'vue';
+
+import type {
+  FormInstance,
+  // FormRules,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserCheckbox from "/@/components/userCheckbox/index.vue"
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import RegionsDialog from '/@/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue'
+import {emergencyDrillExecuteApi} from "/@/api/contingencyManagement/emergencyDrillExecute";
+import {releaseDrillPlanApi} from "/@/api/contingencyManagement/emergencyDrillPlan";
+import {goalManagementApi} from "/@/api/goalManagement";
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+    DailogSearchUser,
+    UserCheckbox,
+    RegionsDialog,
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+
+    const ruleFormRef = ref<FormInstance>()
+    //定义表单
+    const ruleForm = ref ({
+      drillRecordDate: '', // 演练记录时间
+      drillPlanId: '', //演练计划ID
+      drillName:'',
+      recordUserUid: '', // 记录人ID
+      recordUserName:'',
+      processDesc: '', // 演练过程描述
+
+      autualUserListString:'',
+      userList: [
+        {
+          userUid: '',
+        },
+        {
+          userUid: '',
+        }
+      ]
+    });
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    const openDialog = (title: string, id: number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      if (title == '查看应急演练实施' || title == '修改应急演练实施') {
+        emergencyDrillExecuteApi()
+            .seeEmergencyDrillExecute(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+                ruleForm.value.autualUserListString=''
+                for(var a = 0;a<res.data.data.userList.length;a++){
+                  ruleForm.value.autualUserListString += res.data.data.userList[a].userName+';'
+                }
+
+                releaseDrillPlanApi()
+                  .seeReleaseDrillPlan(res.data.data.drillPlanId)
+                  .then((res1) => {
+                    if (res1.data.code == 200) {
+                      drillRuleForm.value = res1.data.data;
+
+                      drillRuleForm.value.userListString=''
+                      drillRuleForm.value.chargeUserListString=''
+                      for(var a = 0;a<res1.data.data.userList.length;a++){
+                        if(res1.data.data.userList[a].type==1){
+                          drillRuleForm.value.userListString += res1.data.data.userList[a].userName+';'
+                        }
+                        // if(res.data.data.userList[a].type==2){
+                        //   ruleForm.value.chargeUserListString += res.data.data.userList[a].userName+';'
+                        // }
+                      }
+                      // alert(res.data.data.chargeUserList.length)
+                      for(var a = 0;a<res1.data.data.chargeUserList.length;a++){
+                        drillRuleForm.value.chargeUserListString += res1.data.data.chargeUserList[a].userName+';'
+                      }
+                    }
+                  })
+              }
+            });
+      }
+    };
+    const data =  [];
+    const deptData = []
+    //部门树
+    // const department = () => {
+    //   goalManagementApi()
+    //           .getTreedepartment()
+    //           .then((res) => {
+    //             if (res.data.code == 200) {
+    //               deptData.value = res.data.data;
+    //               console.log('-------',deptData.value)
+    //             } else {
+    //               ElMessage.error(res.data.msg);
+    //             }
+    //           });
+    // };
+    //
+    // const propse = {
+    //   label: 'depName',
+    //   children: 'children',
+    //   value: 'depId',
+    // };
+    //el-tree-select回显
+    const propse = {
+      label: 'depName',
+      children: 'children',
+    };
+    //得到部门树
+    const department = async () => {
+      await goalManagementApi()
+              .getTreedepartment()
+              .then((res) => {
+                if (res.data.code == 200) {
+                  data.value = res.data.data;
+                  getTreeList(res.data.data, deptData);
+                  console.log('deptData',deptData)
+                } else {
+                  ElMessage.error(res.data.msg);
+                }
+              });
+    };
+    // 递归树状数据且修改字段名
+    const getTreeList = (treeList, deptData) => {
+      treeList.map((c) => {
+        let tempData = {
+          depName: c.depName,
+          value: c.depId,
+          children: [],
+        };
+        if (c.children && c.children.length > 0) {
+          tempData.children = [];
+          getTreeList(c.children, tempData.children);
+        }
+        deptData.push(tempData);
+      });
+    };
+    onMounted(() => {
+      department();
+    });
+    //日期选择器
+    const drillRecordDate = ref('')
+    // 表单提交验证必填项
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '新建应急演练实施') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyDrillExecuteApi()
+                .addEmergencyDrillExecute(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+      else if (title == '修改应急演练实施') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyDrillExecuteApi()
+                .editEmergencyDrillExecute(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          drillRecordDate: '', // 演练记录时间
+          drillPlanId: '', //演练计划ID
+          drillName:'',
+          recordUserUid: '', // 记录人ID
+          processDesc: '', // 演练过程描述
+          userList: [
+            {
+              userUid: '',
+            },
+            {
+              userUid: '',
+            }
+          ]
+        };
+      }
+    }
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      drillRuleForm.value={}
+      formEl.resetFields();
+    };
+
+    // 演练名称弹窗
+    const openRef=ref()
+    const regionsDialog = () => {
+      openRef.value.openDailog()
+    }
+    //定义表单
+    const drillRuleForm = ref ({})
+    const onUsers = (e:any) => {
+      console.log(e)
+      releaseDrillPlanApi()
+              .seeReleaseDrillPlan(e.id)
+              .then((res) => {
+                if (res.data.code == 200) {
+                  drillRuleForm.value = res.data.data;
+
+                  drillRuleForm.value.userListString=''
+                  drillRuleForm.value.chargeUserListString=''
+                    for(var a = 0;a<res.data.data.userList.length;a++){
+                      if(res.data.data.userList[a].type==1){
+                        drillRuleForm.value.userListString += res.data.data.userList[a].userName+';'
+                      }
+                      // if(res.data.data.userList[a].type==2){
+                      //   ruleForm.value.chargeUserListString += res.data.data.userList[a].userName+';'
+                      // }
+                    }
+                    // alert(res.data.data.chargeUserList.length)
+                    for(var a = 0;a<res.data.data.chargeUserList.length;a++){
+                      drillRuleForm.value.chargeUserListString += res.data.data.chargeUserList[a].userName+';'
+                    }
+                }
+              })
+      ruleForm.value.drillPlanId=e.id
+      ruleForm.value.drillName=e.drillName
+    };
+    // 实际到场人员弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDailog(0);
+    };
+    const selectDCuser = (e) => {
+      ruleForm.value.autualUserListString=''
+      ruleForm.value.userList=[]
+      for(var a = 0;a<e.length;a++){
+        ruleForm.value.userList.push(
+                {
+                  userName: e[a].realName,
+                  userUid: e[a].uid,
+                }
+        )
+        ruleForm.value.autualUserListString+=e[a].realName+';'
+      }
+    }
+    // 演练记录人弹窗
+    const Shows=ref()
+    const daiInpt=()=>{
+      Shows.value.openDailog()
+    }
+    const onUser = (e:any) => {
+      ruleForm.value.recordUserUid=e.uid
+      ruleForm.value.recordUserName=e.realName
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      isShowDialog,
+      Search,
+      ruleForm,
+      drillRecordDate,
+      daiInpt,
+      Shows,
+      ruleFormRef,
+      submitForm,
+      // rules,
+      openUser,
+      userRef,
+      regionsDialog,
+      onUsers,
+      onUser,
+      openRef,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      resetForm,
+      titles,
+      disabled,
+      emit,
+      selectDCuser,
+      drillRuleForm,
+      deptData,
+      propse,
+      data,
+      department
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+.textarea{
+  height: 90px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 90px!important;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue
new file mode 100644
index 0000000..a6cdd4e
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue
@@ -0,0 +1,221 @@
+<template>
+  <el-dialog v-model="dialogVisible" title="选择演练计划" width="900px" draggable :fullscreen="full">
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-row>
+      <el-col :span="18">
+        <el-row>
+          <el-col :span="24">
+            <el-form ref="ruleFormRef" :inline="true" :model="ruleForm" status-icon>
+              <el-form-item>
+                <el-input size="default" v-model="listQuery.searchParams.drillName" placeholder="演练名称" style="max-width: 215px;margin-right: 12px;" />
+              </el-form-item>
+              <el-form-item>
+                <el-button size="default" type="primary" @click="onSubmit">查询</el-button>
+                <el-button size="default" @click="submitReset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
+          <el-col :span="24">
+            <el-button size="default" :icon="Delete" style="margin-top: 15px">清除选择</el-button>
+          </el-col>
+        </el-row>
+        <el-table
+            :data="tableData"
+            style="width: 100%;
+             margin-top: 20px"
+            @cell-click="radio"
+        >
+          <el-table-column width="55">
+            <template #default="scope">
+              <el-radio-group v-model="radio1">
+                <el-radio :label="scope.row" size="large">{{ null }}</el-radio>
+              </el-radio-group>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="drillName" label="演练名称" />
+        </el-table>
+        <div class="pages">
+          <el-pagination
+              v-model:currentPage="pageIndex"
+              v-model:page-size="pageSize"
+              :page-sizes="[10, 20, 30]"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="onHandleSizeChange"
+              @current-change="onHandleCurrentChange"
+          />
+        </div>
+      </el-col>
+      <el-col :span="6">
+        <div v-if="dynamicTags[0] == '' ? false : true">
+          <el-tag
+              v-for="tag in dynamicTags"
+              :key="tag"
+              class="mx-1"
+              style="margin: 5px"
+              closable
+              :disable-transitions="false"
+              @close="handleClose(tag)"
+          >
+            {{ tag.drillName }}
+          </el-tag>
+        </div>
+      </el-col>
+    </el-row>
+    <template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+    </template>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanLogApi } from '/@/api/contingencyManagement/emergencyPlanLog';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+import {releaseDrillPlanApi} from "/@/api/contingencyManagement/emergencyDrillPlan";
+export default defineComponent({
+  setup(props, { emit }) {
+    const dialogVisible = ref<boolean>(false);
+    const openDailog = () => {
+      dialogVisible.value = true;
+      onSubmit()
+    };
+    // 搜索条件
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        drillName: ''
+      },
+    });
+    // 列表请求数据
+    const onSubmit = async () => {
+      let res = await releaseDrillPlanApi().getReleaseDrillPlanList(listQuery);
+      if (res.data.code === '200') {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          type: 'error',
+          message: res.data.msg,
+        });
+      }
+    };
+    // 定义表格数据
+    const tableData = ref([]);
+    // 重置
+    const submitReset = () => {
+      listQuery.searchParams.drillName = '';
+      onSubmit();
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const onHandleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+    };
+    // 分页未改变
+    const onHandleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+    };
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['']);
+    const handleClose = (tag: string) => {
+      dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      radio1.value = '';
+    };
+    const radio1 = ref('');
+    const radio = (event: any) => {
+      dynamicTags.value[0] = event;
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+
+    const submitForm = () => {
+      let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+      emit('SearchUser', obj[0]);
+      dialogVisible.value = false;
+    };
+    onMounted(() => {
+      onSubmit();
+    });
+    return {
+      dialogVisible,
+      openDailog,
+      tableData,
+      pageSize,
+      pageIndex,
+      onHandleSizeChange,
+      onHandleCurrentChange,
+      dynamicTags,
+      handleClose,
+      Delete,
+      radio1,
+      radio,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      submitReset,
+      onMounted,
+      listQuery,
+      submitForm,
+      onSubmit,
+      total,
+    };
+  },
+});
+</script>
+<style scoped>
+.el-form--inline .el-form-item {
+  margin-bottom: 0;
+  margin-right: 0;
+}
+/*分页*/
+.pages {
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
diff --git a/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue
new file mode 100644
index 0000000..c3a4156
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue
@@ -0,0 +1,443 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        title="用户选择"
+        v-model="isShowDialog"
+        width="1000px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-container class="layout-container-demo" style="height: 500px;overflow: auto;min-width: 960px">
+        <el-aside width="200px">
+          <el-input v-model="filterText" placeholder="请输入组织机构过滤" />
+          <el-tree
+              ref="treeRef"
+              class="filter-tree"
+              :data="data"
+              :props="defaultProps"
+              default-expand-all
+              :filter-node-method="filterNode"
+          />
+        </el-aside>
+        <el-container style="margin: 0 15px;min-width:560px;">
+          <el-header style="font-size: 12px">
+            <el-form :inline="true" :model="formInline" class="demo-form-inline">
+              <el-form-item>
+                <el-input size="default" v-model="formInline.name" placeholder="登录名"> </el-input>
+              </el-form-item>
+              <el-form-item>
+                <el-button size="default" type="primary" class="ml10" @click="onSubmit">
+                  查询
+                </el-button>
+                <el-button size="default" class="ml10" @click="submitReset">
+                  重置
+                </el-button>
+              </el-form-item>
+            </el-form>
+          </el-header>
+          <el-main style="position: relative;">
+            <el-table
+                :data="tableData"
+                :header-cell-style="{background:'#f6f7fa',color:'#909399',fontWeight:400}"
+            >
+              <el-table-column align="center" width="55">
+                <template #default="scope">
+                  <el-radio-group v-model="radio1" @change="radio">
+                    <el-radio :label="scope.row.date" size="large">{{null}}</el-radio>
+                  </el-radio-group>
+                </template>
+              </el-table-column>
+              <el-table-column prop="date" label="登录名" width="100" show-overflow-tooltip sortable />
+              <el-table-column prop="name" label="用户名" width="100" show-overflow-tooltip sortable />
+              <el-table-column prop="address" label="所属机构" width="115"  show-overflow-tooltip sortable />
+              <el-table-column prop="department" label="所属部门" width="115" show-overflow-tooltip sortable/>
+              <el-table-column  label="状态"
+                                width="80"
+                                prop="tag"
+                                :filters="[
+                     { text: '正常', value: 'Home' },
+                     { text: '不正常', value: 'Office' },
+                   ]"
+                                :filter-method="filterTag"
+                                filter-placement="bottom-end">
+                <template #default="scope">
+                  <el-tag
+                      :type="scope.row.tag === 'Home' ? '' : 'success'"
+                      disable-transitions
+                  >{{ scope.row.tag }}</el-tag
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+            <div class="pages">
+              <el-pagination
+                  v-model:currentPage="pageIndex"
+                  v-model:page-size="pageSize"
+                  :page-sizes="[10, 20, 30]"
+                  :pager-count="5"
+                  :small="small"
+                  :disabled="disabled"
+                  :background="background"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="40"
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-main>
+        </el-container>
+        <div style="width: 200px;">
+          <el-tag
+              v-for="tag in dynamicTags"
+              :key="tag"
+              class="mx-1"
+              style="margin: 5px"
+              closable
+              :disable-transitions="false"
+              @close="handleClose(tag)"
+          >
+            {{ tag }}
+          </el-tag>
+        </div>
+      </el-container>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button size="default" type="primary"  @click="onCancel">确定</el-button>
+          <el-button size="default" @click="onCancel">关闭</el-button>
+				</span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  defineComponent,
+  watch,
+  reactive,
+} from 'vue';
+
+import type {
+  ElTree,
+  // ElTable,
+} from 'element-plus'
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+interface Tree {
+  id: number
+  label: string
+  children?: Tree[]
+}
+// interface User {
+//   date: string
+//   name: string
+//   address: string
+// }
+export default defineComponent({
+  name: 'userSelections',
+  components: {
+    // Search,
+  },
+  setup() {
+    const isShowDialog = ref(false)
+    // 打开弹窗
+    const openDialog = () => {
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+
+
+    const filterText = ref('')
+    const treeRef = ref<InstanceType<typeof ElTree>>()  //实例化
+
+    const defaultProps = {
+      children: 'children',
+      label: 'label',
+    }
+
+    // 监听搜索关键字改变
+    watch(filterText, (val) => {
+      treeRef.value!.filter(val)
+    })
+
+    // 节点过滤模糊搜索
+    const filterNode = (value: string, data: Tree) => {
+      if (!value) return true
+      return data.label.includes(value)
+    }
+
+    // 树形结构内容
+    const data: Tree[] = [
+      {
+        id: 1,
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            id: 4,
+            label: '经营班子',
+            children: []
+          },
+        ],
+      },
+      {
+        id: 2,
+        label: '生产运行部',
+        children: [
+          {
+            id: 5,
+            label: '工艺二班',
+          },
+          {
+            id: 6,
+            label: '灌装一班',
+          },
+        ],
+      },
+      {
+        id: 3,
+        label: '设备部',
+        children: [
+          {
+            id: 7,
+            label: '仪表班',
+          },
+          {
+            id: 8,
+            label: '机修班',
+          },
+        ],
+      },
+    ]
+    // const item = {
+    //   date: '孙刚',
+    //   name: '龚赛健',
+    //   address: '综合办公室',
+    //   tag: '正常',
+    // }
+    // const tableData = ref(Array.from({ length: 7 }).fill(item))
+    const tableData = [
+      {
+        date: '孙刚',
+        name: '孙刚',
+        address: '',
+        department: '经营班子',
+        tag: '正常',
+      },
+      {
+        date: '谭柏',
+        name: '谭柏',
+        address: '',
+        department: '经营班子',
+        tag: '正常',
+      },
+      {
+        date: '倪威',
+        name: '倪威',
+        address: '',
+        department: '经营班子',
+        tag: '正常',
+      },
+      {
+        date: '倪玲婕',
+        name: '倪玲婕',
+        address: '',
+        department: '经营班子',
+        tag: '正常',
+      },
+    ];
+    // 定义表单搜索
+    const formInline = reactive({
+      name: '',
+    })
+    // 搜索按钮
+    const onSubmit = () => {
+      console.log('submit!')
+    }
+
+    // const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['胡海涛']);
+    const handleClose = (tag: string) => {
+      dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      radio1.value=""
+    };
+    const radio1=ref('谭柏')
+    const radio=(event:any)=>{
+      dynamicTags.value[0]=event
+    }
+
+    // 分页
+    const pageIndex = ref(4);
+    const pageSize = ref(10);
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      console.log(`${val} items per page`);
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      console.log(`current page: ${val}`);
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      onCancel,
+      defaultProps,
+      filterNode,
+      data,
+      tableData,
+      formInline,
+      onSubmit,
+      // multipleTableRef,
+      handleClose,
+      dynamicTags,
+      handleSizeChange,
+      handleCurrentChange,
+      pageIndex,
+      pageSize,
+      radio1,
+      radio,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.layout-container-demo .el-header {
+  position: relative;
+  color: var(--el-text-color-primary);
+  line-height: 32px;
+  --el-header-height: 45px;
+  padding: 0;
+}
+.layout-container-demo .el-aside {
+  padding: 10px;
+  border: 1px solid #ebeef5;
+  color: var(--el-text-color-primary);
+}
+::v-deep .el-input--large .el-input__inner {
+  height: 32px!important;
+  line-height: 32px!important;
+}
+.layout-container-demo .el-menu {
+  border-right: none;
+}
+.layout-container-demo .el-main {
+  padding: 0;
+}
+.layout-container-demo .toolbar {
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+  right: 20px;
+}
+.el-input--large{
+  //width: 178px;
+  height: 32px;
+}
+.el-tree{
+  overflow: auto;
+}
+::-webkit-scrollbar {
+  height: 1px;
+
+}
+::-webkit-scrollbar-thumb {
+  background-color: transparent;
+}
+// 鼠标悬浮样式
+:hover::-webkit-scrollbar-thumb {
+  border-radius: 15px;
+  background-color: #d8d9db;
+}
+::v-deep .el-input__wrapper{
+  width: 215px;
+}
+::v-deep .el-form-item{
+  margin-bottom: 0;
+  margin-right: 0;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//单选框圆形
+::v-deep .el-table__header .el-table-column--selection .cell .el-checkbox {
+  display:none
+}
+::v-deep .el-table-column--selection .cell{
+  text-align: center;
+}
+::v-deep .el-checkbox__input .el-checkbox__inner{
+  border-radius: 50%;
+}
+/*分页*/
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+  align-items: center;
+  //position: absolute;
+  //bottom: 0;
+}
+::v-deep .el-pagination{
+  width: 100%;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue
new file mode 100644
index 0000000..767809d
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue
@@ -0,0 +1,375 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="button_Line mb15">
+        <div class="button_Left">
+          <el-button size="default" type="primary"  @click="onOpenAdd">
+            <el-icon>
+              <Plus />
+            </el-icon>新建
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+        <div class="button_Right">
+<!--          <el-button @click="upButton">-->
+<!--            <el-icon>-->
+<!--              <Upload />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Download />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Refresh />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+        </div>
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          ref=""
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <div v-if="scope.row.drillWay=='0'">综合</div>
+            <div v-if="scope.row.drillWay=='1'">桌面</div>
+            <div v-if="scope.row.drillWay=='2'">专项</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <div v-if="scope.row.drillLevel=='1'">公司级</div>
+            <div v-if="scope.row.drillLevel=='2'">分厂级</div>
+            <div v-if="scope.row.drillLevel=='3'">车间级</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillRecordDate" label="演练记录时间" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="emergencyPlanName" label="应急预案" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column label="操作" width="260" align="center" fixed="right">
+          <template #default="scope">
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <EditPen />
+              </el-icon>修改
+            </el-button>
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            v-model:currentPage="pageIndex"
+            v-model:page-size="pageSize"
+            :page-sizes="[10, 20, 30]"
+            :pager-count="5"
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+        />
+      </div>
+    </el-card>
+    <OpenAdd ref="addRef" @myAdd="onMyAdd"/>
+<!--    <upData ref="upShow"></upData>-->
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+  // ElTable,
+} from 'element-plus';
+import { Plus,
+  // Edit,
+  Delete,
+  // Upload,
+  // Download,
+  View,
+  Refresh,
+  VideoPause,
+  EditPen,
+} from '@element-plus/icons-vue'
+import OpenAdd from '/@/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import {emergencyDrillExecuteApi} from "/@/api/contingencyManagement/emergencyDrillExecute";
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenAdd,
+    EditPen,
+    Plus,
+    // Edit,
+    Delete,
+    View,
+    // Upload,
+    // Download,
+    Refresh,
+    VideoPause,
+    UpData
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表数据请求
+    const listApi = async () => {
+      let res = await emergencyDrillExecuteApi().getEmergencyDrillExecuteList(listQuery);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'error',
+        });
+      }
+    };
+
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+    // 打开新增用户弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建应急演练实施',false);
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 打开修改用户弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看应急演练实施',row,true);
+      } else {
+        addRef.value.openDialog('修改应急演练实施',row,false);
+      }
+    };
+    // 删除用户
+    const onRowDel = (id: number) => {
+      let arr = [];
+      arr.push(id)
+      ElMessageBox.confirm('确定删除所选项吗?', '提示',{
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        emergencyDrillExecuteApi()
+            .deleteEmergencyDrillExecute(arr)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'success',
+                });
+                listApi();
+              } else {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                });
+                listApi();
+              }
+            });
+      })
+          .catch(() => {});
+    };
+    const danger = ref(true);
+    const deletAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deletAll.value = arr;
+      if (val.length == 1) {
+        danger.value = false;
+      }  else if (val.length == 0) {
+        danger.value = true;
+      } else {
+        danger.value = false;
+      }
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            emergencyDrillExecuteApi()
+                .deleteEmergencyDrillExecute(deletAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      listApi();
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      listApi();
+    };
+
+    onMounted(() => {
+      listApi();
+    });
+    return {
+      // upButton,
+      // upShow,
+      tableData,
+      onOpenAdd,  //新增
+      addRef,
+      onRowDel,
+      pageIndex,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      onMyAdd,
+      total,
+      onDeleteAll,
+      handleSelectionChange,
+      danger,
+      deletAll,
+      onEdit,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+//分页开始
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+//分页结束
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
new file mode 100644
index 0000000..5dad014
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
@@ -0,0 +1,325 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        title="应急演练计划--修改审批进度"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <!-- <img class="process-status-img" src="src/assets/icon.png"> -->
+      <el-tabs type="border-card">
+        <el-tab-pane label="流转记录">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流转记录</span>
+              </div>
+            </template>
+            <div>
+              <el-steps :active="2">
+                <el-step title="开始" description="胡海涛,2022-07-09 20:41:50" />
+                <el-step title="一级审批" description="管理员,2022-07-09 20:41:50" />
+              </el-steps>
+            </div>
+            <el-table :data="tableData" stripe style="width: 100%">
+              <el-table-column prop="date" label="执行环节" width="120" />
+              <el-table-column prop="name" label="执行人" width="120" />
+              <el-table-column prop="address" label="开始时间" width="100" />
+              <el-table-column prop="address" label="结束时间" width="100" />
+              <el-table-column prop="address" label="办理状态" width="100" />
+              <el-table-column prop="address" label="审批意见" width="100" />
+              <el-table-column prop="address" label="任务历时" width="100" />
+            </el-table>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="流程信息">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流程信息</span>
+              </div>
+            </template>
+            <div>
+              <el-timeline>
+                <el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)">
+                  <el-card>
+                    <h4 style="margin: 10px 0;padding-bottom: 10px;">一级审批</h4>
+                    <el-row>
+                      <el-col class="tip" :span="22" :offset="1">
+                        <div class="item">
+                          <span class="label">审批人:</span>
+                          <span class="value">管理员</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">办理状态:</span>
+                          <span class="value">
+<!--                             <el-tag-->
+<!--                                 v-for="item in items"-->
+<!--                                 :key="item.label"-->
+<!--                                 :type="item.type"-->
+<!--                                 class="mx-1"-->
+<!--                                 effect="dark"-->
+<!--                             >-->
+<!--                               {{ item.label }}-->
+<!--                             </el-tag>-->
+                             <p class="text">等待审核</p>
+                          </span>
+                        </div>
+                        <div class="item">
+                          <span class="label">审批意见:</span>
+                          <span class="value">等待审核</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">开始时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">结束时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">用时:</span>
+                          <span class="value">0秒</span>
+                        </div>
+                      </el-col>
+                    </el-row>
+                  </el-card>
+                </el-timeline-item>
+                <el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)">
+                  <el-card>
+                    <h4>开始</h4>
+                    <el-row>
+                      <el-col class="tip" :span="22" :offset="1">
+                        <div class="item">
+                          <span class="label">审批人:</span>
+                          <span class="value">胡海涛</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">办理状态:</span>
+                          <span class="value">
+                            <p class="text">开始</p>
+                          </span>
+                        </div>
+                        <div class="item">
+                          <span class="label">审批意见:</span>
+                          <span class="value">等待审核</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">开始时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">结束时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">用时:</span>
+                          <span class="value">0秒</span>
+                        </div>
+                      </el-col>
+                    </el-row>
+                  </el-card>
+                </el-timeline-item>
+              </el-timeline>
+            </div>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="流程图">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流程图</span>
+              </div>
+            </template>
+            <div>
+            </div>
+          </el-card>
+        </el-tab-pane>
+      </el-tabs>
+    </el-dialog>
+    <RegionsDialog ref="Shows"/>
+    <UserCheckbox ref="userRef"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+
+  ref,
+  defineComponent
+} from 'vue';
+
+import type {
+  TagProps,
+} from 'element-plus'
+
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserCheckbox from "/@/components/userCheckbox/index.vue"
+import RegionsDialog from "/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue"
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+    RegionsDialog,
+    UserCheckbox,
+  },
+  setup() {
+    const isShowDialog = ref(false)
+    // 打开弹窗
+    const openDialog = () => {
+      // state.ruleForm = row;
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    const tableData = [
+      {
+        date: '2016-05-03',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-02',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-04',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-01',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+    ]
+
+    type Item = { type: TagProps['type']; label: string }
+
+    const items = ref<Array<Item>>([
+      { type: '', label: '等待审核' },
+    ])
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      Search,
+      tableData,
+      items,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.process-status-img{
+  width: 128px;
+  height: auto;
+  position: absolute;
+  right: 10px;
+  top: 60px;
+  z-index: 999;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//tabs字体颜色
+::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{
+  color: #a9d86e!important;
+}
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+//.box-card {
+//  width: 480px;
+//}
+//步骤条字体大小
+::v-deep  .el-step__icon-inner{
+  font-size: 14px!important;
+}
+//步骤条颜色
+::v-deep .el-step__line{
+  background-color: #409eff;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+
+.tip {
+  padding: 8px 16px;
+  background-color: #ecf8ff;
+  border-radius: 4px;
+  border-left: 5px solid #50bfff;
+  margin: 20px 0;
+}
+.item{
+  height: 32px;
+  line-height: 32px;
+  margin-bottom: 8px;
+}
+.item .label {
+  display: inline-block;
+  height: 100%;
+  width: 70px;
+  font-size: 14px;
+  color: #5e6d82;
+  text-align: end;
+  vertical-align: top;
+}
+.item .value {
+  padding-left: 10px;
+  font-size: 14px;
+  max-width: calc(100% - 90px);
+  color: #5e6d82;
+  display: inline-block;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.text{
+  background-color: #409eff;
+  color: #fff;
+  border-width: 1px;
+  border-style: solid;
+  border-radius: 4px;
+  height: 24px;
+  padding: 0 8px;
+  line-height: 22px;
+  display: inline-block;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
new file mode 100644
index 0000000..a1a8412
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
@@ -0,0 +1,571 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+        @close="resetForm(ruleFormRef)"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+          :disabled="disabled"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练名称" prop="drillName">
+              <el-input v-model="ruleForm.drillName" placeholder="请填写演练名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练地点" prop="drillAddress">
+              <el-input v-model="ruleForm.drillAddress" placeholder="请填写演练地点"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="主办部门"  placeholder="请选择" prop="departmentId">
+              <el-tree-select
+                  v-model="ruleForm.departmentId"
+                  :data="data"
+                  check-strictly
+                  class="w100"
+                  :props="propse"
+                  clearable
+                  placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练方式" prop="drillWay">
+              <el-select v-model="ruleForm.drillWay" class="w100" placeholder="请选择">
+                <el-option label="综合" value="1"></el-option>
+                <el-option label="桌面" value="2"></el-option>
+                <el-option label="专项" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="应急预案" prop="planName" >
+              <el-input
+                  v-model="ruleForm.planName"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="daiInpt"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练级别" prop="drillLevel">
+              <el-select v-model="ruleForm.drillLevel" class="w100" placeholder="请选择">
+                <el-option label="公司级" value="1"></el-option>
+                <el-option label="分厂级" value="2"></el-option>
+                <el-option label="车间级" value="3"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制日期" prop="makingPlanDate">
+              <el-date-picker v-model="ruleForm.makingPlanDate" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划演练日期" prop="drillPlanDate">
+              <el-date-picker v-model="ruleForm.drillPlanDate" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="修改时间" prop="gmtModitify">
+              <el-date-picker v-model="ruleForm.gmtModitify" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="计划定制人" prop="makingUserName">
+              <el-input v-model="ruleForm.makingUserName" placeholder="请填写计划定制人" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="制定部门" prop="makingDepartmentId">
+              <el-tree-select
+                  v-model="ruleForm.makingDepartmentId"
+                  check-strictly
+                  :data="data"
+                  class="w100"
+                  :props="propse"
+                  clearable
+                  placeholder="请选择"/>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练人员" prop="userListString" >
+              <el-input
+                  v-model="ruleForm.userListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser(0)"/>
+                </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="演练目的" prop="purpose">
+              <el-input
+                  v-model="ruleForm.purpose"
+                  placeholder="请填写演练目的"
+                  class="input-with-select textarea"
+                  type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练负责人" prop="chargeUserListString" >
+              <el-input
+                  v-model="ruleForm.chargeUserListString"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser(1)"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="保险措施" prop="insuranceMeasures">
+              <el-input v-model="ruleForm.insuranceMeasures" placeholder="请填写保险措施"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="演练经费" prop="drillExpense">
+              <el-input v-model="ruleForm.drillExpense" placeholder="请填写演练经费"></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="备注信息" prop="remark">
+              <el-input
+                  v-model="ruleForm.remark"
+                  placeholder="请填写备注信息"
+                  class="input-with-select textarea"
+                  type="textarea"
+              >
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;">
+            <el-form-item label="预案附件">
+              <!--<el-upload-->
+                  <!--v-model:file-list="fileList"-->
+                  <!--class="upload-demo"-->
+                  <!--action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"-->
+                  <!--:on-change="handleChange"-->
+              <!--&gt;-->
+                <!--<el-button type="primary"-->
+                <!--&gt;点击上传</el-button>-->
+                <!--<template #tip>-->
+                  <!--<div class="el-upload__tip">-->
+                    <!--添加相关附件-->
+                  <!--</div>-->
+                <!--</template>-->
+              <!--</el-upload>-->
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+          <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <RegionsDialog ref="Shows" @SearchUser="onUser" />
+    <DailogSearchUser ref="userRef" @SearchUser="SearchUser" />
+    <DailogSearchUser ref="userFZRef" @SearchUser="SearchFZUser" />
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // reactive,
+  ref,
+  defineComponent,
+  onMounted,
+} from 'vue';
+
+import type {
+  UploadUserFile,
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import DailogSearchUser from "/@/components/DailogSearchUser/index.vue"
+import RegionsDialog from "/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue"
+import {releaseDrillPlanApi} from "/@/api/contingencyManagement/emergencyDrillPlan";
+import {goalManagementApi} from "/@/api/goalManagement";
+import { Session } from '/@/utils/storage';
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+    RegionsDialog,
+    DailogSearchUser
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+
+    const ruleFormRef = ref<FormInstance>()
+    //定义表单
+    const ruleForm = ref ({
+      makingPlanDate: '', // 计划制定日期
+      drillPlanDate: '', //计划演练日期
+      makingUserUid: '', //计划制定人ID
+      makingUserName: '', //计划制定人Name
+      makingDepartmentId: '', // 计划制定部门ID
+      planId: '', // 应急预案ID
+      planName: '', // 应急预案name
+      departmentId: '', // 主办部门ID
+      drillExpense: '', // 演练经费
+      drillLevel: '', //演练级别
+      drillAddress: '', //演练地点
+      drillName: '', // 演练名称
+      drillWay: '', // 演练方式
+      insuranceMeasures: '', // 保险措施
+      remark: '', // 备注
+      purpose: '', // 演练目的
+      fileList: [
+      ],
+      userList: [
+      ],
+      chargeUserList:[],
+      userListString:'',//演练人员字段(回填使用)
+      chargeUserListString:'',//演练负责人字段(回填使用)
+    });
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    const openDialog = (title: string, id: number, type: boolean) => {
+      ruleForm.value.makingUserUid = Session.get('uid');
+      ruleForm.value.makingUserName = Session.get('realName');
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      if (title == '查看应急演练计划发布' || title == '修改应急演练计划发布') {
+        releaseDrillPlanApi()
+            .seeReleaseDrillPlan(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+                ruleForm.value.userListString=''
+                ruleForm.value.chargeUserListString=''
+                for(var a = 0;a<res.data.data.userList.length;a++){
+                  if(res.data.data.userList[a].type==1){
+                    ruleForm.value.userListString += res.data.data.userList[a].userName+';'
+                  }
+                  // if(res.data.data.userList[a].type==2){
+                  //   ruleForm.value.chargeUserListString += res.data.data.userList[a].userName+';'
+                  // }
+                }
+                // alert(res.data.data.chargeUserList.length)
+                for(var a = 0;a<res.data.data.chargeUserList.length;a++){
+                  ruleForm.value.chargeUserListString += res.data.data.chargeUserList[a].userName+';'
+                }
+              }
+            });
+      }
+    };
+    //日期选择器
+    const value1 = ref('')
+    // 上传附件
+    const fileList = ref<UploadUserFile[]>([])
+    // 可选择树
+    const treeSelect = ref()
+    const tree = [
+    ]
+    //部门树
+    const department = () => {
+      goalManagementApi()
+          .getTreedepartment()
+          .then((res) => {
+            if (res.data.code == 200) {
+              data.value = res.data.data;
+            } else {
+              ElMessage.error(res.data.msg);
+            }
+          });
+    };
+    //定义树形下拉框
+    const responsibleDepartment = ref()
+    const data = ref()
+    const propse = {
+      label: 'depName',
+      children: 'children',
+      value: 'depId',
+    };
+    onMounted(() => {
+      department();
+    });
+    // 表单提交验证必填项
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      ruleForm.value.userList = ruleForm.value.userList.concat(ruleForm.value.chargeUserList)
+      if (title == '新建应急演练计划发布') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            releaseDrillPlanApi()
+                .addReleaseDrillPlan(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+      else if (title == '修改应急演练计划发布') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            releaseDrillPlanApi()
+                .editReleaseDrillPlan(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          makingPlanDate: '', // 计划制定日期
+          drillPlanDate: '', //计划演练日期
+          makingUserUid: '', //计划制定人ID
+          makingDepartmentId: '', // 计划制定部门ID
+          planId: '', // 应急预案ID
+          planName: '', // 应急预案name
+          departmentId: '', // 主办部门ID
+          drillExpense: '', // 演练经费
+          drillLevel: '', //演练级别
+          drillAddress: '', //演练地点
+          drillName: '', // 演练名称
+          drillWay: '', // 演练方式
+          insuranceMeasures: '', // 保险措施
+          remark: '', // 备注
+          purpose: '', // 演练目的
+          fileList: [
+          ],
+          userList: [
+          ],
+          chargeUserList:[],
+          userListString:'',//演练人员字段(回填使用)
+          chargeUserListString:'',//演练负责人字段(回填使用)
+        };
+      }
+    }
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      ruleForm.value = {
+        makingPlanDate: '', // 计划制定日期
+        drillPlanDate: '', //计划演练日期
+        makingUserUid: '', //计划制定人ID
+        makingDepartmentId: '', // 计划制定部门ID
+        planId: '', // 应急预案ID
+        planName: '', // 应急预案name
+        departmentId: '', // 主办部门ID
+        drillExpense: '', // 演练经费
+        drillLevel: '', //演练级别
+        drillAddress: '', //演练地点
+        drillName: '', // 演练名称
+        drillWay: '', // 演练方式
+        insuranceMeasures: '', // 保险措施
+        remark: '', // 备注
+        purpose: '', // 演练目的
+        fileList: [
+        ],
+        userList: [
+        ],
+        chargeUserList:[],
+        userListString:'',//演练人员字段(回填使用)
+        chargeUserListString:'',//演练负责人字段(回填使用)
+      };
+      formEl.resetFields();
+    };
+    // 应急队伍弹窗
+    const Shows=ref()
+    const daiInpt = () => {
+      Shows.value.openDailog()
+    }
+    const onUser = (e:any) => {
+      ruleForm.value.planId=e.id
+      ruleForm.value.planName=e.name
+    };
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const userFZRef = ref();
+    //打开演练人员和演练负责人弹窗  type 0 演练人员  1 演练负责人
+    const openUser = (type:number) => {
+      if(type==0){
+        userRef.value.openDailog(0);
+      }else if(type==1){
+        userFZRef.value.openDailog(0);
+      }
+    };
+    const SearchUser = (e:any) => {
+      console.log('演练人员',e)
+      ruleForm.value.userListString=''
+      ruleForm.value.userList=[]
+      for(var a = 0;a<e.length;a++){
+        ruleForm.value.userList.push(
+          {
+            type: 1,
+            userName: e[a].realName,
+            userUid: e[a].uid,
+          }
+        )
+        ruleForm.value.userListString+=e[a].realName+';'
+      }
+
+    };
+    const SearchFZUser = (e:any) => {
+      console.log('演练负责人员',e[0].userName)
+      ruleForm.value.chargeUserListString=''
+      ruleForm.value.chargeUserList=[]
+      // ruleForm.value.chargeUserList = []
+      for(var a = 0;a<e.length;a++){
+        ruleForm.value.chargeUserList.push(
+          {
+            type: 2,
+            userName: e[a].realName,
+            userUid: e[a].uid,
+          }
+        )
+        ruleForm.value.chargeUserListString+=e[a].realName+';'
+      }
+    };
+    // 计划定制日期
+    const datetime = ref('');
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      isShowDialog,
+      fileList,
+      responsibleDepartment,
+      data,
+      department,
+      propse,
+      Search,
+      ruleForm,
+      value1,
+      treeSelect,
+      tree,
+      daiInpt,
+      Shows,
+      ruleFormRef,
+      submitForm,
+      openUser,
+      userRef,
+      datetime,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      titles,
+      disabled,
+      resetForm,
+      emit,
+      onUser,
+      userFZRef,
+      SearchUser,
+      SearchFZUser
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+//多行文本框
+.textarea{
+  height: 70px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 70px!important;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue
new file mode 100644
index 0000000..ba15f44
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue
@@ -0,0 +1,219 @@
+<template>
+  <el-dialog v-model="dialogVisible" title="选择应急预案" width="900px" draggable :fullscreen="full">
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-row>
+      <el-col :span="18">
+        <el-row>
+          <el-col :span="24">
+            <el-form ref="ruleFormRef" :inline="true" :model="ruleForm" status-icon>
+              <el-form-item>
+                <el-input size="default" v-model="listQuery.searchParams.name" placeholder="预案名称" style="max-width: 215px;margin-right: 12px;" />
+              </el-form-item>
+              <el-form-item>
+                <el-button size="default" type="primary" @click="onSubmit">查询</el-button>
+                <el-button size="default" @click="submitReset">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
+          <el-col :span="24">
+            <el-button size="default" :icon="Delete" style="margin-top: 15px">清除选择</el-button>
+          </el-col>
+        </el-row>
+        <el-table
+            :data="tableData"
+            style="width: 100%;
+             margin-top: 20px"
+            @cell-click="radio"
+        >
+          <el-table-column width="55">
+            <template #default="scope">
+              <el-radio-group v-model="radio1">
+                <el-radio :label="scope.row" size="large">{{ null }}</el-radio>
+              </el-radio-group>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="name" label="预案名称" />
+        </el-table>
+        <div class="pages">
+          <el-pagination
+              v-model:currentPage="pageIndex"
+              v-model:page-size="pageSize"
+              :page-sizes="[10, 20, 30]"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="onHandleSizeChange"
+              @current-change="onHandleCurrentChange"
+          />
+        </div>
+      </el-col>
+      <el-col :span="6">
+        <div v-if="dynamicTags[0] == '' ? false : true">
+          <el-tag
+              v-for="tag in dynamicTags"
+              :key="tag"
+              class="mx-1"
+              style="margin: 5px"
+              closable
+              :disable-transitions="false"
+              @close="handleClose(tag)"
+          >
+            {{ tag.name }}
+          </el-tag>
+        </div>
+      </el-col>
+    </el-row>
+    <template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+    </template>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+  setup(props, { emit }) {
+    const dialogVisible = ref<boolean>(false);
+    const openDailog = () => {
+      dialogVisible.value = true;
+      onSubmit()
+    };
+    // 搜索条件
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        name: "", type: "", abolishStatus: false
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 重置
+    const submitReset = () => {
+      listQuery.searchParams.name = '';
+      onSubmit();
+    };
+
+    // 列表请求数据
+    const onSubmit = async () => {
+      let res = await emergencyPlanApi().getEmergencyPlanList(listQuery);
+      if (res.data.code === '200') {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          type: 'error',
+          message: res.data.msg,
+        });
+      }
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const onHandleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+    };
+    // 分页未改变
+    const onHandleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+    };
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['']);
+    const handleClose = (tag: string) => {
+      dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      radio1.value = '';
+    };
+    const radio1 = ref('');
+    const radio = (event: any) => {
+      dynamicTags.value[0] = event;
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+
+    const submitForm = () => {
+      let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+      emit('SearchUser', obj[0]);
+      dialogVisible.value = false;
+    };
+    onMounted(() => {
+      onSubmit();
+    });
+    return {
+      dialogVisible,
+      openDailog,
+      tableData,
+      pageSize,
+      pageIndex,
+      onHandleSizeChange,
+      onHandleCurrentChange,
+      dynamicTags,
+      handleClose,
+      Delete,
+      radio1,
+      radio,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      submitReset,
+      onMounted,
+      listQuery,
+      onSubmit,
+      submitForm,
+    };
+  },
+});
+</script>
+<style scoped>
+.el-form--inline .el-form-item {
+  margin-bottom: 0;
+  margin-right: 0;
+}
+/*分页*/
+.pages {
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
diff --git a/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
new file mode 100644
index 0000000..b1a7099
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
@@ -0,0 +1,404 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="button_Line">
+        <div class="button_Left mb15">
+          <el-button size="default" type="primary"  @click="onOpenAdd">
+            <el-icon>
+              <Plus />
+            </el-icon>新建
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+        <div class="button_Right">
+<!--          <el-button @click="upButton">-->
+<!--            <el-icon>-->
+<!--              <Upload />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Download />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Refresh />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+        </div>
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          ref="multipleTableRef"
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillWay == 1">综合</span>
+            <span v-if="scope.row.drillWay == 2">桌面</span>
+            <span v-if="scope.row.drillWay == 3">专项</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillLevel == 1">公司级</span>
+            <span v-if="scope.row.drillLevel == 2">分厂级</span>
+            <span v-if="scope.row.drillLevel == 3">车间级</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="gmtModitify" label="修改时间" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column label="操作" width="260" align="center">
+          <template #default="scope">
+            <!--<el-button size="small" text type="primary" @click="releaseOfDrillPlan(0)">-->
+              <!--<el-icon style="margin-right: 5px;">-->
+                <!--<VideoPlay />-->
+              <!--</el-icon>启动-->
+            <!--</el-button>-->
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <EditPen />
+              </el-icon>修改
+            </el-button>
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            v-model:currentPage="pageIndex"
+            v-model:page-size="pageSize"
+            :page-sizes="[10, 20, 30]"
+            :pager-count="5"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+        />
+      </div>
+    </el-card>
+    <OpenAdd ref="addRef" @myAdd="onMyAdd"/>
+<!--    <FlowChart ref="flowRef"></FlowChart>-->
+    <upData ref="upShow"></upData>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+  // ElTable,
+} from 'element-plus';
+import {
+  Plus,
+  Delete,
+  // Upload,
+  // Download,
+  // Refresh,
+  View,
+  VideoPlay,
+  EditPen,
+} from '@element-plus/icons-vue'
+import {useRouter} from "vue-router"
+import OpenAdd from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue';
+// import FlowChart from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import { releaseDrillPlanApi } from '/@/api/contingencyManagement/emergencyDrillPlan';
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenAdd,
+    EditPen,
+    Plus,
+    View,
+    Delete,
+    // Upload,
+    // Download,
+    // Refresh,
+    VideoPlay,
+    UpData,
+    // FlowChart,
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        drillName: ''
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表数据请求
+    const listApi = async () => {
+      let res = await releaseDrillPlanApi().getReleaseDrillPlanList(listQuery);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'error',
+        });
+      }
+    };
+    onMounted(() => {
+      listApi();
+    });
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+
+    // 打开新增弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建应急演练计划发布',false);
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 打开修改用户弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看应急演练计划发布',row,true);
+      } else {
+        addRef.value.openDialog('修改应急演练计划发布',row,false);
+      }
+    };
+    // 打开修改用户弹窗
+    // const flowRef = ref();
+    // const onflowChart = (row: TableDataRow) => {
+    //   flowRef.value.openDialog(row);
+    // };
+    // 删除
+    const onRowDel = (id: number) => {
+      let arr = [];
+      arr.push(id)
+      ElMessageBox.confirm('确定删除所选项吗?', '提示',{
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        releaseDrillPlanApi()
+            .deleteReleaseDrillPlan(arr)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'success',
+                });
+                listApi();
+              } else {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                });
+                listApi();
+              }
+            });
+      })
+          .catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            releaseDrillPlanApi()
+                .deleteReleaseDrillPlan(deletAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      listApi();
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      listApi();
+    };
+    const danger = ref(true);
+    const deletAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deletAll.value = arr;
+      // console.log(deletAll.value);
+      if (val.length == 1) {
+        danger.value = false;
+      }  else if (val.length == 0) {
+        danger.value = true;
+      } else {
+        danger.value = false;
+      }
+    };
+
+    // 启动跳转
+    const router=useRouter()
+    const releaseOfDrillPlan=(data:string)=>{
+      router.push({
+        path:"/releaseOfDrillStart",
+        query:{
+          type:data
+        }
+      })
+    }
+    return {
+      // upButton,
+      // upShow,
+      tableData,
+      // onflowChart,
+      // flowRef,
+      onOpenAdd,  //新增
+      addRef,
+      onRowDel,
+      View ,
+      pageIndex,
+      listQuery,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      router,
+      releaseOfDrillPlan,
+      listApi,
+      danger,
+      deletAll,
+      handleSelectionChange,
+      onMyAdd,
+      onDeleteAll,
+      onEdit,
+      total,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue b/src/components/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
new file mode 100644
index 0000000..e550b77
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
@@ -0,0 +1,195 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          label-width="120px"
+          :disabled="disabled"
+      >
+        <el-row :gutter="35">
+          <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="应急预案" prop="planName" >
+              <el-input
+                  v-model="ruleForm.planName"
+                  placeholder="请选择"
+                  class="input-with-select"
+                  disabled
+              >
+                <template #append>
+                  <el-button :icon="Search" disabled @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="备注">
+              <el-input
+                  class="textarea"
+                  v-model="ruleForm.remark"
+                  type="textarea"
+                  maxlength="150"
+                  placeholder="请填写备注"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button size="default" @click="resetForm(ruleFormRef)">关闭</el-button>
+          <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <DailogSearchUser ref="userRef" @SearchUser="onUser"/>
+    <AddEmergencyPersonnel ref="addRef" />
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  defineComponent
+} from 'vue';
+import type {
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import DailogSearchUser from "/@/components/DailogSearchUser/index.vue"
+import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue";
+import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
+
+export default defineComponent({
+  name: 'openEdit',
+  components: {
+    DailogSearchUser,
+    AddEmergencyPersonnel,
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false);
+
+    const ruleFormRef = ref<FormInstance>();
+    const ruleForm= ref({
+      planId: '', //应急预案人员
+      remark: '', // 备注
+    })
+    const titles = ref();
+    const disabled = ref();
+
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDailog();
+    };
+    const onUser = (e:any) => {
+      ruleForm.value.planId=e.id
+    };
+    // 打开弹窗
+    const openDialog = (title: string, id: number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      if (title == '查看应急预案启动记录' || title == '修改应急预案启动记录') {
+        emergencyPlanLogApi()
+            .seeEmergencyPlanLog(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+              }
+            });
+      }
+    };
+   // 表单提交验证必填项
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+       if (title == '修改应急预案启动记录') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyPlanLogApi()
+                .editEmergencyPlanLog(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          planId: '', //应急预案人员
+          remark: '', // 备注
+        };
+      }
+    };
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      Search,
+      ruleFormRef,
+      openUser,
+      userRef,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      titles,
+      disabled,
+      emit,
+      ruleForm,
+      submitForm,
+      resetForm,
+      isShowDialog,
+      onUser,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 50px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 50px!important;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue b/src/components/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue
new file mode 100644
index 0000000..da6b207
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue
@@ -0,0 +1,242 @@
+<template>
+	<el-dialog v-model="dialogVisible" title="选择应急预案" width="900px" draggable :fullscreen="full">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="18">
+				<el-row>
+					<el-col :span="24">
+						<el-form ref="ruleFormRef" :inline="true" :model="ruleForm" status-icon>
+							<el-form-item>
+								<el-input size="default" v-model="listQuery.searchParams.name" placeholder="预案名称" style="max-width: 215px" />
+							</el-form-item>
+							<el-form-item>
+								<el-select
+									size="default"
+									v-model="listQuery.searchParams.type"
+									placeholder="请选择预案类型"
+									class="ml10"
+									style="max-width: 215px; margin-right: 12px"
+								>
+									<el-option label="综合应急预案" value="1"></el-option>
+									<el-option label="现场处置方案" value="2"></el-option>
+									<el-option label="专项应急预案" value="3"></el-option>
+									<el-option label="其他预案" value="4"></el-option>
+								</el-select>
+							</el-form-item>
+							<el-form-item>
+								<el-button size="default" type="primary" @click="onSubmit">查询</el-button>
+								<el-button size="default" @click="submitReset">重置</el-button>
+							</el-form-item>
+						</el-form>
+					</el-col>
+					<el-col :span="24">
+						<el-button size="default" :icon="Delete" @click="submitReset" style="margin-top: 15px">清除选择</el-button>
+					</el-col>
+				</el-row>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px" @cell-click="radio">
+					<el-table-column width="55">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="name" label="预案名称" />
+					<el-table-column align="center" prop="type" label="预案类型">
+						<template #default="scope">
+							<span v-if="scope.row.type == '1'">综合应急预案</span>
+							<span v-if="scope.row.type == '2'">现场处置方案</span>
+							<span v-if="scope.row.type == '3'">专项应急预案</span>
+							<span v-if="scope.row.type == '4'">其他预案</span>
+						</template>
+					</el-table-column>
+				</el-table>
+				<div class="pages">
+					<el-pagination
+						v-model:currentPage="pageIndex"
+						v-model:page-size="pageSize"
+						:page-sizes="[10, 20, 30]"
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="total"
+						@size-change="onHandleSizeChange"
+						@current-change="onHandleCurrentChange"
+					/>
+				</div>
+			</el-col>
+			<el-col :span="6">
+				<div v-if="dynamicTags[0] == '' ? false : true">
+					<el-tag
+						v-for="tag in dynamicTags"
+						:key="tag"
+						class="mx-1"
+						style="margin: 5px"
+						closable
+						:disable-transitions="false"
+						@close="handleClose(tag)"
+					>
+						{{ tag.name }}
+					</el-tag>
+				</div>
+			</el-col>
+		</el-row>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanLogApi } from '/@/api/contingencyManagement/emergencyPlanLog';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+			onSubmit();
+		};
+		// 搜索条件
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				name: '',
+				type: '',
+				abolishStatus: false,
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 请求列表数据
+		const onSubmit = async () => {
+			let res = await emergencyPlanApi().getEmergencyPlanList(listQuery);
+			if (res.data.code === '200') {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					type: 'error',
+					message: res.data.msg,
+				});
+			}
+		};
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams.name = '';
+			listQuery.searchParams.type = '';
+			radio1.value=""
+			dynamicTags.value[0]=""
+			onSubmit();
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const onHandleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const onHandleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+		// 右方点击添加后显示标签
+		const dynamicTags = ref(['']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (event: any) => {
+			dynamicTags.value[0] = event;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+
+		const submitForm = () => {
+			let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+			emit('SearchUser', obj[0]);
+			dialogVisible.value = false;
+		};
+		onMounted(() => {
+			onSubmit();
+		});
+		return {
+			dialogVisible,
+			openDailog,
+			tableData,
+			pageSize,
+			pageIndex,
+			onHandleSizeChange,
+			onHandleCurrentChange,
+			dynamicTags,
+			handleClose,
+			Delete,
+			radio1,
+			radio,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			submitReset,
+			onMounted,
+			listQuery,
+			onSubmit,
+			submitForm,
+			total,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-form--inline .el-form-item {
+	margin-bottom: 0;
+	margin-right: 0;
+}
+/*分页*/
+.pages {
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
diff --git a/src/components/contingencyManagement/emergencyPlanStartRecord/index.vue b/src/components/contingencyManagement/emergencyPlanStartRecord/index.vue
new file mode 100644
index 0000000..29f589c
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyPlanStartRecord/index.vue
@@ -0,0 +1,405 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="system-user-search mb15">
+        <el-form
+            size="default"
+            label-width="80px"
+            :inline="true"
+        >
+          <el-form-item prop="telephone" >
+            <el-input
+                v-model="listQuery.searchParams.planName"
+                placeholder="请选择应急预案"
+                class="input-with-select"
+            >
+              <template #append>
+                <el-button :icon="Search" @click="daiInpt"/>
+              </template>
+            </el-input>
+          </el-form-item>
+          <el-button size="default" type="primary" class="ml10" @click="onSubmit">
+            查询
+          </el-button>
+          <el-button size="default" class="ml10" @click="submitReset">
+            重置
+          </el-button>
+        </el-form>
+      </div>
+      <div class="button_Line">
+        <div class="button_Left">
+          <el-button size="default" type="warning" plain :disabled="warning">
+            <el-icon>
+              <Edit />
+            </el-icon>修改
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+        <div class="button_Right">
+          <el-button>
+            <el-icon>
+              <Download />
+            </el-icon>
+          </el-button>
+          <el-button>
+            <el-icon>
+              <Refresh />
+            </el-icon>
+          </el-button>
+        </div>
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="planName" label="应急预案" min-width="120" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="userName" label="启动人"  min-width="120" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="startCreate" label="启动时间"  min-width="120" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column label="操作" width="200" align="center" fixed="right">
+          <template #default="scope">
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+<!--            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">-->
+<!--              <el-icon style="margin-right: 5px;">-->
+<!--                <EditPen />-->
+<!--              </el-icon>修改-->
+<!--            </el-button>-->
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            v-model:currentPage="pageIndex"
+            v-model:page-size="pageSize"
+            :page-sizes="[10, 20, 30]"
+            :pager-count="5"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+        />
+      </div>
+    </el-card>
+    <SelectEmergencyPlan ref="showRef" @SearchUser="onUser"/>
+    <OpenSee ref="editRef" @myAdd="onMyAdd" />
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+} from 'element-plus';
+import {
+  Search,
+  Delete,
+  // Upload,
+  Download,
+  Refresh,
+  View,
+  Edit,
+  EditPen,
+} from '@element-plus/icons-vue'
+import OpenSee from '/@/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue';
+import SelectEmergencyPlan from '/@/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue'
+import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
+import {contingencyApi} from "/@/api/contingencyManagement/contingency";
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenSee,
+    View,
+    EditPen,
+    Edit,
+    Delete,
+    SelectEmergencyPlan,
+    Download,
+    Refresh,
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        planId: '',
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+
+    // 请求列表数据
+    const onSubmit = async () => {
+      let res = await emergencyPlanLogApi().getEmergencyPlanLogList(listQuery);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage.error(res.data.msg);
+      }
+    };
+    //重置
+    const submitReset = () => {
+      listQuery.searchParams.planId = '';
+      listQuery.searchParams.planName = '';
+      onSubmit();
+    };
+    const warning = ref(true);
+    const danger = ref(true);
+    const deleteAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deleteAll.value = arr;
+      if (val.length == 1) {
+        warning.value = false;
+        danger.value = false;
+      } else if (val.length == 0) {
+        warning.value = true;
+        danger.value = true;
+      } else {
+        warning.value = true;
+        danger.value = false;
+      }
+    };
+    // 打开修改应急预案启动记录弹窗
+    const editRef = ref();
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        editRef.value.openDialog('查看应急预案启动记录',row,true);
+      }
+      else {
+        editRef.value.openDialog('修改应急预案启动记录',row,false);
+      }
+    };
+    // 修改后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        onSubmit();
+      } else {
+        onSubmit();
+      }
+    };
+    // 应急预案
+    const showRef=ref()
+    const daiInpt=()=>{
+      showRef.value.openDailog()
+    }
+    const onUser = (e:any) => {
+      console.log(e)
+      listQuery.searchParams.planId=e.id
+      listQuery.searchParams.planName=e.name
+    };
+    // 删除用户
+    const onRowDel = (data: any) => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示',{
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        emergencyPlanLogApi()
+            .deleteEmergencyPlanLog([data])
+            .then((res) => {
+              if (res.data.code == 200) {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'success',
+                });
+                onSubmit();
+              } else {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                });
+                onSubmit();
+              }
+            });
+      }).catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            emergencyPlanLogApi()
+                .deleteEmergencyPlanLog(deleteAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    onSubmit();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    onSubmit();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      onSubmit();
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      onSubmit();
+    };
+    // 上传
+    const upShow=ref()
+    const upButton=()=>{
+      upShow.value.openDialog()
+    }
+    onMounted(() => {
+      onSubmit();
+    });
+    return {
+      upButton,
+      upShow,
+      tableData,
+      editRef,
+      onMyAdd,
+      onRowDel,
+      pageIndex,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      onSubmit,
+      Search,
+      daiInpt,
+      showRef,
+      onMounted,
+      submitReset,
+      listQuery,
+      Edit,
+      View,
+      onEdit,
+      onDeleteAll,
+      deleteAll,
+      warning,
+      danger,
+      total,
+      onUser,
+      handleSelectionChange,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue b/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue
new file mode 100644
index 0000000..3137291
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue
@@ -0,0 +1,280 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" @close="resetForm(ruleFormRef)" v-model="isShowDialog" width="50%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :disabled="titles=='查看应急物资检查'?true:false" :rules="rules" :model="ruleForm" size="default" label-width="120px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急物资" prop="suppliesName">
+							<el-input v-model="ruleForm.suppliesName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查结果" prop="inspectResult">
+							<el-select v-model="ruleForm.inspectResult" class="w100" placeholder="请选择">
+								<el-option label="正常" value="1"></el-option>
+								<el-option label="异常" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建人" prop="userName">
+							<el-input v-model="ruleForm.userName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser(0)" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建时间" prop="inspectTime">
+							<el-date-picker
+								class="w100"
+								v-model="ruleForm.inspectTime"
+								type="datetime"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="titles=='查看应急物资检查'?false:true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<EmergencySupplies ref="showRef" @SearchUser="onUser" />
+		<DailogSearchUser ref="userRef" @SearchUser="onUsers" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, reactive } from 'vue';
+
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import EmergencySupplies from '/@/components/emergencySupplies/index.vue';
+import UserSelections from '/@/components/userSelections/index.vue';
+import { emergencyMaterialsInspectionApi } from '/@/api/contingencyManagement/emergencyMaterialsInspection';
+import { maintenanceEmergencyMaterialsApi } from '/@/api/contingencyManagement/maintenanceEmergencyMaterials';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUser,
+		EmergencySupplies,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			suppliesId: '', // 物资ID
+			inspectResult: '', //检查结果
+			inspectTime: '', // 创建时间
+			userList: [],
+		});
+		const titles = ref();
+		const disableds = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			if (title == '查看应急物资检查' || title == '修改应急物资检查') {
+				emergencyMaterialsInspectionApi()
+					.seeEmergencyMaterialsInspection(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+							let arr = [];
+							for (let i = 0; i < ruleForm.value.userList.length; i++) {
+								arr.push(ruleForm.value.userList[i].userName);
+							}
+							ruleForm.value.userName = arr.toString();
+						}
+					});
+			}
+		};
+		//日期选择器
+		const value1 = ref('');
+		const rules = reactive<FormRules>({
+			nameTitle: [],
+			inspectResult: [
+				{
+					required: true,
+					message: '保养结果不能为空',
+					trigger: 'change',
+				},
+			],
+			userName: [
+				{
+					required: true,
+					message: '创建人不能为空',
+					trigger: 'change',
+				},
+			],
+			inspectTime: [
+				{
+					required: true,
+					message: '创建时间不能为空',
+					trigger: 'blur',
+				},
+			],
+		});
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建应急物资检查') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencyMaterialsInspectionApi()
+							.addEmergencyMaterialsInspection(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改应急物资检查') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencyMaterialsInspectionApi()
+							.editEmergencyMaterialsInspection(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 应急物资弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		const onUser = (e: any) => {
+			ruleForm.value.suppliesId = e.id;
+			ruleForm.value.suppliesName = e.name;
+		};
+		// 编写人弹窗
+		const userRef = ref();
+		const openUser = (data: any) => {
+			userRef.value.openDailog(data);
+		};
+		const onUsers = (val: any) => {
+			let arr = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].realName);
+				ruleForm.value.userList.push({
+					userUid: val[i].uid,
+					userName: val[i].realName,
+				});
+			}
+			ruleForm.value.userName = arr.toString();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			isShowDialog,
+			Search,
+			ruleForm,
+			value1,
+			onUsers,
+			daiInpt,
+			showRef,
+			ruleFormRef,
+			submitForm,
+			openUser,
+			rules,
+			userRef,
+			resetForm,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disableds,
+			emit,
+			onUser,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue b/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue
new file mode 100644
index 0000000..5e14343
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue
@@ -0,0 +1,388 @@
+<template>
+	<div class="system-user-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-form size="default" label-width="80px" :inline="true">
+					<el-form-item prop="telephone">
+						<el-input v-model="listQuery.searchParams.suppliesName" placeholder="请选择应急物资" class="input-with-select">
+							<template #append>
+								<el-button :icon="Search" @click="daiInpt" />
+							</template>
+						</el-input>
+					</el-form-item>
+					<el-button size="default" type="primary" class="ml10" @click="onSubmit"> 查询 </el-button>
+					<el-button size="default" class="ml10" @click="submitReset"> 重置 </el-button>
+				</el-form>
+			</div>
+			<div class="button_Line">
+				<div class="button_Left">
+					<el-button size="default" type="primary" @click="onOpenAdd">
+						<el-icon> <Plus /> </el-icon>新建
+					</el-button>
+					<el-button size="default" type="warning" plain :disabled="warning">
+						<el-icon> <Edit /> </el-icon>修改
+					</el-button>
+					<el-button size="default" type="danger" plain @click="onDeleteAll" :disabled="danger">
+						<el-icon> <Delete /> </el-icon>删除
+					</el-button>
+				</div>
+				<div class="button_Right">
+					<el-button>
+						<el-icon>
+							<Download />
+						</el-icon>
+					</el-button>
+					<el-button>
+						<el-icon>
+							<Refresh />
+						</el-icon>
+					</el-button>
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column align="center" type="selection" width="55" />
+				<el-table-column align="center" prop="suppliesName" label="物资名称" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" label="维修结果" min-width="120" show-overflow-tooltip sortable>
+          	<template #default="scope">
+						<span v-if="scope.row.inspectResult == 1">正常</span>
+						<span v-if="scope.row.inspectResult == 2">异常</span>
+					</template>
+        </el-table-column>
+				<el-table-column align="center" prop="inspectTime" label="维修日期" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column label="操作" width="200" align="center" fixed="right">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="onEdit('查看',scope.row.id)">
+							<el-icon style="margin-right: 5px"> <View /> </el-icon>查看
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <EditPen /> </el-icon>修改
+						</el-button>
+						<el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+							<el-icon> <Delete /> </el-icon>删除
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</el-card>
+		<EmergencySupplies ref="showRef" @SearchUser="onUser" />
+		<upData ref="upShow"></upData>
+		<OpenAdd ref="addRef" @myAdd="onMyAdd" />
+	</div>
+</template>
+
+<script lang="ts">
+import {
+	// toRefs,
+	reactive,
+	onMounted,
+	ref,
+	defineComponent,
+} from 'vue';
+import {
+	ElMessageBox,
+	ElMessage,
+	// ElTable,
+} from 'element-plus';
+import { Plus, Search, Delete, Edit, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import EmergencySupplies from '/@/components/emergencySupplies/index.vue';
+import OpenAdd from '/@/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue';
+import { emergencyMaterialsInspectionApi } from '/@/api/contingencyManagement/emergencyMaterialsInspection';
+
+export default defineComponent({
+	name: 'index',
+	components: {
+		View,
+		OpenAdd,
+		EditPen,
+		Plus,
+		Edit,
+		Delete,
+		EmergencySupplies,
+		Download,
+		Refresh,
+		UpData,
+	},
+	setup() {
+		//定义表单
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				suppliesId: '',
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 搜索按钮
+		const onSubmit = async () => {
+			let res = await emergencyMaterialsInspectionApi().getEmergencyMaterialsInspectionList(listQuery);
+			if (res.data.code == 200) {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					message: res.data.msg,
+					type: 'error',
+				});
+			}
+		};
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams.suppliesId = '';
+			listQuery.searchParams.suppliesName=""
+			onSubmit();
+		};
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		// 打开新建用户弹窗
+		const addRef = ref();
+		const onOpenAdd = () => {
+			addRef.value.openDialog('新建应急物资检查');
+		};
+		// 新增后刷新
+		const onMyAdd = (e: boolean) => {
+			if (e) {
+				onSubmit();
+			} else {
+				onSubmit();
+			}
+		};
+		// 打开修改用户弹窗
+		const onEdit = (val: string, row: object) => {
+			if (val == '查看') {
+				addRef.value.openDialog('查看应急物资检查', row);
+			} else {
+				addRef.value.openDialog('修改应急物资检查', row);
+			}
+		};
+		// 删除
+		const onRowDel = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencyMaterialsInspectionApi()
+						.deleteEmergencyMaterialsInspection(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 多选删除
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencyMaterialsInspectionApi()
+						.deleteEmergencyMaterialsInspection(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 上传
+		const upShow = ref();
+		const upButton = () => {
+			upShow.value.openDialog();
+		};
+
+		// 应急物资弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		const onUser = (e: any) => {
+			listQuery.searchParams.suppliesId = e.id;
+			listQuery.searchParams.suppliesName=e.name
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+			onSubmit();
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+			onSubmit();
+		};
+		// 页面加载时
+		onMounted(() => {
+			onSubmit();
+		});
+		return {
+			upButton,
+			upShow,
+			Edit,
+			onRowDel,
+			pageIndex,
+			pageSize,
+			handleSizeChange,
+			handleCurrentChange,
+			Search,
+			daiInpt,
+			showRef,
+			onOpenAdd, //新增
+			addRef,
+			onSubmit,
+			View,
+			submitReset,
+			tableData,
+			onMyAdd,
+			onEdit,
+			onDeleteAll,
+			handleSelectionChange,
+			listQuery,
+			warning,
+			danger,
+			total,
+			onUser,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.table_Box {
+	padding: 20px;
+	background-color: #fff;
+}
+.tableForm {
+	margin-top: 10px;
+}
+/*按钮行*/
+.button_Line {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer {
+	border-top: 1px solid #e8e8e8;
+	border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+	border-bottom: 1px solid #e8e8e8;
+	margin-right: 0;
+	border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+	background-color: #f6f7fa;
+	font-weight: 400;
+	color: #909399;
+}
+.el-table .sort-caret.ascending {
+	border-bottom-color: #c0c4cc;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue
new file mode 100644
index 0000000..0953d51
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue
@@ -0,0 +1,224 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="修改应急物资检查" v-model="isShowDialog" @close="resetForm(ruleFormRef)" width="50%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" size="default" label-width="120px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急物资">
+							<el-input v-model="nameTitle" disabled placeholder="请选择" class="input-with-select">
+								<!-- <template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template> -->
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查结果" prop="inspectResult">
+							<el-select v-model="ruleForm.inspectResult" class="w100" placeholder="请选择">
+								<el-option label="正常" value="1"></el-option>
+								<el-option label="异常" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建人" prop="userName">
+							<el-input v-model="ruleForm.userName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser(0)" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建时间" prop="inspectTime">
+							<el-date-picker
+								class="w100"
+								v-model="ruleForm.inspectTime"
+								type="datetime"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<!-- <EmergencySupplies ref="showRef" @SearchUser="onUser"/> -->
+		<DailogSearchUser ref="userRef" @SearchUser="onUsers" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent,reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import type { FormInstance,FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import EmergencySupplies from '/@/components/emergencySupplies/index.vue';
+import UserSelections from '/@/components/userSelections/index.vue';
+import { emergencyMaterialsInspectionApi } from '/@/api/contingencyManagement/emergencyMaterialsInspection';
+
+export default defineComponent({
+	name: 'inspect',
+	components: {
+		UserSelections,
+		EmergencySupplies,
+		DailogSearchUser,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			suppliesId: '', // 物资ID
+			inspectResult: '', //保养结果
+			inspectTime: '', // 创建时间
+			userList: [],
+		});
+		const disabled = ref();
+		// 打开弹窗
+		const nameTitle = ref();
+		const openDialog = (data: string) => {
+			isShowDialog.value = true;
+			ruleForm.value.suppliesId = data.id;
+			nameTitle.value = data.name;
+		};
+			const rules = reactive<FormRules>({
+			nameTitle: [],
+			inspectResult: [
+				{
+					required: true,
+					message: '保养结果不能为空',
+					trigger: 'change',
+				},
+			],
+			userName: [
+				{
+					required: true,
+					message: '创建人不能为空',
+					trigger: 'change',
+				},
+			],
+      inspectTime: [
+				{
+					required: true,
+					message: '创建时间不能为空',
+					trigger: 'blur',
+				},
+			],
+		});
+		// 表单提交验证必填项
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					isShowDialog.value = false;
+					emergencyMaterialsInspectionApi()
+						.addEmergencyMaterialsInspection(ruleForm.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('myAdd', true);
+								formEl.resetFields();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								emit('myAdd', true);
+							}
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+
+		//日期选择器
+		const value1 = ref('');
+
+		// 编写人弹窗
+		const userRef = ref();
+		const openUser = (type: any) => {
+			userRef.value.openDailog(type);
+		};
+		const onUsers = (val: any) => {
+			let arr = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].realName);
+				ruleForm.value.userList.push({
+					userUid: val[i].uid,
+					userName: val[i].realName,
+				});
+			}
+			ruleForm.value.userName = arr.toString();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			nameTitle,
+			openDialog,
+			isShowDialog,
+			resetForm,
+			rules,
+			Search,
+			ruleForm,
+			value1,
+			onUsers,
+			ruleFormRef,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			disabled,
+			emit,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue
new file mode 100644
index 0000000..b30bcc2
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue
@@ -0,0 +1,235 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="修改应急物资保养" @close="resetForm(ruleFormRef)" v-model="isShowDialog" width="50%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" size="default" label-width="120px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急物资" prop="nameTitle">
+							<el-input v-model="nameTitle" disabled placeholder="请选择" class="input-with-select">
+								<!-- <template #append>
+                  <el-button :icon="Search" @click="daiInpt"/>
+                </template> -->
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="保养结果" prop="maintainResult">
+							<el-select v-model="ruleForm.maintainResult" class="w100" placeholder="请选择">
+								<el-option label="正常" value="1"></el-option>
+								<el-option label="异常" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建人" prop="userName">
+							<el-input v-model="ruleForm.userName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser(0)" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建时间" prop="maintainTime">
+							<el-date-picker
+								class="w100"
+								v-model="ruleForm.maintainTime"
+								type="datetime"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<EmergencySupplies ref="showRef" @SearchUser="onUser" />
+		<DailogSearchUser ref="userRef" @SearchUser="onUsers" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, reactive } from 'vue';
+
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import EmergencySupplies from '/@/components/emergencySupplies/index.vue';
+import DailogSearchUser from '../../../../../components/DailogSearchUser/index.vue';
+import { maintenanceEmergencyMaterialsApi } from '/@/api/contingencyManagement/maintenanceEmergencyMaterials';
+
+export default defineComponent({
+	name: 'maintain',
+	components: {
+		DailogSearchUser,
+		EmergencySupplies,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			suppliesId: '', // 物资ID
+			maintainResult: '', //保养结果
+			maintainTime: '', // 创建时间
+			userList: [],
+		});
+		const disabled = ref();
+		// 打开弹窗
+		const nameTitle = ref();
+		const openDialog = (data: string) => {
+			isShowDialog.value = true;
+			ruleForm.value.suppliesId = data.id;
+			nameTitle.value = data.name;
+		};
+		const rules = reactive<FormRules>({
+			nameTitle: [],
+			maintainResult: [
+				{
+					required: true,
+					message: '保养结果不能为空',
+					trigger: 'change',
+				},
+			],
+			userName: [
+				{
+					required: true,
+					message: '创建人不能为空',
+					trigger: 'change',
+				},
+			],
+      maintainTime: [
+				{
+					required: true,
+					message: '创建时间不能为空',
+					trigger: 'blur',
+				},
+			],
+		});
+		// 表单提交验证必填项
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					isShowDialog.value = false;
+					maintenanceEmergencyMaterialsApi()
+						.addMaintenanceEmergencyMaterials(ruleForm.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('myAdd', true);
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								emit('myAdd', true);
+							}
+							formEl.resetFields();
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+
+		//日期选择器
+		const value1 = ref('');
+
+		// 应急物资弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		const onUser = (e: any) => {
+			ruleForm.value.suppliesId = e.id;
+		};
+
+		// 编写人弹窗
+		const userRef = ref();
+		const openUser = (type: any) => {
+			userRef.value.openDailog(type);
+		};
+		const onUsers = (val: any) => {
+			let arr = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].realName);
+				ruleForm.value.userList.push({
+					userUid: val[i].uid,
+					userName: val[i].realName,
+				});
+			}
+			ruleForm.value.userName = arr.toString();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			rules,
+			isShowDialog,
+			resetForm,
+			Search,
+			ruleForm,
+			value1,
+			daiInpt,
+			onUsers,
+			showRef,
+			ruleFormRef,
+			onUser,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			disabled,
+			emit,
+			nameTitle,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue
new file mode 100644
index 0000000..17defc0
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue
@@ -0,0 +1,515 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" @close="resetForm(ruleFormRef)" width="50%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :rules="rules" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资名称" prop="name">
+							<el-input v-model="ruleForm.name" placeholder="请填写物资名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资编号" prop="number">
+							<el-input v-model="ruleForm.number" placeholder="请填写物资编号"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资用途" prop="use">
+							<el-input v-model="ruleForm.use" placeholder="请填写物资用途"></el-input>
+						</el-form-item>
+					</el-col>
+					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--						<el-form-item label="所属区域">-->
+					<!--							<el-input v-model="ruleForm.areaId" placeholder="请选择" class="input-with-select">-->
+					<!--								<template #append>-->
+					<!--									<el-button :icon="Search" @click="regionsDialog" />-->
+					<!--								</template>-->
+					<!--							</el-input>-->
+					<!--						</el-form-item>-->
+					<!--					</el-col>-->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资型号" prop="model">
+							<el-input v-model="ruleForm.model" placeholder="请填写物资型号"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="负责部门" prop="departmentId">
+							<el-tree-select
+								v-model="ruleForm.departmentId"
+								check-strictly
+								:data="data"
+								:props="propse"
+								class="w100"
+								clearable
+								:render-after-expand="false"
+								placeholder="请选择"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资分类" prop="classification">
+							<el-select v-model="ruleForm.classification" class="w100" placeholder="请选择">
+								<el-option label="事故气体吸收装置" value="1"></el-option>
+								<el-option label="通讯设施" value="2"></el-option>
+								<el-option label="交通运输工具" value="3"></el-option>
+								<el-option label="照明装置" value="4"></el-option>
+								<el-option label="防护器材" value="5"></el-option>
+								<el-option label="其它" value="6"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="存放位置" prop="place">
+							<el-input v-model="ruleForm.place" placeholder="请填写存放位置"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="存储数量" prop="count">
+							<el-input v-model.number="ruleForm.count" maxlength="6" placeholder="请填写存储数量"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="生产日期" prop="productionDate">
+							<el-date-picker
+								v-model="ruleForm.productionDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="使用期限(天)" prop="usePeriod">
+							<el-input v-model.number="ruleForm.usePeriod" maxlength="6" placeholder="请填写使用期限"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资状态" prop="status">
+							<el-select v-model="ruleForm.status" class="w100" placeholder="请选择">
+								<el-option label="完好" :value="1"></el-option>
+								<el-option label="维修" :value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查周期月" prop="inspectPeriod">
+							<el-input v-model.number="ruleForm.inspectPeriod" type="" maxlength="4" placeholder="请填写使用期限"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="投用日期" prop="useDate">
+							<el-date-picker v-model="ruleForm.useDate" type="datetime" class="w100" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="使用说明" prop="useExplain">
+							<el-input v-model="ruleForm.useExplain" type="textarea" placeholder="请填写使用说明"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查日期" prop="inspectDate">
+							<el-date-picker
+								v-model="ruleForm.inspectDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="下次检查日期" prop="nextInspectDate">
+							<el-date-picker
+								v-model="ruleForm.nextInspectDate"
+								type="datetime"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								class="w100"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--						<el-form-item label="经度(度)">-->
+					<!--							<el-input v-model="ruleForm.longitude" placeholder="请填写经度(度)"></el-input>-->
+					<!--						</el-form-item>-->
+					<!--					</el-col>-->
+					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--						<el-form-item label="纬度(度)">-->
+					<!--							<el-input v-model="ruleForm.latitude" placeholder="请填写纬度(度)"></el-input>-->
+					<!--						</el-form-item>-->
+					<!--					</el-col>-->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="负责人" prop="principalUserName">
+							<el-input v-model="ruleForm.principalUserName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUser ref="Shows" @SearchUser="onUser"></DailogSearchUser>
+		<userSelections ref="userRef" />
+		<RegionsCheckbox ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, ref, defineComponent, onMounted } from 'vue';
+
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import UserSelections from '/@/components/userSelections/index.vue';
+import PersonInCharge from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue';
+import RegionsCheckbox from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue';
+import { emergencySuppliesApi } from '/@/api/contingencyManagement/emergencyResources';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		PersonInCharge,
+		UserSelections,
+		RegionsCheckbox,
+		DailogSearchUser,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			productionDate: '',
+			useDate: '',
+			inspectDate: '',
+			nextInspectDate: '',
+			inspectPeriod: '',
+			count: '',
+			usePeriod: '',
+			departmentId: '',
+			principalUserUid: '',
+			principalUserName: '',
+			status: '',
+			classification: '',
+			name: '',
+			number: '',
+			model: '',
+			longitude: '',
+			latitude: '',
+			use: '',
+			areaId: null,
+			place: '',
+			useExplain: '',
+		});
+		const titles = ref();
+		const disabled = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看应急物资代码' || title == '修改应急物资代码') {
+				emergencySuppliesApi()
+					.seeEmergencySupplies(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+						}
+					});
+			}
+		};
+		//日期选择器
+		const value1 = ref('');
+		//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = ref();
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		onMounted(() => {
+			department();
+		});
+		// 必填项提示
+		const rules = reactive<FormRules>({
+			name: [
+				{
+					required: true,
+					message: '物资名称不能为空',
+					trigger: 'change',
+				},
+			],
+			number: [
+				{
+					required: true,
+					message: '物资编号不能为空',
+					trigger: 'change',
+				},
+			],
+			use: [
+				{
+					required: true,
+					message: '物资用途不能为空',
+					trigger: 'change',
+				},
+			],
+			model: [
+				{
+					required: true,
+					message: '物资型号不能为空',
+					trigger: 'change',
+				},
+			],
+			departmentId: [
+				{
+					required: true,
+					message: '负责部门不能为空',
+					trigger: 'change',
+				},
+			],
+			classification: [
+				{
+					required: true,
+					message: '物资分类不能为空',
+					trigger: 'change',
+				},
+			],
+			place: [
+				{
+					required: true,
+					message: '存放位置不能为空',
+					trigger: 'change',
+				},
+			],
+			count: [
+				{
+					required: true,
+					message: '存储数量不能为空',
+					trigger: 'change',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			productionDate: [
+				{
+					required: true,
+					message: '生产日期不能为空',
+					trigger: 'change',
+				},
+			],
+			usePeriod: [
+				{
+					required: true,
+					message: '使用期限不能为空',
+					trigger: 'change',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			status: [
+				{
+					required: true,
+					message: '物资状态不能为空',
+					trigger: 'change',
+				},
+			],
+			inspectPeriod: [
+				{
+					required: true,
+					message: '检查周期月不能为空',
+					trigger: 'change',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			useDate: [
+				{
+					required: true,
+					message: '投用日期不能为空',
+					trigger: 'change',
+				},
+			],
+			inspectDate: [
+				{
+					required: true,
+					message: '检查日期不能为空',
+					trigger: 'change',
+				},
+			],
+			nextInspectDate: [
+				{
+					required: true,
+					message: '下次检查日期不能为空',
+					trigger: 'change',
+				},
+			],
+			principalUserName:[],
+			useExplain:[]
+		});
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建应急物资代码') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencySuppliesApi()
+							.addEmergencySupplies(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改应急物资代码') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencySuppliesApi()
+							.editEmergencySupplies(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});		
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 人名
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDialog();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+			const onUser = (e: any) => {
+			ruleForm.value.principalUserUid = e.uid;
+			ruleForm.value.principalUserName = e.realName;
+		};
+		return {
+			openDialog,
+			isShowDialog,
+			responsibleDepartment,
+			data,
+			propse,
+			department,
+			Search,
+			ruleForm,
+			value1,
+			daiInpt,
+			Shows,
+			ruleFormRef,
+			submitForm,
+			rules,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			resetForm,
+			titles,
+			disabled,
+			emit,
+			onUser
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue
new file mode 100644
index 0000000..f5b2e61
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue
@@ -0,0 +1,549 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" @close="resetForm(ruleFormRef)" width="50%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :rules="rules" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资名称" prop="name">
+							<el-input v-model="ruleForm.name" placeholder="请填写物资名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资编号" prop="number">
+							<el-input v-model="ruleForm.number" placeholder="请填写物资编号"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资用途" prop="use">
+							<el-input v-model="ruleForm.use" placeholder="请填写物资用途"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="投用日期" prop="useDate">
+							<el-date-picker v-model="ruleForm.useDate" type="datetime" class="w100" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资型号" prop="model">
+							<el-input v-model="ruleForm.model" placeholder="请填写物资型号"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="负责部门" prop="departmentId">
+							<el-tree-select v-model="ruleForm.departmentId" :data="data" class="w100" :props="propse" placeholder="请选择" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资分类" prop="classification">
+							<el-select v-model="ruleForm.classification" class="w100" placeholder="请选择">
+								<el-option label="事故气体吸收装置" value="1"></el-option>
+								<el-option label="通讯设施" value="2"></el-option>
+								<el-option label="交通运输工具" value="3"></el-option>
+								<el-option label="照明装置" value="4"></el-option>
+								<el-option label="防护器材" value="5"></el-option>
+								<el-option label="其它" value="6"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="存放位置" prop="place">
+							<el-input v-model="ruleForm.place" placeholder="请填写存放位置"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="存储数量" prop="count">
+							<el-input v-model.number="ruleForm.count" maxlength="6" placeholder="请填写存储数量"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="生产日期" prop="productionDate">
+							<el-date-picker
+								v-model="ruleForm.productionDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="使用期限(天)" prop="usePeriod">
+							<el-input v-model.number="ruleForm.usePeriod" maxlength="6" placeholder="请填写使用期限"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="物资状态" prop="status">
+							<el-select v-model="ruleForm.status" class="w100" placeholder="请选择">
+								<el-option label="完好" value="1"></el-option>
+								<el-option label="维修" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查周期月" prop="inspectPeriod">
+							<el-input v-model.number="ruleForm.inspectPeriod" type="" maxlength="4" placeholder="请填写使用期限"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> </el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="使用说明">
+							<el-input v-model="ruleForm.useExplain" type="textarea" placeholder="请填写使用说明"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="检查日期" prop="inspectDate">
+							<el-date-picker
+								v-model="ruleForm.inspectDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="下次检查日期" prop="nextInspectDate">
+							<el-date-picker
+								v-model="ruleForm.nextInspectDate"
+								type="datetime"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								class="w100"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--						<el-form-item label="经度(度)">-->
+					<!--							<el-input v-model="ruleForm.longitude" placeholder="请填写经度(度)"></el-input>-->
+					<!--						</el-form-item>-->
+					<!--					</el-col>-->
+					<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--						<el-form-item label="纬度(度)">-->
+					<!--							<el-input v-model="ruleForm.latitude" placeholder="请填写纬度(度)"></el-input>-->
+					<!--						</el-form-item>-->
+					<!--					</el-col>-->
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="负责人" prop="principalUserName">
+							<el-input v-model="ruleForm.principalUserName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+								<el-form-item label="保养记录">
+							<el-table :data="ruleForm.maintainList" highlight-current-row>
+								<el-table-column align="center" label="保养结果" prop="maintainResult">
+									<template #default="scope">
+										<el-select size="mini" disabled v-model="scope.row.maintainResult">
+											<el-option label="正常" value="1"></el-option>
+											<el-option label="异常" value="2"></el-option>
+										</el-select>
+									</template>
+								</el-table-column>
+								<el-table-column align="center" label="创建人" prop="userName"></el-table-column>
+								<el-table-column align="center" label="创建时间" prop="maintainTime"></el-table-column>
+							</el-table>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+								<el-form-item label="检查记录">
+							<el-table :data="ruleForm.inspectList" highlight-current-row>
+								<el-table-column align="center" label="检查结果" prop="maintainResult">
+									<template #default="scope">
+										<el-select size="mini" disabled v-model="scope.row.inspectResult">
+											<el-option label="正常" value="1"></el-option>
+											<el-option label="异常" value="2"></el-option>
+										</el-select>
+									</template>
+								</el-table-column>
+								<el-table-column align="center" label="创建人" prop="userName"></el-table-column>
+								<el-table-column align="center" label="创建时间" prop="inspectTime"></el-table-column>
+							</el-table>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUser ref="Shows" @SearchUser="onUser"></DailogSearchUser>
+		<userSelections ref="userRef" />
+		<RegionsCheckbox ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, ref, defineComponent } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import UserSelections from '../../../../../components/userSelections/index.vue';
+import PersonInCharge from '../component/personInCharge.vue';
+import RegionsCheckbox from '../component/regionsCheckbox.vue';
+import { emergencySuppliesApi } from '../../../../../api/contingencyManagement/emergencyResources';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { AnyAaaaRecord } from 'dns';
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUser,
+		UserSelections,
+		RegionsCheckbox,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			productionDate: '',
+			useDate: '',
+			inspectDate: '',
+			nextInspectDate: '',
+			inspectPeriod: '',
+			count: '',
+			usePeriod: '',
+			departmentId: '',
+			principalUserUid: '',
+			principalUserName:"",
+			status: '',
+			classification: '',
+			name: '',
+			number: '',
+			model: '',
+			longitude: '',
+			latitude: '',
+			use: '',
+			areaId: null,
+			place: '',
+			useExplain: '',
+		});
+		const titles = ref();
+		const disabled = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			department()
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看应急物资代码' || title == '修改应急物资代码') {
+				emergencySuppliesApi()
+					.seeEmergencySupplies(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+							userNames(res.data.data.maintainList)
+							userNames(res.data.data.inspectList)
+						}
+					});
+			}
+		};
+		const userNames=(data:AnyAaaaRecord)=>{
+			for(let i=0;i<data.length;i++){
+				let arr=[]
+				for(let s=0;s<data[i].userList.length;s++){
+					arr.push(data[i].userList[s].userName)
+				}
+				
+				data[i].userName=arr.toString()
+			}
+		}
+		//日期选择器
+		const value1 = ref('');
+		// 可选择树
+		const treeSelect = ref();
+		//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = ref();
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		// 必填项提示
+		const rules = reactive<FormRules>({
+			name: [
+				{
+					required: true,
+					message: '物资名称不能为空',
+					trigger: 'change',
+				},
+			],
+			number: [
+				{
+					required: true,
+					message: '物资编号不能为空',
+					trigger: 'change',
+				},
+			],
+			use: [
+				{
+					required: true,
+					message: '物资用途不能为空',
+					trigger: 'change',
+				},
+			],
+			model: [
+				{
+					required: true,
+					message: '物资型号不能为空',
+					trigger: 'change',
+				},
+			],
+			departmentId: [
+				{
+					required: true,
+					message: '负责部门不能为空',
+					trigger: 'change',
+				},
+			],
+			classification: [
+				{
+					required: true,
+					message: '物资分类不能为空',
+					trigger: 'change',
+				},
+			],
+			place: [
+				{
+					required: true,
+					message: '存放位置不能为空',
+					trigger: 'change',
+				},
+			],
+			count: [
+				{
+					required: true,
+					message: '存储数量不能为空',
+					trigger: 'change',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			productionDate: [
+				{
+					required: true,
+					message: '生产日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			usePeriod: [
+				{
+					required: true,
+					message: '使用期限不能为空',
+					trigger: 'blur',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			status: [
+				{
+					required: true,
+					message: '物资状态不能为空',
+					trigger: 'change',
+				},
+			],
+			inspectPeriod: [
+				{
+					required: true,
+					message: '检查周期月不能为空',
+					trigger: 'change',
+				},
+				{ type: 'number', message: '请输入数字类型', trigger: 'change' },
+			],
+			useDate: [
+				{
+					required: true,
+					message: '投用日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			inspectDate: [
+				{
+					required: true,
+					message: '检查日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			nextInspectDate: [
+				{
+					required: true,
+					message: '下次检查日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			principalUserName:[],
+		});
+		// 表单提交验证必填项
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建应急物资代码') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencySuppliesApi()
+							.addEmergencySupplies(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改应急物资代码') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencySuppliesApi()
+							.editEmergencySupplies(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 人名
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDialog();
+		};
+		const dataList = ref();
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const onUser = (e: any) => {
+			ruleForm.value.principalUserUid = e.uid;
+			ruleForm.value.principalUserName = e.realName;
+		};
+		return {
+			onUser,
+			userNames,
+			openDialog,
+			isShowDialog,
+			responsibleDepartment,
+			data,
+			Search,
+			ruleForm,
+			value1,
+			treeSelect,
+			daiInpt,
+			Shows,
+			ruleFormRef,
+			submitForm,
+			rules,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			resetForm,
+			titles,
+			disabled,
+			emit,
+			dataList,
+			propse,
+			department
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue
new file mode 100644
index 0000000..2e719ea
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue
@@ -0,0 +1,213 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="选择岗位id"
+      width="900px"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-row>
+      <el-col :span="18">
+        <el-row>
+          <el-col :span="24">
+            <el-form ref="ruleFormRef" :model="ruleForm" :inline="true" status-icon>
+              <el-form-item>
+                <el-input size="default" v-model="ruleForm.pass" placeholder="编号"  style="max-width: 215px;"/>
+              </el-form-item>
+              <el-form-item>
+                <el-input size="default" v-model="ruleForm.checkPass" placeholder="姓名"  style="max-width: 215px;padding: 0 12px;"/>
+              </el-form-item>
+              <el-form-item>
+                <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
+                <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+              </el-form-item>
+            </el-form>
+          </el-col>
+          <el-col :span="24">
+            <el-button size="default" :icon="Delete" style="margin-top: 15px;">清除选择</el-button>
+          </el-col>
+        </el-row>
+        <el-table
+            :data="tableData"
+            ref="multipleTableRef"
+            style="width: 100%;margin-top:20px"
+        >
+          <el-table-column align="center" width="55">
+            <template #default="scope">
+              <el-radio-group v-model="radio1" @change="radio">
+                <el-radio :label="scope.row.name" size="large">{{null}}</el-radio>
+              </el-radio-group>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="date" label="编号" />
+          <el-table-column align="center" prop="name" label="姓名"/>
+        </el-table>
+        <div class="pages">
+          <el-pagination
+              v-model:currentPage="currentPage4"
+              v-model:page-size="pageSize4"
+              :page-sizes="[100, 200, 300, 400]"
+              :small="small"
+              :disabled="disabled"
+              :background="background"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="400"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+      <el-col :span="6" style="padding-left: 15px">
+        <el-tag
+            v-for="tag in dynamicTags"
+            :key="tag"
+            class="mx-1"
+            style="margin: 5px"
+            closable
+            :disable-transitions="false"
+            @close="handleClose(tag)"
+        >
+          {{ tag }}
+        </el-tag>
+      </el-col>
+    </el-row>
+    <template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
+			</span>
+    </template>
+  </el-dialog>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  reactive,
+  ref,
+} from 'vue';
+import {
+  Delete,
+  FullScreen
+} from '@element-plus/icons-vue';
+interface User {
+  date: string
+  name: string
+  address: string
+}
+export default defineComponent({
+  setup() {
+    const dialogVisible = ref<boolean>(false);
+    const openDailog = () => {
+      dialogVisible.value = true;
+    };
+    // 搜索条件
+    const ruleForm = reactive({
+      pass: '',
+      checkPass: '',
+    });
+    // 表格
+    const tableData = [
+      {
+        date: '6421cbc6cbb5493eabf9b27e83372d78',
+        name: '金伟',
+      },
+      {
+        date: '6421cbc6cbb5493eabf9b27e83372d78',
+        name: '施凯健',
+      },
+      {
+        date: '6421cbc6cbb5493eabf9b27e83372d78',
+        name: '程雪',
+      },
+      {
+        date: '6421cbc6cbb5493eabf9b27e83372d78',
+        name: '杨恒',
+      },
+    ];
+    const pageSize4 = ref(100);
+    const handleSizeChange = (val: number) => {
+      console.log(`${val} items per page`);
+    };
+    const handleCurrentChange = (val: number) => {
+      console.log(`current page: ${val}`);
+    };
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['杨恒']);
+    const handleClose = (tag: string) => {
+      dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      radio1.value=""
+    };
+    const radio1=ref('金伟')
+    const radio=(event:any)=>{
+      dynamicTags.value[0]=event
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      openDailog,
+      ruleForm,
+      tableData,
+      pageSize4,
+      handleSizeChange,
+      handleCurrentChange,
+      dynamicTags,
+      handleClose,
+      Delete,
+      radio1,
+      radio,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped>
+.el-form--inline .el-form-item{
+  margin-bottom: 0;
+  margin-right: 0;
+}
+/*分页*/
+.pages{
+  /*display: flex;*/
+  /*justify-content: flex-end;*/
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue
new file mode 100644
index 0000000..d8d1973
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue
@@ -0,0 +1,164 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="选择区域"
+      width="900px"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-row>
+      <el-col :span="18">
+        <el-form :inline="true" ref="ruleFormRef" :model="ruleForm" status-icon>
+          <el-form-item>
+            <el-input size="default" v-model="ruleForm.checkPass" placeholder="风险区域名称" style="max-width: 215px;" />
+          </el-form-item>
+          <el-form-item>
+            <el-button size="default" type="primary" @click="submitForm(ruleFormRef)" style="margin-left: 12px;">查询</el-button>
+            <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+          </el-form-item>
+          <el-button size="default" :icon="Delete" style="margin-left: 12px;">清除选择</el-button>
+        </el-form>
+        <el-table :data="tableData" style="width: 100%;margin-top:20px;">
+          <el-table-column align="center" width="55">
+          <template #default="scope">
+            <el-radio-group v-model="radio1" @change="radio">
+              <el-radio :label="scope.row.name" size="large">{{null}}</el-radio>
+            </el-radio-group>
+          </template>
+          </el-table-column>
+          <el-table-column align="center" prop="name" label="风险区域名称"/>
+        </el-table>
+        <div class="pages">
+          <el-pagination
+              v-model:currentPage="pageIndex"
+              v-model:page-size="pageSize"
+              :page-sizes="[10, 20, 30]"
+              :pager-count="5"
+              :small="small"
+              :disabled="disabled"
+              :background="background"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="40"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+      <el-col :span="6" style="padding-left: 15px;">
+        <el-tag
+            v-for="tag in dynamicTags"
+            :key="tag"
+            class="mx-1"
+            style="margin: 5px"
+            closable
+            :disable-transitions="false"
+            @close="handleClose(tag)"
+        >
+          {{ tag }}
+        </el-tag>
+      </el-col>
+    </el-row>
+    <template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
+			</span>
+    </template>
+  </el-dialog>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  reactive,
+  ref
+} from 'vue';
+import {
+  Delete,
+  FullScreen
+} from '@element-plus/icons-vue';
+export default defineComponent({
+  setup() {
+    const dialogVisible = ref<boolean>(false);
+    const openDailog = () => {
+      dialogVisible.value = true;
+    };
+    // 搜索条件
+    const ruleForm = reactive({
+      checkPass: '',
+    });
+    // 表格
+    const tableData = [
+      {
+        name: '1#LNG储罐单元',
+      },
+      {
+        name: 'LNG装车区',
+      },
+      {
+        name: '丙烷储罐区',
+      },
+      {
+        name: '4#LNG储罐单元',
+      },
+    ];
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['LNG装车区']);
+    const handleClose = (tag: string) => {
+      dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      radio1.value=""
+    };
+    const radio1=ref('1#LNG储罐单元')
+    const radio=(event:any)=>{
+      dynamicTags.value[0]=event
+    }
+
+    // 分页
+    const pageIndex = ref(4);
+    const pageSize = ref(10);
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      console.log(`${val} items per page`);
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      console.log(`current page: ${val}`);
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      openDailog,
+      ruleForm,
+      tableData,
+      handleSizeChange,
+      handleCurrentChange,
+      pageIndex,
+      pageSize,
+      radio1,
+      radio,
+      dynamicTags,
+      handleClose,
+      Delete,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped>
+.el-row {
+  padding: 0 0 20px 0;
+}
+.el-form--inline .el-form-item{
+  margin: 0;
+}
+</style>
diff --git a/src/components/contingencyManagement/emergencyResources/emergencySupplies/index.vue b/src/components/contingencyManagement/emergencyResources/emergencySupplies/index.vue
new file mode 100644
index 0000000..3f9dc77
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/emergencySupplies/index.vue
@@ -0,0 +1,396 @@
+<template>
+	<div class="system-user-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-input size="default" v-model="listQuery.searchParams.name" placeholder="物资名称" style="max-width: 215px" />
+				<el-button size="default" type="primary" class="ml10" @click="listApi"> 查询 </el-button>
+				<el-button size="default" class="ml10" @click="submitReset"> 重置 </el-button>
+			</div>
+			<div class="button_Line">
+				<div class="button_Left">
+					<el-button size="default" type="primary" @click="onOpenAdd">
+						<el-icon> <Plus /> </el-icon>新建
+					</el-button>
+					<el-button size="default" type="warning" plain :disabled="warning">
+						<el-icon> <Edit /> </el-icon>修改
+					</el-button>
+					<el-button size="default" type="danger" plain @click="onDeleteAll" :disabled="danger">
+						<el-icon> <Delete /> </el-icon>删除
+					</el-button>
+				</div>
+				<div class="button_Right">
+					<!--          <el-button @click="upButton">-->
+					<!--						<el-icon>-->
+					<!--							<Upload />-->
+					<!--						</el-icon>-->
+					<!--					</el-button>-->
+					<!--					<el-button>-->
+					<!--						<el-icon>-->
+					<!--							<Refresh />-->
+					<!--						</el-icon>-->
+					<!--					</el-button>-->
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column align="center" type="selection" width="55" />
+				<el-table-column align="center" prop="name" label="物资名称" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="number" label="物资编号" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="deptName" label="负责部门" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" label="物资分类" min-width="120" show-overflow-tooltip sortable>
+					<template #default="scope">
+						<span v-if="scope.row.classification == 1">事故气体吸收装置</span><span v-if="scope.row.classification == 2">通讯设施</span
+						><span v-if="scope.row.classification == 3">交通运输工具</span><span v-if="scope.row.classification == 4">照明装置</span
+						><span v-if="scope.row.classification == 5">防护器材</span><span v-if="scope.row.classification == 6">其它</span>
+					</template>
+				</el-table-column>
+				<el-table-column align="center" prop="place" label="存放位置" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="count" label="存储数量" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column label="操作" width="200" align="center" fixed="right">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="onMaintain(scope.row)">
+							<el-icon style="margin-right: 5px"> <EditPen /> </el-icon>保养
+						</el-button>
+						<el-button size="small" text type="primary" @click="onInspect(scope.row)">
+							<el-icon style="margin-right: 5px"> <EditPen /> </el-icon>检查
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('详情', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <View /> </el-icon>查看
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)">
+							<el-icon style="margin-right: 5px">
+								<EditPen />
+							</el-icon>
+							修改
+						</el-button>
+						<el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+							<el-icon> <Delete /> </el-icon>删除
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</el-card>
+		<Maintain ref="seeRef" @myadd="onMaintainAdd" />
+		<Inspect ref="spectRef" @myadd="onInspectAdd" />
+		<OpenAdd ref="addRef" @myAdd="onMyAdd" />
+		<OpenEdit ref="editRef" @myAdd="onMyAdds" />
+		<!--		<upData ref="upShow"></upData>-->
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, reactive, onMounted } from 'vue';
+import {
+	ElMessageBox,
+	ElMessage,
+	// ElTable
+} from 'element-plus';
+import { Plus, Edit, Delete, Upload, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import OpenAdd from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue';
+import Maintain from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue';
+import Inspect from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue';
+import OpenEdit from '/@/views/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import { emergencySuppliesApi } from '/@/api/contingencyManagement/emergencyResources';
+
+export default defineComponent({
+	name: 'systemUser',
+	components: {
+		OpenAdd,
+		Maintain,
+		View,
+		OpenEdit,
+		EditPen,
+		Plus,
+		Edit,
+		Delete,
+		Upload,
+		// Download,
+		Inspect,
+		Refresh,
+		UpData,
+	},
+	setup() {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				name: '',
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 请求列表数据
+		const listApi = async () => {
+			let res = await emergencySuppliesApi().getEmergencySuppliesList(listQuery);
+			// console.log(res);
+			if (res.data.code == 200) {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage.error(res.data.msg);
+			}
+		};
+		//重置
+		const submitReset = () => {
+			listQuery.searchParams.name = '';
+			listApi();
+		};
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			// console.log(deletAll.value);
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		// 页面加载时
+		onMounted(() => {
+			listApi();
+		});
+		// 上传
+		// const upShow = ref();
+		// const upButton = () => {
+		// 	upShow.value.openDialog();
+		// };
+
+		//新增应急物资检查弹窗
+		const seeRef = ref();
+		const onMaintain = (data: any) => {
+			seeRef.value.openDialog(data);
+		};
+		// 应急物资保养新增后刷新
+		const onMaintainAdd = () => {
+			listApi();
+		};
+		//修改应急物资检查弹窗
+		const spectRef = ref();
+		const onInspect = (data: any) => {
+			spectRef.value.openDialog(data);
+		};
+		// 应急物资检查新增后刷新
+		const onInspectAdd = (e: boolean) => {
+			if (e) {
+				listApi();
+			} else {
+				listApi();
+			}
+		};
+		// 新建应急物资代码弹窗
+		const addRef = ref();
+		const onOpenAdd = () => {
+			addRef.value.openDialog('新建应急物资代码', false);
+		};
+		// 新增后刷新
+		const onMyAdd = (e: boolean) => {
+			if (e) {
+				listApi();
+			} else {
+				listApi();
+			}
+		};
+		// 打开修改用户弹窗
+		const editRef = ref();
+		const onEdit = (val: string, row: object) => {
+			if (val == '详情') {
+				editRef.value.openDialog('查看应急物资代码', row, true);
+			} else {
+				editRef.value.openDialog('修改应急物资代码', row, false);
+			}
+		};
+		// 新增后刷新
+		const onMyAdds = (e: boolean) => {
+			if (e) {
+				listApi();
+			} else {
+				listApi();
+			}
+		};
+		// 删除用户
+		const onRowDel = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确认',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencySuppliesApi()
+						.deleteEmergencySupplies(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								listApi();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 多选删除
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencySuppliesApi()
+						.deleteEmergencySupplies(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								listApi();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页条数
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			listQuery.pageSize = val;
+		};
+		// 分页数
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			listQuery.pageIndex = val;
+		};
+		return {
+			// upButton,
+			// upShow,
+			tableData,
+			onMaintain, //保养
+			seeRef,
+			onOpenAdd, //新增
+			addRef,
+			onRowDel,
+			pageIndex,
+			pageSize,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			listQuery,
+			listApi,
+			onMounted,
+			submitReset,
+			onMyAdd,
+			onEdit,
+			editRef,
+			onDeleteAll,
+			handleSelectionChange,
+			warning,
+			danger,
+			spectRef,
+			onInspect,
+			onMaintainAdd,
+			onInspectAdd,
+			onMyAdds,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.table_Box {
+	padding: 20px;
+	background-color: #fff;
+}
+.tableForm {
+	margin-top: 10px;
+}
+/*按钮行*/
+.button_Line {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue b/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
new file mode 100644
index 0000000..7bcfdce
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
@@ -0,0 +1,271 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="50%" @close="resetForm(ruleFormRef)" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :rules="rules" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急物资" prop="suppliesName">
+							<el-input v-model="ruleForm.suppliesName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="保养结果" prop="maintainResult">
+							<el-select v-model="ruleForm.maintainResult" class="w100" placeholder="请选择">
+								<el-option label="正常" value="1"></el-option>
+								<el-option label="异常" value="2"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建人" prop="userName">
+							<el-input v-model="ruleForm.userName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser(0)" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="创建时间" prop="maintainTime">
+							<el-date-picker
+								class="w100"
+								v-model="ruleForm.maintainTime"
+								type="datetime"
+								value-format="YYYY-MM-DD HH:mm:ss"
+								placeholder="选择日期时间"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<EmergencySupplies ref="showRef" @SearchUser="onUser" />
+		<DailogSearchUser ref="userRef" @SearchUser="onUsers" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, reactive } from 'vue';
+
+import type { FormInstance, FormRules } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import EmergencySupplies from '../../../../../components/emergencySupplies/index.vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { maintenanceEmergencyMaterialsApi } from '../../../../../api/contingencyManagement/maintenanceEmergencyMaterials';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUser,
+		EmergencySupplies,
+	},
+	setup(props, { emit }) {
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		//定义表单
+		const ruleForm = ref({
+			suppliesId: '', // 物资ID
+			maintainResult: '', //保养结果
+			maintainTime: '', // 创建时间
+			userList: [],
+		});
+		const titles = ref();
+		const disabled = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number) => {
+			isShowDialog.value = true;
+			titles.value = `${title}应急物资保养`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				maintenanceEmergencyMaterialsApi()
+					.seeMaintenanceEmergencyMaterials(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+							let arr = [];
+							for (let i = 0; i < ruleForm.value.userList.length; i++) {
+								arr.push(ruleForm.value.userList[i].userName);
+							}
+							ruleForm.value.userName = arr.toString();
+						}
+					});
+			}
+		};
+		//日期选择器
+		const maintainTime = ref('');
+		// 表单提交验证必填项
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					if (titles.value == '新建应急物资保养') {
+						isShowDialog.value = false;
+						maintenanceEmergencyMaterialsApi()
+							.addMaintenanceEmergencyMaterials(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+							});
+					} else if (titles.value == '修改应急物资保养') {
+						isShowDialog.value = false;
+						maintenanceEmergencyMaterialsApi()
+							.editMaintenanceEmergencyMaterials(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					}
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+			formEl.resetFields();
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		const rules = reactive<FormRules>({
+			nameTitle: [],
+			maintainResult: [
+				{
+					required: true,
+					message: '保养结果不能为空',
+					trigger: 'change',
+				},
+			],
+			userName: [
+				{
+					required: true,
+					message: '创建人不能为空',
+					trigger: 'change',
+				},
+			],
+			maintainTime: [
+				{
+					required: true,
+					message: '创建时间不能为空',
+					trigger: 'blur',
+				},
+			],
+		});
+		// 应急物资弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		const onUser = (e: any) => {
+			ruleForm.value.suppliesId = e.id;
+			ruleForm.value.suppliesName = e.name;
+		};
+		// 编写人弹窗
+		const userRef = ref();
+		const openUser = (data: any) => {
+			userRef.value.openDailog(data);
+		};
+		const onUsers = (val: any) => {
+			let arr = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].realName);
+				ruleForm.value.userList.push({
+					userUid: val[i].uid,
+					userName: val[i].realName,
+				});
+			}
+			ruleForm.value.userName = arr.toString();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			isShowDialog,
+			Search,
+			ruleForm,
+			maintainTime,
+			daiInpt,
+			onUser,
+			onUsers,
+			rules,
+			showRef,
+			ruleFormRef,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			resetForm,
+			titles,
+			disabled,
+			emit,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue b/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue
new file mode 100644
index 0000000..3544d06
--- /dev/null
+++ b/src/components/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue
@@ -0,0 +1,392 @@
+<template>
+	<div class="system-user-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-form size="default" label-width="80px" :inline="true">
+					<el-form-item prop="telephone">
+						<el-input v-model="listQuery.searchParams.suppliesName" placeholder="请选择应急物资" class="input-with-select">
+							<template #append>
+								<el-button :icon="Search" @click="daiInpt" />
+							</template>
+						</el-input>
+					</el-form-item>
+					<el-button size="default" type="primary" class="ml10" @click="onSubmit"> 查询 </el-button>
+					<el-button size="default" class="ml10" @click="submitReset"> 重置 </el-button>
+				</el-form>
+			</div>
+			<div class="button_Line">
+				<div class="button_Left">
+					<el-button size="default" type="primary" @click="onOpenAdd('新建')">
+						<el-icon> <Plus /> </el-icon>新建
+					</el-button>
+					<el-button size="default" type="warning" plain :disabled="warning">
+						<el-icon> <Edit /> </el-icon>修改
+					</el-button>
+					<el-button size="default" type="danger" plain @click="onDeleteAll" :disabled="danger">
+						<el-icon> <Delete /> </el-icon>删除
+					</el-button>
+				</div>
+				<div class="button_Right">
+					<el-button>
+						<el-icon>
+							<Download />
+						</el-icon>
+					</el-button>
+					<el-button>
+						<el-icon>
+							<Refresh />
+						</el-icon>
+					</el-button>
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column align="center" type="selection" width="55" />
+				<el-table-column align="center" prop="suppliesName" label="应急物资" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" label="保养结果" min-width="120" show-overflow-tooltip sortable>
+					<template #default="scope">
+						<span v-if="scope.row.maintainResult == 1">正常</span>
+						<span v-if="scope.row.maintainResult == 2">异常</span>
+					</template>
+				</el-table-column>
+				<el-table-column align="center" prop="maintainTime" label="保养日期" min-width="120" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column label="操作" width="200" align="center" fixed="right">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="onEdit('查看', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <View /> </el-icon>查看
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)">
+							<el-icon style="margin-right: 5px"> <EditPen /> </el-icon>修改
+						</el-button>
+						<el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+							<el-icon> <Delete /> </el-icon>删除
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</el-card>
+		<EmergencySupplies ref="showRef" @SearchUser="onUser" />
+		<OpenSee ref="editRef" />
+		<upData ref="upShow"></upData>
+		<OpenAdd ref="addRef" @myAdd="onMyAdd" />
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, onMounted, ref, defineComponent } from 'vue';
+import {
+	ElMessageBox,
+	ElMessage,
+	// ElTable,
+	// FormInstance,
+} from 'element-plus';
+import { Plus, Search, Delete, Edit, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+// import OpenSee from '/@/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue';
+// import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+// import EmergencySupplies from '/@/components/emergencySupplies/index.vue';
+// import OpenAdd from '/@/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue';
+// import { contingencyApi } from '/@/api/contingency';
+// import { emergencySuppliesMaintainApi } from '/@/api/emergencySuppliesMaintain';
+
+import OpenSee from '../../emergencyPlanStartRecord/component/openSee.vue';
+import UpData from '../../panManagement/component/upData.vue';
+import EmergencySupplies from '../../../../components/emergencySupplies/index.vue';
+import OpenAdd from '../maintenanceOfEmergencyMaterials/component/openAdd.vue';
+import { maintenanceEmergencyMaterialsApi } from '/@/api/contingencyManagement/maintenanceEmergencyMaterials';
+
+export default defineComponent({
+	name: 'systemUser',
+	components: {
+		OpenSee,
+		View,
+		OpenAdd,
+		EditPen,
+		Plus,
+		Edit,
+		Delete,
+		EmergencySupplies,
+		Download,
+		Refresh,
+		UpData,
+	},
+	setup() {
+		//定义表单
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				suppliesId: '',
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 请求列表数据
+		const onSubmit = async () => {
+			let res = await maintenanceEmergencyMaterialsApi().getMaintenanceEmergencyMaterialsList(listQuery);
+			if (res.data.code == 200) {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					message: res.data.msg,
+					type: 'error',
+				});
+			}
+		};
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams.suppliesId = '';
+			listQuery.searchParams.suppliesName="";
+			onSubmit();
+		};
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+
+		// 打开新建用户弹窗
+		const addRef = ref();
+		const onOpenAdd = (data:any) => {
+			addRef.value.openDialog(data);
+		};
+		// 新增后刷新
+		const onMyAdd = (e: boolean) => {
+			if (e) {
+				onSubmit();
+			} else {
+				onSubmit();
+			}
+		};
+		// 打开修改用户弹窗
+		const onEdit = (val: string, row: object) => {
+			if (val == '详情') {
+				addRef.value.openDialog(val, row);
+			} else {
+				addRef.value.openDialog(val, row);
+			}
+		};
+		// 删除
+		const onRowDel = (data: any) => {
+			let arr=[]
+			arr.push(data)
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					maintenanceEmergencyMaterialsApi()
+						.deleteMaintenanceEmergencyMaterials(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 多选删除
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					maintenanceEmergencyMaterialsApi()
+						.deleteMaintenanceEmergencyMaterials(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 上传
+		const upShow = ref();
+		const upButton = () => {
+			upShow.value.openDialog();
+		};
+		// 应急物资弹窗
+		const showRef = ref();
+		const daiInpt = () => {
+			showRef.value.openDailog();
+		};
+		const onUser = (e: any) => {
+			listQuery.searchParams.suppliesId = e.id;
+			listQuery.searchParams.suppliesName=e.name
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+			onSubmit();
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+			onSubmit();
+		};
+		// 页面加载时
+		onMounted(() => {
+			onSubmit();
+		});
+		return {
+			upButton,
+			upShow,
+			Edit,
+			onRowDel,
+			handleSizeChange,
+			handleCurrentChange,
+			Search,
+			daiInpt,
+			showRef,
+			onOpenAdd, //新增
+			addRef,
+			onSubmit,
+			submitReset,
+			onMyAdd,
+			listQuery,
+			warning,
+			danger,
+			tableData,
+			pageIndex,
+			pageSize,
+			total,
+			handleSelectionChange,
+			onDeleteAll,
+			onEdit,
+			onUser,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.table_Box {
+	padding: 20px;
+	background-color: #fff;
+}
+.tableForm {
+	margin-top: 10px;
+}
+/*按钮行*/
+.button_Line {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer {
+	border-top: 1px solid #e8e8e8;
+	border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+	border-bottom: 1px solid #e8e8e8;
+	margin-right: 0;
+	border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+	background-color: #f6f7fa;
+	font-weight: 400;
+	color: #909399;
+}
+.el-table .sort-caret.ascending {
+	border-bottom-color: #c0c4cc;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/abolishLibrary.vue b/src/components/contingencyManagement/panManagement/component/abolishLibrary.vue
new file mode 100644
index 0000000..f13523f
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/abolishLibrary.vue
@@ -0,0 +1,219 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="废止库" v-model="isShowDialog" width="60%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-row :gutter="35">
+				<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+					<el-table
+						:data="tableData"
+						style="width: 100%; margin-top: 15px"
+						ref="multipleTableRef"
+						:model="formInline"
+						:header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+					>
+						<el-table-column prop="name" label="预案名称" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="authorUid" label="编写人" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="releaseDate" label="发布实施日期" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column label="操作" width="200" align="center">
+							<template #default="scope">
+								<el-button size="small" text type="primary" @click="onReduction(scope.row.id)">还原 </el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+				</el-col>
+			</el-row>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					class="mt15"
+					background
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="onHandleSizeChange"
+					@current-change="onHandleCurrentChange"
+				/>
+			</div>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel">取消</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, reactive, defineComponent, onMounted } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import {
+	// ElMessageBox,
+	ElMessage,
+} from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanApi } from '../../../../api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+	name: 'abolishLibrary',
+	components: {},
+	setup(prop, { emit }) {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				abolishStatus: true,
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+
+		// 列表数据请求
+		const openDialog = async () => {
+			isShowDialog.value = true;
+			let res = await emergencyPlanApi().getEmergencyPlanList(listQuery);
+			if (res.data.code === '200') {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					type: 'error',
+					message: res.data.msg,
+				});
+			}
+		};
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		// 打开弹窗
+		// const openDialog = () => {
+		//   isShowDialog.value = true;
+		// };
+		// 关闭弹窗
+		const closeDialog = () => {
+			isShowDialog.value = false;
+		};
+		// 取消
+		const onCancel = () => {
+			closeDialog();
+		};
+		const onReduction = async (id: number) => {
+			isShowDialog.value = false;
+			emergencyPlanApi()
+				.reductionEmergencyTeam(id)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+						openDialog();
+					}
+				})
+				.catch(() => {});
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			onCancel,
+			tableData,
+			Search,
+			ruleFormRef,
+			pageIndex,
+			pageSize,
+			handleSizeChange,
+			handleCurrentChange,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			listQuery,
+			// onSubmit,
+			total,
+			emit,
+			onReduction,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/approval.vue b/src/components/contingencyManagement/panManagement/component/approval.vue
new file mode 100644
index 0000000..b6db937
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/approval.vue
@@ -0,0 +1,224 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="40%" draggable :fullscreen="full" :close-on-click-modal="false">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批名称" prop="workName">
+							<el-input v-model="ruleForm.workName" placeholder="请填写队伍名称"></el-input>
+						</el-form-item>
+					</el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="审批标题" prop="title">
+              <el-input v-model="ruleForm.title" placeholder="请填写审批名称"></el-input>
+            </el-form-item>
+          </el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="approvePersonId">
+							<el-input v-model="ruleForm.approvePersonName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</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="审批结果" prop="authorUid">
+							<el-radio-group v-model="ruleForm.approveResult">
+                <el-radio :label="false">不通过</el-radio>
+                <el-radio :label="true">通过</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="审批意见" prop="approveMemo">
+							<el-input v-model="ruleForm.approveMemo" type="textarea" placeholder="请填写审批意见"></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="是否完成" prop="authorUid" @change="typeChang">
+							<el-radio-group v-model="ruleForm.complete">
+								<el-radio :label="false">是</el-radio>
+								<el-radio :label="true">否</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+          <el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="审批名称" prop="workName">
+              <el-input v-model="ruleForm.twoWorkName" placeholder="请填写队伍名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="审批标题" prop="title">
+              <el-input v-model="ruleForm.twoTitle" placeholder="请填写审批名称"></el-input>
+            </el-form-item>
+          </el-col>
+					<el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="authorUid">
+							<el-input v-model="ruleForm.twoApprovePersonName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+    DailogSearchUserManger,
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+      approveId: '',
+      workName: '', // 审批名称
+      title: '', //审批标题
+      approvePersonId: '', //
+      approvePersonName: '', // 审批人
+      approveStatus: 2, //审批状态
+      relateType: 1, //业务类型
+      approveResult: false, //审批结果
+      approveMemo: '', //审批意见
+      relateId: '',
+      twoWorkName:'',
+      twoTitle:'',
+      twoApprovePersonId:'',
+      twoApprovePersonName:''
+		});
+		const titles = ref();
+		const disabled = ref();
+    const uid = ref();
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+      ruleForm.value.relateId = id;
+      uid.value = id;
+      if(title == '查看审批' || title == '修改审批') {
+        emergencyPlanApi()
+            .approvalProcessEmergencyPlan(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+              }
+            });
+      }
+		};
+		const submitForm = async () => {
+      ruleForm.value.workName = ruleForm.value.twoWorkName
+      ruleForm.value.title = ruleForm.value.twoTitle
+      ruleForm.value.approvePersonId = ruleForm.value.twoApprovePersonId
+      ruleForm.value.approvePersonName = ruleForm.value.twoApprovePersonName
+      isShowDialog.value = false;
+      emergencyPlanApi()
+          .editApprovalEmergencyPlan(ruleForm.value)
+          .then((res) => {
+            if (res.data.code == 200) {
+              ElMessage({
+                showClose: true,
+                message: '修改成功',
+                type: 'success',
+              });
+              emit('myAdd', true);
+            } else {
+              ElMessage({
+                showClose: true,
+                message: res.data.msg,
+                type: 'error',
+              });
+              emit('myAdd', true);
+            }
+          });
+		};
+		const resetForm = () => {
+			isShowDialog.value = false;
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+      ruleForm.value.twoApprovePersonId = e[0].uid;
+      ruleForm.value.twoApprovePersonName = e[0].realName;
+		};
+		const typeChang = () => {
+			console.log('tag', ruleForm);
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			Search,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disabled,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+			typeChang,
+      uid,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/approvalProcess.vue b/src/components/contingencyManagement/panManagement/component/approvalProcess.vue
new file mode 100644
index 0000000..2356a0b
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/approvalProcess.vue
@@ -0,0 +1,202 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog title="查看审批流程" v-model="isShowDialog" width="60%" draggable :fullscreen="full">
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-row :gutter="35">
+        <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+          <el-table
+              :data="tableData"
+              style="width: 100%; margin-top: 15px"
+              ref="multipleTableRef"
+              :model="formInline"
+              :header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+          >
+            <el-table-column prop="workName" label="审批人" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="title" label="审批标题" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="approvePersonName" label="编写人" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column prop="approveMemo" label="审批意见" show-overflow-tooltip sortable></el-table-column>
+            <el-table-column label="操作" width="200" align="center">
+              <template #default="scope">
+                <el-button size="small" text type="primary" @click="onReduction(scope.row.id)">还原</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-col>
+      </el-row>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            v-model:currentPage="pageIndex"
+            v-model:page-size="pageSize"
+            :page-sizes="[10, 20, 30]"
+            :pager-count="5"
+            class="mt15"
+            background
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            @size-change="onHandleSizeChange"
+            @current-change="onHandleCurrentChange"
+        />
+      </div>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel">取消</el-button>
+				</span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script lang="ts">
+import { ref, reactive, defineComponent, onMounted } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import {
+  // ElMessageBox,
+  ElMessage,
+} from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanApi } from '../../../../api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+  name: 'abolishLibrary',
+  components: {},
+  setup(prop, { emit }) {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        relateType: 1,
+        relateId: '',
+        startTime: '',
+        endTime: '',
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+
+    // 列表数据请求
+    const openDialog = async () => {
+      isShowDialog.value = true;
+      let res = await emergencyPlanApi().processEmergencyPlan(listQuery);
+      if (res.data.code === '200') {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          type: 'error',
+          message: res.data.msg,
+        });
+      }
+    };
+
+    const isShowDialog = ref(false);
+
+    const ruleFormRef = ref<FormInstance>();
+    // 打开弹窗
+    // const openDialog = () => {
+    //   isShowDialog.value = true;
+    // };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+    const onReduction = async () => {
+      isShowDialog.value = false;
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      onCancel,
+      tableData,
+      Search,
+      ruleFormRef,
+      pageIndex,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      listQuery,
+      // onSubmit,
+      total,
+      emit,
+      onReduction,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+  height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+  height: 168px !important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+//分页
+.pages {
+  display: flex;
+  justify-content: flex-end;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/initiateApproval.vue b/src/components/contingencyManagement/panManagement/component/initiateApproval.vue
new file mode 100644
index 0000000..eb2afa2
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/initiateApproval.vue
@@ -0,0 +1,159 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="发起审批" v-model="isShowDialog" width="40%" draggable :fullscreen="full" :close-on-click-modal="false">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批名称" prop="workName">
+							<el-input v-model="ruleForm.workName" placeholder="请填写审批名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批标题" prop="title">
+							<el-input v-model="ruleForm.title" placeholder="请填写审批名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="approvePersonId">
+							<el-input v-model="ruleForm.approvePersonName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm" size="default">关闭</el-button>
+					<el-button size="default" type="primary" @click="submitForm">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUserManger,
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+			workName: '', // 审批名称
+			title: '', //审批标题
+			approvePersonId: '',
+			approvePersonName: '',
+			approveStatus: 2,
+			relateType: 1,
+			relateId: '',
+		});
+		const titles = ref();
+
+		// 打开弹窗
+		const openDialog = (title: string, id: number) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			ruleForm.value.relateId = id;
+			uid.value = id;
+		};
+		const uid = ref();
+		const submitForm = async () => {
+			isShowDialog.value = false;
+
+			emergencyPlanApi()
+				.approvalEmergencyPlan(ruleForm.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+					}
+				});
+		};
+		const resetForm = () => {
+			isShowDialog.value = false;
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+			ruleForm.value.approvePersonId = e[0].uid;
+			ruleForm.value.approvePersonName = e[0].realName;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			Search,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+			uid,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/openAdd.vue b/src/components/contingencyManagement/panManagement/component/openAdd.vue
new file mode 100644
index 0000000..02c44c0
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/openAdd.vue
@@ -0,0 +1,419 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" :close-on-click-modal="false">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案名称" prop="name">
+							<el-input v-model="ruleForm.name" placeholder="请填写队伍名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="适用部门" prop="responsibleDepartment">
+							<el-tree-select
+								v-model="ruleForm.responsibleDepartment"
+								:data="data"
+								multiple
+								:render-after-expand="false"
+								:props="propse"
+								clearable
+                show-checkbox
+                check-strictly
+                check-on-click-node
+                placeholder="请选择"
+							/>
+							<el-divider />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案类型" prop="type">
+							<el-select v-model="ruleForm.type" class="w100" placeholder="请选择">
+								<el-option label="综合应急预案" value="1"></el-option>
+								<el-option label="现场处置方案" value="2"></el-option>
+								<el-option label="专项应急预案" value="3"></el-option>
+								<el-option label="其他预案" value="4"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="危险源关联" prop="associatedDanger">
+							<el-select v-model="ruleForm.associatedDanger" class="w100" placeholder="请选择">
+								<el-option label="是" :value="false"></el-option>
+								<el-option label="否" :value="true"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案级别" prop="level">
+							<el-select v-model="ruleForm.level" class="w100" placeholder="请选择">
+								<el-option label="公司级" value="1"></el-option>
+								<el-option label="分厂级" value="2"></el-option>
+								<el-option label="车间级" value="3"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="编写人" prop="authorId">
+							<el-input v-model="ruleForm.authorName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="编写部门" prop="authorDeptId">
+							<el-tree-select
+								v-model="ruleForm.authorDeptId"
+								check-strictly
+								:data="data"
+								class="w100"
+								:props="propse"
+								clearable
+								:render-after-expand="false"
+								placeholder="请选择"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="发布实施日期" prop="releaseDate">
+							<el-date-picker
+								v-model="ruleForm.releaseDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急队伍" prop="emergencyTeam">
+							<el-input v-model="ruleForm.emergencyTeam" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt(0)" />
+								</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="相关附件">
+							<el-upload
+								v-model:file-list="fileList"
+								class="upload-demo"
+								action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+								:on-change="handleChange"
+							>
+								<el-button type="primary">点击上传</el-button>
+								<template #tip>
+									<div class="el-upload__tip">添加相关附件</div>
+								</template>
+							</el-upload>
+						</el-form-item>
+					</el-col>
+					<!--          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--            <el-form-item label="区域名称" prop="areaName">-->
+					<!--              <el-input-->
+					<!--                  v-model="ruleForm.areaName"-->
+					<!--                  placeholder="请选择"-->
+					<!--                  class="input-with-select"-->
+					<!--              >-->
+					<!--                <template #append>-->
+					<!--                  <el-button :icon="Search" @click="regionsDialog"/>-->
+					<!--                </template>-->
+					<!--              </el-input>-->
+					<!--            </el-form-item>-->
+					<!--          </el-col>-->
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<CheckTemplate ref="Shows"  @SearchUser="SearchUser" />
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+		<RegionsDialog ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, onMounted } from 'vue';
+
+import type { UploadUserFile, FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import CheckTemplate from '/@/components/checkTemplate/index.vue';
+import RegionsDialog from '/@/components/regionsDialog/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		CheckTemplate,
+		DailogSearchUserManger,
+		RegionsDialog,
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+			name: '', // 预案名称
+			type: '', //预案类型
+			associatedDanger: '', // 危险源关联
+			level: '', // 预案级别
+			authorUid: '', // 编写人
+			authorName: '',
+			authorDeptId: '', // 编写部门
+			releaseDate: '', // 发布实施日期
+			fileList: [
+				// {
+				// 	fileUrl: 'url',
+				// 	fileName: 'name',
+				// },
+			],
+			emergencyTeam: '', //应急队伍
+			areaList: [], //区域列表
+			teamList: [],
+			deptList: [],
+			abolishStatus: false,
+		});
+		const titles = ref();
+		const disabled = ref();
+
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看应急预案管理' || title == '修改应急预案管理') {
+				emergencyPlanApi()
+					.seeEmergencyTeam(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+              ruleForm.value = res.data.data;
+              let arr = [];
+              for (let i = 0; i < ruleForm.value.teamList.length; i++) {
+                arr.push(ruleForm.value.teamList[i].emergencyTeam);
+              }
+              ruleForm.value.emergencyTeam = arr.toString();
+						}
+					});
+			}
+		};
+		//日期选择器
+		const releaseDate = ref('');
+		// 上传附件
+		const fileList = ref<UploadUserFile[]>([]);
+		//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+            data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const treeSelect = ref();
+		// const trees = ref();
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		onMounted(() => {
+			department();
+		});
+		//定义树形下拉框
+		const responsibleDepartment = ref();
+		const data = ref();
+
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if (title == '新建应急预案管理') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencyPlanApi()
+							.addEmergencyPlan(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改应急预案管理') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						emergencyPlanApi()
+							.editEmergencyTeam(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+				ruleForm.value = {
+					name: '', // 预案名称
+					type: '', //预案类型
+					associatedDanger: '', // 危险源关联
+					level: '', // 预案级别
+					authorUid: '', // 编写人
+					authorName: '',
+					authorDeptId: '', // 编写部门
+					releaseDate: '', // 发布实施日期
+					fileList: [
+						// {
+						// 	fileUrl: 'url',
+						// 	fileName: 'name',
+						// },
+					],
+					emergencyTeam: '', //应急队伍
+					areaList: [], //区域列表
+					teamList: [
+          ],
+					deptList: [],
+					abolishStatus: false,
+				};
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 应急队伍弹窗
+		const Shows = ref();
+		const daiInpt = (data: any) => {
+      Shows.value.openDailog(data);
+		};
+    const SearchUser = (val: any) => {
+      let arr = [];
+      for (let i = 0; i < val.length; i++) {
+        arr.push(val[i].teamName);
+        ruleForm.value.teamList.push({
+          userUid: val[i].uid,
+          emergencyTeam: val[i].teamName,
+        });
+      }
+      ruleForm.value.emergencyTeam = arr.toString();
+    };
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+			ruleForm.value.authorUid = e[0].uid;
+			ruleForm.value.authorName = e[0].realName;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			fileList,
+			responsibleDepartment,
+			data,
+			Search,
+			releaseDate,
+			treeSelect,
+			// trees,
+			propse,
+			department,
+			daiInpt,
+			Shows,
+      SearchUser,
+			submitForm,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disabled,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/startUp.vue b/src/components/contingencyManagement/panManagement/component/startUp.vue
new file mode 100644
index 0000000..49f5500
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/startUp.vue
@@ -0,0 +1,160 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="30%"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form :model="ruleForm" ref="ruleFormRef" label-width="80px">
+        <el-form-item label="备注" >
+          <el-input v-model="ruleForm.remark" type="textarea" autocomplete="off" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">取消</el-button>
+          <el-button size="default" type="primary" @click="submitForm(titles,ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  defineComponent
+} from 'vue';
+
+import type {
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+  },
+  setup(prop, {emit}) {
+    const isShowDialog = ref(false);
+    const ruleFormRef = ref<FormInstance>();
+
+    const ruleForm = ref({
+      // id: id,
+      remark: '',
+    })
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    // const openDialog = (title: string ,id: number,) => {
+    //   isShowDialog.value = true;
+    //   titles.value = title;
+    //   if (title == '启动') {
+    //     emergencyPlanLogApi()
+    //     .seeEmergencyPlanLog(id)
+    //     .then((res) => {
+    //       if (res.data.code == 200) {
+    //         ruleForm.value = res.data.data;
+    //       }
+    //     });
+    //   }
+    // };
+    const openDialog = (title: string) => {
+      isShowDialog.value = true;
+      titles.value = title;
+    };
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '启动') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyPlanLogApi()
+                .addEmergencyPlanLog(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+            ruleForm.value = {
+              // id: id,
+              remark: '',
+            }
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+    };
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      Search,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      titles,
+      emit,
+      isShowDialog,
+      ruleFormRef,
+      ruleForm,
+      submitForm,
+      disabled,
+      resetForm,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/component/upData.vue b/src/components/contingencyManagement/panManagement/component/upData.vue
new file mode 100644
index 0000000..cc3e2d0
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/component/upData.vue
@@ -0,0 +1,125 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="导入Excel"
+      width="50%"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <el-upload
+        v-model:file-list="fileList"
+        class="upload-demo"
+        action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+        multiple
+        :on-preview="handlePreview"
+        :on-remove="handleRemove"
+        :before-remove="beforeRemove"
+        :limit="3"
+        :on-exceed="handleExceed"
+    >
+      <el-button size="default">下载模板</el-button>
+      <el-button size="default" type="primary">点击上传</el-button>
+      <template #tip>
+        <div class="el-upload__tip">
+          只允许导入“xls”或“xlsx”格式文件!
+        </div>
+      </template>
+    </el-upload>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { ref,
+  defineComponent,
+} from "vue";
+import {
+  ElMessage,
+  ElMessageBox
+} from "element-plus";
+import type {
+  UploadProps,
+  UploadUserFile,
+} from "element-plus";
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+export default defineComponent({
+  setup() {
+    let dialogVisible =ref<boolean>(false)
+    const fileList = ref<UploadUserFile[]>([
+      // {
+      //   name: "element-plus-logo.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+      // {
+      //   name: "element-plus-logo2.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+    ]);
+
+    const handleRemove: UploadProps["onRemove"] = (file, uploadFiles) => {
+      console.log(file, uploadFiles);
+    };
+
+    const handlePreview: UploadProps["onPreview"] = (uploadFile) => {
+      console.log(uploadFile);
+    };
+
+    const handleExceed: UploadProps["onExceed"] = (files, uploadFiles) => {
+      ElMessage.warning(
+          `The limit is 3, you selected ${
+              files.length
+          } files this time, add up to ${
+              files.length + uploadFiles.length
+          } totally`
+      );
+    };
+
+    const beforeRemove: UploadProps["beforeRemove"] = (
+        uploadFile,
+        uploadFiles
+    ) => {
+      return ElMessageBox.confirm(
+          `Cancel the transfert of ${uploadFile.name} ?`
+      ).then(
+          () => true,
+          () => false
+      );
+    };
+    // 打开弹窗
+    const openDialog = (type:string,value:any,projectList: any,projectId:string) => {
+      dialogVisible.value=true
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      fileList,
+      handleRemove,
+      handlePreview,
+      handleExceed,
+      beforeRemove,
+      openDialog,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-upload__tip{
+  margin-left: 100px;
+  margin-top: 20px;
+}
+::v-deep .el-dialog__header{
+  border-bottom: 1px solid #e8e8e8;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/panManagement/index.vue b/src/components/contingencyManagement/panManagement/index.vue
new file mode 100644
index 0000000..cc2ec1b
--- /dev/null
+++ b/src/components/contingencyManagement/panManagement/index.vue
@@ -0,0 +1,626 @@
+<template>
+	<div class="system-user-container">
+		<el-card shadow="hover">
+			<div class="system-user-search mb15">
+				<el-form :inline="true" class="demo-form-inline">
+					<el-form-item>
+						<el-input size="default" v-model="listQuery.searchParams.name" placeholder="预案名称" style="max-width: 215px"> </el-input>
+					</el-form-item>
+					<el-form-item>
+						<el-select size="default" v-model="listQuery.searchParams.type" placeholder="请选择预案类型" class="ml10" style="max-width: 215px">
+							<el-option label="综合应急预案" value="admin"></el-option>
+							<el-option label="现场处置方案" value="common"></el-option>
+							<el-option label="专项应急预案" value="common"></el-option>
+							<el-option label="其他预案" value="common"></el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item>
+						<el-button size="default" type="primary" class="ml10" @click="onSubmit"> 查询 </el-button>
+						<el-button size="default" class="ml10" @click="submitReset"> 重置 </el-button>
+					</el-form-item>
+				</el-form>
+			</div>
+			<div class="button_Line">
+				<div class="button_Left">
+					<el-button size="default" type="primary" @click="onOpenAdd">
+						<el-icon>
+							<Plus /> </el-icon
+						>新建
+					</el-button>
+					<el-button size="default" type="warning" plain :disabled="warning">
+						<el-icon>
+							<Edit /> </el-icon
+						>修改
+					</el-button>
+					<el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+						<el-icon>
+							<Delete /> </el-icon
+						>删除
+					</el-button>
+					<el-button size="default" type="primary" @click="onabolishLibrary"> 废止库 </el-button>
+				</div>
+				<div class="button_Right">
+					<!--          <el-button size="default" @click="upButton">-->
+					<!--            <el-icon>-->
+					<!--              <Upload />-->
+					<!--            </el-icon>-->
+					<!--          </el-button>-->
+					<!--          <el-button size="default">-->
+					<!--            <el-icon>-->
+					<!--              <Download />-->
+					<!--            </el-icon>-->
+					<!--          </el-button>-->
+					<!--          <el-button size="default">-->
+					<!--            <el-icon>-->
+					<!--              <Refresh />-->
+					<!--            </el-icon>-->
+					<!--          </el-button>-->
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55" />
+				<el-table-column prop="name" label="预案名称" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.type == 1">综合应急预案</span>
+            <span v-if="scope.row.type == 2">现场处置方案</span>
+            <span v-if="scope.row.type == 3">专项应急预案</span>
+            <span v-if="scope.row.type == 4">其他预案</span>
+          </template>
+        </el-table-column>
+				<el-table-column prop="level" label="预案级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.level == 1">综合应急预案</span>
+            <span v-if="scope.row.level == 2">现场处置方案</span>
+            <span v-if="scope.row.level == 3">专项应急预案</span>
+          </template>
+        </el-table-column>
+				<el-table-column prop="releaseDate" label="发布实施日期" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column label="操作" width="260" align="center" fixed="right">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="isDialogFormVisible(scope.row.id)">
+							<el-icon style="margin-right: 5px">
+								<VideoPlay /> </el-icon
+							>启动
+						</el-button>
+						<el-button size="small" text type="primary" @click="abolish(scope.row.id)">
+							<el-icon style="margin-right: 5px">
+								<VideoPause /> </el-icon
+							>废止
+						</el-button>
+						<el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)">
+							<el-icon style="margin-right: 5px">
+								<EditPen /> </el-icon
+							>修改
+						</el-button>
+						<el-button
+							size="small"
+							text
+							type="primary"
+							v-if="scope.row.approveStatus === 0 || scope.row.approveStatus === null"
+							@click="initiateApproval(scope.row.id)"
+						>
+							发起审批
+						</el-button>
+						<el-button
+							size="small"
+							text
+							type="primary"
+							v-if="scope.row.approveStatus === 2 && scope.row.checkApprove === true"
+							@click="onApproval('修改',scope.row.approveId)"
+						>
+							审批
+						</el-button>
+						<el-button
+							size="small"
+							text
+							type="primary"
+							v-if="scope.row.approveStatus === 2 && scope.row.checkApprove === false"
+							@click="onApproval('详情',scope.row.id)"
+						>
+              查看审批
+						</el-button>
+						<el-button size="small" text type="primary" v-if="scope.row.approveStatus === 3" @click="onApprovalProcess(scope.row.id)">
+							查看审批流程
+						</el-button>
+						<!--            <el-button size="small" text type="primary" @click="jumpFrom(0)">-->
+						<!--              <el-icon style="margin-right: 5px;">-->
+						<!--                <EditPen />-->
+						<!--              </el-icon>修改-->
+						<!--            </el-button>-->
+						<!--            <el-button  size="small" text type="primary" @click="abolish(0)">-->
+						<!--             发起审批-->
+						<!--            </el-button>-->
+						<el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+							<el-icon>
+								<Delete /> </el-icon
+							>删除
+						</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					class="mt15"
+					background
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="onHandleSizeChange"
+					@current-change="onHandleCurrentChange"
+				/>
+			</div>
+		</el-card>
+		<OpenAdd ref="addRef" @myAdd="onMyAdd" />
+		<AbolishLibrary ref="abolishRef" @myAdd="onMyAdd" />
+		<InitiateApproval ref="initiateApprovalRef" @myAdd="onMyAdd" />
+		<Approval ref="approvalRef" @myAdd="onMyAdd" />
+    <ApprovalProcess ref="processRef" @myAdd="onMyAdd" />
+		<!--    <StartUp ref="startRef" @myAdd="startUp"/>-->
+		<el-dialog v-model="dialogFormVisible" width="30%" title="启动" :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form :model="form" ref="ruleFormRef" label-width="80px">
+				<el-form-item label="备注">
+					<el-input v-model="form.remark" type="textarea" autocomplete="off" />
+				</el-form-item>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="dialogFormVisible = false">取消</el-button>
+					<el-button type="primary" @click="onDetermine">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { reactive, onMounted, ref, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+// import {useRouter} from "vue-router"
+import type {} from // FormInstance,
+'element-plus';
+import { Plus, Edit, Delete, Upload, Download, Refresh, VideoPause, VideoPlay, EditPen, FullScreen } from '@element-plus/icons-vue';
+import OpenAdd from '/@/views/contingencyManagement/panManagement/component/openAdd.vue';
+// import StartUp from '/@/views/contingencyManagement/panManagement/component/startUp.vue';
+import AbolishLibrary from '/@/views/contingencyManagement/panManagement/component/abolishLibrary.vue';
+import ApprovalProcess from '/@/views/contingencyManagement/panManagement/component/approvalProcess.vue';
+import InitiateApproval from '/@/views/contingencyManagement/panManagement/component/initiateApproval.vue';
+import Approval from '/@/views/contingencyManagement/panManagement/component/approval.vue';
+// import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+import { emergencyPlanLogApi } from '/@/api/contingencyManagement/emergencyPlanLog';
+
+export default defineComponent({
+	name: 'systemUser',
+	components: {
+		OpenAdd,
+		// StartUp,
+		InitiateApproval,
+		AbolishLibrary,
+		Approval,
+		EditPen,
+		Plus,
+		Edit,
+		Delete,
+		Upload,
+		Download,
+		Refresh,
+		VideoPause,
+		VideoPlay,
+    ApprovalProcess,
+		// UpData,
+		emergencyPlanApi,
+	},
+	setup(prop, { emit }) {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				name: '',
+				type: '',
+				abolishStatus: false,
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+		// 列表数据请求
+		const onSubmit = async () => {
+			let res = await emergencyPlanApi().getEmergencyPlanList(listQuery);
+			if (res.data.code === '200') {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					type: 'error',
+					message: res.data.msg,
+				});
+			}
+		};
+		// 重置
+		const submitReset = () => {
+			listQuery.searchParams.name = '';
+			listQuery.searchParams.type = '';
+			onSubmit();
+		};
+		const warning = ref(true);
+		const danger = ref(true);
+
+		// 上传
+		// const upShow=ref()
+		// const upButton=()=>{
+		//   upShow.value.openDialog()
+		// }
+		// 启动弹窗
+		const isDialogFormVisible = (data: any) => {
+			dialogFormVisible.value = true;
+			form.value.planId = data;
+		};
+		const dialogFormVisible = ref(false);
+		const form = ref({
+			remark: '',
+		});
+		const onDetermine = () => {
+			dialogFormVisible.value = false;
+			emergencyPlanLogApi()
+				.addEmergencyPlanLog(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+					}
+				});
+			form.value = {
+				remark: '',
+			};
+		};
+		// 打开新增用户弹窗
+		const addRef = ref();
+		const onOpenAdd = () => {
+			addRef.value.openDialog('新建应急预案管理', false);
+		};
+		// 新增后刷新
+		const onMyAdd = (e: boolean) => {
+			if (e) {
+				onSubmit();
+			} else {
+				onSubmit();
+			}
+		};
+		// 打开修改应急预案管理弹窗
+		const onEdit = (val: string, row: object) => {
+			if (val == '详情') {
+				addRef.value.openDialog('查看应急预案管理', row, true);
+			} else {
+				addRef.value.openDialog('修改应急预案管理', row, false);
+			}
+		};
+
+		//打开废止库弹窗
+		const abolishRef = ref();
+		const onabolishLibrary = () => {
+			abolishRef.value.openDialog();
+		};
+		// 废止
+		const abolish = (data: any) => {
+			ElMessageBox.confirm('确定要废止所选项吗?', '提示', {
+				confirmButtonText: '确认',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencyPlanApi()
+						.EmergencyTeam(data)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+
+		// 删除用户
+		const onRowDel = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确认',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencyPlanApi()
+						.deleteEmergencyTeam(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+
+		const deleteAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deleteAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		// 多选删除
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					emergencyPlanApi()
+						.deleteEmergencyTeam(deleteAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								onSubmit();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+								onSubmit();
+							}
+						});
+				})
+				.catch(() => {});
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const onHandleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const onHandleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+
+		// const router=useRouter()
+		// 修改跳转
+		// const jumpFrom=(data:string)=>{
+		//   router.push({
+		//     path:"/processForm",
+		//     query:{
+		//       type:data
+		//     }
+		//   })
+		// }
+		// 发起审批跳转
+		// const abolish=(data:string)=>{
+		//   router.push({
+		//     path:"/abolishDialog",
+		//     query:{
+		//       type:data
+		//     }
+		//   })
+		// }
+		// 发起审批弹窗
+		const initiateApprovalRef = ref();
+		const initiateApproval = (row: object) => {
+			initiateApprovalRef.value.openDialog('发起审批',row, true);
+		};
+		// 审批
+		const approvalRef = ref();
+		const onApproval = (val: string,row: object) => {
+      if(val=='详情'){
+        approvalRef.value.openDialog('查看审批', row, true);
+      } else {
+        approvalRef.value.openDialog('修改审批', row, false);
+      }
+		};
+    // 审批流程
+    const processRef = ref();
+    const onApprovalProcess = () => {
+      processRef.value.openDialog();
+    };
+
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		// 页面加载时
+		onMounted(() => {
+			onSubmit();
+		});
+		return {
+			tableData,
+			onSubmit,
+			onOpenAdd, //新增
+			addRef,
+			onabolishLibrary,
+			abolishRef,
+			abolish,
+			onRowDel,
+			onHandleSizeChange,
+			onHandleCurrentChange,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			listQuery,
+			pageIndex,
+			pageSize,
+			total,
+			submitReset,
+			onMounted,
+			deleteAll,
+			warning,
+			danger,
+			handleSelectionChange,
+			onMyAdd,
+			onDeleteAll,
+			dialogFormVisible,
+			isDialogFormVisible,
+			form,
+			emit,
+			onDetermine,
+			onEdit,
+			initiateApproval,
+			initiateApprovalRef,
+			onApproval,
+			approvalRef,
+      onApprovalProcess,
+      processRef,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.table_Box {
+	padding: 20px;
+	background-color: #fff;
+}
+.tableForm {
+	margin-top: 10px;
+}
+/*按钮行*/
+.button_Line {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+	margin-bottom: 10px;
+}
+.el-form .el-form-item {
+	margin-bottom: 0 !important;
+}
+.el-button--text {
+	margin-right: 15px;
+}
+.el-select {
+	width: 300px;
+}
+.el-input {
+	width: 300px;
+}
+.dialog-footer button:first-child {
+	margin-right: 10px;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer {
+	border-top: 1px solid #e8e8e8;
+	border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+	border-bottom: 1px solid #e8e8e8;
+	margin-right: 0;
+	border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+	background-color: #f6f7fa;
+	font-weight: 400;
+	color: #909399;
+}
+.el-table .sort-caret.ascending {
+	border-bottom-color: #c0c4cc;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+	margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/processForm/component/formInformationTop.vue b/src/components/contingencyManagement/processForm/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/components/contingencyManagement/processForm/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/components/contingencyManagement/processForm/component/formInformationTops.vue b/src/components/contingencyManagement/processForm/component/formInformationTops.vue
new file mode 100644
index 0000000..53eed6a
--- /dev/null
+++ b/src/components/contingencyManagement/processForm/component/formInformationTops.vue
@@ -0,0 +1,312 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案名称">
+					<el-input v-model="form.name" placeholder="请填写预案名称"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="适用部门">
+          <el-tree-select
+              class="select"
+              placeholder="请选择"
+              v-model="value"
+              :data="data"
+              :render-after-expand="false"
+              show-checkbox
+              multiple
+              clearable
+          />
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案类型">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="综合应急预案" value="shanghai" />
+            <el-option label="现场处置方案" value="beijing" />
+            <el-option label="专项应急预案" value="shanghai" />
+            <el-option label="其它预案" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="危险源关联">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="是" value="shanghai" />
+            <el-option label="否" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案级别">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="公司及" value="shanghai" />
+            <el-option label="分厂级" value="beijing" />
+            <el-option label="车间级" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="编写人">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser"/>
+            </template>
+          </el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="编写部门"  placeholder="请选择">
+          <el-tree-select
+              class="select"
+              v-model="value2"
+              :data="dataSelect"
+              :render-after-expand="false"
+              multiple
+              check-strictly
+              check-on-click-node
+              clearable
+          />
+				</el-form-item>
+			</el-col>
+      <el-col :span="12">
+        <el-form-item label="发布实施日期">
+          <el-date-picker v-model="datetime" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+        </el-form-item>
+      </el-col>
+		</el-row>
+    <el-row>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="应急队伍" prop="telephone" @click="daiInpt" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search"/>
+            </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="预案附件">
+          <el-upload
+              v-model:file-list="fileList"
+              class="upload-demo"
+              action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+              :on-change="handleChange"
+          >
+            <el-button type="primary"
+            >点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+                添加相关附件
+              </div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="区域名称" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search" @click="regionsDialog"/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+    </el-row>
+	</el-form>
+  <checkTemplate ref="ShowRef"/>
+  <userSelections ref="userRef"/>
+  <RegionsDialog ref="openRef"/>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  ref,
+  reactive
+} from 'vue';
+import {
+  Search
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from "/@/components/checkTemplate/index.vue"
+import RegionsDialog from "/@/components/regionsDialog/index.vue";
+export default defineComponent({
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+	setup() {
+		const form = reactive({
+			name: '',
+      value: '',
+      value2: '',
+      teamLeader: '',
+
+      // data: '',
+      // dataSelect: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+
+    // 可选择树形选择框
+    const value = ref()
+
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 树形选择框
+    const value2 = ref()
+
+    const dataSelect = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 应急队伍弹窗
+    const ShowRef=ref()
+    const daiInpt=()=>{
+      ShowRef.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开编写人选择用户弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    // 日期选择
+    const datetime = ref('')
+		return {
+			form,
+      value,
+      data,
+      value2,
+      dataSelect,
+      openUser,
+      userRef,
+      Search,
+      ShowRef,
+      daiInpt,
+      openRef,
+      datetime,
+      regionsDialog,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0;
+}
+.select{
+  width: 100%;
+}
+.select ::v-deep .el-select{
+  width: 100%;
+}
+</style>
diff --git a/src/components/contingencyManagement/processForm/component/lowerPlate.vue b/src/components/contingencyManagement/processForm/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/components/contingencyManagement/processForm/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期">
+						<el-date-picker v-model="form.date1" type="date" placeholder="下级审批日期" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+	    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/processForm/processForm.vue b/src/components/contingencyManagement/processForm/processForm.vue
new file mode 100644
index 0000000..98218a0
--- /dev/null
+++ b/src/components/contingencyManagement/processForm/processForm.vue
@@ -0,0 +1,137 @@
+<template>
+  <div class="system-user-container">
+	<h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+	<div class="box">
+	<el-menu
+		:default-active="activeIndex"
+		class="el-menu-demo"
+		background-color="#ebeef5"
+		text-color="#fff"
+		active-text-color="#fff"
+		mode="horizontal"
+		@select="handleSelect"
+	>
+		<el-menu-item index="1">表单信息</el-menu-item>
+		<el-menu-item index="2">流程图</el-menu-item>
+	</el-menu>
+	<div v-if="activeIndex == 1" class="navType">
+		<formInformationTop v-if="false"></formInformationTop>
+		<formInformationTops></formInformationTops>
+	</div>
+	<div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+		<div class="title2">流程图</div>
+		<div style="width:100%;height:400px"></div>
+	</div>
+	</div>
+	<lowerPlate></lowerPlate>
+	<div class="btns">
+		<el-button type="primary">启动</el-button>
+	</div>
+  </div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+	components:{lowerPlate,formInformationTop,formInformationTops},
+	setup() {
+		const activeIndex = ref('1');
+		const handleSelect = (key: string, keyPath: string[]) => {
+			// console.log(key, keyPath);
+			activeIndex.value = key;
+		};
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+	
+		const router=useRouter()
+		const Type=onMounted(()=>{
+			// console.log("xxxxxxx",router)
+		})
+		
+		return {
+			activeIndex,
+			handleSelect,
+			form,
+			router,
+			Type
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+  padding: 15px;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+
+/*弹窗底部边框线*/
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+/*弹窗顶部边框线*/
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
diff --git a/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue b/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue b/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue
new file mode 100644
index 0000000..8a1f2a5
--- /dev/null
+++ b/src/components/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue
@@ -0,0 +1,440 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="演练名称">
+					<el-input v-model="form.name" placeholder="请填写预案名称" disabled></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="演练地点">
+          <el-input v-model="form.teamName" placeholder="请填写演练地点" disabled></el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="主办部门">
+          <el-tree-select
+              v-model="form.responsibleDepartment"
+              :data="data" class="w100"
+              placeholder="请选择"
+              disabled
+          />
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+        <el-form-item label="演练方式" prop="teamLevel">
+          <el-select v-model="form.teamLevel" class="w100" placeholder="请选择" disabled>
+            <el-option label="综合" value="admin"></el-option>
+            <el-option label="桌面" value="common3"></el-option>
+            <el-option label="专项" value="common2"></el-option>
+          </el-select>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+        <el-form-item label="应急预案" prop="telephone" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" @click="daiInpt" disabled/>
+            </template>
+          </el-input>
+        </el-form-item>
+			</el-col>
+			<el-col :span="12">
+        <el-form-item label="演练级别" prop="teamPhone">
+          <el-select v-model="form.teamLevel" class="w100" placeholder="请选择" disabled>
+            <el-option label="公司级" value="admin"></el-option>
+            <el-option label="分厂级" value="common"></el-option>
+            <el-option label="车间级" value="common1"></el-option>
+          </el-select>
+        </el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+        <el-form-item label="计划定制日期" prop="teamPhone">
+          <el-date-picker v-model="datetime" type="datetime" placeholder="选择日期时间" disabled style="width: 100%" />
+        </el-form-item>
+			</el-col>
+      <el-col :span="12">
+        <el-form-item label="计划演练日期" prop="teamPhone">
+          <el-date-picker v-model="drillDate" type="datetime" placeholder="选择日期时间" disabled style="width: 100%" />
+        </el-form-item>
+      </el-col>
+		</el-row>
+    <el-row>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="修改时间" prop="teamPhone">
+          <el-date-picker v-model="editDate" class="w100" type="datetime" placeholder="选择日期时间" disabled style="width: 100%" />
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="计划定制人" prop="teamPhone">
+          <el-input v-model="form.planCustomizer" disabled placeholder="请填写演练地点"></el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="制定部门" prop="telephone">
+          <el-tree-select
+              v-model="form.responsibleDepartment"
+              :data="data" class="w100"
+              placeholder="请选择"
+              disabled
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="演练人员" prop="telephone" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser" disabled/>
+            </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="演练目的" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请填写演练目的"
+              class="input-with-select textarea"
+              type="textarea"
+              disabled
+          >
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="演练负责人" prop="telephone" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser" disabled/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="保险措施" prop="teamName">
+          <el-input v-model="form.teamName" placeholder="请填写演练名称" disabled></el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="演练经费" prop="teamName">
+          <el-input v-model="form.teamName" placeholder="请填写演练名称" disabled></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="备注信息" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请填写备注信息"
+              class="input-with-select textarea"
+              type="textarea"
+              disabled
+          >
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;">
+        <el-form-item label="预案附件">
+          <el-upload
+              v-model:file-list="fileList"
+              class="upload-demo"
+              action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+              :on-change="handleChange"
+              disabled
+          >
+            <el-button type="primary" disabled
+            >点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+                添加相关附件
+              </div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-col>
+    </el-row>
+	</el-form>
+  <checkTemplate ref="ShowRef"/>
+  <userSelections ref="userRef"/>
+  <RegionsDialog ref="openRef"/>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  ref,
+  reactive
+} from 'vue';
+import {
+  Search
+} from '@element-plus/icons-vue'
+import type {
+  UploadUserFile,
+  // FormRules,
+} from 'element-plus'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from "/@/components/checkTemplate/index.vue"
+import RegionsDialog from "/@/components/regionsDialog/index.vue";
+export default defineComponent({
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+	setup() {
+		const form = reactive({
+			name: '',
+      teamName: '',
+      responsibleDepartment: '',
+      teamLevel: '',
+      teamLeader: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+    // 上传附件
+    const fileList = ref<UploadUserFile[]>([])
+    // 可选择树
+    const treeSelect = ref()
+    const tree = [
+      {
+        value: '1',
+        label: 'Level one 1',
+        children: [
+          {
+            value: '1-1',
+            label: 'Level two 1-1',
+            children: [
+              {
+                value: '1-1-1',
+                label: 'Level three 1-1-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: 'Level one 2',
+        children: [
+          {
+            value: '2-1',
+            label: 'Level two 2-1',
+            children: [
+              {
+                value: '2-1-1',
+                label: 'Level three 2-1-1',
+              },
+            ],
+          },
+          {
+            value: '2-2',
+            label: 'Level two 2-2',
+            children: [
+              {
+                value: '2-2-1',
+                label: 'Level three 2-2-1',
+              },
+            ],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: 'Level one 3',
+        children: [
+          {
+            value: '3-1',
+            label: 'Level two 3-1',
+            children: [
+              {
+                value: '3-1-1',
+                label: 'Level three 3-1-1',
+              },
+            ],
+          },
+          {
+            value: '3-2',
+            label: 'Level two 3-2',
+            children: [
+              {
+                value: '3-2-1',
+                label: 'Level three 3-2-1',
+              },
+            ],
+          },
+        ],
+      },
+    ]
+    //定义树形下拉框
+    const responsibleDepartment = ref()
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '经营班子',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '2',
+        label: '生产运行部',
+        children: [
+          {
+            value: '2-1',
+            label: '灌装一班',
+            children: []
+          },
+          {
+            value: '2-2',
+            label: '工艺四班',
+            children: [],
+          },
+        ],
+      },
+      {
+        value: '3',
+        label: '设备部',
+        children: [
+          {
+            value: '3-1',
+            label: '仪表班',
+            children: [],
+          },
+          {
+            value: '3-2',
+            label: '机修班',
+            children: [],
+          },
+        ],
+      },
+    ]
+    // 计划定制日期
+    const datetime = ref('')
+    // 计划演练日期
+    const drillDate = ref('')
+    // 修改时间
+    const editDate = ref('')
+    // 应急队伍弹窗
+    const ShowRef=ref()
+    const daiInpt=()=>{
+      ShowRef.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开编写人选择用户弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+		return {
+			form,
+      data,
+      treeSelect,
+      tree,
+      drillDate,
+      editDate,
+      openUser,
+      userRef,
+      Search,
+      ShowRef,
+      daiInpt,
+      responsibleDepartment,
+      openRef,
+      datetime,
+      regionsDialog,
+      fileList,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0;
+}
+.select{
+  width: 100%;
+}
+.select ::v-deep .el-select{
+  width: 100%;
+}
+</style>
diff --git a/src/components/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue b/src/components/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/components/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期">
+						<el-date-picker v-model="form.date1" type="date" placeholder="下级审批日期" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+	    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue b/src/components/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue
new file mode 100644
index 0000000..98218a0
--- /dev/null
+++ b/src/components/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue
@@ -0,0 +1,137 @@
+<template>
+  <div class="system-user-container">
+	<h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+	<div class="box">
+	<el-menu
+		:default-active="activeIndex"
+		class="el-menu-demo"
+		background-color="#ebeef5"
+		text-color="#fff"
+		active-text-color="#fff"
+		mode="horizontal"
+		@select="handleSelect"
+	>
+		<el-menu-item index="1">表单信息</el-menu-item>
+		<el-menu-item index="2">流程图</el-menu-item>
+	</el-menu>
+	<div v-if="activeIndex == 1" class="navType">
+		<formInformationTop v-if="false"></formInformationTop>
+		<formInformationTops></formInformationTops>
+	</div>
+	<div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+		<div class="title2">流程图</div>
+		<div style="width:100%;height:400px"></div>
+	</div>
+	</div>
+	<lowerPlate></lowerPlate>
+	<div class="btns">
+		<el-button type="primary">启动</el-button>
+	</div>
+  </div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+	components:{lowerPlate,formInformationTop,formInformationTops},
+	setup() {
+		const activeIndex = ref('1');
+		const handleSelect = (key: string, keyPath: string[]) => {
+			// console.log(key, keyPath);
+			activeIndex.value = key;
+		};
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+	
+		const router=useRouter()
+		const Type=onMounted(()=>{
+			// console.log("xxxxxxx",router)
+		})
+		
+		return {
+			activeIndex,
+			handleSelect,
+			form,
+			router,
+			Type
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+  padding: 15px;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+
+/*弹窗底部边框线*/
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+/*弹窗顶部边框线*/
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
diff --git a/src/components/emergencySupplies/index.vue b/src/components/emergencySupplies/index.vue
index 903a5fa..8bb4aba 100644
--- a/src/components/emergencySupplies/index.vue
+++ b/src/components/emergencySupplies/index.vue
@@ -78,7 +78,7 @@
   FullScreen
 } from '@element-plus/icons-vue';
 import { ElMessage } from 'element-plus';
-import {emergencySuppliesApi} from "/@/api/emergencyResources";
+import {emergencySuppliesApi} from "/@/api/contingencyManagement/emergencyResources";
 export default defineComponent({
   setup(props, { emit }) {
     const dialogVisible = ref<boolean>(false);
diff --git a/src/components/equipmentDailog/Dailog.vue b/src/components/equipmentDailog/Dailog.vue
index 249d42e..f56333f 100644
--- a/src/components/equipmentDailog/Dailog.vue
+++ b/src/components/equipmentDailog/Dailog.vue
@@ -1,20 +1,20 @@
 <template>
-	<el-dialog v-model="dialogVisible" :fullscreen="full" :before-close="resetForm" draggable :title="titles" width="60%">
+	<el-dialog v-model="dialogVisible" :fullscreen="full" @close="resetForm(ruleFormRef)" draggable :title="titles" width="60%">
 		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-		<el-form :model="form" :disabled="disabled" label-width="120px" class="formType">
-			<el-form-item label="装置设施名称" size="default">
+		<el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px" class="formType">
+			<el-form-item label="装置设施名称" size="default" prop="qName">
 				<el-input v-model="form.qName" placeholder="请填写装置设施名称" />
 			</el-form-item>
-			<el-form-item label="装置设施位号" size="default">
+			<el-form-item label="装置设施位号" size="default" prop="positionNum">
 				<el-input v-model="form.positionNum" placeholder="请填写装置设施位号" />
 			</el-form-item>
-			<el-form-item label="装置设施用途" size="default">
+			<el-form-item label="装置设施用途" size="default" prop="qUsage">
 				<el-input v-model="form.qUsage" placeholder="请填写装置设施用途" />
 			</el-form-item>
-			<el-form-item label="装置设施型号" size="default">
+			<el-form-item label="装置设施型号" size="default" prop="model">
 				<el-input v-model="form.model" placeholder="请填写装置设施型号" />
 			</el-form-item>
-			<el-form-item label="类型/类别外键" size="default">
+			<el-form-item label="类型/类别外键" size="default" prop="equipmentTypeId">
 				<el-input v-model="form.equipmentTypeId" placeholder="请选择">
 					<template #append>
 						<el-button :icon="Search" @click="opencategory"></el-button>
@@ -28,43 +28,43 @@
 					</template>
 				</el-input>
 			</el-form-item> -->
-			<el-form-item label="单位部门" size="default">
+			<el-form-item label="单位部门" size="default" prop="departmentId">
 				<el-tree-select v-model="form.departmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
 			</el-form-item>
-			<el-form-item label="设置部位" size="default">
+			<el-form-item label="设置部位" size="default" prop="setPart">
 				<el-input v-model="form.setPart" placeholder="请填写设置部位" />
 			</el-form-item>
-			<el-form-item label="生产日期" size="default">
+			<el-form-item label="生产日期" size="default" prop="produceTime">
 				<el-date-picker v-model="form.produceTime" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="使用期限(天)" size="default">
+			<el-form-item label="使用期限(天)" size="default" prop="useEndDay">
 				<el-input v-model="form.useEndDay" placeholder="请填写使用期限" />
 			</el-form-item>
-			<el-form-item label="生命周期" size="default">
+			<el-form-item label="生命周期" size="default" prop="lifeCycle">
 				<el-select v-model="form.lifeCycle" placeholder="请选择" style="width: 100%">
-					<el-option label="已投用" value="1" />
-					<el-option label="库存中" value="2" />
-					<el-option label="报废" value="3" />
+					<el-option label="已投用" :value="1" />
+					<el-option label="库存中" :value="2" />
+					<el-option label="报废"   :value="3" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="投用日期" size="default">
+			<el-form-item label="投用日期" size="default" prop="useDate">
 				<el-date-picker v-model="form.useDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="维修状态" size="default">
+			<el-form-item label="维修状态" size="default" prop="repairStatus">
 				<el-select v-model="form.repairStatus" placeholder="请选择" style="width: 100%">
-					<el-option label="维修中" value="1" />
-					<el-option label="已修好" value="2" />
+					<el-option label="维修中" :value="1" />
+					<el-option label="已修好" :value="2" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="停用状态" size="default">
+			<el-form-item label="停用状态" size="default" prop="stopStatus">
 				<el-select v-model="form.stopStatus" placeholder="请选择" style="width: 100%">
-					<el-option label="停用" value="1" />
-					<el-option label="在用" value="2" />
-					<el-option label="维修" value="3" />
-					<el-option label="报废" value="4" />
+					<el-option label="停用" :value="1" />
+					<el-option label="在用" :value="2" />
+					<el-option label="维修" :value="3" />
+					<el-option label="报废" :value="4" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="上次检查日期" size="default">
+			<el-form-item label="上次检查日期" size="default" prop="previousCheckDate">
 				<el-date-picker
 					v-model="form.previousCheckDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -73,10 +73,10 @@
 					style="width: 100%"
 				/>
 			</el-form-item>
-			<el-form-item label="上次检测日期" size="default">
+			<el-form-item label="上次检测日期" size="default" prop="previousTestDate">
 				<el-date-picker v-model="form.previousTestDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="上次保养日期" size="default">
+			<el-form-item label="上次保养日期" size="default" prop="previousTakecareDate">
 				<el-date-picker
 					v-model="form.previousTakecareDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -85,23 +85,23 @@
 					style="width: 100%"
 				/>
 			</el-form-item>
-			<el-form-item label="下次检查日期" size="default">
+			<el-form-item label="下次检查日期" size="default" prop="nextCheckDate">
 				<el-date-picker v-model="form.nextCheckDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="下次检测日期" size="default">
+			<el-form-item label="下次检测日期" size="default" prop="nextTestDate">
 				<el-date-picker v-model="form.nextTestDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="下次保养日期" size="default">
+			<el-form-item label="下次保养日期" size="default" prop="nextTakecareDate">
 				<el-date-picker v-model="form.nextTakecareDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="负责人" size="default">
-				<el-input v-model="form.leadingPersonId" placeholder="请选择">
+			<el-form-item label="负责人" size="default" prop="leadingPersonName">
+				<el-input v-model="form.leadingPersonName" placeholder="请选择">
 					<template #append>
-						<el-button :icon="Search" @click="openUser(0)"></el-button>
+						<el-button :icon="Search" @click="openUser(1)"></el-button>
 					</template>
 				</el-input>
 			</el-form-item>
-			<el-form-item label="负责人部门" size="default">
+			<el-form-item label="负责人部门" size="default" prop="leadingPersonDepartmentId">
 				<el-tree-select
 					v-model="form.leadingPersonDepartmentId"
 					:data="data"
@@ -111,80 +111,80 @@
 					placeholder="请选择"
 				/>
 			</el-form-item>
-			<el-form-item label="供应商" size="default">
+			<el-form-item label="供应商" size="default" prop="supplyName">
 				<el-input v-model="form.supplyName" placeholder="请填写供应商" />
 			</el-form-item>
-			<el-form-item label="使用说明" size="default">
+			<el-form-item label="使用说明" size="default" prop="useMemo">
 				<el-input v-model="form.useMemo" placeholder="请填写使用说明" />
 			</el-form-item>
-			<el-form-item label="是否检查" size="default">
+			<el-form-item label="是否检查" size="default" prop="isNeedCheck">
 				<el-select v-model="form.isNeedCheck" placeholder="请选择" style="width: 100%">
-					<el-option label="是" value="1" />
-					<el-option label="否" value="2" />
+					<el-option label="是" :value="1" />
+					<el-option label="否" :value="2" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="检查周期" size="default">
+			<el-form-item label="检查周期" size="default" prop="checkCycle">
 				<el-input v-model="form.checkCycle" placeholder="请填写检查周期" />
 			</el-form-item>
-			<el-form-item label="检查提前提醒" size="default">
+			<el-form-item label="检查提前提醒" size="default" prop="checkWarn">
 				<el-input v-model="form.checkWarn" placeholder="请填写检查提前提醒" />
 			</el-form-item>
-			<el-form-item label="是否检测" size="default">
+			<el-form-item label="是否检测" size="default" prop="isNeedTest">
 				<el-select v-model="form.isNeedTest" placeholder="请选择" style="width: 100%">
-					<el-option label="是" value="1" />
-					<el-option label="否" value="2" />
+					<el-option label="是" :value="1" />
+					<el-option label="否" :value="2" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="检测周期" size="default">
+			<el-form-item label="检测周期" size="default" prop="testCycle">
 				<el-input v-model="form.testCycle" placeholder="请填写检测周期" />
 			</el-form-item>
-			<el-form-item label="检测提前提醒" size="default">
+			<el-form-item label="检测提前提醒" size="default" prop="testWarn">
 				<el-input v-model="form.testWarn" placeholder="请填写检测提前提醒" />
 			</el-form-item>
-			<el-form-item label="是否保养" size="default">
+			<el-form-item label="是否保养" size="default" prop="isNeedTakecare">
 				<el-select v-model="form.isNeedTakecare" placeholder="请选择" style="width: 100%">
-					<el-option label="是" value="1" />
-					<el-option label="否" value="2" />
+					<el-option label="是" :value="1" />
+					<el-option label="否" :value="2" />
 				</el-select>
 			</el-form-item>
-			<el-form-item label="检查内容" size="default">
+			<el-form-item label="检查内容" size="default" prop="checkContent">
 				<el-input v-model="form.checkContent" placeholder="请填写检查内容" />
 			</el-form-item>
-			<el-form-item label="负责部门" size="default">
+			<el-form-item label="负责部门" size="default" prop="leadingDepartmentId">
 				<el-tree-select v-model="form.leadingDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
 			</el-form-item>
-			<el-form-item label="检查指标" size="default">
+			<el-form-item label="检查指标" size="default" prop="checkPoint">
 				<el-input v-model="form.checkPoint" placeholder="请填写检查指标" />
 			</el-form-item>
-			<el-form-item label="预警值" size="default">
+			<el-form-item label="预警值" size="default" prop="alertNum">
 				<el-input v-model="form.alertNum" placeholder="请填写预警值" />
 			</el-form-item>
-			<el-form-item label="联锁值" size="default">
+			<el-form-item label="联锁值" size="default" prop="lockNum">
 				<el-input v-model="form.lockNum" placeholder="请填写联锁值" />
 			</el-form-item>
-			<el-form-item label="停用理由" size="default">
+			<el-form-item label="停用理由" size="default" prop="stopReason">
 				<el-input v-model="form.stopReason" placeholder="请填写停用理由" />
 			</el-form-item>
-			<el-form-item label="停用后措施" size="default">
+			<el-form-item label="停用后措施" size="default" prop="afterStopStep">
 				<el-input v-model="form.afterStopStep" placeholder="请填写停用后措施" />
 			</el-form-item>
-			<el-form-item label="实际停用日期" size="default">
+			<el-form-item label="实际停用日期" size="default" prop="actualStopDate">
 				<el-date-picker v-model="form.actualStopDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="停用提交人" size="default">
-				<el-input v-model="form.stopSubmitPersonId" placeholder="请选择">
+			<el-form-item label="停用提交人" size="default" prop="stopSubmitPersonName">
+				<el-input v-model="form.stopSubmitPersonName" placeholder="请选择">
 					<template #append>
-						<el-button :icon="Search" @click="openUser(1)"></el-button>
+						<el-button :icon="Search" @click="openUser(2)"></el-button>
 					</template>
 				</el-input>
 			</el-form-item>
-			<el-form-item label="停用提交日期" size="default">
+			<el-form-item label="停用提交日期" size="default" prop="stopSubmitDate">
 				<el-date-picker v-model="form.stopSubmitDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
 			</el-form-item>
-			<el-form-item label="恢复理由" size="default">
+			<el-form-item label="恢复理由" size="default" prop="recoveryReason">
 				<el-input v-model="form.recoveryReason" placeholder="请填写恢复理由" />
 			</el-form-item>
-			<el-form-item label="恢复填报日期" size="default">
+			<el-form-item label="恢复填报日期" size="default" prop="recoverySubmitDate">
 				<el-date-picker
 					v-model="form.recoverySubmitDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -193,7 +193,7 @@
 					style="width: 100%"
 				/>
 			</el-form-item>
-			<el-form-item label="实际恢复日期" size="default">
+			<el-form-item label="实际恢复日期" size="default" prop="actualRecoveryDate">
 				<el-date-picker
 					v-model="form.actualRecoveryDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -202,10 +202,10 @@
 					style="width: 100%"
 				/>
 			</el-form-item>
-			<el-form-item label="报废理由" size="default">
+			<el-form-item label="报废理由" size="default" prop="destoryReason">
 				<el-input v-model="form.destoryReason" placeholder="请填写报废理由" />
 			</el-form-item>
-			<el-form-item label="报废填报日期" size="default">
+			<el-form-item label="报废填报日期" size="default" prop="destorySubmitDate">
 				<el-date-picker
 					v-model="form.destorySubmitDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -214,7 +214,7 @@
 					style="width: 100%"
 				/>
 			</el-form-item>
-			<el-form-item label="实际报废日期" size="default">
+			<el-form-item label="实际报废日期" size="default" prop="actualDestoryDate">
 				<el-date-picker
 					v-model="form.actualDestoryDate"
 					format="YYYY-MM-DD HH:mm:ss"
@@ -226,10 +226,10 @@
 		</el-form>
 		<el-tabs v-model="activeName" class="demo-tabs">
 			<el-tab-pane label="设备保养" name="first">
-				<el-button type="primary" size="default" @click="openMaintenance('新增', '')">新增</el-button>
+				<el-button type="primary" size="default" :disabled="disabled" @click="openMaintenance('新增', '')">新增</el-button>
 				<el-table :data="form.takecareDetailList" style="width: 100%">
 					<el-table-column align="center" prop="takecareMemo" label="保养情况" />
-					<el-table-column align="center" prop="leadingPersonId" label="保养负责人" />
+					<el-table-column align="center" prop="leadingPersonName" label="保养负责人" />
 					<el-table-column align="center" prop="takecareDate" :formatter="timeDate" label="保养日期" />
 					<el-table-column align="center" prop="leadingPersonDepartmentId" label="保养负责人单位" />
 					<el-table-column align="center" label="操作">
@@ -242,7 +242,7 @@
 				</el-table>
 			</el-tab-pane>
 			<el-tab-pane label="设备检测" name="second">
-				<el-button type="primary" size="default" @click="openDetect('新增', '')">新增</el-button>
+				<el-button type="primary" size="default" :disabled="disabled" @click="openDetect('新增', '')">新增</el-button>
 				<el-table :data="form.testDetailList" style="width: 100%">
 					<el-table-column align="center" prop="testPersonId" label="检测人" />
 					<el-table-column align="center" prop="testDate" :formatter="timeDate" label="检测日期" />
@@ -260,7 +260,7 @@
 				</el-table>
 			</el-tab-pane>
 			<el-tab-pane label="设备维修" name="third">
-				<el-button type="primary" size="default" @click="openRepair('新增', '')">新增</el-button>
+				<el-button type="primary" size="default" :disabled="disabled" @click="openRepair('新增', '')">新增</el-button>
 				<el-table :data="form.repaireDetailList" style="width: 100%">
 					<el-table-column align="center" prop="exceptionInfo" label="设施异常项" />
 					<el-table-column align="center" prop="repairStatus" label="维修状态" />
@@ -279,7 +279,7 @@
 				</el-table>
 			</el-tab-pane>
 			<el-tab-pane label="检查标准设置" name="fourth">
-				<el-button type="primary" size="default" @click="openStandard('新增', '')">新增</el-button>
+				<el-button type="primary" size="default" :disabled="disabled" @click="openStandard('新增', '')">新增</el-button>
 				<el-table :data="form.checkStandardeDetailList" style="width: 100%">
 					<el-table-column align="center" prop="indexNum" label="序号" width="75" />
 					<el-table-column align="center" prop="checkContent" label="检查内容" />
@@ -328,8 +328,8 @@
 		</el-tabs>
 		<template #footer>
 			<span class="dialog-footer">
-				<el-button @click="resetForm">关闭</el-button>
-				<el-button type="primary" @click="submitForm">确定</el-button>
+				<el-button @click="resetForm(ruleFormRef)">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
 			</span>
 		</template>
 	</el-dialog>
@@ -349,18 +349,18 @@
 import maintenanceDailog from './maintenanceDailog.vue';
 import detectDailog from './detectDailog.vue';
 import repairDailog from './repairDailog.vue';
-import {timeDate} from '/@/assets/index.ts'
+import { timeDate } from '/@/assets/index.ts';
 import standardDailog from './standardDailog.vue';
 import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
-import { ElMessage, ElMessageBox } from 'element-plus';
+import { ElMessage, ElMessageBox, FormInstance, FormRules } from 'element-plus';
 import type { UploadProps, UploadUserFile } from 'element-plus';
 import { facilityManagementApi } from '/@/api/facilityManagement';
 import { goalManagementApi } from '/@/api/goalManagement';
-import { number } from 'echarts';
 export default defineComponent({
 	components: { categoryDailog, regionDailog, DailogSearchUser, maintenanceDailog, detectDailog, repairDailog, standardDailog },
 	setup(props, { emit }) {
 		const dialogVisible = ref(false);
+		const ruleFormRef = ref<FormInstance>();
 		const form = ref({
 			supplyName: '',
 
@@ -409,6 +409,7 @@
 			checkPoint: '',
 
 			leadingPersonId: '',
+			leadingPersonName: '',
 
 			qName: '',
 
@@ -467,7 +468,7 @@
 			lockNum: '',
 
 			stopSubmitPersonId: '',
-
+			stopSubmitPersonName: '',
 			afterStopStep: '',
 
 			lifeCycle: '',
@@ -512,272 +513,94 @@
 						}
 					});
 		};
+		const rules = reactive<FormRules>({
+			qName: [],
+			positionNum: [],
+			qUsage: [],
+			model: [],
+			equipmentTypeId: [],
+			departmentId: [],
+			setPart: [],
+			produceTime: [],
+			useEndDay: [],
+			lifeCycle: [],
+			useDate: [],
+			repairStatus: [],
+			stopStatus: [],
+			previousCheckDate: [],
+			previousTestDate: [],
+			previousTakecareDate: [],
+			nextCheckDate: [],
+			nextTestDate: [],
+			nextTakecareDate: [],
+			leadingPersonName: [],
+			leadingPersonDepartmentId: [],
+			supplyName: [],
+			useMemo: [],
+			isNeedCheck: [],
+			checkCycle: [],
+			checkWarn: [],
+			isNeedTest: [],
+			testCycle: [],
+			testWarn: [],
+			isNeedTakecare: [],
+			checkContent: [],
+			leadingDepartmentId: [],
+			checkPoint: [],
+			alertNum: [],
+			lockNum: [],
+			stopReason: [],
+			afterStopStep: [],
+			actualStopDate: [],
+			stopSubmitPersonName: [],
+			stopSubmitDate: [],
+			recoveryReason: [],
+			recoverySubmitDate: [],
+			actualRecoveryDate: [],
+			destoryReason: [],
+			destorySubmitDate: [],
+			actualDestoryDate: [],
+		});
 		// 提交
-		const submitForm = () => {
-			form.value.delTakecareDetails = deleteAId.value.toString();
-			form.value.delTestDetails = deleteBId.value.toString();
-			form.value.delRepaireDetails = deleteCId.value.toString();
-			form.value.delCheckStandardeDetails = deleteDId.value.toString();
-			dialogVisible.value = false;
-			facilityManagementApi()
-				.getequipmentInfoAddOrUpdate(form.value)
-				.then((res) => {
-					if (res.data.code == 200) {
-						ElMessage({
-							message: res.data.msg,
-							type: 'success',
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					form.value.delTakecareDetails = deleteAId.value.toString();
+					form.value.delTestDetails = deleteBId.value.toString();
+					form.value.delRepaireDetails = deleteCId.value.toString();
+					form.value.delCheckStandardeDetails = deleteDId.value.toString();
+					dialogVisible.value = false;
+					facilityManagementApi()
+						.getequipmentInfoAddOrUpdate(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('navAddorUpdata');
+							} else {
+								ElMessage.error(res.data.msg);
+							}
 						});
-						emit('navAddorUpdata');
-					} else {
-						ElMessage.error(res.data.msg);
-					}
-				});
-			form.value = {
-				supplyName: '',
-
-				nextTestDate: '',
-
-				qUsage: '',
-
-				departmentId: '',
-
-				produceTime: '',
-
-				actualStopDate: '',
-
-				takecareDetailList: [],
-
-				infoType: '',
-
-				leadingDepartmentId: '',
-
-				useEndDay: '',
-
-				previousTakecareDate: '',
-
-				previousCheckDate: '',
-
-				model: '',
-
-				stopStatus: '',
-
-				testWarn: '',
-
-				stopSubmitDate: '',
-
-				repairStatus: '',
-
-				takecareStardardeDetailList: [
-					{
-						filePath: '123',
-					},
-				],
-
-				nextCheckDate: '',
-
-				checkCycle: '',
-
-				checkPoint: '',
-
-				leadingPersonId: '',
-
-				qName: '',
-
-				nextTakecareDate: '',
-
-				setPart: '',
-
-				checkStandardeDetailList: [],
-
-				actualDestoryDate: '',
-
-				isNeedTest: '',
-
-				alertNum: '',
-
-				checkContent: '',
-
-				useMemo: '',
-
-				previousTestDate: '',
-
-				isNeedTakecare: '',
-
-				destoryReason: '',
-
-				checkDetailList: [],
-
-				positionNum: '',
-
-				testCycle: '',
-
-				recoveryReason: '',
-
-				isNeedCheck: '',
-
-				actualRecoveryDate: '',
-
-				leadingPersonDepartmentId: '',
-
-				stopReason: '',
-
-				destorySubmitDate: '',
-
-				testDetailList: [],
-
-				checkWarn: '',
-
-				repaireDetailList: [],
-
-				equipmentTypeId: 1,
-
-				useDate: '',
-
-				recoverySubmitDate: '',
-
-				lockNum: '',
-
-				stopSubmitPersonId: '',
-
-				afterStopStep: '',
-
-				lifeCycle: '',
-
-				delCheckStandardeDetails: '',
-
-				delTakecareStardardeDetails: '',
-
-				delTakecareDetails: '',
-
-				delRepaireDetails: '',
-
-				delTestDetails: '',
-			};
+				}
+			});
+			formEl.resetFields();
+			form.value.takecareDetailList = [];
+			form.value.testDetailList = [];
+			form.value.repaireDetailList = [];
+			form.value.checkStandardeDetailList = [];
 		};
 		//   取消
-		const resetForm = () => {
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			form.value.takecareDetailList = [];
+			form.value.testDetailList = [];
+			form.value.repaireDetailList = [];
+			form.value.checkStandardeDetailList = [];
 			dialogVisible.value = false;
-			form.value = {
-				supplyName: '',
-
-				nextTestDate: '',
-
-				qUsage: '',
-
-				departmentId: '',
-
-				produceTime: '',
-
-				actualStopDate: '',
-
-				takecareDetailList: [],
-
-				infoType: '',
-
-				leadingDepartmentId: '',
-
-				useEndDay: '',
-
-				previousTakecareDate: '',
-
-				previousCheckDate: '',
-
-				model: '',
-
-				stopStatus: '',
-
-				testWarn: '',
-
-				stopSubmitDate: '',
-
-				repairStatus: '',
-
-				takecareStardardeDetailList: [
-					{
-						filePath: '123',
-					},
-				],
-
-				nextCheckDate: '',
-
-				checkCycle: '',
-
-				checkPoint: '',
-
-				leadingPersonId: '',
-
-				qName: '',
-
-				nextTakecareDate: '',
-
-				setPart: '',
-
-				checkStandardeDetailList: [],
-
-				actualDestoryDate: '',
-
-				isNeedTest: '',
-
-				alertNum: '',
-
-				checkContent: '',
-
-				useMemo: '',
-
-				previousTestDate: '',
-
-				isNeedTakecare: '',
-
-				destoryReason: '',
-
-				checkDetailList: [],
-
-				positionNum: '',
-
-				testCycle: '',
-
-				recoveryReason: '',
-
-				isNeedCheck: '',
-
-				actualRecoveryDate: '',
-
-				leadingPersonDepartmentId: '',
-
-				stopReason: '',
-
-				destorySubmitDate: '',
-
-				testDetailList: [],
-
-				checkWarn: '',
-
-				repaireDetailList: [],
-
-				equipmentTypeId: 1,
-
-				useDate: '',
-
-				recoverySubmitDate: '',
-
-				lockNum: '',
-
-				stopSubmitPersonId: '',
-
-				afterStopStep: '',
-
-				lifeCycle: '',
-
-				delCheckStandardeDetails: '',
-
-				delTakecareStardardeDetails: '',
-
-				delTakecareDetails: '',
-
-				delRepaireDetails: '',
-
-				delTestDetails: '',
-			};
 		};
 		const activeName = ref('first');
 		const index = ref<any>();
@@ -895,10 +718,12 @@
 		};
 		const userId = (val: any, type: number) => {
 			console.log(val, type);
-			if (type == 0) {
+			if (type == 1) {
 				form.value.leadingPersonId = val.uid;
-			} else if (type == 1) {
+				form.value.leadingPersonName = val.realName;
+			} else if (type == 2) {
 				form.value.stopSubmitPersonId = val.uid;
+				form.value.stopSubmitPersonName = val.realName;
 			}
 		};
 		//全屏
@@ -929,6 +754,7 @@
 		};
 		const data = ref();
 		return {
+			rules,
 			userId,
 			department,
 			propse,
@@ -978,7 +804,8 @@
 			full,
 			toggleFullscreen,
 			FullScreen,
-      timeDate,
+			timeDate,
+			ruleFormRef,
 		};
 	},
 });
diff --git a/src/components/equipmentDailog/DailogS.vue b/src/components/equipmentDailog/DailogS.vue
index ff4fe8f..749925a 100644
--- a/src/components/equipmentDailog/DailogS.vue
+++ b/src/components/equipmentDailog/DailogS.vue
@@ -40,7 +40,7 @@
 				</el-col>
 				<el-col :span="11" :offset="2">
 					<el-form-item label="联系人" size="default">
-						<el-input v-model="form.connectPersonId" placeholder="请选择">
+						<el-input v-model="form.connectPersonName" placeholder="请选择">
 							<template #append>
 								<el-button :icon="Search" @click="openUser(0)"></el-button>
 							</template>
@@ -51,7 +51,7 @@
 			<el-row>
 				<el-col :span="11">
 					<el-form-item label="录入人" size="default">
-						<el-input v-model="form.inputPersonId" placeholder="请选择">
+						<el-input v-model="form.inputPersonName" placeholder="请选择">
 							<template #append>
 								<el-button :icon="Search" @click="openUser(1)"></el-button>
 							</template>
@@ -60,7 +60,7 @@
 				</el-col>
 				<el-col :span="11" :offset="2">
 					<el-form-item label="责任人" size="default">
-						<el-input v-model="form.responsibilityPersonId" placeholder="请选择">
+						<el-input v-model="form.responsibilityPersonName" placeholder="请选择">
 							<template #append>
 								<el-button :icon="Search" @click="openUser(2)"></el-button>
 							</template>
@@ -148,8 +148,8 @@
 					<el-table-column align="center" label="操作">
 						<template #default="scope">
 							<el-button link type="primary" @click="openMaintenance('查看', scope.row)" size="small">查看</el-button>
-              <el-button link type="primary" @click="openMaintenance('修改', scope.row)" size="small">修改</el-button>
-              <el-button link type="primary" @click="deleteA(scope.row)" size="small">删除</el-button>
+							<el-button link type="primary" @click="openMaintenance('修改', scope.row)" size="small">修改</el-button>
+							<el-button link type="primary" @click="deleteA(scope.row)" size="small">删除</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -166,8 +166,8 @@
 					<el-table-column align="center" label="操作">
 						<template #default="scope">
 							<el-button link type="primary" @click="openDetect('查看', scope.row)" size="small">查看</el-button>
-              <el-button link type="primary" @click="openDetect('修改', scope.row)" size="small">修改</el-button>
-              <el-button link type="primary" @click="deleteB(scope.row)" size="small">删除</el-button>
+							<el-button link type="primary" @click="openDetect('修改', scope.row)" size="small">修改</el-button>
+							<el-button link type="primary" @click="deleteB(scope.row)" size="small">删除</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -185,14 +185,13 @@
 					<el-table-column align="center" label="操作">
 						<template #default="scope">
 							<el-button link type="primary" @click="openRepair('查看', scope.row)" size="small">查看</el-button>
-              <el-button link type="primary" @click="openRepair('修改', scope.row)" size="small">修改</el-button>
-              <el-button link type="primary" @click="deleteC(scope.row)" size="small">删除</el-button>
+							<el-button link type="primary" @click="openRepair('修改', scope.row)" size="small">修改</el-button>
+							<el-button link type="primary" @click="deleteC(scope.row)" size="small">删除</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
 			</el-tab-pane>
-			<el-tab-pane label="检查标准设置" name="fourth"
-				>
+			<el-tab-pane label="检查标准设置" name="fourth">
 				<el-button type="primary" size="default" @click="openStandard('新增', '')">新增</el-button>
 				<el-table :data="form.checkStandardeDetailList" style="width: 100%">
 					<el-table-column align="center" type="indexNum" label="序号" width="75" />
@@ -204,8 +203,8 @@
 					<el-table-column align="center" label="操作">
 						<template #default="scope">
 							<el-button link type="primary" @click="openStandard('查看', scope.row)" size="small">查看</el-button>
-              <el-button link type="primary" @click="openStandard('修改', scope.row)" size="small">修改</el-button>
-              <el-button link type="primary" @click="deleteD(scope.row)" size="small">删除</el-button>
+							<el-button link type="primary" @click="openStandard('修改', scope.row)" size="small">修改</el-button>
+							<el-button link type="primary" @click="deleteD(scope.row)" size="small">删除</el-button>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -249,7 +248,9 @@
 	</el-dialog>
 	<categoryDailog ref="categoryShow"></categoryDailog>
 	<RegionsDialog ref="planShow" @SearchUser="onUser"></RegionsDialog>
-	<DailogSearchUser ref="UserShow" @SearchUser="userId"></DailogSearchUser>
+	<DailogSearchUser ref="UserOneShow" @SearchUser="userId"></DailogSearchUser>
+<!--	<DailogSearchUser ref="UserTwoShow" @SearchUser="userId"></DailogSearchUser>-->
+<!--	<DailogSearchUser ref="UserThreeShow" @SearchUser="userId"></DailogSearchUser>-->
 	<maintenanceDailog ref="maintenanceShow" @onMain="main"></maintenanceDailog>
 	<detectDailog ref="detectShow" @onDelect="delect"></detectDailog>
 	<repairDailog ref="repairShow" @onRepair="Repair"></repairDailog>
@@ -258,7 +259,7 @@
 <script lang="ts">
 import { defineComponent, ref } from 'vue';
 import { Search, Plus, FullScreen } from '@element-plus/icons-vue';
-import {timeDate} from '/@/assets/index.ts'
+import { timeDate } from '/@/assets/index.ts';
 import categoryDailog from './categoryDailog.vue';
 import RegionsDialog from '../../views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue';
 import maintenanceDailog from './maintenanceDailog.vue';
@@ -269,7 +270,7 @@
 import { ElMessage, ElMessageBox } from 'element-plus';
 import type { UploadProps, UploadUserFile } from 'element-plus';
 import { facilityManagementApi } from '/@/api/facilityManagement';
-import {goalManagementApi} from "/@/api/goalManagement";
+import { goalManagementApi } from '/@/api/goalManagement';
 export default defineComponent({
 	components: { categoryDailog, RegionsDialog, DailogSearchUser, maintenanceDailog, detectDailog, repairDailog, standardDailog },
 	setup(props, { emit }) {
@@ -280,7 +281,7 @@
 			treatment: '',
 
 			inputPersonId: '',
-
+      inputPersonName:'',
 			departmentId: '',
 
 			delRepaireDetailList: [],
@@ -288,148 +289,170 @@
 			delTestDetailList: [],
 
 			takecareDetailList: [],
-      checkDetailList: [],
+			checkDetailList: [],
 
-      responsibilityPersonId: '',
+			responsibilityPersonId: '',
+      responsibilityPersonName:'',
+			delTakecareStardardeDetailList: [],
 
-      delTakecareStardardeDetailList: [],
+			connectPersonId: '',
+      connectPersonName:'',
 
-      connectPersonId: '',
+			scenePic: '',
 
-      scenePic: '',
+			partType: '',
 
-      partType: '',
+			toDangerous: '',
 
-      toDangerous: '',
+			dangerousElement: '',
 
-      dangerousElement: '',
-
-      takecareStardardeDetailList: [
+			takecareStardardeDetailList: [
 				{
 					filePath: '',
 				},
 			],
-      testDetailList: [],
-      checkCycle: '',
-      repaireDetailList: [],
-      delCheckStandardeDetailList: [],
+			testDetailList: [],
+			checkCycle: '',
+			repaireDetailList: [],
+			delCheckStandardeDetailList: [],
 
-      leadingPersonName: '',
+			leadingPersonName: '',
 
-      name: '',
+			name: '',
 
 			delTakecareDetailList: [],
 
-      position: '',
+			position: '',
 
-      emergencePlanId: '',
+			emergencePlanId: '',
 
-      checkStandardeDetailList: [],
-      infoTpe: '',
-      delCheckStandardeDetails: '',
+			checkStandardeDetailList: [],
+			infoTpe: '',
+			delCheckStandardeDetails: '',
 
-      delTakecareStardardeDetails: '',
+			delTakecareStardardeDetails: '',
 
-      delTakecareDetails: '',
+			delTakecareDetails: '',
 
-      delRepaireDetails: '',
+			delRepaireDetails: '',
 
-      delTestDetails: '',
+			delTestDetails: '',
 		});
-    const titles = ref();
-    const disabled = ref(false);
-    const Dailogtype = ref(false);
+		const titles = ref();
+		const disabled = ref(false);
+		const Dailogtype = ref(false);
 		const openDailog = (title: string, type: boolean, id: number, num: any) => {
 			dialogVisible.value = true;
-      department();
+			department();
 			Dailogtype.value = type;
-      if (num == 0) {
-        titles.value = `${title}仪表信息`;
-        form.value.infoTpe = num;
-      } else if (num == 1) {
-        titles.value = `${title}设备设施`;
-        form.value.infoTpe = num;
-      } else if (num == 2) {
-        titles.value = `${title}设备设施`;
-        form.value.infoTpe = num;
-      }
+			if (num == 0) {
+				titles.value = `${title}仪表信息`;
+				form.value.infoTpe = num;
+			} else if (num == 1) {
+				titles.value = `${title}设备设施`;
+				form.value.infoTpe = num;
+			} else if (num == 2) {
+				titles.value = `${title}设备设施`;
+				form.value.infoTpe = num;
+			}
 
-      disabled.value = title == '查看' ? true : false;
-      if (title == '查看' || title == '修改')
-        facilityManagementApi()
-        .getkeypointEquipmentInfoDetail(id)
-        .then((res) => {
-          if (res.data.code == 200) {
-            form.value = res.data.data;
-          } else {
-            ElMessage.error(res.data.msg);
-          }
-        });
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				facilityManagementApi()
+					.getkeypointEquipmentInfoDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
 		};
-    // 提交
-    const submitForm = () => {
-      form.value.delTakecareDetails =deleteAId.value.toString()
-      form.value.delTestDetails =deleteBId.value.toString()
-      form.value.delRepaireDetails =deleteCId.value.toString()
-      form.value.delCheckStandardeDetails =deleteDId.value.toString()
-      dialogVisible.value = false;
-      facilityManagementApi()
-          .getkeypointEquipmentInfoAddOrUpdate(form.value)
-          .then((res) => {
-            if (res.data.code == 200) {
-              ElMessage({
-                message: res.data.msg,
-                type: 'success',
-              });
-              emit('navAddorUpdata');
-            } else {
-              ElMessage.error(res.data.msg);
-            }
-          });
-      // form.value = null;
-    };
-    //   取消
-    const resetForm = () => {
-      dialogVisible.value = false;
-    };
+		// 提交
+		const submitForm = () => {
+			form.value.delTakecareDetails = deleteAId.value.toString();
+			form.value.delTestDetails = deleteBId.value.toString();
+			form.value.delRepaireDetails = deleteCId.value.toString();
+			form.value.delCheckStandardeDetails = deleteDId.value.toString();
+			dialogVisible.value = false;
+			facilityManagementApi()
+				.getkeypointEquipmentInfoAddOrUpdate(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('navAddorUpdata');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			// form.value = null;
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+		};
 		const activeName = ref('first');
-    const index = ref<any>();
-    const categoryShow = ref();
-    const opencategory = () => {
-      categoryShow.value.openDailog();
-    };
+		const index = ref<any>();
+		const categoryShow = ref();
+		const opencategory = () => {
+			categoryShow.value.openDailog();
+		};
 
-    // 应急预案弹窗
+		// 应急预案弹窗
 		const planShow = ref();
 		const openPlan = () => {
 			planShow.value.openDailog();
 		};
-    const onUser = (e:any) => {
-      form.value.emergencePlanId=e.id
-    };
+		const onUser = (e: any) => {
+			form.value.emergencePlanId = e.id;
+		};
 
-		const UserShow = ref();
-		const openUser = (type: any) => {
-			UserShow.value.openDailog(type);
+		const UserOneShow = ref();
+		// const UserTwoShow = ref();
+		// const UserThreeShow = ref();
+		const openUser = (type: number) => {
+			// if (type == 0) {
+			// 	UserOneShow.value.openDailog();
+			// } else if (type == 1) {
+			// 	UserTwoShow.value.openDailog();
+			// } else if (type == 2) {
+			// 	UserThreeShow.value.openDailog();
+			// }
+      UserOneShow.value.openDailog();
+		};
+		const userId = ( type: number,val: any) => {
+			if (type == 0) {
+        form.value.connectPersonId = val.uid;
+        form.value.connectPersonName = val.realName;
+			} else if (type == 1) {
+        form.value.inputPersonId = val.uid;
+        form.value.inputPersonName = val.username;
+			} else if (type == 2) {
+        form.value.responsibilityPersonId = val.id;
+        form.value.responsibilityPersonName = val.username;
+			}
 		};
 		const maintenanceShow = ref();
 		const openMaintenance = (title: string, data: any) => {
-      index.value = form.value.takecareDetailList.indexOf(data);
+			index.value = form.value.takecareDetailList.indexOf(data);
 			maintenanceShow.value.openDailog(title, data);
 		};
 		const detectShow = ref();
 		const openDetect = (title: string, data: any) => {
-      index.value = form.value.testDetailList.indexOf(data);
+			index.value = form.value.testDetailList.indexOf(data);
 			detectShow.value.openDailog(title, data);
 		};
 		const repairShow = ref();
 		const openRepair = (title: string, data: any) => {
-      index.value = form.value.repaireDetailList.indexOf(data);
+			index.value = form.value.repaireDetailList.indexOf(data);
 			repairShow.value.openDailog(title, data);
 		};
 		const standardShow = ref();
 		const openStandard = (title: string, data: any) => {
-      index.value = form.value.checkStandardeDetailList.indexOf(data);
+			index.value = form.value.checkStandardeDetailList.indexOf(data);
 			standardShow.value.openDailog(title, data);
 		};
 		// 上传
@@ -462,56 +485,56 @@
 				() => false
 			);
 		};
-    const deleteAId = ref([]);
-    const deleteBId = ref([]);
-    const deleteCId = ref([]);
-    const deleteDId = ref([]);
-    // 删除
-    const deleteA = (tag: any) => {
-      form.value.takecareDetailList.splice(form.value.takecareDetailList.indexOf(tag), 1);
-      deleteAId.value.push(tag.id);
-    };
-    const deleteB = (tag: any) => {
-      form.value.testDetailList.splice(form.value.testDetailList.indexOf(tag), 1);
-      deleteBId.value.push(tag.id);
-    };
-    const deleteC = (tag: any) => {
-      form.value.repaireDetailList.splice(form.value.repaireDetailList.indexOf(tag), 1);
-      deleteCId.value.push(tag.id);
-    };
-    const deleteD = (tag: any) => {
-      form.value.checkStandardeDetailList.splice(form.value.checkStandardeDetailList.indexOf(tag), 1);
-      deleteDId.value.push(tag.id);
-    };
-    // 回传
-    const main = (val: any) => {
-      if (index.value == -1) {
-        form.value.takecareDetailList.push(val);
-      } else {
-        form.value.takecareDetailList[index.value] = val;
-      }
-    };
-    const delect = (val: any) => {
-      if (index.value == -1) {
-        form.value.testDetailList.push(val);
-      } else {
-        form.value.testDetailList[index.value] = val;
-      }
-    };
-    const Repair= (val:any)=>{
-      if (index.value == -1) {
-        form.value.repaireDetailList.push(val);
-      } else {
-        form.value.repaireDetailList[index.value] = val;
-      }
-    }
-    const Stand=(val:any)=>{
-      if (index.value == -1) {
-        form.value.checkStandardeDetailList.push(val);
-      } else {
-        form.value.checkStandardeDetailList[index.value] = val;
-      }
-    }
+		const deleteAId = ref([]);
+		const deleteBId = ref([]);
+		const deleteCId = ref([]);
+		const deleteDId = ref([]);
+		// 删除
+		const deleteA = (tag: any) => {
+			form.value.takecareDetailList.splice(form.value.takecareDetailList.indexOf(tag), 1);
+			deleteAId.value.push(tag.id);
+		};
+		const deleteB = (tag: any) => {
+			form.value.testDetailList.splice(form.value.testDetailList.indexOf(tag), 1);
+			deleteBId.value.push(tag.id);
+		};
+		const deleteC = (tag: any) => {
+			form.value.repaireDetailList.splice(form.value.repaireDetailList.indexOf(tag), 1);
+			deleteCId.value.push(tag.id);
+		};
+		const deleteD = (tag: any) => {
+			form.value.checkStandardeDetailList.splice(form.value.checkStandardeDetailList.indexOf(tag), 1);
+			deleteDId.value.push(tag.id);
+		};
+		// 回传
+		const main = (val: any) => {
+			if (index.value == -1) {
+				form.value.takecareDetailList.push(val);
+			} else {
+				form.value.takecareDetailList[index.value] = val;
+			}
+		};
+		const delect = (val: any) => {
+			if (index.value == -1) {
+				form.value.testDetailList.push(val);
+			} else {
+				form.value.testDetailList[index.value] = val;
+			}
+		};
+		const Repair = (val: any) => {
+			if (index.value == -1) {
+				form.value.repaireDetailList.push(val);
+			} else {
+				form.value.repaireDetailList[index.value] = val;
+			}
+		};
+		const Stand = (val: any) => {
+			if (index.value == -1) {
+				form.value.checkStandardeDetailList.push(val);
+			} else {
+				form.value.checkStandardeDetailList[index.value] = val;
+			}
+		};
 
 		//图片提交
 		const imageUrl = ref('');
@@ -531,34 +554,24 @@
 			return true;
 		};
 
-    const userId = (val: any, type: number) => {
-      console.log(val, type);
-      if (type == 0) {
-        form.value.connectPersonId = val.uid;
-      } else if (type == 1) {
-        form.value.inputPersonId = val.uid;
-      } else if (type == 2){
-        form.value.responsibilityPersonId = val.uid;
-      }
-    };
-    //部门树
-    const department = () => {
-      goalManagementApi()
-          .getTreedepartment()
-          .then((res) => {
-            if (res.data.code == 200) {
-              data.value = res.data.data;
-            } else {
-              ElMessage.error(res.data.msg);
-            }
-          });
-    };
-    const propse = {
-      label: 'depName',
-      children: 'children',
-      value: 'depId',
-    };
-    const data = ref();
+		//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
 		//全屏
 		const full = ref(false);
 		const toggleFullscreen = () => {
@@ -569,26 +582,28 @@
 			}
 		};
 		return {
-      propse,
-      data,
+			propse,
+			data,
 			submitForm,
 			dialogVisible,
 			Dailogtype,
 			form,
 			openDailog,
 			Search,
-      main,
-      delect,
-      Repair,
-      Stand,
-      index,
+			main,
+			delect,
+			Repair,
+			Stand,
+			index,
 			activeName,
 			categoryShow,
 			opencategory,
 			planShow,
-      onUser,
+			onUser,
 			openPlan,
-			UserShow,
+			UserOneShow,
+			// UserTwoShow,
+			// UserThreeShow,
 			openUser,
 			maintenanceShow,
 			openMaintenance,
@@ -597,14 +612,14 @@
 			repairShow,
 			openRepair,
 			standardShow,
-      userId,
+			userId,
 			openStandard,
 			fileList,
 			handleRemove,
 			handlePreview,
 			handleExceed,
-      disabled,
-      titles,
+			disabled,
+			titles,
 			beforeRemove,
 			imageUrl,
 			handleAvatarSuccess,
@@ -614,15 +629,15 @@
 			toggleFullscreen,
 			FullScreen,
 			resetForm,
-      deleteAId,
-      deleteBId,
-      deleteCId,
-      deleteDId,
-      deleteA,
-      deleteB,
-      deleteC,
-      deleteD,
-      timeDate,
+			deleteAId,
+			deleteBId,
+			deleteCId,
+			deleteDId,
+			deleteA,
+			deleteB,
+			deleteC,
+			deleteD,
+			timeDate,
 		};
 	},
 });
diff --git a/src/components/equipmentDailog/detectDailog.vue b/src/components/equipmentDailog/detectDailog.vue
index 96a8f76..71279e3 100644
--- a/src/components/equipmentDailog/detectDailog.vue
+++ b/src/components/equipmentDailog/detectDailog.vue
@@ -1,11 +1,11 @@
 <template>
-	<el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable>
+	<el-dialog v-model="dialogVisible" @close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
 		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
 		<el-form :model="form" :disabled="disabled" label-width="120px">
 			<el-row>
 				<el-col :span="11">
 					<el-form-item label="检测人" size="default">
-							<el-input v-model="form.testPersonId">
+							<el-input v-model="form.testPersonName">
 							<template #append> <el-button :icon="Search" @click="openUser" /> </template
 						></el-input>
 					</el-form-item>
@@ -19,10 +19,7 @@
 			<el-row>
 				<el-col :span="11">
 					<el-form-item label="检测人单位" size="default">
-						<el-select v-model="form.testPersonDepartmentId" placeholder="请选择" style="width: 100%">
-							<el-option label="xxx单位1" value="1" />
-							<el-option label="xxx单位2" value="2" />
-						</el-select>
+						<el-tree-select v-model="form.testPersonDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
 					</el-form-item>
 				</el-col>
 				<el-col :span="11" :offset="2">
@@ -59,13 +56,16 @@
 </template>
 <script lang="ts">
 import { defineComponent, ref, reactive } from 'vue';
+import { ElMessage, ElMessageBox} from 'element-plus';
 import { Search, FullScreen } from '@element-plus/icons-vue';
 import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
 export default defineComponent({
 	components: { DailogSearchUser },
 	setup(props, { emit }) {
 		const form = ref({
 			testPersonId: '',
+			testPersonName:'',
 			testDate: '',
 			testPersonDepartmentId: '',
 			testMemo: '',
@@ -77,6 +77,7 @@
 		const disabled = ref(false);
 		const dialogVisible = ref(false);
 		const openDailog = (title: string, data: any) => {
+			department()
 			dialogVisible.value = true;
 			titles.value = `${title}设备检测`;
 			if (title == '查看') {
@@ -94,6 +95,7 @@
 		};
 		const User = (val: any) => {
 			form.value.testPersonId = val.uid;
+			form.value.testPersonName=val.realName;
 		};
 		// 提交
 		const submitForm = () => {
@@ -101,24 +103,28 @@
 			emit('onDelect', form.value);
 			form.value = {
 				testPersonId: '',
+				testPersonName:'',
 				testDate: '',
 				testPersonDepartmentId: '',
 				testMemo: '',
 				testResult: '',
 				testStatus: '',
 			};
+			disabled.value = false;
 		};
 		//   取消
 		const resetForm = () => {
 			dialogVisible.value = false;
 			form.value = {
 				testPersonId: '',
+				testPersonName:'',
 				testDate: '',
 				testPersonDepartmentId: '',
 				testMemo: '',
 				testResult: '',
 				testStatus: '',
 			};
+			disabled.value = false;
 		};
 		//全屏
 		const full = ref(false);
@@ -129,7 +135,28 @@
 				full.value = false;
 			}
 		};
+				//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
 		return {
+			department,
+			propse,
+			data,
 			form,
 			titles,
 			User,
diff --git a/src/components/equipmentDailog/maintenanceDailog.vue b/src/components/equipmentDailog/maintenanceDailog.vue
index 2b92a9a..e742cd7 100644
--- a/src/components/equipmentDailog/maintenanceDailog.vue
+++ b/src/components/equipmentDailog/maintenanceDailog.vue
@@ -1,16 +1,16 @@
 <template>
-	<el-dialog :fullscreen="full" v-model="dialogVisible" :title="titles" width="50%" draggable>
+	<el-dialog :fullscreen="full" v-model="dialogVisible" @close="resetForms(ruleFormRefs)" :title="titles" width="50%" draggable>
 		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-		<el-form :model="form" :disabled="disabled" label-width="120px">
+		<el-form :model="form" ref="ruleFormRefs" :rules="rules" :disabled="disabled" label-width="120px">
 			<el-row>
 				<el-col :span="11">
-					<el-form-item label="保养情况" size="default">
+					<el-form-item label="保养情况" size="default" prop="takecareMemo">
 						<el-input v-model="form.takecareMemo" />
 					</el-form-item>
 				</el-col>
 				<el-col :span="11" :offset="2">
-					<el-form-item label="保养负责人" size="default">
-						<el-input v-model="form.leadingPersonId">
+					<el-form-item label="保养负责人" size="default" prop="leadingPersonName">
+						<el-input v-model="form.leadingPersonName">
 							<template #append> <el-button :icon="Search" @click="openUser" /> </template
 						></el-input>
 					</el-form-item>
@@ -18,16 +18,13 @@
 			</el-row>
 			<el-row>
 				<el-col :span="11">
-					<el-form-item label="保养日期" size="default">
+					<el-form-item label="保养日期" size="default" prop="takecareDate">
 						<el-date-picker v-model="form.takecareDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" style="width: 100%" />
 					</el-form-item>
 				</el-col>
 				<el-col :span="11" :offset="2">
-					<el-form-item label="保养负责人单位" size="default">
-						<el-select v-model="form.leadingPersonDepartmentId" style="width: 100%">
-							<el-option label="xxx单位1" value="1" />
-							<el-option label="xxx单位2" value="2" />
-						</el-select>
+					<el-form-item label="保养负责人单位" size="default" prop="leadingPersonDepartmentId">
+						<el-tree-select v-model="form.leadingPersonDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
 					</el-form-item>
 				</el-col>
 			</el-row>
@@ -35,8 +32,8 @@
 		<template #footer>
 			<span class="dialog-footer">
 				<!-- <el-button type="primary" @click="dialogVisible = false" size="default">继续添加</el-button> -->
-				<el-button @click="resetForm" size="default">关闭</el-button>
-				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+				<el-button @click="resetForms(ruleFormRefs)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForms(ruleFormRefs)" size="default">确定</el-button>
 			</span>
 		</template>
 	</el-dialog>
@@ -44,32 +41,68 @@
 </template>
 <script lang="ts">
 import { defineComponent, ref, reactive } from 'vue';
+import { ElMessage, ElMessageBox} from 'element-plus';
 import { Search, FullScreen } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus';
 import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
 export default defineComponent({
 	components: { DailogSearchUser },
 	setup(props, { emit }) {
+		const ruleFormRefs = ref<FormInstance>();
 		const form = ref({
 			takecareMemo: '',
 			leadingPersonId: '',
+			leadingPersonName: '',
 			takecareDate: '',
 			leadingPersonDepartmentId: '',
 		});
 		// 开启弹窗
-    const titles=ref()
-		const disabled=ref(false)
+		const titles = ref();
+		const disabled = ref(false);
 		const dialogVisible = ref(false);
-		const openDailog = (title:string,data:any) => {
+		const openDailog = (title: string, data: any) => {
+			department()
 			dialogVisible.value = true;
-			titles.value=`${title}仪器仪表`
-			if(title=='查看'){
-				disabled.value=true
-				form.value=data
-			}else if(title == '修改'){
-				disabled.value=false
-				form.value=data
+			titles.value = `${title}仪器仪表`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if (title == '修改') {
+				disabled.value = false;
+				form.value = data;
 			}
 		};
+		const rules = reactive<FormRules>({
+			takecareMemo: [
+				// {
+				// 	required: true,
+				// 	message: '保养情况不能为空',
+				// 	trigger: 'change',
+				// },
+			],
+			leadingPersonName: [
+				// {
+				// 	required: true,
+				// 	message: '保养负责人不能为空',
+				// 	trigger: 'change',
+				// },
+			],
+			takecareDate: [
+				// {
+				// 	required: true,
+				// 	message: '保养日期不能为空',
+				// 	trigger: 'change',
+				// },
+			],
+			leadingPersonDepartmentId: [
+				// {
+				// 	required: true,
+				// 	message: '保养负责人单位不能为空',
+				// 	trigger: 'change',
+				// },
+			],
+		});
 		// 开启用户弹窗
 		const Show = ref();
 		const openUser = () => {
@@ -77,27 +110,42 @@
 		};
 		const User = (val: any) => {
 			form.value.leadingPersonId = val.uid;
+			form.value.leadingPersonName = val.realName;
 		};
 		// 提交
-		const submitForm = () => {
-			dialogVisible.value = false;
-			emit('onMain', form.value);
+		const submitForms = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					dialogVisible.value = false;
+					emit('onMain', form.value);
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
 			form.value = {
 				takecareMemo: '',
 				leadingPersonId: '',
+				leadingPersonName: '',
 				takecareDate: '',
 				leadingPersonDepartmentId: '',
 			};
+			disabled.value = false;
+			// formEl.resetFields();
 		};
 		//   取消
-		const resetForm = () => {
-			dialogVisible.value = false;
-				form.value = {
+		const resetForms = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+					form.value = {
 				takecareMemo: '',
 				leadingPersonId: '',
+				leadingPersonName: '',
 				takecareDate: '',
 				leadingPersonDepartmentId: '',
 			};
+			// formEl.resetFields();
+			dialogVisible.value = false;
+			disabled.value = false;
 		};
 		//全屏
 		const full = ref(false);
@@ -108,15 +156,38 @@
 				full.value = false;
 			}
 		};
+			//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
 		return {
+			department,
+			propse,
+			data,
 			disabled,
+			rules,
 			titles,
-			submitForm,
-			resetForm,
+			submitForms,
+			resetForms,
 			form,
 			User,
 			dialogVisible,
 			openDailog,
+			ruleFormRefs,
 			Show,
 			openUser,
 			Search,
diff --git a/src/components/equipmentDailog/repairDailog.vue b/src/components/equipmentDailog/repairDailog.vue
index bb40c91..0c3baff 100644
--- a/src/components/equipmentDailog/repairDailog.vue
+++ b/src/components/equipmentDailog/repairDailog.vue
@@ -25,7 +25,7 @@
 				</el-col>
 				<el-col :span="11" :offset="2">
 					<el-form-item label="维修负责人" size="default">
-						<el-input v-model="form.repairPersonId" placeholder="请选择">
+						<el-input v-model="form.repairPersonName" placeholder="请选择">
 							<template #append> <el-button :icon="Search" @click="openUser" /> </template
 						></el-input>
 					</el-form-item>
@@ -34,10 +34,7 @@
 			<el-row>
 				<el-col :span="11">
 					<el-form-item label="维修负责人单位" size="default">
-						<el-select v-model="form.repairPersonDepartmentId" placeholder="请选择" style="width: 100%">
-							<el-option label="xxxxx单位" value="1" />
-							<el-option label="xxx单位" value="2" />
-						</el-select>
+						<el-tree-select v-model="form.repairPersonDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
 					</el-form-item>
 				</el-col>
 				<el-col :span="11" :offset="2">
@@ -66,8 +63,10 @@
 </template>
 <script lang="ts">
 import { defineComponent, ref, reactive } from 'vue';
+import { ElMessage, ElMessageBox} from 'element-plus';
 import { Search, FullScreen } from '@element-plus/icons-vue';
 import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
 export default defineComponent({
 	components: { DailogSearchUser },
 	setup(props, { emit }) {
@@ -76,6 +75,7 @@
 			repairStatus: '',
 			repairMemo: '',
 			repairPersonId: '',
+			repairPersonName:'',
 			repairPersonDepartmentId: "",
 			repairStartDate: '',
 			repairEndDate: '',
@@ -85,6 +85,7 @@
 		const disabled = ref(false);
 		const dialogVisible = ref(false);
 		const openDailog = (title: string, data: any) => {
+			department()
 			dialogVisible.value = true;
 			titles.value = `${title}设备维修`;
 			if (title == '查看') {
@@ -102,6 +103,7 @@
 		};
 		const User = (val: any) => {
 			form.value.repairPersonId = val.uid;
+			form.value.repairPersonName = val.realName;
 		};
 		// 提交
 		const submitForm = () => {
@@ -112,10 +114,12 @@
 				repairStatus: '',
 				repairMemo: '',
 				repairPersonId: '',
+				repairPersonName:'',
 				repairPersonDepartmentId: "",
 				repairStartDate: '',
 				repairEndDate: '',
 			};
+			disabled.value = false;
 		};
 		//  取消
 		const resetForm = () => {
@@ -125,10 +129,12 @@
 				repairStatus: '',
 				repairMemo: '',
 				repairPersonId: '',
+				repairPersonName:"",
 				repairPersonDepartmentId: "",
 				repairStartDate: '',
 				repairEndDate: '',
 			};
+			disabled.value = false;
 		};
 		//全屏
 		const full = ref(false);
@@ -139,7 +145,28 @@
 				full.value = false;
 			}
 		};
+				//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
 		return {
+			department,
+			propse,
+			data,
 			form,
 			titles,
 			disabled,
diff --git a/src/components/equipmentDailog/standardDailog.vue b/src/components/equipmentDailog/standardDailog.vue
index 85febd2..a1f901e 100644
--- a/src/components/equipmentDailog/standardDailog.vue
+++ b/src/components/equipmentDailog/standardDailog.vue
@@ -96,6 +96,7 @@
 				checkPart: "",
 				rate: '',
 			};
+			disabled.value = false;
 		};
 		//   取消
 		const resetForm = () => {
@@ -108,6 +109,7 @@
 				checkPart: "",
 				rate: '',
 			};
+			disabled.value = false;
 		};
 		//全屏
 		const full = ref(false);
diff --git a/src/components/facilityManagement/EquipmentStatistics/index.vue b/src/components/facilityManagement/EquipmentStatistics/index.vue
new file mode 100644
index 0000000..07a359f
--- /dev/null
+++ b/src/components/facilityManagement/EquipmentStatistics/index.vue
@@ -0,0 +1,91 @@
+<template>
+	<div class="box">
+		<div class="title">设备设施统计</div>
+		<div ref="main" style="width: 100%; height: 400px"></div>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, onMounted, ref } from 'vue';
+import * as echarts from 'echarts';
+import { ElMessage } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+export default defineComponent({
+	setup() {
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoStatistics()
+				.then((res) => {
+					if (res.data.code == 200) {
+						let arr=[]
+						arr=res.data.data
+						let date=[]
+						for (let i = 0; i < arr.length; i++) {
+							date.push(arr[i].count)
+						}
+						init(date);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const main = ref();
+		const init = (data:any) => {
+			var myChart = echarts.init(main.value);
+			var option = {
+				tooltip: {},
+				grid: {
+					left: '3%',
+					right: '4%',
+					bottom: '5%',
+					containLabel: true,
+				},
+				xAxis: {
+					type: 'category',
+					data: ['在用数', '报废数', '维修数', '停用数'],
+				},
+				yAxis: {
+					type: 'value',
+					name: '数量',
+					nameTextStyle: {
+						color: '#aaa',
+						nameLocation: 'start',
+					},
+				},
+				color: ['#6394f9'],
+				series: [
+					{
+						data: data,
+						type: 'bar',
+					},
+				],
+			};
+
+			myChart.setOption(option);
+		};
+		return {
+			init,
+			onMounted,
+			main,
+			listApi,
+		};
+	},
+});
+</script>
+<style scoped>
+.box {
+	background-color: #fff;
+	box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
+}
+.title {
+	font-size: 16px;
+	border-bottom: 1px solid #eee;
+	padding: 20px;
+}
+</style>
diff --git a/src/components/facilityManagement/InstrumentationInformation/index.vue b/src/components/facilityManagement/InstrumentationInformation/index.vue
new file mode 100644
index 0000000..d4e4308
--- /dev/null
+++ b/src/components/facilityManagement/InstrumentationInformation/index.vue
@@ -0,0 +1,376 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+				<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData" style="width: 100%"  @selection-change="handleSelectionChange">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonId" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentId" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonId" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonId" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentId" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column property="testResult" align="center" label="检测结果" sortable />
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column property="repairStatus" align="center" label="维修状态" sortable />
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonId" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentId" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				infoType: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, false, id, 0);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		};
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+		const handleNodeClick = (data: Tree) => {
+			ruleForm.searchParams.positionNum = data.id;
+			listApi();
+		};
+		const data = ref([]);
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			timeDate,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/components/facilityManagement/ProductionEquipment/index.vue b/src/components/facilityManagement/ProductionEquipment/index.vue
new file mode 100644
index 0000000..ab8551e
--- /dev/null
+++ b/src/components/facilityManagement/ProductionEquipment/index.vue
@@ -0,0 +1,375 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+			<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData"  @selection-change="handleSelectionChange" style="width: 100%">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonId" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentId" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonId" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonId" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentId" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column property="testResult" align="center" label="检测结果" sortable />
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column property="repairStatus" align="center" label="维修状态" sortable />
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonId" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentId" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				infoType: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title,true,id,1);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value= res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		}
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+       const handleNodeClick=(data: Tree)=>{
+			ruleForm.searchParams.positionNum=data.id
+			listApi();
+	   }
+		const data=ref([])
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/components/facilityManagement/deviceType/component/Dailog.vue b/src/components/facilityManagement/deviceType/component/Dailog.vue
new file mode 100644
index 0000000..576135f
--- /dev/null
+++ b/src/components/facilityManagement/deviceType/component/Dailog.vue
@@ -0,0 +1,190 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" @close="resetForm(ruleFormRef)" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" ref="ruleFormRef" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="是否为设备内容" size="default" prop="isContent">
+						<el-select v-model="form.isContent" placeholder="请选择" style="width: 100%">
+							<el-option label="是" value="1" />
+							<el-option label="否" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="父级编号" size="default" prop="parentId">
+						<el-tree-select clearable check-strictly="true" v-model="form.parentId"  :data="data" :props="propst" class="w100" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="类别名称" size="default" prop="typeName">
+						<el-input v-model="form.typeName" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="排列序列" size="default" prop="sortNum">
+						<el-input v-model.number="form.sortNum" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import { FullScreen } from '@element-plus/icons-vue';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { ElMessage } from 'element-plus';
+import { type } from 'os';
+export default defineComponent({
+	setup(prpos, { emit }) {
+		const dialogVisible = ref(false);
+		const form = ref({
+			isContent: '', ////是否为设备内容  1:是 2:否
+			typeName: '', ////类别名称
+			parentId: "", ////父级ID,如果没有父级,为0
+			isCheck: 0, ////是否检测  1:是 2:否
+			isVisit: 0, ////是否巡检 1:是 2:否
+			sortNum: '', //排列序列
+			id: '', //设备类型ID ,更新时必填
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		const openDailog = (title: string, id: number) => {
+			listApi();
+			dialogVisible.value = true;
+			titles.value = `${title}设备设施类型管理`;
+			if (title == '查看') {
+				disabled.value = true;
+				detail(id);
+			} else if (title == '修改') {
+				detail(id);
+			} else if (title == '添加') {
+				 form.value.parentId=id
+			}
+		};
+		const detail = (id: number) => {
+			facilityManagementApi()
+				.getequipmentTypeMngDetail(id)
+				.then((res) => {
+					if (res.data.code == 200) {
+						form.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		// 列表
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const data = ref([]);
+		const propst = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		};
+		const ruleFormRef = ref<FormInstance>();
+		const rules = reactive<FormRules>({
+			isContent: [{ required: true, message: '是否为设备内容不能为空', trigger: 'change' }],
+			parentId: [],
+			typeName: [{ required: true, message: '类别名称不能为空', trigger: 'change' }],
+			sortNum: [
+				{ required: true, message: '排列序列不能为空', trigger: 'change' },
+				{ type: 'number', message: '请输入数字!', trigger: 'change' },
+			],
+		});
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					facilityManagementApi()
+						.getequipmentTypeMngAddOrUpdate(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								dialogVisible.value = false;
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('onAdd');
+								formEl.resetFields();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+							}
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			dialogVisible.value = false;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			detail,
+			rules,
+			ruleFormRef,
+			listApi,
+			propst,
+			submitForm,
+			resetForm,
+			data,
+			disabled,
+			dialogVisible,
+			form,
+			titles,
+			openDailog,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/components/facilityManagement/deviceType/index.vue b/src/components/facilityManagement/deviceType/index.vue
new file mode 100644
index 0000000..11958ec
--- /dev/null
+++ b/src/components/facilityManagement/deviceType/index.vue
@@ -0,0 +1,130 @@
+<template>
+	<div class="box">
+		<el-button type="primary" :icon="Plus" @click="openD('新建', 0)" size="default">新建</el-button>
+		<el-table :data="tableData" style="width: 100%" row-key="id" :tree-props="propse">
+			<el-table-column align="center" label="是否为设备内容">
+				<template #default="scope">
+					<span v-if="scope.row.isContent == 1">是</span>
+					<span v-if="scope.row.isContent == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" label="巡检">
+				<template #default="scope">
+					<span v-if="scope.row.isVisit == 0">-</span>
+					<span v-if="scope.row.isVisit == 1">是</span>
+					<span v-if="scope.row.isVisit == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" label="检测">
+				<template #default="scope">
+					<span v-if="scope.row.isCheck == 0">-</span>
+					<span v-if="scope.row.isCheck == 1">是</span>
+					<span v-if="scope.row.isCheck == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" prop="typeName" label="类别名称" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button type="primary" link :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+					<el-button type="primary" link :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+					<el-button type="primary" link :icon="Delete" @click="Deletes(scope.row.id)">删除</el-button>
+					<el-button type="primary" link :icon="CirclePlus" @click="openD('添加', scope.row.id)">添加下级设备设施类型管理</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<Dailog ref="Show" @onAdd="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, onMounted, ref } from 'vue';
+import { Plus, View, EditPen, Delete, CirclePlus } from '@element-plus/icons-vue';
+import Dailog from './component/Dailog.vue';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { ElMessage,ElMessageBox } from 'element-plus';
+export default defineComponent({
+	components: { Dailog },
+	setup() {
+		// 列表
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+		// 删除
+		const Deletes = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentTypeMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		const add = () => {
+			listApi();
+		};
+		const tableData = ref();
+		const propse = {
+			children: 'childList',
+		};
+		const Show = ref();
+		const openD = (title: string, id: number) => {
+			Show.value.openDailog(title, id);
+		};
+		return {
+			propse,
+			add,
+			tableData,
+			Show,
+			Deletes,
+			openD,
+			listApi,
+			Plus,
+			View,
+			EditPen,
+			CirclePlus,
+			Delete,
+		};
+	},
+});
+</script>
+<style scoped>
+.box {
+	padding: 20px;
+	background-color: #fff;
+}
+</style>
diff --git a/src/components/facilityManagement/keyEquipment/index.vue b/src/components/facilityManagement/keyEquipment/index.vue
new file mode 100644
index 0000000..7e987d6
--- /dev/null
+++ b/src/components/facilityManagement/keyEquipment/index.vue
@@ -0,0 +1,384 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置/部位名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+				<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					<!--					<el-input v-model="filterText" style="height: 30px" placeholder="Filter keyword" />-->
+          <el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonId" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentId" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonId" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonId" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentId" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column property="testResult" align="center" label="检测结果" sortable />
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column property="repairStatus" align="center" label="维修状态" sortable />
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonId" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentId" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="equipmentTypeId" align="center" label="类型/类别外键" sortable />
+						<el-table-column property="qName" align="center" label="装置/部位名称" sortable />
+						<el-table-column property="departmentId" label="所属部门" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="position" label="具体位置" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="leadingPersonName" label="负责人姓名" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="connectPersonId" label="装置部位分类" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!--		<updata ref="Show"></updata>-->
+		<DailogS ref="ShowD" @navAddorUpdata="onAddorUpdata"></DailogS>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+// import updata from '/@/components/updata/updata.vue'
+import DailogS from '/@/components/equipmentDailog/DailogS.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { EditPen, Plus, Delete, Download, Refresh, Upload, View } from '@element-plus/icons-vue';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import {timeDate} from '/@/assets/index.ts'
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: {
+		// updata,
+		DailogS,
+	},
+	setup() {
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				equipmentTypeId: '', ////类型/类别外键
+        qName: '', ////装置/部位名称
+				// departmentId: '',////所属部门
+				// position: '', ////具体位置
+				// leadingPersonName: '', ////负责人姓名
+				// connectPersonId: '',////装置部位分类
+				infoTpe: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施  3:重点监管装置/设备
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getkeypointEquipmentInfoAddOrList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						console.log(res.data.data);
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+    const props = {
+      label: 'typeName',
+      children: 'childList',
+      value: 'id',
+    }
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+		const handleNodeClick = (data: Tree) => {
+      console.log(data)
+			ruleForm.searchParams.qName = data.typeName;
+
+			listApi();
+		};
+		const data = ref([]);
+		onMounted(() => {
+			listApiTree();
+		});
+		// 删除
+		const onDelete = (id: number) => {
+      let arr=[]
+      arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getkeypointEquipmentInfoDetele(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getkeypointEquipmentInfoDetele(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+
+		const activeName = ref('first');
+
+		const handleClick = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		// 新增弹窗
+		const ShowD = ref();
+		const openD = (title: String, id: number) => {
+			ShowD.value.openDailog(title, false, id, 2);
+		};
+		return {
+			activeName,
+			handleClick,
+			ruleForm,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			tableData,
+			// Show,
+			// openUp,
+			ShowD,
+			danger,
+			openD,
+			// openEdit,
+			Plus,
+			EditPen,
+			listApiTree,
+			Delete,
+			View,
+			Download,
+			Refresh,
+			Upload,
+			resetForm,
+			listApi,
+			handleCurrentChange,
+			handleSizeChange,
+			onAddorUpdata,
+			total,
+			currentPage4,
+			pageSize4,
+			onDelete,
+			warning,
+			handleSelectionChange,
+			onDeleteAll,
+			handleNodeClick,
+      timeDate,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/components/facilityManagement/safetyEquipment/index.vue b/src/components/facilityManagement/safetyEquipment/index.vue
new file mode 100644
index 0000000..576cfb7
--- /dev/null
+++ b/src/components/facilityManagement/safetyEquipment/index.vue
@@ -0,0 +1,377 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+			<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData"  @selection-change="handleSelectionChange" style="width: 100%">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonId" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentId" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonId" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonId" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentId" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column property="testResult" align="center" label="检测结果" sortable />
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column property="repairStatus" align="center" label="维修状态" sortable />
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonId" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentId" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import {timeDate} from '/@/assets/index.ts'
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				infoType: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title,false,id,2);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value= res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		}
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+       const handleNodeClick=(data: Tree)=>{
+			ruleForm.searchParams.positionNum=data.id
+			listApi();
+	   }
+		const data=ref([])
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+      timeDate,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/components/iconSelector/index.vue b/src/components/iconSelector/index.vue
index 3010e16..f4547d9 100644
--- a/src/components/iconSelector/index.vue
+++ b/src/components/iconSelector/index.vue
@@ -1,252 +1,231 @@
-<!--<template>-->
-<!--	<div class="icon-selector w100 h100">-->
-<!--		<el-popover-->
-<!--			placement="bottom"-->
-<!--			:width="fontIconWidth"-->
-<!--			trigger="click"-->
-<!--			transition="el-zoom-in-top"-->
-<!--			popper-class="icon-selector-popper"-->
-<!--			@show="onPopoverShow"-->
-<!--		>-->
-<!--			<template #reference>-->
-<!--				<el-input-->
-<!--					v-model="fontIconSearch"-->
-<!--					:placeholder="fontIconPlaceholder"-->
-<!--					:clearable="clearable"-->
-<!--					:disabled="disabled"-->
-<!--					:size="size"-->
-<!--					ref="inputWidthRef"-->
-<!--					@clear="onClearFontIcon"-->
-<!--					@focus="onIconFocus"-->
-<!--					@blur="onIconBlur"-->
-<!--				>-->
-<!--					<template #prepend>-->
-<!--						<SvgIcon-->
-<!--							:name="fontIconPrefix === '' ? prepend : fontIconPrefix"-->
-<!--							class="font14"-->
-<!--							v-if="fontIconPrefix === '' ? prepend?.indexOf('ele-') > -1 : fontIconPrefix?.indexOf('ele-') > -1"-->
-<!--						/>-->
-<!--						<i v-else :class="fontIconPrefix === '' ? prepend : fontIconPrefix" class="font14"></i>-->
-<!--					</template>-->
-<!--				</el-input>-->
-<!--			</template>-->
-<!--			<template #default>-->
-<!--				<div class="icon-selector-warp">-->
-<!--					<div class="icon-selector-warp-title flex">-->
-<!--						<div class="flex-auto">{{ title }}</div>-->
-<!--						<div class="icon-selector-warp-title-tab" v-if="type === 'all'">-->
-<!--							<span :class="{ 'span-active': fontIconType === 'ali' }" @click="onIconChange('ali')" class="ml10" title="iconfont 图标">ali</span>-->
-<!--							<span :class="{ 'span-active': fontIconType === 'ele' }" @click="onIconChange('ele')" class="ml10" title="elementPlus 图标">ele</span>-->
-<!--							<span :class="{ 'span-active': fontIconType === 'awe' }" @click="onIconChange('awe')" class="ml10" title="fontawesome 图标">awe</span>-->
-<!--						</div>-->
-<!--					</div>-->
-<!--					<div class="icon-selector-warp-row">-->
-<!--						<el-scrollbar ref="selectorScrollbarRef">-->
-<!--							<el-row :gutter="10" v-if="fontIconSheetsFilterList.length > 0">-->
-<!--								<el-col :xs="6" :sm="4" :md="4" :lg="4" :xl="4" @click="onColClick(v)" v-for="(v, k) in fontIconSheetsFilterList" :key="k">-->
-<!--									<div class="icon-selector-warp-item" :class="{ 'icon-selector-active': fontIconPrefix === v }">-->
-<!--										<div class="flex-margin">-->
-<!--											<div class="icon-selector-warp-item-value">-->
-<!--												<SvgIcon :name="v" />-->
-<!--											</div>-->
-<!--										</div>-->
-<!--									</div>-->
-<!--								</el-col>-->
-<!--							</el-row>-->
-<!--							<el-empty :image-size="100" v-if="fontIconSheetsFilterList.length <= 0" :description="emptyDescription"></el-empty>-->
-<!--						</el-scrollbar>-->
-<!--					</div>-->
-<!--				</div>-->
-<!--			</template>-->
-<!--		</el-popover>-->
-<!--	</div>-->
-<!--</template>-->
+<template>
+    <div class="icon-selector w100 h100">
+        <el-popover placement="bottom" :width="fontIconWidth" trigger="click" transition="el-zoom-in-top" popper-class="icon-selector-popper" @show="onPopoverShow">
+            <template #reference>
+                <el-input v-model="fontIconSearch" :placeholder="fontIconPlaceholder" :clearable="clearable" :disabled="disabled" :size="size" ref="inputWidthRef" @clear="onClearFontIcon" @focus="onIconFocus" @blur="onIconBlur">
+                    <template #prepend>
+                        <SvgIcon :name="fontIconPrefix === '' ? prepend : fontIconPrefix" class="font14" v-if="fontIconPrefix === '' ? prepend?.indexOf('ele-') > -1 : fontIconPrefix?.indexOf('ele-') > -1" />
+                        <i v-else :class="fontIconPrefix === '' ? prepend : fontIconPrefix" class="font14"></i>
+                    </template>
+                </el-input>
+            </template>
+            <template #default>
+                <div class="icon-selector-warp">
+                    <div class="icon-selector-warp-title flex">
+                        <div class="flex-auto">{{ title }}</div>
+                        <div class="icon-selector-warp-title-tab" v-if="type === 'all'">
+                            <span :class="{ 'span-active': fontIconType === 'ali' }" @click="onIconChange('ali')" class="ml10" title="iconfont 图标">ali</span>
+                            <span :class="{ 'span-active': fontIconType === 'ele' }" @click="onIconChange('ele')" class="ml10" title="elementPlus 图标">ele</span>
+                            <span :class="{ 'span-active': fontIconType === 'awe' }" @click="onIconChange('awe')" class="ml10" title="fontawesome 图标">awe</span>
+                        </div>
+                    </div>
+                    <div class="icon-selector-warp-row">
+                        <el-scrollbar ref="selectorScrollbarRef">
+                            <el-row :gutter="10" v-if="fontIconSheetsFilterList.length > 0">
+                                <el-col :xs="6" :sm="4" :md="4" :lg="4" :xl="4" @click="onColClick(v)" v-for="(v, k) in fontIconSheetsFilterList" :key="k">
+                                    <div class="icon-selector-warp-item" :class="{ 'icon-selector-active': fontIconPrefix === v }">
+                                        <div class="flex-margin">
+                                            <div class="icon-selector-warp-item-value">
+                                                <SvgIcon :name="v" />
+                                            </div>
+                                        </div>
+                                    </div>
+                                </el-col>
+                            </el-row>
+                            <el-empty :image-size="100" v-if="fontIconSheetsFilterList.length <= 0" :description="emptyDescription"></el-empty>
+                        </el-scrollbar>
+                    </div>
+                </div>
+            </template>
+        </el-popover>
+    </div>
+</template>
 
-<!--<script lang="ts">-->
-<!--import { ref, toRefs, reactive, onMounted, nextTick, computed, watch, defineComponent } from 'vue';-->
-<!--import initIconfont from '/@/utils/getStyleSheets';-->
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, nextTick, computed, watch, defineComponent } from 'vue';
+// import initIconfont from '/@/utils/getStyleSheets';
 
-<!--export default defineComponent({-->
-<!--	name: 'iconSelector',-->
-<!--	emits: ['update:modelValue', 'get', 'clear'],-->
-<!--	props: {-->
-<!--		// 输入框前置内容-->
-<!--		prepend: {-->
-<!--			type: String,-->
-<!--			default: () => 'ele-Pointer',-->
-<!--		},-->
-<!--		// 输入框占位文本-->
-<!--		placeholder: {-->
-<!--			type: String,-->
-<!--			default: () => '请输入内容搜索图标或者选择图标',-->
-<!--		},-->
-<!--		// 输入框占位文本-->
-<!--		size: {-->
-<!--			type: String,-->
-<!--			default: () => 'default',-->
-<!--		},-->
-<!--		// 弹窗标题-->
-<!--		title: {-->
-<!--			type: String,-->
-<!--			default: () => '请选择图标',-->
-<!--		},-->
-<!--		// icon 图标类型-->
-<!--		type: {-->
-<!--			type: String,-->
-<!--			default: () => 'ele',-->
-<!--		},-->
-<!--		// 禁用-->
-<!--		disabled: {-->
-<!--			type: Boolean,-->
-<!--			default: () => false,-->
-<!--		},-->
-<!--		// 是否可清空-->
-<!--		clearable: {-->
-<!--			type: Boolean,-->
-<!--			default: () => true,-->
-<!--		},-->
-<!--		// 自定义空状态描述文字-->
-<!--		emptyDescription: {-->
-<!--			type: String,-->
-<!--			default: () => '无相关图标',-->
-<!--		},-->
-<!--		// 双向绑定值,默认为 modelValue,-->
-<!--		// 参考:https://v3.cn.vuejs.org/guide/migration/v-model.html#%E8%BF%81%E7%A7%BB%E7%AD%96%E7%95%A5-->
-<!--		// 参考:https://v3.cn.vuejs.org/guide/component-custom-events.html#%E5%A4%9A%E4%B8%AA-v-model-%E7%BB%91%E5%AE%9A-->
-<!--		modelValue: String,-->
-<!--	},-->
-<!--	setup(props, { emit }) {-->
-<!--		const inputWidthRef = ref();-->
-<!--		const selectorScrollbarRef = ref();-->
-<!--		const state = reactive({-->
-<!--			fontIconPrefix: '',-->
-<!--			fontIconWidth: 0,-->
-<!--			fontIconSearch: '',-->
-<!--			fontIconTabsIndex: 0,-->
-<!--			fontIconSheetsList: [],-->
-<!--			fontIconPlaceholder: '',-->
-<!--			fontIconType: 'ali',-->
-<!--			fontIconShow: true,-->
-<!--		});-->
-<!--		// 处理 input 获取焦点时,modelValue 有值时,改变 input 的 placeholder 值-->
-<!--		const onIconFocus = () => {-->
-<!--			if (!props.modelValue) return false;-->
-<!--			state.fontIconSearch = '';-->
-<!--			state.fontIconPlaceholder = props.modelValue;-->
-<!--		};-->
-<!--		// 处理 input 失去焦点时,为空将清空 input 值,为点击选中图标时,将取原先值-->
-<!--		const onIconBlur = () => {-->
-<!--			setTimeout(() => {-->
-<!--				const icon = state.fontIconSheetsList.filter((icon: string) => icon === state.fontIconSearch);-->
-<!--				if (icon.length <= 0) state.fontIconSearch = '';-->
-<!--			}, 300);-->
-<!--		};-->
-<!--		// 处理 icon 双向绑定数值回显-->
-<!--		const initModeValueEcho = () => {-->
-<!--			if (props.modelValue === '') return ((<string | undefined>state.fontIconPlaceholder) = props.placeholder);-->
-<!--			(<string | undefined>state.fontIconPlaceholder) = props.modelValue;-->
-<!--			(<string | undefined>state.fontIconPrefix) = props.modelValue;-->
-<!--		};-->
-<!--		// 处理 icon type 类型为 all 时,类型 ali、ele、awe 回显问题-->
-<!--		const initFontIconTypeEcho = () => {-->
-<!--			if ((<any>props.modelValue)?.indexOf('iconfont') > -1) onIconChange('ali');-->
-<!--			else if ((<any>props.modelValue)?.indexOf('ele-') > -1) onIconChange('ele');-->
-<!--			else if ((<any>props.modelValue)?.indexOf('fa') > -1) onIconChange('awe');-->
-<!--			else onIconChange('ali');-->
-<!--		};-->
-<!--		// 图标搜索及图标数据显示-->
-<!--		const fontIconSheetsFilterList = computed(() => {-->
-<!--			if (!state.fontIconSearch) return state.fontIconSheetsList;-->
-<!--			let search = state.fontIconSearch.trim().toLowerCase();-->
-<!--			return state.fontIconSheetsList.filter((item: any) => {-->
-<!--				if (item.toLowerCase().indexOf(search) !== -1) return item;-->
-<!--			});-->
-<!--		});-->
-<!--		// 获取 input 的宽度-->
-<!--		const getInputWidth = () => {-->
-<!--			nextTick(() => {-->
-<!--				state.fontIconWidth = inputWidthRef.value.$el.offsetWidth;-->
-<!--			});-->
-<!--		};-->
-<!--		// 监听页面宽度改变-->
-<!--		const initResize = () => {-->
-<!--			window.addEventListener('resize', () => {-->
-<!--				getInputWidth();-->
-<!--			});-->
-<!--		};-->
-<!--		// 初始化数据-->
-<!--		const initFontIconData = async (type: string) => {-->
-<!--			state.fontIconSheetsList = [];-->
-<!--			if (type === 'ali') {-->
-<!--				await initIconfont.ali().then((res: any) => {-->
-<!--					// 阿里字体图标使用 `iconfont xxx`-->
-<!--					state.fontIconSheetsList = res.map((i: string) => `iconfont ${i}`);-->
-<!--				});-->
-<!--			} else if (type === 'ele') {-->
-<!--				await initIconfont.ele().then((res: any) => {-->
-<!--					state.fontIconSheetsList = res;-->
-<!--				});-->
-<!--			} else if (type === 'awe') {-->
-<!--				await initIconfont.awe().then((res: any) => {-->
-<!--					// fontawesome字体图标使用 `fa xxx`-->
-<!--					state.fontIconSheetsList = res.map((i: string) => `fa ${i}`);-->
-<!--				});-->
-<!--			}-->
-<!--			// 初始化 input 的 placeholder-->
-<!--			// 参考(单项数据流):https://cn.vuejs.org/v2/guide/components-props.html?#%E5%8D%95%E5%90%91%E6%95%B0%E6%8D%AE%E6%B5%81-->
-<!--			state.fontIconPlaceholder = props.placeholder;-->
-<!--			// 初始化双向绑定回显-->
-<!--			initModeValueEcho();-->
-<!--		};-->
-<!--		// 图标点击切换-->
-<!--		const onIconChange = (type: string) => {-->
-<!--			state.fontIconType = type;-->
-<!--			initFontIconData(type);-->
-<!--		};-->
-<!--		// 获取当前点击的 icon 图标-->
-<!--		const onColClick = (v: any) => {-->
-<!--			state.fontIconPlaceholder = v;-->
-<!--			state.fontIconPrefix = v;-->
-<!--			emit('get', state.fontIconPrefix);-->
-<!--			emit('update:modelValue', state.fontIconPrefix);-->
-<!--		};-->
-<!--		// 清空当前点击的 icon 图标-->
-<!--		const onClearFontIcon = () => {-->
-<!--			state.fontIconPrefix = '';-->
-<!--			emit('clear', state.fontIconPrefix);-->
-<!--			emit('update:modelValue', state.fontIconPrefix);-->
-<!--		};-->
-<!--		// 监听 Popover 打开,用于双向绑定值回显-->
-<!--		const onPopoverShow = () => {-->
-<!--			initModeValueEcho();-->
-<!--			initFontIconTypeEcho();-->
-<!--		};-->
-<!--		// 页面加载时-->
-<!--		onMounted(() => {-->
-<!--			initModeValueEcho();-->
-<!--			initResize();-->
-<!--			getInputWidth();-->
-<!--		});-->
+export default defineComponent({
+    name: 'iconSelector',
+    emits: ['update:modelValue', 'get', 'clear'],
+    props: {
+        // 输入框前置内容
+        prepend: {
+            type: String,
+            default: () => 'ele-Pointer'
+        },
+        // 输入框占位文本
+        placeholder: {
+            type: String,
+            default: () => '请输入内容搜索图标或者选择图标'
+        },
+        // 输入框占位文本
+        size: {
+            type: String,
+            default: () => 'default'
+        },
+        // 弹窗标题
+        title: {
+            type: String,
+            default: () => '请选择图标'
+        },
+        // icon 图标类型
+        type: {
+            type: String,
+            default: () => 'ele'
+        },
+        // 禁用
+        disabled: {
+            type: Boolean,
+            default: () => false
+        },
+        // 是否可清空
+        clearable: {
+            type: Boolean,
+            default: () => true
+        },
+        // 自定义空状态描述文字
+        emptyDescription: {
+            type: String,
+            default: () => '无相关图标'
+        },
+        // 双向绑定值,默认为 modelValue,
+        // 参考:https://v3.cn.vuejs.org/guide/migration/v-model.html#%E8%BF%81%E7%A7%BB%E7%AD%96%E7%95%A5
+        // 参考:https://v3.cn.vuejs.org/guide/component-custom-events.html#%E5%A4%9A%E4%B8%AA-v-model-%E7%BB%91%E5%AE%9A
+        modelValue: String
+    },
+    setup(props, { emit }) {
+        const inputWidthRef = ref();
+        const selectorScrollbarRef = ref();
+        const state = reactive({
+            fontIconPrefix: '',
+            fontIconWidth: 0,
+            fontIconSearch: '',
+            fontIconTabsIndex: 0,
+            fontIconSheetsList: [],
+            fontIconPlaceholder: '',
+            fontIconType: 'ali',
+            fontIconShow: true
+        });
+        // 处理 input 获取焦点时,modelValue 有值时,改变 input 的 placeholder 值
+        const onIconFocus = () => {
+            if (!props.modelValue) return false;
+            state.fontIconSearch = '';
+            state.fontIconPlaceholder = props.modelValue;
+        };
+        // 处理 input 失去焦点时,为空将清空 input 值,为点击选中图标时,将取原先值
+        const onIconBlur = () => {
+            setTimeout(() => {
+                const icon = state.fontIconSheetsList.filter((icon: string) => icon === state.fontIconSearch);
+                if (icon.length <= 0) state.fontIconSearch = '';
+            }, 300);
+        };
+        // 处理 icon 双向绑定数值回显
+        const initModeValueEcho = () => {
+            if (props.modelValue === '') return ((<string | undefined>state.fontIconPlaceholder) = props.placeholder);
+            (<string | undefined>state.fontIconPlaceholder) = props.modelValue;
+            (<string | undefined>state.fontIconPrefix) = props.modelValue;
+        };
+        // 处理 icon type 类型为 all 时,类型 ali、ele、awe 回显问题
+        const initFontIconTypeEcho = () => {
+            if ((<any>props.modelValue)?.indexOf('iconfont') > -1) onIconChange('ali');
+            else if ((<any>props.modelValue)?.indexOf('ele-') > -1) onIconChange('ele');
+            else if ((<any>props.modelValue)?.indexOf('fa') > -1) onIconChange('awe');
+            else onIconChange('ali');
+        };
+        // 图标搜索及图标数据显示
+        const fontIconSheetsFilterList = computed(() => {
+            if (!state.fontIconSearch) return state.fontIconSheetsList;
+            let search = state.fontIconSearch.trim().toLowerCase();
+            return state.fontIconSheetsList.filter((item: any) => {
+                if (item.toLowerCase().indexOf(search) !== -1) return item;
+            });
+        });
+        // 获取 input 的宽度
+        const getInputWidth = () => {
+            nextTick(() => {
+                state.fontIconWidth = inputWidthRef.value.$el.offsetWidth;
+            });
+        };
+        // 监听页面宽度改变
+        const initResize = () => {
+            window.addEventListener('resize', () => {
+                getInputWidth();
+            });
+        };
+        // 初始化数据
+        const initFontIconData = async (type: string) => {
+            state.fontIconSheetsList = [];
+            if (type === 'ali') {
+                await initIconfont.ali().then((res: any) => {
+                    // 阿里字体图标使用 `iconfont xxx`
+                    state.fontIconSheetsList = res.map((i: string) => `iconfont ${i}`);
+                });
+            } else if (type === 'ele') {
+                await initIconfont.ele().then((res: any) => {
+                    state.fontIconSheetsList = res;
+                });
+            } else if (type === 'awe') {
+                await initIconfont.awe().then((res: any) => {
+                    // fontawesome字体图标使用 `fa xxx`
+                    state.fontIconSheetsList = res.map((i: string) => `fa ${i}`);
+                });
+            }
+            // 初始化 input 的 placeholder
+            // 参考(单项数据流):https://cn.vuejs.org/v2/guide/components-props.html?#%E5%8D%95%E5%90%91%E6%95%B0%E6%8D%AE%E6%B5%81
+            state.fontIconPlaceholder = props.placeholder;
+            // 初始化双向绑定回显
+            initModeValueEcho();
+        };
+        // 图标点击切换
+        const onIconChange = (type: string) => {
+            state.fontIconType = type;
+            initFontIconData(type);
+        };
+        // 获取当前点击的 icon 图标
+        const onColClick = (v: any) => {
+            state.fontIconPlaceholder = v;
+            state.fontIconPrefix = v;
+            emit('get', state.fontIconPrefix);
+            emit('update:modelValue', state.fontIconPrefix);
+        };
+        // 清空当前点击的 icon 图标
+        const onClearFontIcon = () => {
+            state.fontIconPrefix = '';
+            emit('clear', state.fontIconPrefix);
+            emit('update:modelValue', state.fontIconPrefix);
+        };
+        // 监听 Popover 打开,用于双向绑定值回显
+        const onPopoverShow = () => {
+            initModeValueEcho();
+            initFontIconTypeEcho();
+        };
+        // 页面加载时
+        onMounted(() => {
+            initModeValueEcho();
+            initResize();
+            getInputWidth();
+        });
 
-<!--		// 监听双向绑定 modelValue 的变化-->
-<!--		watch(-->
-<!--			() => props.modelValue,-->
-<!--			() => {-->
-<!--				initModeValueEcho();-->
-<!--			}-->
-<!--		);-->
-<!--		return {-->
-<!--			inputWidthRef,-->
-<!--			selectorScrollbarRef,-->
-<!--			fontIconSheetsFilterList,-->
-<!--			onColClick,-->
-<!--			onIconChange,-->
-<!--			onClearFontIcon,-->
-<!--			onIconFocus,-->
-<!--			onIconBlur,-->
-<!--			onPopoverShow,-->
-<!--			...toRefs(state),-->
-<!--		};-->
-<!--	},-->
-<!--});-->
-<!--</script>-->
+        // 监听双向绑定 modelValue 的变化
+        watch(
+            () => props.modelValue,
+            () => {
+                initModeValueEcho();
+            }
+        );
+        return {
+            inputWidthRef,
+            selectorScrollbarRef,
+            fontIconSheetsFilterList,
+            onColClick,
+            onIconChange,
+            onClearFontIcon,
+            onIconFocus,
+            onIconBlur,
+            onPopoverShow,
+            ...toRefs(state)
+        };
+    }
+});
+</script>
diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue
index e0e0ba4..415e04e 100644
--- a/src/layout/navBars/breadcrumb/user.vue
+++ b/src/layout/navBars/breadcrumb/user.vue
@@ -7,20 +7,14 @@
             <template #dropdown>
                 <el-dropdown-menu>
                     <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
-                    <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{
-                        $t('message.user.dropdownDefault')
-                    }}</el-dropdown-item>
+                    <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
                     <el-dropdown-item command="small" :disabled="disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
                 </el-dropdown-menu>
             </template>
         </el-dropdown>
         <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">
             <div class="layout-navbars-breadcrumb-user-icon">
-                <i
-                    class="iconfont"
-                    :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'"
-                    :title="$t('message.user.title1')"
-                ></i>
+                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>
             </div>
             <template #dropdown>
                 <el-dropdown-menu>
@@ -35,29 +29,25 @@
                 <ele-Search />
             </el-icon>
         </div>
-        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">
-            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>
-        </div>
-        <div class="layout-navbars-breadcrumb-user-icon">
-            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">
-                <template #reference>
-                    <el-badge :is-dot="true">
-                        <el-icon :title="$t('message.user.title4')">
-                            <ele-Bell />
-                        </el-icon>
-                    </el-badge>
-                </template>
-                <template #default>
-                    <UserNews />
-                </template>
-            </el-popover>
-        </div>
+        <!--        <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">-->
+        <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
+        <!--        </div>-->
+        <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
+        <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
+        <!--                <template #reference>-->
+        <!--                    <el-badge :is-dot="true">-->
+        <!--                        <el-icon :title="$t('message.user.title4')">-->
+        <!--                            <ele-Bell />-->
+        <!--                        </el-icon>-->
+        <!--                    </el-badge>-->
+        <!--                </template>-->
+        <!--                <template #default>-->
+        <!--                    <UserNews />-->
+        <!--                </template>-->
+        <!--            </el-popover>-->
+        <!--        </div>-->
         <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
-            <i
-                class="iconfont"
-                :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')"
-                :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"
-            ></i>
+            <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
         </div>
         <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
             <span class="layout-navbars-breadcrumb-user-link">
diff --git a/src/stores/themeConfig.ts b/src/stores/themeConfig.ts
index 198e155..fd74bd9 100644
--- a/src/stores/themeConfig.ts
+++ b/src/stores/themeConfig.ts
@@ -10,137 +10,137 @@
  * 2、或者点击布局配置最底部 `一键恢复默认` 按钮即可看到效果
  */
 export const useThemeConfig = defineStore('themeConfig', {
-	state: (): ThemeConfigStates => ({
-		themeConfig: {
-			// 是否开启布局配置抽屉
-			isDrawer: false,
+    state: (): ThemeConfigStates => ({
+        themeConfig: {
+            // 是否开启布局配置抽屉
+            isDrawer: false,
 
-			/**
-			 * 全局主题
-			 */
-			// 默认 primary 主题颜色
-			primary: '#409eff',
-			// 是否开启深色模式
-			isIsDark: false,
+            /**
+             * 全局主题
+             */
+            // 默认 primary 主题颜色
+            primary: '#409eff',
+            // 是否开启深色模式
+            isIsDark: false,
 
-			/**
-			 * 菜单 / 顶栏
-			 * 注意:v1.0.17 版本去除设置布局切换,重置主题样式(initSetLayoutChange),
-			 * 切换布局需手动设置样式,设置的样式自动同步各布局,
-			 * 代码位置:/@/layout/navBars/breadcrumb/setings.vue
-			 */
-			// 默认顶栏导航背景颜色
-			topBar: '#ffffff',
-			// 默认顶栏导航字体颜色
-			topBarColor: '#606266',
-			// 是否开启顶栏背景颜色渐变
-			isTopBarColorGradual: false,
-			// 默认菜单导航背景颜色
-			menuBar: '#545c64',
-			// 默认菜单导航字体颜色
-			menuBarColor: '#eaeaea',
-			// 是否开启菜单背景颜色渐变
-			isMenuBarColorGradual: false,
-			// 默认分栏菜单背景颜色
-			columnsMenuBar: '#545c64',
-			// 默认分栏菜单字体颜色
-			columnsMenuBarColor: '#e6e6e6',
-			// 是否开启分栏菜单背景颜色渐变
-			isColumnsMenuBarColorGradual: false,
+            /**
+             * 菜单 / 顶栏
+             * 注意:v1.0.17 版本去除设置布局切换,重置主题样式(initSetLayoutChange),
+             * 切换布局需手动设置样式,设置的样式自动同步各布局,
+             * 代码位置:/@/layout/navBars/breadcrumb/setings.vue
+             */
+            // 默认顶栏导航背景颜色
+            topBar: '#ffffff',
+            // 默认顶栏导航字体颜色
+            topBarColor: '#606266',
+            // 是否开启顶栏背景颜色渐变
+            isTopBarColorGradual: false,
+            // 默认菜单导航背景颜色
+            menuBar: '#545c64',
+            // 默认菜单导航字体颜色
+            menuBarColor: '#eaeaea',
+            // 是否开启菜单背景颜色渐变
+            isMenuBarColorGradual: false,
+            // 默认分栏菜单背景颜色
+            columnsMenuBar: '#545c64',
+            // 默认分栏菜单字体颜色
+            columnsMenuBarColor: '#e6e6e6',
+            // 是否开启分栏菜单背景颜色渐变
+            isColumnsMenuBarColorGradual: false,
 
-			/**
-			 * 界面设置
-			 */
-			// 是否开启菜单水平折叠效果
-			isCollapse: false,
-			// 是否开启菜单手风琴效果
-			isUniqueOpened: false,
-			// 是否开启固定 Header
-			isFixedHeader: false,
-			// 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除
-			isFixedHeaderChange: false,
-			// 是否开启经典布局分割菜单(仅经典布局生效)
-			isClassicSplitMenu: false,
-			// 是否开启自动锁屏
-			isLockScreen: false,
-			// 开启自动锁屏倒计时(s/秒)
-			lockScreenTime: 30,
+            /**
+             * 界面设置
+             */
+            // 是否开启菜单水平折叠效果
+            isCollapse: false,
+            // 是否开启菜单手风琴效果
+            isUniqueOpened: false,
+            // 是否开启固定 Header
+            isFixedHeader: false,
+            // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除
+            isFixedHeaderChange: false,
+            // 是否开启经典布局分割菜单(仅经典布局生效)
+            isClassicSplitMenu: false,
+            // 是否开启自动锁屏
+            isLockScreen: false,
+            // 开启自动锁屏倒计时(s/秒)
+            lockScreenTime: 30,
 
-			/**
-			 * 界面显示
-			 */
-			// 是否开启侧边栏 Logo
-			isShowLogo: false,
-			// 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
-			isShowLogoChange: false,
-			// 是否开启 Breadcrumb,强制经典、横向布局不显示
-			isBreadcrumb: true,
-			// 是否开启 Tagsview
-			isTagsview: true,
-			// 是否开启 Breadcrumb 图标
-			isBreadcrumbIcon: false,
-			// 是否开启 Tagsview 图标
-			isTagsviewIcon: false,
-			// 是否开启 TagsView 缓存
-			isCacheTagsView: false,
-			// 是否开启 TagsView 拖拽
-			isSortableTagsView: true,
-			// 是否开启 TagsView 共用
-			isShareTagsView: false,
-			// 是否开启 Footer 底部版权信息
-			isFooter: false,
-			// 是否开启灰色模式
-			isGrayscale: false,
-			// 是否开启色弱模式
-			isInvert: false,
-			// 是否开启水印
-			isWartermark: false,
-			// 水印文案
-			wartermarkText: 'small@小柒',
+            /**
+             * 界面显示
+             */
+            // 是否开启侧边栏 Logo
+            isShowLogo: false,
+            // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
+            isShowLogoChange: false,
+            // 是否开启 Breadcrumb,强制经典、横向布局不显示
+            isBreadcrumb: true,
+            // 是否开启 Tagsview
+            isTagsview: true,
+            // 是否开启 Breadcrumb 图标
+            isBreadcrumbIcon: false,
+            // 是否开启 Tagsview 图标
+            isTagsviewIcon: false,
+            // 是否开启 TagsView 缓存
+            isCacheTagsView: false,
+            // 是否开启 TagsView 拖拽
+            isSortableTagsView: true,
+            // 是否开启 TagsView 共用
+            isShareTagsView: false,
+            // 是否开启 Footer 底部版权信息
+            isFooter: false,
+            // 是否开启灰色模式
+            isGrayscale: false,
+            // 是否开启色弱模式
+            isInvert: false,
+            // 是否开启水印
+            isWartermark: false,
+            // 水印文案
+            wartermarkText: 'small@小柒',
 
-			/**
-			 * 其它设置
-			 */
-			// Tagsview 风格:可选值"<tags-style-one|tags-style-four|tags-style-five>",默认 tags-style-five
-			// 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名
-			tagsStyle: 'tags-style-five',
-			// 主页面切换动画:可选值"<slide-right|slide-left|opacitys>",默认 slide-right
-			animation: 'slide-right',
-			// 分栏高亮风格:可选值"<columns-round|columns-card>",默认 columns-round
-			columnsAsideStyle: 'columns-round',
-			// 分栏布局风格:可选值"<columns-horizontal|columns-vertical>",默认 columns-horizontal
-			columnsAsideLayout: 'columns-vertical',
+            /**
+             * 其它设置
+             */
+            // Tagsview 风格:可选值"<tags-style-one|tags-style-four|tags-style-five>",默认 tags-style-five
+            // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名
+            tagsStyle: 'tags-style-five',
+            // 主页面切换动画:可选值"<slide-right|slide-left|opacitys>",默认 slide-right
+            animation: 'slide-right',
+            // 分栏高亮风格:可选值"<columns-round|columns-card>",默认 columns-round
+            columnsAsideStyle: 'columns-round',
+            // 分栏布局风格:可选值"<columns-horizontal|columns-vertical>",默认 columns-horizontal
+            columnsAsideLayout: 'columns-vertical',
 
-			/**
-			 * 布局切换
-			 * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue
-			 * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
-			 */
-			// 布局切换:可选值"<defaults|classic|transverse|columns>",默认 defaults
-			layout: 'defaults',
+            /**
+             * 布局切换
+             * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue
+             * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
+             */
+            // 布局切换:可选值"<defaults|classic|transverse|columns>",默认 defaults
+            layout: 'classic',
 
-			/**
-			 * 后端控制路由
-			 */
-			// 是否开启后端控制路由
-			isRequestRoutes: true,
+            /**
+             * 后端控制路由
+             */
+            // 是否开启后端控制路由
+            isRequestRoutes: true,
 
-			/**
-			 * 全局网站标题 / 副标题
-			 */
-			// 网站主标题(菜单导航、浏览器当前网页标题)
-			globalTitle: 'vue-next-admin',
-			// 网站副标题(登录页顶部文字)
-			globalViceTitle: 'vueNextAdmin',
-			// 默认初始语言,可选值"<zh-cn|en|zh-tw>",默认 zh-cn
-			globalI18n: 'zh-cn',
-			// 默认全局组件大小,可选值"<large|'default'|small>",默认 'large'
-			globalComponentSize: 'large',
-		},
-	}),
-	actions: {
-		setThemeConfig(data: ThemeConfigState) {
-			this.themeConfig = data;
-		},
-	},
+            /**
+             * 全局网站标题 / 副标题
+             */
+            // 网站主标题(菜单导航、浏览器当前网页标题)
+            globalTitle: 'vue-next-admin',
+            // 网站副标题(登录页顶部文字)
+            globalViceTitle: 'vueNextAdmin',
+            // 默认初始语言,可选值"<zh-cn|en|zh-tw>",默认 zh-cn
+            globalI18n: 'zh-cn',
+            // 默认全局组件大小,可选值"<large|'default'|small>",默认 'large'
+            globalComponentSize: 'large'
+        }
+    }),
+    actions: {
+        setThemeConfig(data: ThemeConfigState) {
+            this.themeConfig = data;
+        }
+    }
 });
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 9b5d13d..14169b4 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -50,12 +50,16 @@
         // 对响应数据做点什么
         if (response.data.code && response.data.code === 'A0213') {
             ElMessage.error('用户uid不存在');
-            Session.clear();
-            window.location.href = '/';
+            setTimeout(() => {
+                Session.clear();
+                window.location.href = '/';
+            }, 1000);
         } else if (response.data.code && response.data.code === 'A0215') {
             ElMessage.error('token失效');
-            Session.clear();
-            window.location.href = '/';
+            setTimeout(() => {
+                Session.clear();
+                window.location.href = '/';
+            }, 1000);
         }
         // if(response.data.code && response.data.code !== '200'){
         return Promise.resolve(response);
@@ -83,8 +87,16 @@
         // 对响应错误做点什么
         if (error.message.indexOf('timeout') != -1) {
             ElMessage.error('网络超时');
+            setTimeout(() => {
+                Session.clear();
+                window.location.href = '/';
+            }, 1000);
         } else if (error.message == 'Network Error') {
             ElMessage.error('网络连接错误');
+            setTimeout(() => {
+                Session.clear();
+                window.location.href = '/';
+            }, 1000);
         } else {
             if (error.response.data) ElMessage.error(error.response.data.error);
             else ElMessage.error('接口路径找不到');
diff --git a/src/views/contingencyManagement/abolishDialog/abolishDialog.vue b/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
index c0ee5e8..69dba30 100644
--- a/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
+++ b/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
@@ -20,7 +20,7 @@
     </div>
     <div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
       <div class="title2">流程图
-        <img src="src">
+        <!-- <img src=""> -->
       </div>
       <div style="width:100%;height:400px"></div>
     </div>
@@ -40,7 +40,7 @@
 export default defineComponent({
   components:{lowerPlate,formInformationTop,formInformationTops},
   setup() {
-    const activeIndex = ref('1');
+    const activeIndex = ref<any>('1');
     const handleSelect = (key: string, keyPath: string[]) => {
       // console.log(key, keyPath);
       activeIndex.value = key;
diff --git a/src/views/contingencyManagement/contingency/component/dialog.vue b/src/views/contingencyManagement/contingency/component/dialog.vue
deleted file mode 100644
index add861a..0000000
--- a/src/views/contingencyManagement/contingency/component/dialog.vue
+++ /dev/null
@@ -1,200 +0,0 @@
-<template>
-  <div class="system-add-user-container">
-    <el-dialog title="查看应急队伍管理" v-model="isShowDialog" width="769px">
-      <el-form :model="ruleForm" size="default" label-width="90px">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="账户名称">
-              <el-input v-model="ruleForm.userName" placeholder="请输入账户名称" clearable></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="用户昵称">
-              <el-input v-model="ruleForm.userNickname" placeholder="请输入用户昵称" clearable></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="关联角色">
-              <el-select v-model="ruleForm.roleSign" placeholder="请选择" clearable class="w100">
-                <el-option label="超级管理员" value="admin"></el-option>
-                <el-option label="普通用户" value="common"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="部门">
-              <el-cascader
-                  :options="deptData"
-                  :props="{ checkStrictly: true, value: 'deptName', label: 'deptName' }"
-                  placeholder="请选择部门"
-                  clearable
-                  class="w100"
-                  v-model="ruleForm.department"
-              >
-                <template #default="{ node, data }">
-                  <span>{{ data.deptName }}</span>
-                  <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-                </template>
-              </el-cascader>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="手机号">
-              <el-input v-model="ruleForm.phone" placeholder="请输入手机号" clearable></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="邮箱">
-              <el-input v-model="ruleForm.email" placeholder="请输入" clearable></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="性别">
-              <el-select v-model="ruleForm.sex" placeholder="请选择" clearable class="w100">
-                <el-option label="男" value="男"></el-option>
-                <el-option label="女" value="女"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="账户密码">
-              <el-input v-model="ruleForm.password" placeholder="请输入" type="password" clearable></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="账户过期">
-              <el-date-picker v-model="ruleForm.overdueTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="用户状态">
-              <el-switch v-model="ruleForm.status" inline-prompt active-text="启" inactive-text="禁"></el-switch>
-            </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="ruleForm.describe" type="textarea" placeholder="请输入用户描述" maxlength="150"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <template #footer>
-				<span class="dialog-footer">
-					<el-button @click="onCancel" size="default">取 消</el-button>
-					<el-button type="primary" @click="onSubmit" size="default">新 增</el-button>
-				</span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-
-<script lang="ts">
-import { reactive, toRefs, onMounted, defineComponent } from 'vue';
-
-// 定义接口来定义对象的类型
-interface DeptData {
-  deptName: string;
-  createTime: string;
-  status: boolean;
-  sort: number | string;
-  describe: string;
-  id: number;
-  children?: DeptData[];
-}
-interface UserState {
-  isShowDialog: boolean;
-  ruleForm: {
-    userName: string;
-    userNickname: string;
-    roleSign: string;
-    department: any;
-    phone: string;
-    email: string;
-    sex: string;
-    password: string;
-    overdueTime: string;
-    status: boolean;
-    describe: string;
-  };
-  deptData: Array<DeptData>;
-}
-
-export default defineComponent({
-  name: 'systemAddUser',
-  setup() {
-    const state = reactive<UserState>({
-      isShowDialog: false,
-      ruleForm: {
-        userName: '', // 账户名称
-        userNickname: '', // 用户昵称
-        roleSign: '', // 关联角色
-        department: [], // 部门
-        phone: '', // 手机号
-        email: '', // 邮箱
-        sex: '', // 性别
-        password: '', // 账户密码
-        overdueTime: '', // 账户过期
-        status: true, // 用户状态
-        describe: '', // 用户描述
-      },
-      deptData: [], // 部门数据
-    });
-    // 打开弹窗
-    const openDialog = () => {
-      state.isShowDialog = true;
-    };
-    // 关闭弹窗
-    const closeDialog = () => {
-      state.isShowDialog = false;
-    };
-    // 取消
-    const onCancel = () => {
-      closeDialog();
-    };
-    // 新增
-    const onSubmit = () => {
-      closeDialog();
-    };
-    // 初始化部门数据
-    const initTableData = () => {
-      state.deptData.push({
-        deptName: 'vueNextAdmin',
-        createTime: new Date().toLocaleString(),
-        status: true,
-        sort: Math.random(),
-        describe: '顶级部门',
-        id: Math.random(),
-        children: [
-          {
-            deptName: 'IT外包服务',
-            createTime: new Date().toLocaleString(),
-            status: true,
-            sort: Math.random(),
-            describe: '总部',
-            id: Math.random(),
-          },
-          {
-            deptName: '资本控股',
-            createTime: new Date().toLocaleString(),
-            status: true,
-            sort: Math.random(),
-            describe: '分部',
-            id: Math.random(),
-          },
-        ],
-      });
-    };
-    // 页面加载时
-    onMounted(() => {
-      initTableData();
-    });
-    return {
-      openDialog,
-      closeDialog,
-      onCancel,
-      onSubmit,
-      ...toRefs(state),
-    };
-  },
-});
-</script>
diff --git a/src/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue b/src/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue
deleted file mode 100644
index 3effe20..0000000
--- a/src/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-  <div class="system-edit-user-container">
-    <el-dialog
-        title="修改应急队伍人员"
-        v-model="isShowDialog"
-        width="769px"
-        draggable
-        :fullscreen="full"
-    >
-      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-      <el-form
-          ref="ruleFormRef"
-          :model="ruleForm"
-          size="default"
-          :rules="rules"
-          label-width="90px">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="选择人员" prop="selectPeople">
-              <el-input
-                  v-model="ruleForm.selectPeople"
-                  placeholder="请选择"
-                  class="input-with-select"
-              >
-                <template #append>
-                  <el-button :icon="Search"/>
-                </template>
-              </el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="人员工号" prop="jobNumber">
-              <el-input v-model="ruleForm.jobNumber" placeholder="请填写人员工号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="人员名称" prop="personnelName">
-              <el-input v-model="ruleForm.personnelName" placeholder="请填写人员名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="人员性别" prop="personnelGender">
-              <el-radio-group v-model="ruleForm.personnelGender">
-                <el-radio label="男" />
-                <el-radio label="女" />
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="手机号码" prop="phone">
-              <el-input v-model="ruleForm.phone" placeholder="请填写手机号码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="职位" prop="position">
-              <el-input v-model="ruleForm.position" placeholder="请填写职位"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <template #footer>
-				<span class="dialog-footer">
-          <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">继续添加</el-button>
-					<el-button size="default" @click="onCancel">关闭</el-button>
-          <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
-				</span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-
-<script lang="ts">
-import {
-  ref,
-  reactive,
-  toRefs,
-  defineComponent
-} from 'vue';
-
-import type {
-  FormRules,
-  FormInstance,
-} from 'element-plus'
-
-import {
-  Search,
-  FullScreen,
-} from '@element-plus/icons-vue'
-// 定义接口来定义对象的类型
-interface DeptData {
-  deptName: string;
-  createTime: string;
-  status: boolean;
-  sort: number | string;
-  describe: string;
-  id: number;
-  children?: DeptData[];
-}
-
-interface RuleFormRow {
-  // teamName: string;
-  // teamLevel: string;
-  // teamLeader: string;
-  // responsibleDepartment: any
-  // teamPhone: string;
-  // telephone: string;
-  // describe: string;
-  // selectPeople: string
-}
-interface UserState {
-  isShowDialog: boolean;
-  ruleForm: RuleFormRow;
-  deptData: Array<DeptData>;
-}
-export default defineComponent({
-  name: 'editTeamLeader',
-  components: {
-    // Search,
-  },
-  setup() {
-    const state = reactive<UserState>({
-      isShowDialog: false,
-      ruleForm: {
-        selectPeople:'', //选择人员
-        jobNumber: '', // 人员工号
-        phone: '', // 手机号码
-        personnelGender: '', //人员性别
-        position: '', //职位
-        personnelName: '', // 人员名称
-      },
-      deptData: [], // 部门数据
-    });
-    // const isShowDialog = ref(false)
-    const ruleFormRef = ref<FormInstance>()
-    // 打开弹窗
-    const openDialog = (row: RuleFormRow) => {
-      // isShowDialog.value = true;
-      state.ruleForm = row;
-      state.isShowDialog = true;
-    };
-    // 关闭弹窗
-    const closeDialog = () => {
-      // isShowDialog.value = false;
-      state.isShowDialog = false;
-    };
-    // 取消
-    const onCancel = () => {
-      closeDialog();
-    };
-    const rules = reactive<FormRules>({
-      selectPeople:[
-        {
-          required: true,
-          message: '人员不能为空',
-          trigger: 'change',
-        },
-      ],
-      jobNumber: [
-        {
-          required: true,
-          message: '人员工号不能为空',
-          trigger: 'change',
-        },
-      ],
-      personnelName: [
-        {
-          required: true,
-          message: '人员名称不能为空',
-          trigger: 'change',
-        },
-      ],
-      personnelGender: [
-        {
-          required: true,
-          message: '人员性别不能为空',
-          trigger: 'change',
-        },
-      ],
-      phone: [
-        {
-          required: true,
-          message: '手机号码不能为空',
-          trigger: 'change',
-        },
-      ],
-      position: [
-        {
-          required: true,
-          message: '职位不能为空',
-          trigger: 'change',
-        },
-      ],
-    })
-    const submitForm = async (formEl: FormInstance | undefined) => {
-      if (!formEl) return
-      await formEl.validate((valid, fields) => {
-        if (valid) {
-          console.log('submit!')
-        } else {
-          console.log('error submit!', fields)
-        }
-      })
-    }
-    //全屏
-    const full = ref(false);
-    const toggleFullscreen = () => {
-      if (full.value == false) {
-        full.value = true;
-      } else {
-        full.value = false;
-      }
-    };
-    return {
-      openDialog,
-      closeDialog,
-      // isShowDialog,
-      ruleFormRef,
-      submitForm,
-      onCancel,
-      rules,
-      Search,
-      ...toRefs(state),
-      toggleFullscreen,
-      FullScreen,
-      full,
-    };
-  },
-});
-</script>
-<style scoped lang="scss">
-.textarea{
-  height: 168px!important;
-}
-.textarea ::v-deep .el-textarea__inner{
-  height: 168px!important;
-}
-::v-deep .el-table__cell {
-  font-weight: 400;
-}
-</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue
index 4ae9379..e853358 100644
--- a/src/views/contingencyManagement/contingency/component/openAdd.vue
+++ b/src/views/contingencyManagement/contingency/component/openAdd.vue
@@ -13,9 +13,9 @@
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="队伍级别" prop="teamLevel">
                             <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
-                                <el-option label="公司" value="公司"></el-option>
-                                <el-option label="分厂-车间" value="分厂-车间"></el-option>
-                                <el-option label="工序-班组等" value="工序-班组等"></el-option>
+                                <el-option label="公司" value="1"></el-option>
+                                <el-option label="分厂-车间" value="2"></el-option>
+                                <el-option label="工序-班组等" value="3"></el-option>
                             </el-select>
                         </el-form-item>
                     </el-col>
diff --git a/src/views/contingencyManagement/contingency/component/openSee.vue b/src/views/contingencyManagement/contingency/component/openSee.vue
deleted file mode 100644
index 066f66d..0000000
--- a/src/views/contingencyManagement/contingency/component/openSee.vue
+++ /dev/null
@@ -1,425 +0,0 @@
-<template>
-  <div class="system-edit-user-container">
-    <el-dialog
-        :title="title"
-        v-model="isShowDialog"
-        width="769px"
-        draggable
-        :fullscreen="full"
-    >
-      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-      <el-form
-          :model="ruleForm"
-          size="default"
-          :rules="rules"
-          label-width="120px"
-      >
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="队伍名称" prop="teamName">
-              <el-input v-model="ruleForm.teamName" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="队伍级别" prop="teamLevel">
-              <el-select v-model="ruleForm.teamLevel" :disabled="true" class="w100">
-                <el-option label="公司" value="admin"></el-option>
-                <el-option label="分厂-车间" value="common"></el-option>
-                <el-option label="工序-班组等" value="shang"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="队伍负责人" prop="principalUid">
-              <el-input
-                  v-model="ruleForm.principalUid"
-                  placeholder="Please input"
-                  class="input-with-select"
-                  :disabled="true"
-              >
-                <template #append>
-                  <el-button :icon="Search"/>
-                </template>
-              </el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="负责人部门" prop="principalDepartmentId">
-              <el-tree-select v-model="ruleForm.principalDepartmentId" :data="data"  :disabled="true" class="w100"/>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="负责人手机" prop="principalPhone">
-              <el-input v-model="ruleForm.principalPhone" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-            <el-form-item label="固定电话" prop="telephoneNumber">
-              <el-input v-model="ruleForm.telephoneNumber" :disabled="true"></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="队伍描述" prop="teamDesc">
-              <el-input class="textarea" v-model="ruleForm.teamDesc" type="textarea" :disabled="true" maxlength="150"></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="相关附件" prop="fileList">
-              <el-upload
-                  v-model:file-list="fileList"
-                  class="upload-demo"
-                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                  :on-change="handleChange"
-              >
-                <el-button type="primary" disabled
-                >点击上传</el-button>
-                <template #tip>
-                  <div class="el-upload__tip">
-                    添加相关附件
-                  </div>
-                </template>
-              </el-upload>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-            <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
-              <el-tab-pane label="应急队伍人员" name="first">
-                <el-button type="primary" size="default" disabled>新增</el-button>
-                <el-table
-                    :data="tableData"
-                    style="width: 100%;margin-top: 15px;"
-                    ref="multipleTableRef"
-                    :header-cell-style="{background:'#f6f7fa',color:'#909399'}"
-                >
-                  <el-table-column prop="jobNo" label="人员工号" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="personnelName" label="人员名称" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="phone" label="手机号码" show-overflow-tooltip></el-table-column>
-                  <el-table-column prop="position" label="职位" show-overflow-tooltip></el-table-column>
-                  <el-table-column label="操作" width="200" align="center">
-                    <template #default="scope">
-                      <el-button disabled size="small" text="plain" >查看
-                      </el-button>
-                      <el-button disabled size="small" text="plain" style="margin-right: 5px;">编辑
-                      </el-button>
-                      <el-button disabled size="small" text="plain" style="margin-right: 5px;">删除
-                      </el-button>
-                    </template>
-                  </el-table-column>
-                </el-table>
-              </el-tab-pane>
-            </el-tabs>
-          </el-col>
-        </el-row>
-      </el-form>
-      <template #footer>
-				<span class="dialog-footer">
-					<el-button @click="onCancel" size="default">关闭</el-button>
-				</span>
-      </template>
-    </el-dialog>
-<!--    <AddTeamLeader ref="addRef" />-->
-  </div>
-</template>
-
-<script lang="ts">
-import { reactive, toRefs, ref, onMounted, defineComponent } from 'vue';
-import type {
-  UploadUserFile,
-  TabsPaneContext,
-  FormRules,
-} from 'element-plus'
-import {
-  Search,
-  FullScreen
-} from '@element-plus/icons-vue'
-// import AddTeamLeader from '/@/views/contingency/component/addEmergencyPersonnel.vue';
-// 定义接口来定义对象的类型
-interface MenuDataTree {
-  id: number;
-  label: string;
-  children?: MenuDataTree[];
-}
-
-// 定义表格数据类型
-interface User {
-  personnelName: string
-  jobNo: string
-  phone: string;
-  position: string;
-}
-
-interface RoleState {
-  title:string,
-  // buttonName:string,
-  isShowDialog: boolean;
-  ruleForm: {
-    teamName: string;
-    teamLevel: string;
-    principalUid: number;
-    principalDepartmentId: number;
-    principalPhone: string;
-    telephoneNumber: string;
-    teamDesc: string;
-    fileList: string,
-  };
-  menuData: Array<MenuDataTree>;
-}
-export default defineComponent({
-  name: 'openSee',
-  components: {
-    // Search,
-  },
-  setup() {
-    const state = reactive<RoleState>({
-      isShowDialog: false,
-      title:'',
-      // buttonName:'',
-      ruleForm: {
-        teamName: '', // 队伍名称
-        teamLevel: '', // 队伍级别
-        principalUid: 1, // 队伍负责人
-        principalDepartmentId: 2,  //负责人部门
-        principalPhone: '', // 负责人手机
-        telephoneNumber: '', // 固定电话
-        teamDesc: '',  //队伍描述
-        fileList: [],
-      },
-      menuData: [],
-    });
-    // 打开弹窗
-    const openDialog = (type: string, value: any) => {
-      state.isShowDialog = true;
-      if(type === '查看'){
-        state.title = '查看应急队伍管理'
-        // state.buttonName = '新增'
-        state.ruleForm = {
-          teamName: '', // 队伍名称
-          teamLevel: '', // 队伍级别
-          principalUid: 1, // 队伍负责人
-          principalDepartmentId: 2,  //负责人部门
-          principalPhone: '', // 负责人手机
-          telephoneNumber: '', // 固定电话
-          teamDesc: '',  //队伍描述
-          fileList: [],
-        }
-      }else{
-        // state.title = '修改应急队伍管理'
-        // // state.buttonName = '确定'
-        // state.ruleForm = JSON.parse(JSON.stringify(value))
-      }
-    };
-    // 关闭弹窗
-    const closeDialog = () => {
-      state.isShowDialog = false;
-    };
-    // 取消
-    const onCancel = () => {
-      closeDialog();
-    };
-    // // 初始化部门数据
-    // const initTableData = () => {
-    //   state.deptData.push({
-    //     deptName: 'vueNextAdmin',
-    //     createTime: new Date().toLocaleString(),
-    //     status: true,
-    //     sort: Math.random(),
-    //     describe: '顶级部门',
-    //     id: Math.random(),
-    //     children: [
-    //       {
-    //         deptName: 'IT外包服务',
-    //         createTime: new Date().toLocaleString(),
-    //         status: true,
-    //         sort: Math.random(),
-    //         describe: '总部',
-    //         id: Math.random(),
-    //       },
-    //       {
-    //         deptName: '资本控股',
-    //         createTime: new Date().toLocaleString(),
-    //         status: true,
-    //         sort: Math.random(),
-    //         describe: '分部',
-    //         id: Math.random(),
-    //       },
-    //     ],
-    //   });
-    // };
-    // // 页面加载时
-    // onMounted(() => {
-    //   initTableData();
-    // });
-    // 上传附件
-    const fileList = ref<UploadUserFile[]>([])
-
-    //定义树形下拉框
-    const responsibleDepartment = ref()
-    const data = [
-      {
-        value: '1',
-        label: '广汇能源综合物流发展有限责任公司',
-        children: [
-          {
-            value: '1-1',
-            label: '经营班子',
-            children: [],
-          },
-        ],
-      },
-      {
-        value: '2',
-        label: '生产运行部',
-        children: [
-          {
-            value: '2-1',
-            label: '灌装一班',
-            children: []
-          },
-          {
-            value: '2-2',
-            label: '工艺四班',
-            children: [],
-          },
-        ],
-      },
-      {
-        value: '3',
-        label: '设备部',
-        children: [
-          {
-            value: '3-1',
-            label: '仪表班',
-            children: [],
-          },
-          {
-            value: '3-2',
-            label: '机修班',
-            children: [],
-          },
-        ],
-      },
-    ]
-    //定义tabs切换
-    const activeName = ref('first')
-
-    const handleClick = (tab: TabsPaneContext, event: Event) => {
-      console.log(tab, event)
-    }
-
-    //定义表格数据
-    const multipleSelection = ref<User[]>([])
-    const tableData: User[] = [
-      {
-        personnelName: '张志刚',
-        jobNo: '1037',
-        position: '副组长',
-        phone: '13673321356',
-      },
-      {
-        personnelName: '张志刚',
-        jobNo: '1037',
-        position: '副组长',
-        phone: '13673321356',
-      },
-      {
-        personnelName: '张志刚',
-        jobNo: '1037',
-        position: '副组长',
-        phone: '13673321356',
-      },
-      {
-        personnelName: '张志刚',
-        jobNo: '1037',
-        position: '副组长',
-        phone: '13673321356',
-      }
-    ]
-
-    // 必填项提示
-    const rules = reactive<FormRules>({
-      teamName: [
-        {
-          required: true,
-          message: '队伍名称不能为空',
-          trigger: 'change',
-        },
-      ],
-      teamLevel: [
-        {
-          required: true,
-          message: '队伍级别不能为空',
-          trigger: 'change',
-        },
-      ],
-      principalUid: [
-        {
-          required: true,
-          message: '队伍负责人不能为空',
-          trigger: 'change',
-        },
-      ],
-      principalDepartmentId: [
-        {
-          required: true,
-          message: '负责人部门不能为空',
-          trigger: 'change',
-        },
-      ],
-      principalPhone: [
-        {
-          required: true,
-          message: '负责人手机不能为空',
-          trigger: 'change',
-        },
-      ],
-      telephoneNumber: [
-        {
-          required: true,
-          message: '固定电话不能为空',
-          trigger: 'change',
-        },
-      ],
-    })
-    //全屏
-    const full = ref(false);
-    const toggleFullscreen = () => {
-      if(full.value == false) {
-        full.value = true;
-      } else {
-        full.value = false;
-      }
-    };
-    return {
-      openDialog,
-      closeDialog,
-      onCancel,
-      fileList,
-      responsibleDepartment,
-      data,
-      activeName,
-      handleClick,
-      tableData,
-      multipleSelection,
-      Search,
-      // addRef,
-      // onAddTeamLeader,
-      ...toRefs(state),
-      toggleFullscreen,
-      FullScreen,
-      full,
-      rules,
-    };
-  },
-});
-</script>
-<style scoped lang="scss">
-.textarea{
-  height: 168px!important;
-}
-.textarea ::v-deep .el-textarea__inner{
-  height: 168px!important;
-}
-::v-deep .el-table__cell {
-  font-weight: 400;
-}
-</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/contingency/index.vue b/src/views/contingencyManagement/contingency/index.vue
index 1be771a..2196936 100644
--- a/src/views/contingencyManagement/contingency/index.vue
+++ b/src/views/contingencyManagement/contingency/index.vue
@@ -8,9 +8,9 @@
           </el-form-item>
           <el-form-item>
             <el-select size="default" v-model="listQuery.searchParams.teamType" placeholder="请选择队伍级别">
-              <el-option label="公司" value="shanghai"></el-option>
-              <el-option label="分厂-车间" value="beijing"></el-option>
-              <el-option label="工序-班组等" value="beijing"></el-option>
+              <el-option label="公司" value="1"></el-option>
+              <el-option label="分厂-车间" value="2"></el-option>
+              <el-option label="工序-班组等" value="3"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -70,7 +70,13 @@
             width="55"
         />
         <el-table-column prop="teamName" label="队伍名称" show-overflow-tooltip sortable></el-table-column>
-        <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.teamLevel == 1">公司</span>
+            <span v-if="scope.row.teamLevel == 2">分厂-车间</span>
+            <span v-if="scope.row.teamLevel == 3">工序-班组等</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column>
         <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column>
         <el-table-column prop="attachments" label="相关附件" show-overflow-tooltip sortable></el-table-column>
@@ -137,8 +143,6 @@
   View,
   EditPen,
 } from '@element-plus/icons-vue'
-// import OpenAdd from '/@/views/contingencyManagement/contingency/component/openAdd.vue';
-// import OpenSee from '/@/views/contingencyManagement/contingency/component/openSee.vue';
 
 import OpenAdd from '../../contingencyManagement/contingency/component/openAdd.vue'
 import UpData from '../../contingencyManagement/contingency/component/upData.vue';
diff --git a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
index 8e18978..6469b53 100644
--- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
+++ b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
@@ -1,325 +1,307 @@
 <template>
-  <div class="system-edit-user-container">
-    <el-dialog
-        title="应急演练计划--修改审批进度"
-        v-model="isShowDialog"
-        width="769px"
-        draggable
-        :fullscreen="full"
-    >
-      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-      <img class="process-status-img" src="src/assets/icon.png">
-      <el-tabs type="border-card">
-        <el-tab-pane label="流转记录">
-          <el-card class="box-card" shadow="hover">
-            <template #header>
-              <div class="card-header">
-                <span>流转记录</span>
-              </div>
-            </template>
-            <div>
-              <el-steps :active="2">
-                <el-step title="开始" description="胡海涛,2022-07-09 20:41:50" />
-                <el-step title="一级审批" description="管理员,2022-07-09 20:41:50" />
-              </el-steps>
-            </div>
-            <el-table :data="tableData" stripe style="width: 100%">
-              <el-table-column prop="date" label="执行环节" width="120" />
-              <el-table-column prop="name" label="执行人" width="120" />
-              <el-table-column prop="address" label="开始时间" width="100" />
-              <el-table-column prop="address" label="结束时间" width="100" />
-              <el-table-column prop="address" label="办理状态" width="100" />
-              <el-table-column prop="address" label="审批意见" width="100" />
-              <el-table-column prop="address" label="任务历时" width="100" />
-            </el-table>
-          </el-card>
-        </el-tab-pane>
-        <el-tab-pane label="流程信息">
-          <el-card class="box-card" shadow="hover">
-            <template #header>
-              <div class="card-header">
-                <span>流程信息</span>
-              </div>
-            </template>
-            <div>
-              <el-timeline>
-                <el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)">
-                  <el-card>
-                    <h4 style="margin: 10px 0;padding-bottom: 10px;">一级审批</h4>
-                    <el-row>
-                      <el-col class="tip" :span="22" :offset="1">
-                        <div class="item">
-                          <span class="label">审批人:</span>
-                          <span class="value">管理员</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">办理状态:</span>
-                          <span class="value">
-<!--                             <el-tag-->
-<!--                                 v-for="item in items"-->
-<!--                                 :key="item.label"-->
-<!--                                 :type="item.type"-->
-<!--                                 class="mx-1"-->
-<!--                                 effect="dark"-->
-<!--                             >-->
-<!--                               {{ item.label }}-->
-<!--                             </el-tag>-->
-                             <p class="text">等待审核</p>
-                          </span>
-                        </div>
-                        <div class="item">
-                          <span class="label">审批意见:</span>
-                          <span class="value">等待审核</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">开始时间:</span>
-                          <span class="value">2022-07-09 20:41:50</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">结束时间:</span>
-                          <span class="value">2022-07-09 20:41:50</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">用时:</span>
-                          <span class="value">0秒</span>
-                        </div>
-                      </el-col>
-                    </el-row>
-                  </el-card>
-                </el-timeline-item>
-                <el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)">
-                  <el-card>
-                    <h4>开始</h4>
-                    <el-row>
-                      <el-col class="tip" :span="22" :offset="1">
-                        <div class="item">
-                          <span class="label">审批人:</span>
-                          <span class="value">胡海涛</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">办理状态:</span>
-                          <span class="value">
-                            <p class="text">开始</p>
-                          </span>
-                        </div>
-                        <div class="item">
-                          <span class="label">审批意见:</span>
-                          <span class="value">等待审核</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">开始时间:</span>
-                          <span class="value">2022-07-09 20:41:50</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">结束时间:</span>
-                          <span class="value">2022-07-09 20:41:50</span>
-                        </div>
-                        <div class="item">
-                          <span class="label">用时:</span>
-                          <span class="value">0秒</span>
-                        </div>
-                      </el-col>
-                    </el-row>
-                  </el-card>
-                </el-timeline-item>
-              </el-timeline>
-            </div>
-          </el-card>
-        </el-tab-pane>
-        <el-tab-pane label="流程图">
-          <el-card class="box-card" shadow="hover">
-            <template #header>
-              <div class="card-header">
-                <span>流程图</span>
-              </div>
-            </template>
-            <div>
-            </div>
-          </el-card>
-        </el-tab-pane>
-      </el-tabs>
-    </el-dialog>
-    <RegionsDialog ref="Shows"/>
-    <UserCheckbox ref="userRef"/>
-  </div>
+	<div class="system-edit-user-container">
+		<el-dialog title="应急演练计划--修改审批进度" v-model="isShowDialog" width="769px" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<!-- <img class="process-status-img" src=""> -->
+			<el-tabs type="border-card">
+				<el-tab-pane label="流转记录">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流转记录</span>
+							</div>
+						</template>
+						<div>
+							<el-steps :active="2">
+								<el-step title="开始" description="胡海涛,2022-07-09 20:41:50" />
+								<el-step title="一级审批" description="管理员,2022-07-09 20:41:50" />
+							</el-steps>
+						</div>
+						<el-table :data="tableData" stripe style="width: 100%">
+							<el-table-column prop="date" label="执行环节" width="120" />
+							<el-table-column prop="name" label="执行人" width="120" />
+							<el-table-column prop="address" label="开始时间" width="100" />
+							<el-table-column prop="address" label="结束时间" width="100" />
+							<el-table-column prop="address" label="办理状态" width="100" />
+							<el-table-column prop="address" label="审批意见" width="100" />
+							<el-table-column prop="address" label="任务历时" width="100" />
+						</el-table>
+					</el-card>
+				</el-tab-pane>
+				<el-tab-pane label="流程信息">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流程信息</span>
+							</div>
+						</template>
+						<div>
+							<el-timeline>
+								<el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)">
+									<el-card>
+										<h4 style="margin: 10px 0; padding-bottom: 10px">一级审批</h4>
+										<el-row>
+											<el-col class="tip" :span="22" :offset="1">
+												<div class="item">
+													<span class="label">审批人:</span>
+													<span class="value">管理员</span>
+												</div>
+												<div class="item">
+													<span class="label">办理状态:</span>
+													<span class="value">
+														<!--                             <el-tag-->
+														<!--                                 v-for="item in items"-->
+														<!--                                 :key="item.label"-->
+														<!--                                 :type="item.type"-->
+														<!--                                 class="mx-1"-->
+														<!--                                 effect="dark"-->
+														<!--                             >-->
+														<!--                               {{ item.label }}-->
+														<!--                             </el-tag>-->
+														<p class="text">等待审核</p>
+													</span>
+												</div>
+												<div class="item">
+													<span class="label">审批意见:</span>
+													<span class="value">等待审核</span>
+												</div>
+												<div class="item">
+													<span class="label">开始时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">结束时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">用时:</span>
+													<span class="value">0秒</span>
+												</div>
+											</el-col>
+										</el-row>
+									</el-card>
+								</el-timeline-item>
+								<el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)">
+									<el-card>
+										<h4>开始</h4>
+										<el-row>
+											<el-col class="tip" :span="22" :offset="1">
+												<div class="item">
+													<span class="label">审批人:</span>
+													<span class="value">胡海涛</span>
+												</div>
+												<div class="item">
+													<span class="label">办理状态:</span>
+													<span class="value">
+														<p class="text">开始</p>
+													</span>
+												</div>
+												<div class="item">
+													<span class="label">审批意见:</span>
+													<span class="value">等待审核</span>
+												</div>
+												<div class="item">
+													<span class="label">开始时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">结束时间:</span>
+													<span class="value">2022-07-09 20:41:50</span>
+												</div>
+												<div class="item">
+													<span class="label">用时:</span>
+													<span class="value">0秒</span>
+												</div>
+											</el-col>
+										</el-row>
+									</el-card>
+								</el-timeline-item>
+							</el-timeline>
+						</div>
+					</el-card>
+				</el-tab-pane>
+				<el-tab-pane label="流程图">
+					<el-card class="box-card" shadow="hover">
+						<template #header>
+							<div class="card-header">
+								<span>流程图</span>
+							</div>
+						</template>
+						<div></div>
+					</el-card>
+				</el-tab-pane>
+			</el-tabs>
+		</el-dialog>
+		<RegionsDialog ref="Shows" />
+		<UserCheckbox ref="userRef" />
+	</div>
 </template>
 
 <script lang="ts">
-import {
+import { ref, defineComponent } from 'vue';
 
-  ref,
-  defineComponent
-} from 'vue';
+import type { TagProps } from 'element-plus';
 
-import type {
-  TagProps,
-} from 'element-plus'
-
-import {
-  Search,
-  FullScreen
-} from '@element-plus/icons-vue'
-import UserCheckbox from "/@/components/userCheckbox/index.vue"
-import RegionsDialog from "/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue"
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import UserCheckbox from '/@/components/userCheckbox/index.vue';
+import RegionsDialog from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue';
 
 export default defineComponent({
-  name: 'openAdd',
-  components: {
-    RegionsDialog,
-    UserCheckbox,
-  },
-  setup() {
-    const isShowDialog = ref(false)
-    // 打开弹窗
-    const openDialog = () => {
-      // state.ruleForm = row;
-      isShowDialog.value = true;
-    };
-    // 关闭弹窗
-    const closeDialog = () => {
-      isShowDialog.value = false;
-    };
-    const tableData = [
-      {
-        date: '2016-05-03',
-        name: 'Tom',
-        address: '2022-07-09 20:41:50',
-      },
-      {
-        date: '2016-05-02',
-        name: 'Tom',
-        address: '2022-07-09 20:41:50',
-      },
-      {
-        date: '2016-05-04',
-        name: 'Tom',
-        address: '2022-07-09 20:41:50',
-      },
-      {
-        date: '2016-05-01',
-        name: 'Tom',
-        address: '2022-07-09 20:41:50',
-      },
-    ]
+	name: 'openAdd',
+	components: {
+		RegionsDialog,
+		UserCheckbox,
+	},
+	setup() {
+		const isShowDialog = ref(false);
+		// 打开弹窗
+		const openDialog = () => {
+			// state.ruleForm = row;
+			isShowDialog.value = true;
+		};
+		// 关闭弹窗
+		const closeDialog = () => {
+			isShowDialog.value = false;
+		};
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: '2022-07-09 20:41:50',
+			},
+		];
 
-    type Item = { type: TagProps['type']; label: string }
+		type Item = { type: TagProps['type']; label: string };
 
-    const items = ref<Array<Item>>([
-      { type: '', label: '等待审核' },
-    ])
-    //全屏
-    const full = ref(false);
-    const toggleFullscreen = () => {
-      if (full.value == false) {
-        full.value = true;
-      } else {
-        full.value = false;
-      }
-    };
-    return {
-      openDialog,
-      closeDialog,
-      isShowDialog,
-      Search,
-      tableData,
-      items,
-      toggleFullscreen,
-      FullScreen,
-      full,
-    };
-  },
+		const items = ref<Array<Item>>([{ type: '', label: '等待审核' }]);
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			Search,
+			tableData,
+			items,
+			toggleFullscreen,
+			FullScreen,
+			full,
+		};
+	},
 });
 </script>
 <style scoped lang="scss">
-.process-status-img{
-  width: 128px;
-  height: auto;
-  position: absolute;
-  right: 10px;
-  top: 60px;
-  z-index: 999;
+.process-status-img {
+	width: 128px;
+	height: auto;
+	position: absolute;
+	right: 10px;
+	top: 60px;
+	z-index: 999;
 }
 //弹窗底部边框线
-::v-deep .el-dialog__footer{
-  border-top: 1px solid #e8e8e8;
-  border-radius: 0 0 4px 4px;
+::v-deep .el-dialog__footer {
+	border-top: 1px solid #e8e8e8;
+	border-radius: 0 0 4px 4px;
 }
 //弹窗顶部边框线
 ::v-deep .el-dialog__header {
-  border-bottom: 1px solid #e8e8e8;
-  margin-right: 0;
-  border-radius: 4px 4px 0 0;
+	border-bottom: 1px solid #e8e8e8;
+	margin-right: 0;
+	border-radius: 4px 4px 0 0;
 }
 //tabs字体颜色
-::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{
-  color: #a9d86e!important;
+::v-deep .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
+	color: #a9d86e !important;
 }
 .card-header {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
 }
 //.box-card {
 //  width: 480px;
 //}
 //步骤条字体大小
-::v-deep  .el-step__icon-inner{
-  font-size: 14px!important;
+::v-deep .el-step__icon-inner {
+	font-size: 14px !important;
 }
 //步骤条颜色
-::v-deep .el-step__line{
-  background-color: #409eff;
+::v-deep .el-step__line {
+	background-color: #409eff;
 }
 //表头
 ::v-deep .el-table th.el-table__cell {
-  background-color: #f6f7fa;
-  font-weight: 400;
-  color: #909399;
+	background-color: #f6f7fa;
+	font-weight: 400;
+	color: #909399;
 }
-.el-table .sort-caret.ascending{
-  border-bottom-color: #c0c4cc;
+.el-table .sort-caret.ascending {
+	border-bottom-color: #c0c4cc;
 }
 
 .tip {
-  padding: 8px 16px;
-  background-color: #ecf8ff;
-  border-radius: 4px;
-  border-left: 5px solid #50bfff;
-  margin: 20px 0;
+	padding: 8px 16px;
+	background-color: #ecf8ff;
+	border-radius: 4px;
+	border-left: 5px solid #50bfff;
+	margin: 20px 0;
 }
-.item{
-  height: 32px;
-  line-height: 32px;
-  margin-bottom: 8px;
+.item {
+	height: 32px;
+	line-height: 32px;
+	margin-bottom: 8px;
 }
 .item .label {
-  display: inline-block;
-  height: 100%;
-  width: 70px;
-  font-size: 14px;
-  color: #5e6d82;
-  text-align: end;
-  vertical-align: top;
+	display: inline-block;
+	height: 100%;
+	width: 70px;
+	font-size: 14px;
+	color: #5e6d82;
+	text-align: end;
+	vertical-align: top;
 }
 .item .value {
-  padding-left: 10px;
-  font-size: 14px;
-  max-width: calc(100% - 90px);
-  color: #5e6d82;
-  display: inline-block;
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
+	padding-left: 10px;
+	font-size: 14px;
+	max-width: calc(100% - 90px);
+	color: #5e6d82;
+	display: inline-block;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
 }
-.text{
-  background-color: #409eff;
-  color: #fff;
-  border-width: 1px;
-  border-style: solid;
-  border-radius: 4px;
-  height: 24px;
-  padding: 0 8px;
-  line-height: 22px;
-  display: inline-block;
+.text {
+	background-color: #409eff;
+	color: #fff;
+	border-width: 1px;
+	border-style: solid;
+	border-radius: 4px;
+	height: 24px;
+	padding: 0 8px;
+	line-height: 22px;
+	display: inline-block;
 }
 </style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
index 094d1b1..15f3892 100644
--- a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
+++ b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
@@ -55,7 +55,6 @@
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="演练方式" prop="drillWay">
               <el-select :disabled="true" v-model="drillRuleForm.drillWay" class="w100" placeholder="请选择">
-
                 <el-option label="综合" value="0"></el-option>
                 <el-option label="桌面" value="1"></el-option>
                 <el-option label="专项" value="2"></el-option>
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
index 8e18978..5dad014 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
@@ -8,7 +8,7 @@
         :fullscreen="full"
     >
       <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
-      <img class="process-status-img" src="src/assets/icon.png">
+      <!-- <img class="process-status-img" src="src/assets/icon.png"> -->
       <el-tabs type="border-card">
         <el-tab-pane label="流转记录">
           <el-card class="box-card" shadow="hover">
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
index 2e903f9..a1a8412 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
@@ -42,10 +42,9 @@
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
             <el-form-item label="演练方式" prop="drillWay">
               <el-select v-model="ruleForm.drillWay" class="w100" placeholder="请选择">
-
-                <el-option label="综合" value="0"></el-option>
-                <el-option label="桌面" value="1"></el-option>
-                <el-option label="专项" value="2"></el-option>
+                <el-option label="综合" value="1"></el-option>
+                <el-option label="桌面" value="2"></el-option>
+                <el-option label="专项" value="3"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
index 5f85b72..b1a7099 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
@@ -44,8 +44,20 @@
         />
         <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
         <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
-        <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable></el-table-column>
-        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillWay == 1">综合</span>
+            <span v-if="scope.row.drillWay == 2">桌面</span>
+            <span v-if="scope.row.drillWay == 3">专项</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillLevel == 1">公司级</span>
+            <span v-if="scope.row.drillLevel == 2">分厂级</span>
+            <span v-if="scope.row.drillLevel == 3">车间级</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
         <el-table-column prop="gmtModitify" label="修改时间" show-overflow-tooltip sortable></el-table-column>
         <el-table-column label="操作" width="260" align="center">
diff --git a/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
index afc2ebf..e550b77 100644
--- a/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
+++ b/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
@@ -52,7 +52,6 @@
     </el-dialog>
     <DailogSearchUser ref="userRef" @SearchUser="onUser"/>
     <AddEmergencyPersonnel ref="addRef" />
-    <EditEmergencyPersonnel ref="editRef" />
   </div>
 </template>
 
@@ -71,7 +70,6 @@
 } from '@element-plus/icons-vue'
 import DailogSearchUser from "/@/components/DailogSearchUser/index.vue"
 import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue";
-import EditEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue";
 import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
 
 export default defineComponent({
@@ -79,7 +77,6 @@
   components: {
     DailogSearchUser,
     AddEmergencyPersonnel,
-    EditEmergencyPersonnel
   },
   setup(props, { emit }) {
     const isShowDialog = ref(false);
diff --git a/src/views/contingencyManagement/panManagement/component/openAdd.vue b/src/views/contingencyManagement/panManagement/component/openAdd.vue
index a5d978a..02c44c0 100644
--- a/src/views/contingencyManagement/panManagement/component/openAdd.vue
+++ b/src/views/contingencyManagement/panManagement/component/openAdd.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="system-edit-user-container">
-		<el-dialog :title="titles" v-model="isShowDialog" width="40%" draggable :fullscreen="full" :close-on-click-modal="false">
+		<el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" :close-on-click-modal="false">
 			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
 			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
 				<el-row :gutter="35">
@@ -12,14 +12,16 @@
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 						<el-form-item label="适用部门" prop="responsibleDepartment">
 							<el-tree-select
-								v-model="ruleForm.treeSelect"
+								v-model="ruleForm.responsibleDepartment"
 								:data="data"
 								multiple
-								:render-after-expand="true"
+								:render-after-expand="false"
 								:props="propse"
-								show-checkbox
 								clearable
-								check-strictly
+                show-checkbox
+                check-strictly
+                check-on-click-node
+                placeholder="请选择"
 							/>
 							<el-divider />
 						</el-form-item>
@@ -27,10 +29,10 @@
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 						<el-form-item label="预案类型" prop="type">
 							<el-select v-model="ruleForm.type" class="w100" placeholder="请选择">
-								<el-option label="综合应急预案" value="综合应急预案"></el-option>
-								<el-option label="现场处置方案" value="现场处置方案"></el-option>
-								<el-option label="专项应急预案" value="专项应急预案"></el-option>
-								<el-option label="其他预案" value="其他预案"></el-option>
+								<el-option label="综合应急预案" value="1"></el-option>
+								<el-option label="现场处置方案" value="2"></el-option>
+								<el-option label="专项应急预案" value="3"></el-option>
+								<el-option label="其他预案" value="4"></el-option>
 							</el-select>
 						</el-form-item>
 					</el-col>
@@ -45,9 +47,9 @@
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 						<el-form-item label="预案级别" prop="level">
 							<el-select v-model="ruleForm.level" class="w100" placeholder="请选择">
-								<el-option label="公司级" value="公司级"></el-option>
-								<el-option label="分厂级" value="分厂级"></el-option>
-								<el-option label="车间级" value="车间级"></el-option>
+								<el-option label="公司级" value="1"></el-option>
+								<el-option label="分厂级" value="2"></el-option>
+								<el-option label="车间级" value="3"></el-option>
 							</el-select>
 						</el-form-item>
 					</el-col>
@@ -169,15 +171,14 @@
 			authorDeptId: '', // 编写部门
 			releaseDate: '', // 发布实施日期
 			fileList: [
-				{
-					fileUrl: 'url',
-					fileName: 'name',
-				},
+				// {
+				// 	fileUrl: 'url',
+				// 	fileName: 'name',
+				// },
 			],
 			emergencyTeam: '', //应急队伍
 			areaList: [], //区域列表
-			teamList: [
-            ],
+			teamList: [],
 			deptList: [],
 			abolishStatus: false,
 		});
@@ -194,7 +195,12 @@
 					.seeEmergencyTeam(id)
 					.then((res) => {
 						if (res.data.code == 200) {
-							ruleForm.value = res.data.data;
+              ruleForm.value = res.data.data;
+              let arr = [];
+              for (let i = 0; i < ruleForm.value.teamList.length; i++) {
+                arr.push(ruleForm.value.teamList[i].emergencyTeam);
+              }
+              ruleForm.value.emergencyTeam = arr.toString();
 						}
 					});
 			}
@@ -209,12 +215,7 @@
 				.getTreedepartment()
 				.then((res) => {
 					if (res.data.code == 200) {
-            ruleForm.value = res.data.data;
-            let arr = [];
-            for (let i = 0; i < ruleForm.value.teamList.length; i++) {
-              arr.push(ruleForm.value.teamList[i].userName);
-            }
-            ruleForm.value.userName = arr.toString();
+            data.value = res.data.data;
 					} else {
 						ElMessage.error(res.data.msg);
 					}
@@ -304,10 +305,10 @@
 					authorDeptId: '', // 编写部门
 					releaseDate: '', // 发布实施日期
 					fileList: [
-						{
-							fileUrl: 'url',
-							fileName: 'name',
-						},
+						// {
+						// 	fileUrl: 'url',
+						// 	fileName: 'name',
+						// },
 					],
 					emergencyTeam: '', //应急队伍
 					areaList: [], //区域列表
@@ -321,28 +322,6 @@
 		const resetForm = (formEl: FormInstance | undefined) => {
 			isShowDialog.value = false;
 			if (!formEl) return;
-      ruleForm.value = {
-        name: '', // 预案名称
-        type: '', //预案类型
-        associatedDanger: '', // 危险源关联
-        level: '', // 预案级别
-        authorUid: '', // 编写人
-        authorName: '',
-        authorDeptId: '', // 编写部门
-        releaseDate: '', // 发布实施日期
-        fileList: [
-          {
-            fileUrl: 'url',
-            fileName: 'name',
-          },
-        ],
-        emergencyTeam: '', //应急队伍
-        areaList: [], //区域列表
-        teamList: [
-        ],
-        deptList: [],
-        abolishStatus: false,
-      };
 			formEl.resetFields();
 		};
 		// 应急队伍弹窗
@@ -350,16 +329,16 @@
 		const daiInpt = (data: any) => {
       Shows.value.openDailog(data);
 		};
-    const SearchUser = (e: any) => {
+    const SearchUser = (val: any) => {
       let arr = [];
       for (let i = 0; i < val.length; i++) {
-        arr.push(val[i].realName);
-        ruleForm.value.userList.push({
+        arr.push(val[i].teamName);
+        ruleForm.value.teamList.push({
           userUid: val[i].uid,
-          userName: val[i].realName,
+          emergencyTeam: val[i].teamName,
         });
       }
-      ruleForm.value.userName = arr.toString();
+      ruleForm.value.emergencyTeam = arr.toString();
     };
 		// 选择区域弹窗
 		const openRef = ref();
diff --git a/src/views/contingencyManagement/panManagement/index.vue b/src/views/contingencyManagement/panManagement/index.vue
index 0daee03..cc2ec1b 100644
--- a/src/views/contingencyManagement/panManagement/index.vue
+++ b/src/views/contingencyManagement/panManagement/index.vue
@@ -60,8 +60,21 @@
 			<el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange">
 				<el-table-column type="selection" width="55" />
 				<el-table-column prop="name" label="预案名称" show-overflow-tooltip sortable></el-table-column>
-				<el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable></el-table-column>
-				<el-table-column prop="level" label="预案级别" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.type == 1">综合应急预案</span>
+            <span v-if="scope.row.type == 2">现场处置方案</span>
+            <span v-if="scope.row.type == 3">专项应急预案</span>
+            <span v-if="scope.row.type == 4">其他预案</span>
+          </template>
+        </el-table-column>
+				<el-table-column prop="level" label="预案级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.level == 1">综合应急预案</span>
+            <span v-if="scope.row.level == 2">现场处置方案</span>
+            <span v-if="scope.row.level == 3">专项应急预案</span>
+          </template>
+        </el-table-column>
 				<el-table-column prop="releaseDate" label="发布实施日期" show-overflow-tooltip sortable></el-table-column>
 				<el-table-column label="操作" width="260" align="center" fixed="right">
 					<template #default="scope">
diff --git a/src/views/facilityManagement/InstrumentationInformation/index.vue b/src/views/facilityManagement/InstrumentationInformation/index.vue
index e64297f..d4e4308 100644
--- a/src/views/facilityManagement/InstrumentationInformation/index.vue
+++ b/src/views/facilityManagement/InstrumentationInformation/index.vue
@@ -46,14 +46,14 @@
 										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
 											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
 											<el-table-column property="leadingPersonId" align="center" label="保养负责人" sortable />
-											<el-table-column property="takecareDate" align="center" label="保养日期" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
 											<el-table-column property="leadingPersonDepartmentId" align="center" label="保养负责人单位" sortable />
 										</el-table>
 									</el-tab-pane>
 									<el-tab-pane label="设备检查" name="second"
 										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
 											<el-table-column property="leadingPersonId" align="center" label="检查人" sortable />
-											<el-table-column property="createTime" align="center" label="检查日期" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
 											<el-table-column property="name" align="center" label="检查人部门" sortable />
 											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
 											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
@@ -61,7 +61,7 @@
 									<el-tab-pane label="设备检测" name="third">
 										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
 											<el-table-column property="testPersonId" align="center" label="检测人" sortable />
-											<el-table-column property="testDate" align="center" label="检测日期" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
 											<el-table-column property="testPersonDepartmentId" align="center" label="检测人单位" sortable />
 											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
 											<el-table-column property="testResult" align="center" label="检测结果" sortable />
@@ -75,8 +75,8 @@
 											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
 											<el-table-column property="repairPersonId" align="center" label="维修负责人" sortable />
 											<el-table-column property="repairPersonDepartmentId" align="center" label="维修负责人单位" sortable />
-											<el-table-column property="repairStartDate" align="center" label="维修开始日期" sortable />
-											<el-table-column property="repairEndDate" align="center" label="维修结束日期" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
 										</el-table>
 									</el-tab-pane>
 								</el-tabs>
@@ -116,6 +116,7 @@
 </template>
 <script lang="ts">
 import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
 import updata from '/@/components/updata/updata.vue';
 import Dailog from '/@/components/equipmentDailog/Dailog.vue';
 import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
@@ -317,6 +318,7 @@
 		return {
 			handleNodeClick,
 			ruleForm,
+			timeDate,
 			resetForm,
 			listApi,
 			onAddorUpdata,
diff --git a/src/views/facilityManagement/keyEquipment/index.vue b/src/views/facilityManagement/keyEquipment/index.vue
index 52374a7..7e987d6 100644
--- a/src/views/facilityManagement/keyEquipment/index.vue
+++ b/src/views/facilityManagement/keyEquipment/index.vue
@@ -26,7 +26,7 @@
 			<el-col :span="20">
 				<div class="btns">
 					<div>
-						<el-button size="default" type="primary" :icon="Plus" @click="openD">新建</el-button>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
 						<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
 						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
 					</div>
diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
index 3af583a..4e37911 100644
--- a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
+++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
@@ -1,953 +1,813 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="12">
-				<div class="grid-content topInfo">
-					<el-select v-model="searchType" @change="changeSearch" placeholder="任务名称">
-						<el-option label="巡检任务类型" value="巡检任务类型" />
-						<el-option label="创建人" value="创建人" />
-						<el-option label="巡检班组" value="巡检班组" />
-						<el-option label="检查频次" value="检查频次" />
-						<el-option label="开始时间" value="开始时间" />
-					</el-select>
-					<el-input v-model="searchContent" v-if="searchType == '任务名称'" placeholder="请输入任务名称"></el-input>
-					<el-input
-							v-else-if="searchType == '检查频次'"
-							v-model="searchContent"
-							placeholder="请输入检查频次"
-					>
-						<template #append>
-							<el-select v-model="searchUnit" placeholder="选择单位">
-								<el-option label="分钟" value="分钟" />
-								<el-option label="小时" value="小时" />
-								<el-option label="天" value="天" />
-							</el-select>
-						</template>
-					</el-input>
-					<el-select v-model="searchContent" v-else-if="searchType == '巡检任务类型'" placeholder="请选择任务类型">
-						<el-option v-for="(item,index) in typeOptions" :label="item.name" :value="item.value" :key="index"/>
-					</el-select>
-					<el-select v-model="searchContent" v-else-if="searchType == '创建人'" placeholder="请选择创建人">
-						<el-option v-for="(item,index) in createrOptions" :label="item.name" :value="item.value" :key="index"/>
-					</el-select>
-					<el-select v-model="searchContent" v-else-if="searchType == '巡检班组'" placeholder="请选择巡检班组">
-						<el-option v-for="(item,index) in inspectorOptions" :label="item.name" :value="item.value" :key="index"/>
-					</el-select>
-					<el-date-picker
-							v-model="searchContent"
-							type="date"
-							v-else
-							:placeholder="'请选择' + searchType"
-							size="large"
-							style="margin-right: 20px"
-					/>
-					<el-button type="primary">查询</el-button>
-					<el-button plain>重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="55" />
-					<el-table-column property="name" label="任务名称" width="200"/>
-					<el-table-column property="type" label="任务类型"/>
-					<el-table-column property="execClassgroup" label="巡检班组"/>
-					<el-table-column property="frequency" label="检查频次"/>
-					<el-table-column property="unit" label="频次单位"/>
-					<el-table-column property="chainLength" label="巡检链长度" width="160"/>
-					<el-table-column property="startTime" label="任务开始时间" width="180"/>
-<!--					<el-table-column property="validTime" label="任务有效时间" width="180"/>-->
-					<el-table-column property="creater" label="创建人"/>
-					<el-table-column property="createTime" label="创建时间" width="180"/>
-					<el-table-column property="status" label="状态" width="60"/>
-					<el-table-column fixed="right" label="操作" align="center" width="300">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button>
-							<el-switch
-									v-model="scope.row.status"
-									inline-prompt
-									active-text="开"
-									inactive-text="关"
-									active-value="开启"
-									inactive-value="关闭"
-									style="margin: 0 10px"
-							/>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="currentPage"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="100"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="12">
+                    <div class="grid-content topInfo">
+                        <el-select v-model="searchType" @change="changeSearch" placeholder="任务名称">
+                            <el-option label="巡检任务类型" value="巡检任务类型" />
+                            <el-option label="创建人" value="创建人" />
+                            <el-option label="巡检班组" value="巡检班组" />
+                            <el-option label="检查频次" value="检查频次" />
+                            <el-option label="开始时间" value="开始时间" />
+                        </el-select>
+                        <el-input v-model="searchContent" v-if="searchType == '任务名称'" placeholder="请输入任务名称"></el-input>
+                        <el-input v-else-if="searchType == '检查频次'" v-model="searchContent" placeholder="请输入检查频次">
+                            <template #append>
+                                <el-select v-model="searchUnit" placeholder="选择单位">
+                                    <el-option label="分钟" value="分钟" />
+                                    <el-option label="小时" value="小时" />
+                                    <el-option label="天" value="天" />
+                                </el-select>
+                            </template>
+                        </el-input>
+                        <el-select v-model="searchContent" v-else-if="searchType == '巡检任务类型'" placeholder="请选择任务类型">
+                            <el-option v-for="(item, index) in typeOptions" :label="item.name" :value="item.value" :key="index" />
+                        </el-select>
+                        <el-select v-model="searchContent" v-else-if="searchType == '创建人'" placeholder="请选择创建人">
+                            <el-option v-for="(item, index) in createrOptions" :label="item.name" :value="item.value" :key="index" />
+                        </el-select>
+                        <el-select v-model="searchContent" v-else-if="searchType == '巡检班组'" placeholder="请选择巡检班组">
+                            <el-option v-for="(item, index) in inspectorOptions" :label="item.name" :value="item.value" :key="index" />
+                        </el-select>
+                        <el-date-picker v-model="searchContent" type="date" v-else :placeholder="'请选择' + searchType" size="large" style="margin-right: 20px" />
+                        <el-button type="primary">查询</el-button>
+                        <el-button plain>重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="55" />
+                        <el-table-column property="name" label="任务名称" width="200" />
+                        <el-table-column property="type" label="任务类型" />
+                        <el-table-column property="execClassgroup" label="巡检班组" />
+                        <el-table-column property="frequency" label="检查频次" />
+                        <el-table-column property="unit" label="频次单位" />
+                        <el-table-column property="chainLength" label="巡检链长度" width="160" />
+                        <el-table-column property="startTime" label="任务开始时间" width="180" />
+                        <!--					<el-table-column property="validTime" label="任务有效时间" width="180"/>-->
+                        <el-table-column property="creater" label="创建人" />
+                        <el-table-column property="createTime" label="创建时间" width="180" />
+                        <el-table-column property="status" label="状态" width="60" />
+                        <el-table-column fixed="right" label="操作" align="center" width="300">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index, scope.row)">修改</el-button>
+                                <el-switch v-model="scope.row.status" inline-prompt active-text="开" inactive-text="关" active-value="开启" inactive-value="关闭" style="margin: 0 10px" />
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="currentPage" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="100" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
 
-		<el-dialog v-model="dialogDetails" title="巡检任务">
-			<el-form :model="details" label-width="120px">
-				<el-row>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="任务名称">
-					<el-input
-							v-model="details.name"
-							readonly
-					/>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="任务类型">
-					<el-input
-							v-model="details.type"
-							readonly
-					/>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="巡检部门">
-						<el-input
-								v-model="details.execDepId"
-								readonly
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="巡检班组">
-						<el-input
-								v-model="details.execClassgroup"
-								readonly
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="检查频次" prop="frequency">
-					<el-input
-							v-model="details.frequency"
-							readonly
-					>
-						<template #append>
-							<el-input
-									v-model="details.unit"
-									readonly
-							/>
-						</template>
-					</el-input>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="提前通知时间">
-						<el-input
-								v-model="details.noticeTime"
-								readonly
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="任务开始时间">
-						<el-input
-								v-model="details.startTime"
-								readonly
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="周期有效时间">
-					<el-input
-							v-model="details.validTime"
-							readonly
-					/>
-				</el-form-item>
-				</el-col>
-				<el-col :span="24" style="margin-bottom: 20px">
-				<el-form-item label="巡检链">
-					<div style="width: 100%;margin-left: -30px">
-						<div v-for="(item,index) in details.shiftSteps" class="stepItem">
-							<div class="stepNum">{{index+1}}</div>
-							<div class="stepCard">
-								<el-card class="box-card">
-									<template #header>
-										<div class="card-header">
-											<div>{{item.pointId}}</div>
-										</div>
-									</template>
-									<div class="text item">所属设备区域:<span>{{item.regionUuid}}</span></div>
-									<div class="text item">关联RFID:<span>{{item.rfidId}}</span></div>
-									<div class="text item">巡检指标:<span>{{item.quotaId}}</span></div>
-									<div class="text item">数据填报类型:<span>{{item.dataReportType}}</span></div>
-									<div class="text item">数据参考值:<span>{{item.firstReferenceValue?item.firstReferenceValue:(item.secondReferenceValue?item.secondReferenceValue:item.thirdReferenceValue)}}</span></div>
-								</el-card>
-							</div>
-						</div>
-					</div>
-				</el-form-item>
-				</el-col>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-				</el-row>
-			</el-form>
-		</el-dialog>
+        <el-dialog v-model="dialogDetails" title="巡检任务">
+            <el-form :model="details" label-width="120px">
+                <el-row>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务名称">
+                            <el-input v-model="details.name" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务类型">
+                            <el-input v-model="details.type" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="巡检部门">
+                            <el-input v-model="details.execDepId" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="巡检班组">
+                            <el-input v-model="details.execClassgroup" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="检查频次" prop="frequency">
+                            <el-input v-model="details.frequency" readonly>
+                                <template #append>
+                                    <el-input v-model="details.unit" readonly />
+                                </template>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="提前通知时间">
+                            <el-input v-model="details.noticeTime" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务开始时间">
+                            <el-input v-model="details.startTime" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="周期有效时间">
+                            <el-input v-model="details.validTime" readonly />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="24" style="margin-bottom: 20px">
+                        <el-form-item label="巡检链">
+                            <div style="width: 100%; margin-left: -30px">
+                                <div v-for="(item, index) in details.shiftSteps" class="stepItem">
+                                    <div class="stepNum">{{ index + 1 }}</div>
+                                    <div class="stepCard">
+                                        <el-card class="box-card">
+                                            <template #header>
+                                                <div class="card-header">
+                                                    <div>{{ item.pointId }}</div>
+                                                </div>
+                                            </template>
+                                            <div class="text item">
+                                                所属设备区域:<span>{{ item.regionUuid }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                关联RFID:<span>{{ item.rfidId }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                巡检指标:<span>{{ item.quotaId }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                数据填报类型:<span>{{ item.dataReportType }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                数据参考值:<span>{{ item.firstReferenceValue ? item.firstReferenceValue : item.secondReferenceValue ? item.secondReferenceValue : item.thirdReferenceValue }}</span>
+                                            </div>
+                                        </el-card>
+                                    </div>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-form-item>
+                        <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                    </el-form-item>
+                </el-row>
+            </el-form>
+        </el-dialog>
 
-		<el-dialog v-model="dialogAddRecord" title="巡检任务编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-row>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="任务名称" prop="name">
-					<el-input
-							v-model="addRecord.name"
-					>
-					</el-input>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="任务类型" prop="type">
-					<el-select v-model="addRecord.type">
-						<el-option label="日常检查" value="日常检查" />
-						<el-option label="周期检查" value="周期检查" />
-					</el-select>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="巡检部门" prop="validTime">
-						<el-select v-model="addRecord.execDepId" placeholder="请选择">
-							<el-option label="部门一" value="部门一" />
-							<el-option label="部门二" value="部门二" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="巡检班组" prop="execClassgroupId">
-						<el-select v-model="addRecord.execClassgroup" placeholder="请选择">
-							<el-option label="班组1" value="班组1" />
-							<el-option label="班组2" value="班组2" />
-							<el-option label="班组3" value="班组3" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="检查频次" prop="frequency">
-				<el-input
-					v-model="addRecord.frequency"
-					placeholder="请输入检查频次"
-				>
-					<template #append>
-						<el-select v-model="addRecord.unit" placeholder="选择单位">
-							<el-option label="分钟" value="分钟" />
-							<el-option label="小时" value="小时" />
-							<el-option label="天" value="天" />
-						</el-select>
-					</template>
-				</el-input>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-					<el-form-item label="提前通知时间" prop="noticeTime">
-						<el-select v-model="addRecord.noticeTime" placeholder="选择时间">
-							<el-option label="15分钟" value="15分钟" />
-							<el-option label="30分钟" value="30分钟" />
-							<el-option label="45分钟" value="45分钟" />
-							<el-option label="60分钟" value="60分钟" />
-							<el-option label="75分钟" value="75分钟" />
-							<el-option label="90分钟" value="90分钟" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="周期开始时间" prop="startTime">
-					<el-date-picker
-							v-model="addRecord.startTime"
-							type="datetime"
-							format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
-					/>
-				</el-form-item>
-				</el-col>
-				<el-col :span="12" style="margin-bottom: 20px">
-				<el-form-item label="任务有效时间" prop="validTime">
-					<el-select v-model="addRecord.validTime" placeholder="选择时间">
-						<el-option label="15分钟" value="15分钟" />
-						<el-option label="30分钟" value="30分钟" />
-						<el-option label="45分钟" value="45分钟" />
-						<el-option label="60分钟" value="60分钟" />
-						<el-option label="75分钟" value="75分钟" />
-						<el-option label="90分钟" value="90分钟" />
-					</el-select>
-				</el-form-item>
-				</el-col>
-				<el-col :span="24">
-				<el-form-item label="创建巡检链">
-					<div style="width: 100%;margin-bottom: 20px">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddShift = true">新增巡检点</el-button>
-					</div>
-					<div style="width: 100%;margin-left: -30px">
-						<div v-for="(item,index) in addRecord.shiftSteps" class="stepItem">
-							<div class="stepNum">{{index+1}}</div>
-							<div class="stepCard">
-								<el-card class="box-card">
-									<template #header>
-										<div class="card-header">
-											<div>{{item.pointId}}</div>
-										</div>
-									</template>
-									<div class="text item">所属设备区域:<span>{{item.regionUuid}}</span></div>
-									<div class="text item">关联RFID:<span>{{item.rfidId}}</span></div>
-									<div class="text item">巡检指标:<span>{{item.quotaId}}</span></div>
-									<div class="text item">数据填报类型:<span>{{item.dataReportType}}</span></div>
-									<div class="text item">数据参考值:<span>{{item.firstReferenceValue?item.firstReferenceValue:(item.secondReferenceValue?item.secondReferenceValue:item.thirdReferenceValue)}}</span></div>
-								</el-card>
-							</div>
-							<div>
-<!--								<el-button type="primary" size="default" @click="addFlow(index)">新增下一区域</el-button>-->
-								<el-button type="primary" size="default" @click="editFlow(index)">修改</el-button>
-								<el-button type="danger" size="default" @click="deleteFlow(index)">删除</el-button>
-							</div>
-						</div>
-					</div>
-				</el-form-item>
-				</el-col>
-				</el-row>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteShiftDialog" title="提示" width="30%" center @close="indexShiftClear">
-			<span>您确定要删除该巡检点吗?</span>
-			<template #footer>
-			  <span class="dialog-footer">
-				  <el-button @click="deleteShiftDialog = false" size="default">取消</el-button>
-				<el-button type="primary" @click="conFirmShiftDelete" size="default">确认</el-button>
-			  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="dialogAddShift" title="新增巡检点" @close="closeAddShift">
-			<el-form :model="addShift" label-width="120px" ref="addShiftRef" :rules="addShiftRules">
-				<el-form-item label="选择巡检点" prop="pointId">
-					<el-select v-model="addShift.pointId">
-						<el-option label="73011" value="73011" />
-						<el-option label="73012" value="73012" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="所属设备区域">
-					<el-input
-							v-model="addShift.regionId"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="关联RFID">
-					<el-input
-							v-model="addShift.rfidId"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="选择巡检指标" prop="quotaId">
-					<el-input v-model="addShift.quotaId" placeholder="Please input">
-						<template #append>{{addShift.quotaUnit}}</template>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="数据填报类型" prop="dataReportType">
-					<el-select v-model="addShift.dataReportType">
-						<el-option label="选择" value="选择" />
-						<el-option label="填空" value="填空" />
-						<el-option label="选择并填空" value="选择并填空" />
-					</el-select>
-				</el-form-item>
-				<el-form-item v-if="addShift.dataReportType == '选择' || addShift.dataReportType == '选择并填空'" label="数据参考值" prop="firstReferenceValue">
-					<el-select v-model="addShift.firstReferenceValue">
-						<el-option label="正常" value="正常" />
-						<el-option label="异常" value="异常" />
-					</el-select>
-				</el-form-item>
-				<el-form-item v-if="addShift.dataReportType == '填空' || addShift.dataReportType == '选择并填空'" label="数据参考值">
-					<el-input
-							v-model="addShift.secondReferenceValue"
-							type="number"
-							placeholder="请根据需求选择前方符号后再填写参考值,非必填"
-					>
-						<template #prepend>
-							<el-select v-model="addShift.secondReferenceSign" placeholder="Select" style="width: 115px">
-								<el-option label=">" value=">" />
-								<el-option label=">=" value=">=" />
-							</el-select>
-						</template>
-					</el-input>
-				</el-form-item>
-				<el-form-item v-if="addShift.dataReportType == '填空' || addShift.dataReportType == '选择并填空'" label="">
-					<el-input
-							v-model="addShift.thirdReferenceValue"
-							type="number"
-							placeholder="请根据需求选择前方符号后再填写参考值,非必填"
-					>
-						<template #prepend>
-							<el-select v-model="addShift.thirdReferenceSign" placeholder="Select" style="width: 115px">
-								<el-option label="<" value="<"/>
-								<el-option label="<=" value="<="/>
-							</el-select>
-						</template>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddShift = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddShift(addShiftRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-	</div>
+        <el-dialog v-model="dialogAddRecord" title="巡检任务编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-row>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务名称" prop="name">
+                            <el-input v-model="addRecord.name"> </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务类型" prop="type">
+                            <el-select v-model="addRecord.type">
+                                <el-option label="日常检查" value="日常检查" />
+                                <el-option label="周期检查" value="周期检查" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="巡检部门" prop="validTime">
+                            <el-select v-model="addRecord.execDepId" placeholder="请选择">
+                                <el-option label="部门一" value="部门一" />
+                                <el-option label="部门二" value="部门二" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="巡检班组" prop="execClassgroupId">
+                            <el-select v-model="addRecord.execClassgroup" placeholder="请选择">
+                                <el-option label="班组1" value="班组1" />
+                                <el-option label="班组2" value="班组2" />
+                                <el-option label="班组3" value="班组3" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="检查频次" prop="frequency">
+                            <el-input v-model="addRecord.frequency" placeholder="请输入检查频次">
+                                <template #append>
+                                    <el-select v-model="addRecord.unit" placeholder="选择单位">
+                                        <el-option label="分钟" value="分钟" />
+                                        <el-option label="小时" value="小时" />
+                                        <el-option label="天" value="天" />
+                                    </el-select>
+                                </template>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="提前通知时间" prop="noticeTime">
+                            <el-select v-model="addRecord.noticeTime" placeholder="选择时间">
+                                <el-option label="15分钟" value="15分钟" />
+                                <el-option label="30分钟" value="30分钟" />
+                                <el-option label="45分钟" value="45分钟" />
+                                <el-option label="60分钟" value="60分钟" />
+                                <el-option label="75分钟" value="75分钟" />
+                                <el-option label="90分钟" value="90分钟" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="周期开始时间" prop="startTime">
+                            <el-date-picker v-model="addRecord.startTime" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" style="margin-bottom: 20px">
+                        <el-form-item label="任务有效时间" prop="validTime">
+                            <el-select v-model="addRecord.validTime" placeholder="选择时间">
+                                <el-option label="15分钟" value="15分钟" />
+                                <el-option label="30分钟" value="30分钟" />
+                                <el-option label="45分钟" value="45分钟" />
+                                <el-option label="60分钟" value="60分钟" />
+                                <el-option label="75分钟" value="75分钟" />
+                                <el-option label="90分钟" value="90分钟" />
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <el-form-item label="创建巡检链">
+                            <div style="width: 100%; margin-bottom: 20px">
+                                <el-button type="primary" :icon="Plus" size="default" @click="dialogAddShift = true">新增巡检点</el-button>
+                            </div>
+                            <div style="width: 100%; margin-left: -30px">
+                                <div v-for="(item, index) in addRecord.shiftSteps" class="stepItem">
+                                    <div class="stepNum">{{ index + 1 }}</div>
+                                    <div class="stepCard">
+                                        <el-card class="box-card">
+                                            <template #header>
+                                                <div class="card-header">
+                                                    <div>{{ item.pointId }}</div>
+                                                </div>
+                                            </template>
+                                            <div class="text item">
+                                                所属设备区域:<span>{{ item.regionUuid }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                关联RFID:<span>{{ item.rfidId }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                巡检指标:<span>{{ item.quotaId }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                数据填报类型:<span>{{ item.dataReportType }}</span>
+                                            </div>
+                                            <div class="text item">
+                                                数据参考值:<span>{{ item.firstReferenceValue ? item.firstReferenceValue : item.secondReferenceValue ? item.secondReferenceValue : item.thirdReferenceValue }}</span>
+                                            </div>
+                                        </el-card>
+                                    </div>
+                                    <div>
+                                        <!--								<el-button type="primary" size="default" @click="addFlow(index)">新增下一区域</el-button>-->
+                                        <el-button type="primary" size="default" @click="editFlow(index)">修改</el-button>
+                                        <el-button type="danger" size="default" @click="deleteFlow(index)">删除</el-button>
+                                    </div>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteShiftDialog" title="提示" width="30%" center @close="indexShiftClear">
+            <span>您确定要删除该巡检点吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteShiftDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmShiftDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="dialogAddShift" title="新增巡检点" @close="closeAddShift">
+            <el-form :model="addShift" label-width="120px" ref="addShiftRef" :rules="addShiftRules">
+                <el-form-item label="选择巡检点" prop="pointId">
+                    <el-select v-model="addShift.pointId">
+                        <el-option label="73011" value="73011" />
+                        <el-option label="73012" value="73012" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="所属设备区域">
+                    <el-input v-model="addShift.regionId" readonly />
+                </el-form-item>
+                <el-form-item label="关联RFID">
+                    <el-input v-model="addShift.rfidId" readonly />
+                </el-form-item>
+                <el-form-item label="选择巡检指标" prop="quotaId">
+                    <el-input v-model="addShift.quotaId" placeholder="Please input">
+                        <template #append>{{ addShift.quotaUnit }}</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="数据填报类型" prop="dataReportType">
+                    <el-select v-model="addShift.dataReportType">
+                        <el-option label="选择" value="选择" />
+                        <el-option label="填空" value="填空" />
+                        <el-option label="选择并填空" value="选择并填空" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="addShift.dataReportType == '选择' || addShift.dataReportType == '选择并填空'" label="数据参考值" prop="firstReferenceValue">
+                    <el-select v-model="addShift.firstReferenceValue">
+                        <el-option label="正常" value="正常" />
+                        <el-option label="异常" value="异常" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="addShift.dataReportType == '填空' || addShift.dataReportType == '选择并填空'" label="数据参考值">
+                    <el-input v-model="addShift.secondReferenceValue" type="number" placeholder="请根据需求选择前方符号后再填写参考值,非必填">
+                        <template #prepend>
+                            <el-select v-model="addShift.secondReferenceSign" placeholder="Select" style="width: 115px">
+                                <el-option label=">" value=">" />
+                                <el-option label=">=" value=">=" />
+                            </el-select>
+                        </template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="addShift.dataReportType == '填空' || addShift.dataReportType == '选择并填空'" label="">
+                    <el-input v-model="addShift.thirdReferenceValue" type="number" placeholder="请根据需求选择前方符号后再填写参考值,非必填">
+                        <template #prepend>
+                            <el-select v-model="addShift.thirdReferenceSign" placeholder="Select" style="width: 115px">
+                                <el-option label="<" value="<" />
+                                <el-option label="<=" value="<=" />
+                            </el-select>
+                        </template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddShift = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddShift(addShiftRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, ref } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable, ElMessage } from 'element-plus'
-	import { FormInstance, FormRules } from 'element-plus'
-	let global: any = {
-		homeChartOne: null,
-		homeChartTwo: null,
-		homeCharThree: null,
-		dispose: [null, '', undefined],
-	};
+import { toRefs, reactive, ref } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable, ElMessage } from 'element-plus';
+import { FormInstance, FormRules } from 'element-plus';
+let global: any = {
+    homeChartOne: null,
+    homeChartTwo: null,
+    homeCharThree: null,
+    dispose: [null, '', undefined]
+};
 
-	interface stateType {
-		homeOne: Array <type>
-	}
-	interface type {
+interface stateType {
+    homeOne: Array<type>;
+}
+interface type {}
+export default {
+    name: 'index',
+    components: {},
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
 
-	}
-	export default {
-		name: 'workingHoursSet',
-		components: {},
-		setup() {
-			const userInfo = useUserInfo()
-			const {userInfos} = storeToRefs(userInfo);
+        const state = reactive({
+            searchType: '任务名称',
+            typeOptions: [
+                {
+                    name: '日常检查',
+                    value: '日常检查'
+                },
+                {
+                    name: '周期检查',
+                    value: '周期检查'
+                }
+            ],
+            createrOptions: [
+                {
+                    name: '张三',
+                    value: '张三'
+                },
+                {
+                    name: '李四',
+                    value: '李四'
+                }
+            ],
+            inspectorOptions: [
+                {
+                    name: '李四',
+                    value: '李四'
+                },
+                {
+                    name: '张三',
+                    value: '张三'
+                }
+            ],
+            searchUnit: '小时',
+            searchContent: '',
+            currentPage: 1,
+            pageSize: 10,
+            chosenIndex: null,
+            chosenShiftIndex: null,
+            chosenInspectionIndex: null,
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteShiftDialog: false,
+            deleteInspectionDialog: false,
+            dialogAddShift: false,
+            tableData: [],
+            addRecord: {
+                name: '',
+                type: '',
+                creater: '',
+                inspector: '',
+                frequency: 1,
+                unit: '小时',
+                startTime: '',
+                validTime: '',
+                createTime: '',
+                chainLength: 0,
+                status: '开启',
+                shiftSteps: []
+            },
+            addShift: {
+                secondReferenceSign: '>',
+                thirdReferenceSign: '<'
+            },
+            details: {}
+        });
 
-			const state = reactive({
-				searchType: '任务名称',
-				typeOptions: [
-					{
-						name: '日常检查',
-						value: '日常检查'
-					},
-					{
-						name: '周期检查',
-						value: '周期检查'
-					}
-				],
-				createrOptions: [
-					{
-						name: '张三',
-						value: '张三'
-					},
-					{
-						name: '李四',
-						value: '李四'
-					}
-				],
-				inspectorOptions: [
-					{
-						name: '李四',
-						value: '李四'
-					},
-					{
-						name: '张三',
-						value: '张三'
-					}
-				],
-				searchUnit: '小时',
-				searchContent: '',
-				currentPage: 1,
-				pageSize: 10,
-				chosenIndex: null,
-				chosenShiftIndex: null,
-				chosenInspectionIndex: null,
-				dialogDetails: false,
-				dialogAddRecord: false,
-				deleteDialog: false,
-				deleteShiftDialog: false,
-				deleteInspectionDialog: false,
-				dialogAddShift: false,
-				tableData: [
-					{
-						name: '甲醛装置()列现场岗位巡检',
-						type: '周期检查',
-						creater: '管理员A',
-						execClassgroup: '张三',
-						frequency: 2,
-						unit: '小时',
-						noticeTime: '2022-07-02 13:01:37',
-						startTime: '2022-07-02 13:01:37',
-						validTime: '30分钟',
-						createTime: '2022-07-02 12:03:47',
-						chainLength: 20,
-						status: '开启',
-						shiftSteps: [
-							{
-								pointId: 73011,
-								regionUuid: '风机系统',
-								rfidId: 21054,
-								quotaId: '压力',
-								dataReportType: '选择'
-							},
-							{
-								name: 'A场所',
-								inspectorData: [
-									{
-										sort: 1,
-										name: '73021',
-										section: '风机系统',
-										rfid: '风机系统1标签',
-										norm: '风机声音',
-										reference: '10<正常<50'
-									},
-									{
-										sort: 2,
-										name: '73022',
-										section: '风机系统',
-										rfid: '风机系统2标签',
-										norm: '设备温度',
-										reference: '20<正常<50'
-									},
-									{
-										sort: 3,
-										name: '73023',
-										section: '风机系统',
-										rfid: '风机系统3标签',
-										norm: '风机震动',
-										reference: '30<正常<50'
-									}
-								]
-							}
-						]
-					},
-					{
-						name: 'A车间日常巡检',
-						type: '日常检查',
-						creater: '管理员B',
-						execClassgroup: '李四',
-						frequency: 4,
-						unit: '小时',
-						noticeTime: '2022-07-02 13:01:37',
-						startTime: '2022-07-02 12:45:37',
-						validTime: '30分钟',
-						createTime: '2022-07-02 08:15:41',
-						chainLength: 15,
-						status: '开启'
-					}
-				],
-				addRecord: {
-					name: '',
-					type: '',
-					creater: '',
-					inspector: '',
-					frequency: 1,
-					unit: '小时',
-					startTime: '',
-					validTime: '',
-					createTime: '',
-					chainLength: 0,
-					status: '开启',
-					shiftSteps: []
-				},
-				addShift: {
-					secondReferenceSign: '>',
-					thirdReferenceSign: '<'
-				},
-				details: {}
-			})
+        //获取巡检任务数据
+        const getInspectionTask = () => {};
 
-			// 顶部筛选搜索
-			const changeSearch = () => {
-				state.searchContent = ''
-			}
+        // 顶部筛选搜索
+        const changeSearch = () => {
+            state.searchContent = '';
+        };
 
-			const handleSizeChange = (val: number) => {
-				console.log(`${val} items per page`)
-			}
-			const handleCurrentChange = (val: number) => {
-				console.log(`current page: ${val}`)
-			}
+        const handleSizeChange = (val: number) => {
+            console.log(`${val} items per page`);
+        };
+        const handleCurrentChange = (val: number) => {
+            console.log(`current page: ${val}`);
+        };
 
-			// 时间格式化
-			const timeForm = {
-				hour12: false,
-				year: 'numeric',
-				month: '2-digit',
-				day: '2-digit',
-				hour: '2-digit',
-				minute: '2-digit',
-				second: '2-digit'
-			}
-			const handleChange = (value) => {
-				state.addRecord.content = []
-				console.log(JSON.parse(JSON.stringify(value)))
-			}
-			const addRef = ref<FormInstance>()
-			const addShiftRef = ref<FormInstance>()
-			const addInspectionRef = ref<FormInstance>()
+        // 时间格式化
+        const timeForm = {
+            hour12: false,
+            year: 'numeric',
+            month: '2-digit',
+            day: '2-digit',
+            hour: '2-digit',
+            minute: '2-digit',
+            second: '2-digit'
+        };
+        const handleChange = (value) => {
+            state.addRecord.content = [];
+            console.log(JSON.parse(JSON.stringify(value)));
+        };
+        const addRef = ref<FormInstance>();
+        const addShiftRef = ref<FormInstance>();
+        const addInspectionRef = ref<FormInstance>();
 
-			// 表单校验
-			const addRules = reactive<FormRules>({
-				name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				type: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				execClassgroupId: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				frequency: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				unit: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				noticeTime: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				startTime: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				validTime: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-			})
-			const addShiftRules = reactive<FormRules>({
-				pointId: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				quotaId: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				dataReportType: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-				firstReferenceValue: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-			})
+        // 表单校验
+        const addRules = reactive<FormRules>({
+            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            type: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            execClassgroupId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            frequency: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            unit: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            noticeTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            startTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            validTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
+        const addShiftRules = reactive<FormRules>({
+            pointId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            quotaId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            dataReportType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            firstReferenceValue: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
 
-			// 查看记录
-			const viewRecord = (row) => {
-				state.details = JSON.parse(JSON.stringify(row))
-				state.dialogDetails = true
-			}
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            state.dialogDetails = true;
+        };
 
-			// 删除记录
-			const deleteRecord = (index) => {
-				state.chosenIndex = index
-				state.deleteDialog = true
-			}
-			const conFirmDelete = () => {
-				state.tableData.splice(state.chosenIndex, 1)
-				state.deleteDialog = false
-			}
+        // 删除记录
+        const deleteRecord = (index) => {
+            state.chosenIndex = index;
+            state.deleteDialog = true;
+        };
+        const conFirmDelete = () => {
+            state.tableData.splice(state.chosenIndex, 1);
+            state.deleteDialog = false;
+        };
 
-			// 修改添加记录
-			const editRecord = (index, row) => {
-				state.chosenIndex = index
-				state.dialogAddRecord = true
-				state.addRecord = JSON.parse(JSON.stringify(row))
-			}
-			const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-				if (!formEl) return
-				await formEl.validate((valid, fields) => {
-					if (valid) {
-						if (state.chosenIndex == null) {
-							if (!state.addRecord.shiftSteps || state.addRecord.shiftSteps.length == 0) {
-								ElMessage({
-									message: '请先设置巡检链后再提交',
-									type: 'warning',
-								})
-								return
-							} else {
-								state.addRecord.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-')
-								state.addRecord.chainLength = state.addRecord.shiftSteps.length
-								state.addRecord.status = '开启'
-								state.tableData.unshift(state.addRecord)
-							}
-						} else {
-							if (state.addRecord.shiftSteps.length == 0) {
-								ElMessage({
-									message: '请先设置巡检链后再提交',
-									type: 'warning',
-								})
-								return
-							} else {
-								state.tableData[state.chosenIndex] = state.addRecord
-							}
-						}
-						state.dialogAddRecord = false
-					} else {
-						console.log('error submit!', fields)
-					}
-				})
+        // 修改添加记录
+        const editRecord = (index, row) => {
+            state.chosenIndex = index;
+            state.dialogAddRecord = true;
+            state.addRecord = JSON.parse(JSON.stringify(row));
+        };
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate((valid, fields) => {
+                if (valid) {
+                    if (state.chosenIndex == null) {
+                        if (!state.addRecord.shiftSteps || state.addRecord.shiftSteps.length == 0) {
+                            ElMessage({
+                                message: '请先设置巡检链后再提交',
+                                type: 'warning'
+                            });
+                            return;
+                        } else {
+                            state.addRecord.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
+                            state.addRecord.chainLength = state.addRecord.shiftSteps.length;
+                            state.addRecord.status = '开启';
+                            state.tableData.unshift(state.addRecord);
+                        }
+                    } else {
+                        if (state.addRecord.shiftSteps.length == 0) {
+                            ElMessage({
+                                message: '请先设置巡检链后再提交',
+                                type: 'warning'
+                            });
+                            return;
+                        } else {
+                            state.tableData[state.chosenIndex] = state.addRecord;
+                        }
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
 
-			}
+        // 添加弹窗打开前预操作
+        const openAdd = () => {
+            state.addRecord.unit = '小时';
+        };
 
-			// 添加弹窗打开前预操作
-			const openAdd = () => {
-				state.addRecord.unit = '小时'
-			}
+        // 弹窗关闭后判断数据初始化
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+            state.addShift = {};
+            state.chosenShiftIndex = null;
+        };
+        const indexClear = () => {
+            state.chosenIndex = null;
+        };
+        const indexShiftClear = () => {
+            state.chosenShiftIndex = null;
+        };
 
-			// 弹窗关闭后判断数据初始化
-			const closeAdd = () => {
-				state.addRecord = {}
-				state.chosenIndex = null
-				state.addShift = {}
-				state.chosenShiftIndex = null
-			}
-			const indexClear = () => {
-				state.chosenIndex = null
-			}
-			const indexShiftClear = () => {
-				state.chosenShiftIndex = null
-			}
+        // 排序
+        // function compare(key) {
+        // 	return function (value1, value2) {
+        // 		var val1 = value1[key];
+        // 		var val2 = value2[key];
+        // 		return val1 - val2;
+        // 	}
+        // }
 
-			// 排序
-			// function compare(key) {
-			// 	return function (value1, value2) {
-			// 		var val1 = value1[key];
-			// 		var val2 = value2[key];
-			// 		return val1 - val2;
-			// 	}
-			// }
+        // 添加删除巡检设施区域
+        // const addFlow = (index) => {
+        // 	state.dialogAddShift = true
+        // 	state.chosenShiftIndex = index
+        // }
 
-			// 添加删除巡检设施区域
-			// const addFlow = (index) => {
-			// 	state.dialogAddShift = true
-			// 	state.chosenShiftIndex = index
-			// }
+        // 编辑巡检点
+        const editFlow = (index) => {
+            state.chosenShiftIndex = index;
+            state.addShift = JSON.parse(JSON.stringify(state.addRecord.shiftSteps[index]));
+            state.dialogAddShift = true;
+        };
 
-			// 编辑巡检点
-			const editFlow = (index) =>{
-				state.chosenShiftIndex = index
-				state.addShift = JSON.parse(JSON.stringify(state.addRecord.shiftSteps[index]))
-				state.dialogAddShift = true
-			}
+        // 删除巡检点
+        const deleteFlow = (index) => {
+            state.deleteShiftDialog = true;
+            state.chosenShiftIndex = index;
+        };
+        const conFirmShiftDelete = () => {
+            state.addRecord.shiftSteps.splice(state.chosenShiftIndex, 1);
+            state.deleteShiftDialog = false;
+        };
+        // 增加修改巡检点
+        const confirmAddShift = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate((valid, fields) => {
+                if (valid) {
+                    if (state.chosenShiftIndex == null) {
+                        if (!state.addRecord.shiftSteps) {
+                            state.addRecord.shiftSteps = [];
+                        }
+                        state.addRecord.shiftSteps.push(state.addShift);
+                    } else {
+                        state.addRecord.shiftSteps[state.chosenShiftIndex] = state.addShift;
+                    }
+                    state.dialogAddShift = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
 
-			// 删除巡检点
-			const deleteFlow = (index) => {
-				state.deleteShiftDialog = true
-				state.chosenShiftIndex = index
-			}
-			const conFirmShiftDelete = () => {
-				state.addRecord.shiftSteps.splice(state.chosenShiftIndex, 1)
-				state.deleteShiftDialog = false
-			}
-			// 增加修改巡检点
-			const confirmAddShift = async (formEl: FormInstance | undefined) => {
-				if (!formEl) return
-				await formEl.validate((valid, fields) => {
-					if (valid) {
-						if(state.chosenShiftIndex == null){
-							if(!state.addRecord.shiftSteps){state.addRecord.shiftSteps = []}
-							state.addRecord.shiftSteps.push(state.addShift)
-						}else{
-							state.addRecord.shiftSteps[state.chosenShiftIndex] = state.addShift
-						}
-						state.dialogAddShift = false
-					} else {
-						console.log('error submit!', fields)
-					}
-				})
-			}
+        const closeAddShift = () => {
+            state.addShift = {};
+            state.chosenShiftIndex = null;
+        };
 
-			const closeAddShift = () => {
-				state.addShift = {}
-				state.chosenShiftIndex = null
-			}
-
-			// 折线图
-			const renderMenu = async (value: string) => {
-				Session.set('projectId', value)
-				userInfos.value.projectId = value
-				await initBackEndControlRoutes();
-			};
-
-			return {
-				addRef,
-				addShiftRef,
-				addInspectionRef,
-				addRules,
-				addShiftRules,
-				View,
-				Edit,
-				Delete,
-				Refresh,
-				Plus,
-				changeSearch,
-				handleSizeChange,
-				handleCurrentChange,
-				handleChange,
-				viewRecord,
-				deleteRecord,
-				conFirmDelete,
-				openAdd,
-				editRecord,
-				confirmAddRecord,
-				closeAdd,
-				conFirmShiftDelete,
-				confirmAddShift,
-				closeAddShift,
-				editFlow,
-				deleteFlow,
-				indexClear,
-				indexShiftClear,
-				renderMenu,
-				...toRefs(state)
-			}
-		}
-	}
+        return {
+            addRef,
+            addShiftRef,
+            addInspectionRef,
+            addRules,
+            addShiftRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            changeSearch,
+            handleSizeChange,
+            handleCurrentChange,
+            handleChange,
+            viewRecord,
+            deleteRecord,
+            conFirmDelete,
+            openAdd,
+            editRecord,
+            confirmAddRecord,
+            closeAdd,
+            conFirmShiftDelete,
+            confirmAddShift,
+            closeAddShift,
+            editFlow,
+            deleteFlow,
+            indexClear,
+            indexShiftClear,
+            ...toRefs(state)
+        };
+    }
+};
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.stepItem{
-		width: 100%;
-		display: flex;
-		align-items: flex-start;
-		margin-bottom: 30px;
-		margin-left: 30px;
-		padding-bottom: 30px;
-		border-left: 2px solid #ccc;
-		&:first-of-type{
-			margin-top: 30px;
-		}
-		&:last-of-type{
-			margin-bottom: 0;
-			border-left: none;
-		}
-		.stepNum {
-			width: 30px;
-			height: 30px;
-			border-radius: 15px;
-			box-sizing: border-box;
-			color: #333;
-			border: 1px solid #999;
-			line-height: 28px;
-			text-align: center;
-			margin-right: 10px;
-			margin-left: -16px;
-			margin-top: -30px;
-		}
-		.stepCard {
-			width: 100%;
-			margin-top: -30px;
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.stepItem {
+    width: 100%;
+    display: flex;
+    align-items: flex-start;
+    margin-bottom: 30px;
+    margin-left: 30px;
+    padding-bottom: 30px;
+    border-left: 2px solid #ccc;
+    &:first-of-type {
+        margin-top: 30px;
+    }
+    &:last-of-type {
+        margin-bottom: 0;
+        border-left: none;
+    }
+    .stepNum {
+        width: 30px;
+        height: 30px;
+        border-radius: 15px;
+        box-sizing: border-box;
+        color: #333;
+        border: 1px solid #999;
+        line-height: 28px;
+        text-align: center;
+        margin-right: 10px;
+        margin-left: -16px;
+        margin-top: -30px;
+    }
+    .stepCard {
+        width: 100%;
+        margin-top: -30px;
 
-			.box-card {
-				width: 100%;
-				&:deep(.el-card__header){
-					padding: 10px 15px
-				}
-				.card-header {
-					width: 100%;
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					&>div:first-of-type{
-						margin-right: 80px;
-						font-size: 18px;
-						font-weight: bold;
-					}
-				}
-			}
-		}
-		&:hover .card-header{
-			color: #0098F5;
-		}
-		&:hover .stepNum{
-			border: 2px solid #0098F5;
-			color: #0098F5;
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	:deep(.el-date-editor){
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
+        .box-card {
+            width: 100%;
+            &:deep(.el-card__header) {
+                padding: 10px 15px;
+            }
+            .card-header {
+                width: 100%;
+                display: flex;
+                justify-content: space-between;
+                align-items: center;
+                & > div:first-of-type {
+                    margin-right: 80px;
+                    font-size: 18px;
+                    font-weight: bold;
+                }
+            }
+        }
+    }
+    &:hover .card-header {
+        color: #0098f5;
+    }
+    &:hover .stepNum {
+        border: 2px solid #0098f5;
+        color: #0098f5;
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+:deep(.el-date-editor) {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
 </style>
diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue
index 0830adb..3df8384 100644
--- a/src/views/system/menu/component/menuDialog.vue
+++ b/src/views/system/menu/component/menuDialog.vue
@@ -168,7 +168,6 @@
                     btnPower: ''
                 };
             } else {
-                debugger;
                 state.buttonName = '修改';
                 state.title = '修改菜单';
                 state.ruleForm = JSON.parse(JSON.stringify(value));
diff --git a/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue b/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
index 5d3d46f..eb9e387 100644
--- a/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
@@ -109,8 +109,8 @@
 import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
 import { ElTable } from 'element-plus';
 import { FormInstance, FormRules, ElMessage } from 'element-plus';
-import { workingHoursApi } from '/@/api/basicDateManage/personShiftManage/workingHours';
-import {workingHoursSetApi} from "/@/api/basicDateManage/personShiftManage/workingHoursSet";
+import { workingHoursApi } from '/@/api/systemManage/basicDateManage/personShiftManage/workingHours';
+import { workingHoursSetApi } from '/@/api/systemManage/basicDateManage/personShiftManage/workingHoursSet';
 
 // 定义接口来定义对象的类型
 interface stateType {
@@ -344,7 +344,7 @@
         // 批量删除
         const deleteBatchBtn = async () => {
             if (state.deleteArr.length > 0) {
-                state.deleteSetDialog = true
+                state.deleteSetDialog = true;
             } else {
                 ElMessage({
                     type: 'warning',
@@ -355,20 +355,20 @@
         const conFirmDeleteBatch = async () => {
             let res = await workingHoursApi().deleteBatchWorkTimePeriod({ ids: state.deleteArr });
             if (res.data.code === '200') {
-                state.deleteSetDialog = false
+                state.deleteSetDialog = false;
                 ElMessage({
                     type: 'success',
                     message: res.data.msg
                 });
-                getListByPage()
+                getListByPage();
             } else {
                 ElMessage({
                     type: 'warning',
                     message: res.data.msg
                 });
-                state.deleteSetDialog = false
+                state.deleteSetDialog = false;
             }
-        }
+        };
 
         const handleSizeChange = (val: number) => {
             state.pageSize = val;
diff --git a/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue b/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
index edb8aa9..64702cf 100644
--- a/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
@@ -1,706 +1,662 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="休息日名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="name" label="休息日名称"/>
-					<el-table-column property="typeName" label="休息日类型"/>
-					<el-table-column property="ruleName" label="休息日规则"/>
-					<el-table-column property="ruleNumber" label="休息日"/>
-					<el-table-column property="info" label="描述信息"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="休息时间">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="名称">
-					<el-input
-							v-model="details.name"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="休假类型">
-					<el-input
-							v-model="details.typeName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="休假规则" v-if="details.type == 2">
-					<el-input
-							v-model="details.ruleName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="休假时间" v-if="details.type == 2">
-					<el-input
-							v-model="details.ruleNumber"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.info">
-					<el-input
-							v-model="details.info"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="休息时间编辑" @close="closeAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="休息日名称" prop="name">
-					<el-input
-							v-model="addRecord.name"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="休假类型" prop="type">
-					<el-select v-model="addRecord.type" placeholder="请选择休假类型" style="width: 100%" @change="typeChange">
-						<el-option v-for="(item,index) in typeList" :key="index" :label="item.name" :value="item.value"/>
-					</el-select>
-				</el-form-item>
-				<el-form-item label="休假规则" prop="rule" v-if="addRecord.type == '自定义休息日' || addRecord.type == 2">
-					<el-select v-model="addRecord.rule" placeholder="请选择休假规则" style="width: 100%" @change="ruleChange">
-						<el-option v-for="(item,index) in ruleList" :key="index" :label="item.name" :value="item.value"/>
-					</el-select>
-				</el-form-item>
-				<el-form-item label="选择休假时间" prop="ruleNumber" v-if="addRecord.rule == '每周'|| addRecord.rule == 1">
-					<el-checkbox-group v-model="addRecord.ruleNumber">
-						<el-checkbox v-for="(item,i) in weekDays" :label="item.value" :key="i">{{item.name}}</el-checkbox>
-					</el-checkbox-group>
-				</el-form-item>
-				<el-form-item label="选择休假时间" prop="ruleNumber" v-if="addRecord.rule == '每月'|| addRecord.rule == 2">
-					<el-checkbox-group v-model="addRecord.ruleNumber">
-						<el-checkbox v-for="index in 31" :label="index" :key="index"/>
-					</el-checkbox-group>
-				</el-form-item>
-				<el-form-item label="描述信息" prop="info">
-					<el-input
-							v-model="addRecord.info"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="休息日名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="name" label="休息日名称" />
+                        <el-table-column property="typeName" label="休息日类型" />
+                        <el-table-column property="ruleName" label="休息日规则" />
+                        <el-table-column property="ruleNumber" label="休息日" />
+                        <el-table-column property="info" label="描述信息" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="休息时间">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="名称">
+                    <el-input v-model="details.name" readonly />
+                </el-form-item>
+                <el-form-item label="休假类型">
+                    <el-input v-model="details.typeName" readonly />
+                </el-form-item>
+                <el-form-item label="休假规则" v-if="details.type == 2">
+                    <el-input v-model="details.ruleName" readonly />
+                </el-form-item>
+                <el-form-item label="休假时间" v-if="details.type == 2">
+                    <el-input v-model="details.ruleNumber" readonly />
+                </el-form-item>
+                <el-form-item label="描述信息" v-if="details.info">
+                    <el-input v-model="details.info" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="休息时间编辑" @close="closeAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="休息日名称" prop="name">
+                    <el-input v-model="addRecord.name"> </el-input>
+                </el-form-item>
+                <el-form-item label="休假类型" prop="type">
+                    <el-select v-model="addRecord.type" placeholder="请选择休假类型" style="width: 100%" @change="typeChange">
+                        <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.value" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="休假规则" prop="rule" v-if="addRecord.type == '自定义休息日' || addRecord.type == 2">
+                    <el-select v-model="addRecord.rule" placeholder="请选择休假规则" style="width: 100%" @change="ruleChange">
+                        <el-option v-for="(item, index) in ruleList" :key="index" :label="item.name" :value="item.value" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="选择休假时间" prop="ruleNumber" v-if="addRecord.rule == '每周' || addRecord.rule == 1">
+                    <el-checkbox-group v-model="addRecord.ruleNumber">
+                        <el-checkbox v-for="(item, i) in weekDays" :label="item.value" :key="i">{{ item.name }}</el-checkbox>
+                    </el-checkbox-group>
+                </el-form-item>
+                <el-form-item label="选择休假时间" prop="ruleNumber" v-if="addRecord.rule == '每月' || addRecord.rule == 2">
+                    <el-checkbox-group v-model="addRecord.ruleNumber">
+                        <el-checkbox v-for="index in 31" :label="index" :key="index" />
+                    </el-checkbox-group>
+                </el-form-item>
+                <el-form-item label="描述信息" prop="info">
+                    <el-input v-model="addRecord.info" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
                     <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
                 </span>
-			</template>
-		</el-dialog>
-	</div>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { holidayTimeApi } from '/@/api/basicDateManage/personShiftManage/holidayTime';
-	import {workingHoursSetApi} from "/@/api/basicDateManage/personShiftManage/workingHoursSet";
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { holidayTimeApi } from '/@/api/systemManage/basicDateManage/personShiftManage/holidayTime';
+import { workingHoursSetApi } from '/@/api/systemManage/basicDateManage/personShiftManage/workingHoursSet';
 
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    weekDays: Array<any>;
+    typeList: Array<any>;
+    ruleList: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    searchWord: string;
+    chosenIndex: null | number;
+    casProps: object;
+    deleteId: null | number;
+    totalSize: number;
+    addRecord: {
+        name: string;
+        type: number | string;
+        rule: number | string;
+        ruleNumber: Array<number> | string;
+        info: string;
+    };
+    details: {
+        name: string;
+        type: string;
+        rule: string;
+        ruleNumber: string;
+        info: string;
+    };
+}
 
-
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		weekDays: Array<any>,
-		typeList: Array<any>,
-		ruleList: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean,
-		pageIndex: number,
-		pageSize: number,
-		searchWord: string,
-		chosenIndex: null| number,
-		casProps: object,
-		deleteId: null| number,
-		totalSize: number,
-		addRecord: {
-			name: string,
-			type: number | string,
-			rule: number | string,
-			ruleNumber: Array<number> | string,
-			info: string
-		},
-		details: {
-			name: string,
-			type: string,
-			rule: string,
-			ruleNumber: string,
-			info: string
-		}
-	}
-
-	export default {
+export default {
     name: 'workingHours',
-	components:{},
+    components: {},
     setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
 
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			typeList: [
-				{
-					name: '每周公休假日',
-					value: 0
-				},
-				{
-					name: '国家法定节假日',
-					value: 1
-				},
-				{
-					name: '自定义休息日',
-					value: 2
-				}
-			],
-			ruleList: [
-				{
-					name: '每周',
-					value: 1
-				},
-				{
-					name: '每月',
-					value: 2
-				}
-			],
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			weekDays: [
-				{
-					name: '周一',
-					value: 1
-				},
-				{
-					name: '周二',
-					value: 2
-				},
-				{
-					name: '周三',
-					value: 3
-				},
-				{
-					name: '周四',
-					value: 4
-				},
-				{
-					name: '周五',
-					value: 5
-				},
-				{
-					name: '周六',
-					value: 6
-				},
-				{
-					name: '周日',
-					value: 7
-				}
-			],
-			casProps: {
-				expandTrigger: 'hover',
-			},
-			addRecord: {
-				name: '',
-				type: '',
-				rule: '',
-				ruleNumber: [],
-				info: ''
-			},
-			details: {
-				name: '',
-				type: '',
-				rule: '',
-				ruleNumber: '',
-				info: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			name: string,
-			type: number | string,
-			rule: number | string,
-			ruleNumber: Array<number> | string,
-			info: string
-		}
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            typeList: [
+                {
+                    name: '每周公休假日',
+                    value: 0
+                },
+                {
+                    name: '国家法定节假日',
+                    value: 1
+                },
+                {
+                    name: '自定义休息日',
+                    value: 2
+                }
+            ],
+            ruleList: [
+                {
+                    name: '每周',
+                    value: 1
+                },
+                {
+                    name: '每月',
+                    value: 2
+                }
+            ],
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            weekDays: [
+                {
+                    name: '周一',
+                    value: 1
+                },
+                {
+                    name: '周二',
+                    value: 2
+                },
+                {
+                    name: '周三',
+                    value: 3
+                },
+                {
+                    name: '周四',
+                    value: 4
+                },
+                {
+                    name: '周五',
+                    value: 5
+                },
+                {
+                    name: '周六',
+                    value: 6
+                },
+                {
+                    name: '周日',
+                    value: 7
+                }
+            ],
+            casProps: {
+                expandTrigger: 'hover'
+            },
+            addRecord: {
+                name: '',
+                type: '',
+                rule: '',
+                ruleNumber: [],
+                info: ''
+            },
+            details: {
+                name: '',
+                type: '',
+                rule: '',
+                ruleNumber: '',
+                info: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            name: string;
+            type: number | string;
+            rule: number | string;
+            ruleNumber: Array<number> | string;
+            info: string;
+        }
 
-		// 排序
-		const compare = (x,y)=> {
-			if (x < y) {
-				return -1;
-			} else if (x > y) {
-				return 1;
-			} else {
-				return 0;
-			}
-		}
+        // 排序
+        const compare = (x, y) => {
+            if (x < y) {
+                return -1;
+            } else if (x > y) {
+                return 1;
+            } else {
+                return 0;
+            }
+        };
 
-		const handleChange = (value) => {
-			state.addRecord.content = []
-			console.log(JSON.parse(JSON.stringify(value)))
-		}
+        const handleChange = (value) => {
+            state.addRecord.content = [];
+            console.log(JSON.parse(JSON.stringify(value)));
+        };
 
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
 
-		// 休息类型改变时操作
-		const typeChange =()=>{
-			state.addRecord.rule = ''
-			state.addRecord.ruleNumber = []
-		}
-		// 休息规则改变时操作
-		const ruleChange =()=>{
-			state.addRecord.ruleNumber = []
-		}
+        // 休息类型改变时操作
+        const typeChange = () => {
+            state.addRecord.rule = '';
+            state.addRecord.ruleNumber = [];
+        };
+        // 休息规则改变时操作
+        const ruleChange = () => {
+            state.addRecord.ruleNumber = [];
+        };
 
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
 
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			type: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			rule: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			ruleNumber: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            type: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            rule: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            ruleNumber: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
 
-		// 页面载入时执行方法
-		onMounted(() => {
-			// getWorkTimePeriod()
-			getListByPage()
-		})
+        // 页面载入时执行方法
+        onMounted(() => {
+            // getWorkTimePeriod()
+            getListByPage();
+        });
 
-		// 休假类型格式化
-		// const typeName =(row, column, cellValue, index) =>{
-		// 	return row.type == 0? '每周公休假日':(row.type == 1? '国家法定节假日': '自定义休息日')
-		// }
+        // 休假类型格式化
+        // const typeName =(row, column, cellValue, index) =>{
+        // 	return row.type == 0? '每周公休假日':(row.type == 1? '国家法定节假日': '自定义休息日')
+        // }
 
-		// 分页获取工作时段列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
-			let res = await holidayTimeApi().getAllBreakTimeRuleByPage(data);
-			if (res.data.code === '200') {
-				state.tableData = res.data.data.map((item)=>{
-					item.typeName = item.type===0?'每周公休假日':(item.type===1?'国家法定节假日':(item.type===2?'自定义休息日':''))
-					item.ruleName = item.rule===1?'每周':(item.rule===2?'每月':'')
-					return item
-				})
-				console.log(state.tableData,'列表获取的tableData')
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 分页获取工作时段列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { name: state.searchWord } };
+            let res = await holidayTimeApi().getAllBreakTimeRuleByPage(data);
+            if (res.data.code === '200') {
+                state.tableData = res.data.data.map((item) => {
+                    item.typeName = item.type === 0 ? '每周公休假日' : item.type === 1 ? '国家法定节假日' : item.type === 2 ? '自定义休息日' : '';
+                    item.ruleName = item.rule === 1 ? '每周' : item.rule === 2 ? '每月' : '';
+                    return item;
+                });
+                console.log(state.tableData, '列表获取的tableData');
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
 
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
 
-		// 添加休息时间
-		const addRecord = async (data:any) => {
-			let res = await holidayTimeApi().addBreakTime(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
+        // 添加休息时间
+        const addRecord = async (data: any) => {
+            let res = await holidayTimeApi().addBreakTime(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 修改休息时间
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			console.log(row,'编辑时的row')
-			console.log(state.tableData,'编辑时的tableData')
-			state.addRecord = JSON.parse(JSON.stringify(row))
-			state.addRecord.ruleNumber = row.ruleNumber.split(',').map((i)=>{
-				return Number(i)
-			})
-			console.log(state.addRecord)
-		}
+        // 修改休息时间
+        const editRecordBtn = (index, row) => {
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+            console.log(row, '编辑时的row');
+            console.log(state.tableData, '编辑时的tableData');
+            state.addRecord = JSON.parse(JSON.stringify(row));
+            state.addRecord.ruleNumber = row.ruleNumber.split(',').map((i) => {
+                return Number(i);
+            });
+            console.log(state.addRecord);
+        };
 
-		const editRecord = async (data:any) => {
-			let res = await holidayTimeApi().updateBreakTime(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        const editRecord = async (data: any) => {
+            let res = await holidayTimeApi().updateBreakTime(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						name: state.addRecord.name,
-						info: state.addRecord.info,
-						type: Number(state.addRecord.type),
-						rule: Number(state.addRecord.rule),
-						ruleNumber: state.addRecord.ruleNumber.sort(compare).join(',')
-					}
-					if (state.chosenIndex == null) {
-						if(data.type == 2 && data.ruleNumber==''){
-							ElMessage({
-								type: 'warning',
-								message: '请至少选择一个休息时间'
-							});
-							return
-						} else{
-							await addRecord(data)
-						}
-					} else {
-						data.id = state.addRecord.id,
-						console.log(data,'提交时的参数data')
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        name: state.addRecord.name,
+                        info: state.addRecord.info,
+                        type: Number(state.addRecord.type),
+                        rule: Number(state.addRecord.rule),
+                        ruleNumber: state.addRecord.ruleNumber.sort(compare).join(',')
+                    };
+                    if (state.chosenIndex == null) {
+                        if (data.type == 2 && data.ruleNumber == '') {
+                            ElMessage({
+                                type: 'warning',
+                                message: '请至少选择一个休息时间'
+                            });
+                            return;
+                        } else {
+                            await addRecord(data);
+                        }
+                    } else {
+                        (data.id = state.addRecord.id), console.log(data, '提交时的参数data');
+                        await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
+        const closeAdd = () => {
+            state.addRecord = {
+                name: '',
+                type: '',
+                rule: '',
+                ruleNumber: [],
+                info: ''
+            };
+            state.chosenIndex = null;
+        };
 
-		}
-		const closeAdd = () => {
-			state.addRecord = {
-				name: '',
-				type: '',
-				rule: '',
-				ruleNumber: [],
-				info: ''
-			}
-			state.chosenIndex = null
-		}
+        // 删除工作时段
+        const deleteRecord = async (data: any) => {
+            let res = await holidayTimeApi().deleteBreakTime(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 删除工作时段
-		const deleteRecord = async (data:any) => {
-			let res = await holidayTimeApi().deleteBreakTime(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.id;
+            state.deleteDialog = true;
+        };
 
-		const deleteRecordBtn = (row) => {
-			state.deleteId = row.id
-			state.deleteDialog = true
-		}
+        const conFirmDelete = () => {
+            deleteRecord({ id: state.deleteId });
+            state.deleteDialog = false;
+        };
 
-		const conFirmDelete = () => {
-			deleteRecord({ id: state.deleteId })
-			state.deleteDialog = false
-		}
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            if (state.deleteArr.length > 0) {
+                state.deleteSetDialog = true;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: '请先选择要删除的记录'
+                });
+            }
+        };
 
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			if (state.deleteArr.length > 0) {
-				state.deleteSetDialog = true
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: '请先选择要删除的记录'
-				});
-			}
-		};
+        const conFirmDeleteBatch = async () => {
+            let res = await holidayTimeApi().deleteBatch({ ids: state.deleteArr });
+            if (res.data.code === '200') {
+                state.deleteSetDialog = false;
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+                state.deleteSetDialog = false;
+            }
+        };
 
-		const conFirmDeleteBatch = async () => {
-			let res = await holidayTimeApi().deleteBatch({ids: state.deleteArr});
-			if (res.data.code === '200') {
-				state.deleteSetDialog = false
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-				state.deleteSetDialog = false
-			}
-		}
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
 
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            state.dialogDetails = true;
+        };
 
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			state.dialogDetails = true
-		}
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
 
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
+        const indexClear = () => {
+            state.deleteId = null;
+        };
 
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			typeChange,
-			ruleChange,
-			compare,
-			toggleSelection,
-			handleSelectionChange,
-			deleteBatchBtn,
-			conFirmDeleteBatch,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			reLoadData,
-			deleteRecord,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            typeChange,
+            ruleChange,
+            compare,
+            toggleSelection,
+            handleSelectionChange,
+            deleteBatchBtn,
+            conFirmDeleteBatch,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            reLoadData,
+            deleteRecord,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
 </style>
diff --git a/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue b/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
index b71469e..43195dc 100644
--- a/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
@@ -1,597 +1,560 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="休息时间组名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="name" label="休息时间组名称"/>
-					<el-table-column property="list" :formatter="toNames" label="关联休息时间"/>
-					<el-table-column property="info" label="描述信息"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="休息时间组">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="时间组名称">
-					<el-input
-							v-model="details.name"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="关联休息时间" v-if="details.list.length>0">
-					<el-input
-							v-model="details.list"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.info">
-					<el-input
-							v-model="details.info"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="休息时间组编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="时间组名称" prop="name">
-					<el-input
-							v-model="addRecord.name"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="关联休息时间" prop="list">
-					<el-select v-model="addRecord.list" multiple>
-						<el-option v-for="(item,index) in holidayTimeList" :key="index" :label="item.name" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="描述信息" prop="info">
-					<el-input
-							v-model="addRecord.info"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="休息时间组名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="name" label="休息时间组名称" />
+                        <el-table-column property="list" :formatter="toNames" label="关联休息时间" />
+                        <el-table-column property="info" label="描述信息" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="休息时间组">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="时间组名称">
+                    <el-input v-model="details.name" readonly />
+                </el-form-item>
+                <el-form-item label="关联休息时间" v-if="details.list.length > 0">
+                    <el-input v-model="details.list" readonly />
+                </el-form-item>
+                <el-form-item label="描述信息" v-if="details.info">
+                    <el-input v-model="details.info" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="休息时间组编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="时间组名称" prop="name">
+                    <el-input v-model="addRecord.name"> </el-input>
+                </el-form-item>
+                <el-form-item label="关联休息时间" prop="list">
+                    <el-select v-model="addRecord.list" multiple>
+                        <el-option v-for="(item, index) in holidayTimeList" :key="index" :label="item.name" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="描述信息" prop="info">
+                    <el-input v-model="addRecord.info" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
                     <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
                 </span>
-			</template>
-		</el-dialog>
-	</div>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { holidayGroupApi } from '/@/api/basicDateManage/personShiftManage/holidayTimeGroup';
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { holidayGroupApi } from '/@/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup';
 
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    holidayTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize: number;
+    addRecord: {
+        name: string;
+        list: Array<any>;
+        info: string;
+    };
+    details: {
+        name: string;
+        list: Array<any>;
+        info: string;
+    };
+}
 
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		holidayTimeList: Array<string>,
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean;
-		pageIndex: number,
-		pageSize: number,
-		chosenIndex: null | number,
-		deleteId: null | number,
-		searchWord: string,
-		totalSize: number,
-		addRecord: {
-			name: string,
-			list: Array<any>,
-			info: string
-		},
-		details: {
-			name: string,
-			list: Array<any>,
-			info: string
-		}
-	}
-
-	export default {
+export default {
     name: 'workingHours',
-	components:{},
+    components: {},
     setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
 
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			holidayTimeList: [],
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			addRecord: {
-				name: '',
-				list: [],
-				info: ''
-			},
-			details: {
-				name: '',
-				list: [],
-				info: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			name: string,
-			list: Array<any>,
-			info: string
-		}
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            holidayTimeList: [],
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            addRecord: {
+                name: '',
+                list: [],
+                info: ''
+            },
+            details: {
+                name: '',
+                list: [],
+                info: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            name: string;
+            list: Array<any>;
+            info: string;
+        }
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
 
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
 
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			list: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            list: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
 
-		// 页面载入时执行方法
-		onMounted(() => {
-			getListByPage()
-			getAllBreak()
-		})
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllBreak();
+        });
 
-		// 分页获取休息时间组列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
-			let res = await holidayGroupApi().getRecordPage(data);
-			if (res.data.code === '200') {
-				state.tableData = res.data.data.map((item)=>{
-					if(item.list == null){
-						item.list = []
-					}else{
-						item.list= Array.from(item.list,({breakTimeRuleId})=>breakTimeRuleId)
-					}
-					return item
-				})
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 分页获取休息时间组列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { name: state.searchWord } };
+            let res = await holidayGroupApi().getRecordPage(data);
+            if (res.data.code === '200') {
+                state.tableData = res.data.data.map((item) => {
+                    if (item.list == null) {
+                        item.list = [];
+                    } else {
+                        item.list = Array.from(item.list, ({ breakTimeRuleId }) => breakTimeRuleId);
+                    }
+                    return item;
+                });
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 表格数据格式化
-		const toNames =(row, column, cellValue, index) => {
-			if(row.list==[]){
-				return []
-			}else{
-				const nameList = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.holidayTimeList.length;t++){
-						if(row.list[i]==state.holidayTimeList[t].id){
-							nameList.push(state.holidayTimeList[t].name)
-						}
-					}
-				}
-				return nameList.join()
-			}
-		}
+        // 表格数据格式化
+        const toNames = (row, column, cellValue, index) => {
+            if (row.list == []) {
+                return [];
+            } else {
+                const nameList = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.holidayTimeList.length; t++) {
+                        if (row.list[i] == state.holidayTimeList[t].id) {
+                            nameList.push(state.holidayTimeList[t].name);
+                        }
+                    }
+                }
+                return nameList.join();
+            }
+        };
 
-		// 获取工作时段列表
-		const getAllBreak = async () => {
-			let res = await holidayGroupApi().getAllBreak();
-			if (res.data.code === '200') {
-				state.holidayTimeList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 获取工作时段列表
+        const getAllBreak = async () => {
+            let res = await holidayGroupApi().getAllBreak();
+            if (res.data.code === '200') {
+                state.holidayTimeList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
 
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
 
-		// 添加工作时段方法
-		const addRecord = async (data:any) => {
-			let res = await holidayGroupApi().addRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
+        // 添加工作时段方法
+        const addRecord = async (data: any) => {
+            let res = await holidayGroupApi().addRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 修改工作时段方法
-		const editRecord = async (data:any) => {
-			let res = await holidayGroupApi().updateRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 修改工作时段方法
+        const editRecord = async (data: any) => {
+            let res = await holidayGroupApi().updateRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						name: state.addRecord.name,
-						info: state.addRecord.info,
-						breakTimeRuleIds: state.addRecord.list
-					}
-					if (state.chosenIndex == null) {
-						await addRecord(data)
-					} else {
-						data.id = JSON.stringify(state.addRecord.id),
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        name: state.addRecord.name,
+                        info: state.addRecord.info,
+                        breakTimeRuleIds: state.addRecord.list
+                    };
+                    if (state.chosenIndex == null) {
+                        await addRecord(data);
+                    } else {
+                        (data.id = JSON.stringify(state.addRecord.id)), await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
 
-		}
+        // 删除工作时间组方法
+        const deleteRecord = async (data: any) => {
+            let res = await holidayGroupApi().deleteRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 删除工作时间组方法
-		const deleteRecord = async (data:any) => {
-			let res = await holidayGroupApi().deleteRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.id;
+            state.deleteDialog = true;
+        };
 
-		const deleteRecordBtn = (row) => {
-			state.deleteId = row.id
-			state.deleteDialog = true
-		}
+        const conFirmDelete = () => {
+            deleteRecord({ id: state.deleteId });
+            state.deleteDialog = false;
+        };
 
-		const conFirmDelete = () => {
-			deleteRecord({ id: state.deleteId })
-			state.deleteDialog = false
-		}
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            if (state.deleteArr.length > 0) {
+                state.deleteSetDialog = true;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: '请先选择要删除的记录'
+                });
+            }
+        };
 
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			if (state.deleteArr.length > 0) {
-				state.deleteSetDialog = true
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: '请先选择要删除的记录'
-				});
-			}
-		};
+        const conFirmDeleteBatch = async () => {
+            let res = await holidayGroupApi().deletBatchRecord({ ids: state.deleteArr });
+            if (res.data.code === '200') {
+                state.deleteSetDialog = false;
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+                state.deleteSetDialog = false;
+            }
+        };
 
-		const conFirmDeleteBatch = async () => {
-			let res = await holidayGroupApi().deletBatchRecord({ids: state.deleteArr});
-			if (res.data.code === '200') {
-				state.deleteSetDialog = false
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-				state.deleteSetDialog = false
-			}
-		}
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
 
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            if (row.list == []) {
+                state.details.list = [];
+            } else {
+                state.details.list = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.holidayTimeList.length; t++) {
+                        if (row.list[i] == state.holidayTimeList[t].id) {
+                            state.details.list.push(state.holidayTimeList[t].name);
+                        }
+                    }
+                }
+            }
+            state.dialogDetails = true;
+        };
 
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			if(row.list==[]){
-				state.details.list = []
-			}else{
-				state.details.list = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.holidayTimeList.length;t++){
-						if(row.list[i]==state.holidayTimeList[t].id){
-							state.details.list.push(state.holidayTimeList[t].name)
-						}
-					}
-				}
-			}
-			state.dialogDetails = true
-		}
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+        // 点击修改
+        const editRecordBtn = (index, row) => {
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+            state.addRecord = JSON.parse(JSON.stringify(row));
+        };
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+        };
+        const openAdd = () => {
+            if (state.chosenIndex == null) {
+                state.addRecord.info = '';
+            }
+        };
+        const indexClear = () => {
+            state.deleteId = null;
+        };
 
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
-		// 点击修改
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			state.addRecord = JSON.parse(JSON.stringify(row))
-		}
-		const closeAdd = () => {
-			state.addRecord = {}
-			state.chosenIndex = null
-		}
-		const openAdd = () => {
-			if (state.chosenIndex == null) {
-				state.addRecord.info = ''
-			}
-		}
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			toNames,
-			toggleSelection,
-			handleSelectionChange,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			getAllBreak,
-			reLoadData,
-			deleteRecord,
-			deleteBatchBtn,
-			conFirmDeleteBatch,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			openAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            toNames,
+            toggleSelection,
+            handleSelectionChange,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            getAllBreak,
+            reLoadData,
+            deleteRecord,
+            deleteBatchBtn,
+            conFirmDeleteBatch,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            openAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
 </style>
diff --git a/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue b/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
index 45800d3..c789039 100644
--- a/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
@@ -1,626 +1,587 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="name" label="时间策略名称"/>
-					<el-table-column property="workList" label="关联工作时间组"/>
-					<el-table-column property="restList" label="关联休息时间组"/>
-					<el-table-column property="info" label="描述信息"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="时间策略">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="策略名称">
-					<el-input
-							v-model="details.name"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="关联工作时间组">
-					<el-input
-							v-model="details.workList"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="关联休息时间组">
-					<el-input
-							v-model="details.restList"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.info">
-					<el-input
-							v-model="details.info"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="时间策略编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="策略名称" prop="name">
-					<el-input
-							v-model="addRecord.name"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="关联工作时间组" prop="workList">
-					<el-select v-model="addRecord.workList">
-						<el-option v-for="(item,index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="关联休息时间组" prop="restList">
-					<el-select v-model="addRecord.restList">
-						<el-option v-for="(item,index) in restTimeList" :key="index" :label="item.name" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="描述信息" prop="info">
-					<el-input
-							v-model="addRecord.info"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="name" label="时间策略名称" />
+                        <el-table-column property="workList" label="关联工作时间组" />
+                        <el-table-column property="restList" label="关联休息时间组" />
+                        <el-table-column property="info" label="描述信息" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="时间策略">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="策略名称">
+                    <el-input v-model="details.name" readonly />
+                </el-form-item>
+                <el-form-item label="关联工作时间组">
+                    <el-input v-model="details.workList" readonly />
+                </el-form-item>
+                <el-form-item label="关联休息时间组">
+                    <el-input v-model="details.restList" readonly />
+                </el-form-item>
+                <el-form-item label="描述信息" v-if="details.info">
+                    <el-input v-model="details.info" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="时间策略编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="策略名称" prop="name">
+                    <el-input v-model="addRecord.name"> </el-input>
+                </el-form-item>
+                <el-form-item label="关联工作时间组" prop="workList">
+                    <el-select v-model="addRecord.workList">
+                        <el-option v-for="(item, index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="关联休息时间组" prop="restList">
+                    <el-select v-model="addRecord.restList">
+                        <el-option v-for="(item, index) in restTimeList" :key="index" :label="item.name" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="描述信息" prop="info">
+                    <el-input v-model="addRecord.info" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
                     <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
                 </span>
-			</template>
-		</el-dialog>
-	</div>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { timeStrategyApi } from '/@/api/basicDateManage/personShiftManage/timeStrategy';
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { timeStrategyApi } from '/@/api/systemManage/basicDateManage/personShiftManage/timeStrategy';
 
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    workTimeList: Array<string>;
+    restTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize: number;
+    addRecord: {
+        name: string;
+        workList: string;
+        restList: string;
+        info: string;
+    };
+    details: {
+        name: string;
+        workList: string;
+        restList: string;
+        info: string;
+    };
+}
 
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		workTimeList: Array<string>,
-		restTimeList: Array<string>,
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean;
-		pageIndex: number,
-		pageSize: number,
-		chosenIndex: null | number,
-		deleteId: null | number,
-		searchWord: string,
-		totalSize: number,
-		addRecord: {
-			name: string,
-			workList: string,
-			restList: string,
-			info: string
-		},
-		details: {
-			name: string,
-			workList: string,
-			restList: string,
-			info: string
-		}
-	}
-
-	export default {
+export default {
     name: 'workingHours',
-	components:{},
+    components: {},
     setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
 
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			workTimeList: [],
-			restTimeList: [],
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			addRecord: {
-				name: '',
-				workList: '',
-				restList: '',
-				info: ''
-			},
-			details: {
-				name: '',
-				workList: '',
-				restList: '',
-				info: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			name: string,
-			workList: string,
-			restList: string,
-			info: string
-		}
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            workTimeList: [],
+            restTimeList: [],
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            addRecord: {
+                name: '',
+                workList: '',
+                restList: '',
+                info: ''
+            },
+            details: {
+                name: '',
+                workList: '',
+                restList: '',
+                info: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            name: string;
+            workList: string;
+            restList: string;
+            info: string;
+        }
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
 
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
 
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			workList: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			restList: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            workList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            restList: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
 
-		// 页面载入时执行方法
-		onMounted(() => {
-			getListByPage()
-			getWorkTimeList()
-			getRestTimeList()
-		})
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getWorkTimeList();
+            getRestTimeList();
+        });
 
-		// 分页获取休息时间组列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
-			let res = await timeStrategyApi().getRecordPage(data);
-			if (res.data.code === '200') {
-				state.tableData = res.data.data.map((item)=>{
-					// if(item.workTimeGroupRespDTO == null || item.workTimeGroupRespDTO.list == []){
-					// 	item.workList = []
-					// }else{
-					// 	item.workList= Array.from(item.workTimeGroupRespDTO.list,({workTimeGroupId})=>workTimeGroupId)
-					// }
-					// if(item.breakTimeGroupRespDTO == null || item.breakTimeGroupRespDTO.list == []){
-					// 	item.restList = []
-					// }else{
-					// 	item.restList= Array.from(item.breakTimeGroupRespDTO.list,({breakTimeGroupId})=>breakTimeGroupId)
-					// }
-					if(item.workTimeGroupRespDTO == null){
-						item.workList = ''
-					}else{
-						item.workList= item.workTimeGroupRespDTO.name
-					}
-					if(item.breakTimeGroupRespDTO == null){
-						item.restList = ''
-					}else{
-						item.restList= item.breakTimeGroupRespDTO.name
-					}
-					return item
-				})
-				console.log(state.tableData,'state.tableData')
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 分页获取休息时间组列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { name: state.searchWord } };
+            let res = await timeStrategyApi().getRecordPage(data);
+            if (res.data.code === '200') {
+                state.tableData = res.data.data.map((item) => {
+                    // if(item.workTimeGroupRespDTO == null || item.workTimeGroupRespDTO.list == []){
+                    // 	item.workList = []
+                    // }else{
+                    // 	item.workList= Array.from(item.workTimeGroupRespDTO.list,({workTimeGroupId})=>workTimeGroupId)
+                    // }
+                    // if(item.breakTimeGroupRespDTO == null || item.breakTimeGroupRespDTO.list == []){
+                    // 	item.restList = []
+                    // }else{
+                    // 	item.restList= Array.from(item.breakTimeGroupRespDTO.list,({breakTimeGroupId})=>breakTimeGroupId)
+                    // }
+                    if (item.workTimeGroupRespDTO == null) {
+                        item.workList = '';
+                    } else {
+                        item.workList = item.workTimeGroupRespDTO.name;
+                    }
+                    if (item.breakTimeGroupRespDTO == null) {
+                        item.restList = '';
+                    } else {
+                        item.restList = item.breakTimeGroupRespDTO.name;
+                    }
+                    return item;
+                });
+                console.log(state.tableData, 'state.tableData');
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 获取工作时间组列表
-		const getWorkTimeList = async () => {
-			let res = await timeStrategyApi().getWorkTimeList();
-			if (res.data.code === '200') {
-				state.workTimeList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 获取工作时间组列表
+        const getWorkTimeList = async () => {
+            let res = await timeStrategyApi().getWorkTimeList();
+            if (res.data.code === '200') {
+                state.workTimeList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 获取休息时间组列表
-		const getRestTimeList = async () => {
-			let res = await timeStrategyApi().getRestTimeList();
-			if (res.data.code === '200') {
-				state.restTimeList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 获取休息时间组列表
+        const getRestTimeList = async () => {
+            let res = await timeStrategyApi().getRestTimeList();
+            if (res.data.code === '200') {
+                state.restTimeList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
 
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
 
-		// 添加工作时段方法
-		const addRecord = async (data:any) => {
-			let res = await timeStrategyApi().addRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
+        // 添加工作时段方法
+        const addRecord = async (data: any) => {
+            let res = await timeStrategyApi().addRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 修改工作时段方法
-		const editRecord = async (data:any) => {
-			let res = await timeStrategyApi().updateRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 修改工作时段方法
+        const editRecord = async (data: any) => {
+            let res = await timeStrategyApi().updateRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						name: state.addRecord.name,
-						info: state.addRecord.info,
-						workTimeGroupId: state.addRecord.workList,
-						breakTimeGroupId: state.addRecord.restList
-					}
-					if (state.chosenIndex == null) {
-						await addRecord(data)
-					} else {
-						data.id = JSON.stringify(state.addRecord.id)
-						if(typeof state.addRecord.workList == 'string'){
-							data.workTimeGroupId = state.addRecord.workTimeGroupId
-						}
-						if(typeof state.addRecord.restList == 'string'){
-							data.breakTimeGroupId = state.addRecord.breakTimeGroupId
-						}
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        name: state.addRecord.name,
+                        info: state.addRecord.info,
+                        workTimeGroupId: state.addRecord.workList,
+                        breakTimeGroupId: state.addRecord.restList
+                    };
+                    if (state.chosenIndex == null) {
+                        await addRecord(data);
+                    } else {
+                        data.id = JSON.stringify(state.addRecord.id);
+                        if (typeof state.addRecord.workList == 'string') {
+                            data.workTimeGroupId = state.addRecord.workTimeGroupId;
+                        }
+                        if (typeof state.addRecord.restList == 'string') {
+                            data.breakTimeGroupId = state.addRecord.breakTimeGroupId;
+                        }
+                        await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
 
-		}
+        // 删除工作时间组方法
+        const deleteRecord = async (data: any) => {
+            let res = await timeStrategyApi().deleteRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 删除工作时间组方法
-		const deleteRecord = async (data:any) => {
-			let res = await timeStrategyApi().deleteRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.id;
+            state.deleteDialog = true;
+        };
 
-		const deleteRecordBtn = (row) => {
-			state.deleteId = row.id
-			state.deleteDialog = true
-		}
+        const conFirmDelete = () => {
+            deleteRecord({ id: state.deleteId });
+            state.deleteDialog = false;
+        };
 
-		const conFirmDelete = () => {
-			deleteRecord({ id: state.deleteId })
-			state.deleteDialog = false
-		}
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            if (state.deleteArr.length > 0) {
+                state.deleteSetDialog = true;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: '请先选择要删除的记录'
+                });
+            }
+        };
 
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			if (state.deleteArr.length > 0) {
-				state.deleteSetDialog = true
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: '请先选择要删除的记录'
-				});
-			}
-		};
+        const conFirmDeleteBatch = async () => {
+            let res = await timeStrategyApi().deletBatchRecord({ ids: state.deleteArr });
+            if (res.data.code === '200') {
+                state.deleteSetDialog = false;
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+                state.deleteSetDialog = false;
+            }
+        };
 
-		const conFirmDeleteBatch = async () => {
-			let res = await timeStrategyApi().deletBatchRecord({ids: state.deleteArr});
-			if (res.data.code === '200') {
-				state.deleteSetDialog = false
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-				state.deleteSetDialog = false
-			}
-		}
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
 
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            state.dialogDetails = true;
+        };
 
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			state.dialogDetails = true
-		}
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+        // 点击修改
+        const editRecordBtn = (index, row) => {
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+            state.addRecord = JSON.parse(JSON.stringify(row));
+            console.log(state.addRecord, 'state.addRecord');
+        };
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+        };
+        const openAdd = () => {
+            if (state.chosenIndex == null) {
+                state.addRecord.info = '';
+            }
+        };
+        const indexClear = () => {
+            state.deleteId = null;
+        };
 
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
-		// 点击修改
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			state.addRecord = JSON.parse(JSON.stringify(row))
-			console.log(state.addRecord,'state.addRecord')
-		}
-		const closeAdd = () => {
-			state.addRecord = {}
-			state.chosenIndex = null
-		}
-		const openAdd = () => {
-			if (state.chosenIndex == null) {
-				state.addRecord.info = ''
-			}
-		}
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			toggleSelection,
-			handleSelectionChange,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			getWorkTimeList,
-			getRestTimeList,
-			reLoadData,
-			deleteRecord,
-			deleteBatchBtn,
-			conFirmDeleteBatch,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			openAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            toggleSelection,
+            handleSelectionChange,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            getWorkTimeList,
+            getRestTimeList,
+            reLoadData,
+            deleteRecord,
+            deleteBatchBtn,
+            conFirmDeleteBatch,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            openAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
 </style>
diff --git a/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue b/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
index 160f8d3..d9e62c5 100644
--- a/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
@@ -1,600 +1,563 @@
 <template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="休息时间组名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="name" label="工作时间组名称"/>
-					<el-table-column property="list" :formatter="toNames" label="关联工作时段"/>
-					<el-table-column property="info" label="描述信息"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="工作时间组">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="时间组名称">
-					<el-input
-							v-model="details.name"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="关联工作时段" v-if="details.list.length>0">
-					<el-input
-							v-model="details.list"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.info">
-					<el-input
-							v-model="details.info"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="工作时间组编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="时间组名称" prop="name">
-					<el-input
-							v-model="addRecord.name"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="关联工作时段" prop="list">
-					<el-select v-model="addRecord.list" multiple>
-						<el-option v-for="(item,index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="描述信息" prop="info">
-					<el-input
-							v-model="addRecord.info"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="休息时间组名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="name" label="工作时间组名称" />
+                        <el-table-column property="list" :formatter="toNames" label="关联工作时段" />
+                        <el-table-column property="info" label="描述信息" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="工作时间组">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="时间组名称">
+                    <el-input v-model="details.name" readonly />
+                </el-form-item>
+                <el-form-item label="关联工作时段" v-if="details.list.length > 0">
+                    <el-input v-model="details.list" readonly />
+                </el-form-item>
+                <el-form-item label="描述信息" v-if="details.info">
+                    <el-input v-model="details.info" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="工作时间组编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="时间组名称" prop="name">
+                    <el-input v-model="addRecord.name"> </el-input>
+                </el-form-item>
+                <el-form-item label="关联工作时段" prop="list">
+                    <el-select v-model="addRecord.list" multiple>
+                        <el-option v-for="(item, index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="描述信息" prop="info">
+                    <el-input v-model="addRecord.info" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
                     <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
                 </span>
-			</template>
-		</el-dialog>
-	</div>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { workingHoursSetApi } from '/@/api/basicDateManage/personShiftManage/workingHoursSet';
-	import { workingHoursApi } from '/@/api/basicDateManage/personShiftManage/workingHours';
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { workingHoursSetApi } from '/@/api/systemManage/basicDateManage/personShiftManage/workingHoursSet';
+import { workingHoursApi } from '/@/api/systemManage/basicDateManage/personShiftManage/workingHours';
 
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    workTimeList: Array<string>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize: number;
+    addRecord: {
+        name: string;
+        list: Array<any>;
+        info: string;
+    };
+    details: {
+        name: string;
+        list: Array<any>;
+        info: string;
+    };
+}
 
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		workTimeList: Array<string>,
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean;
-		pageIndex: number,
-		pageSize: number,
-		chosenIndex: null | number,
-		deleteId: null | number,
-		searchWord: string,
-		totalSize: number,
-		addRecord: {
-			name: string,
-			list: Array<any>,
-			info: string
-		},
-		details: {
-			name: string,
-			list: Array<any>,
-			info: string
-		}
-	}
-
-	export default {
+export default {
     name: 'workingHours',
-	components:{},
+    components: {},
     setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
 
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			workTimeList: [],
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			addRecord: {
-				name: '',
-				list: [],
-				info: ''
-			},
-			details: {
-				name: '',
-				list: [],
-				info: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			name: string,
-			list: [],
-			info: string
-		}
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            workTimeList: [],
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            addRecord: {
+                name: '',
+                list: [],
+                info: ''
+            },
+            details: {
+                name: '',
+                list: [],
+                info: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            name: string;
+            list: [];
+            info: string;
+        }
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
 
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
 
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			list: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            list: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
 
-		// 页面载入时执行方法
-		onMounted(() => {
-			getListByPage()
-			getWorkTimePeriod()
-		})
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getWorkTimePeriod();
+        });
 
-		// 分页获取工作时间组列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
-			let res = await workingHoursSetApi().postWorkTimeGroupPage(data);
-			if (res.data.code === '200') {
-				state.tableData = res.data.data.map((item)=>{
-					if(item.list == null){
-						item.list = []
-					}else{
-						item.list= Array.from(item.list,({workTimePeriodId})=>workTimePeriodId)
-					}
-					return item
-				})
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 分页获取工作时间组列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { name: state.searchWord } };
+            let res = await workingHoursSetApi().postWorkTimeGroupPage(data);
+            if (res.data.code === '200') {
+                state.tableData = res.data.data.map((item) => {
+                    if (item.list == null) {
+                        item.list = [];
+                    } else {
+                        item.list = Array.from(item.list, ({ workTimePeriodId }) => workTimePeriodId);
+                    }
+                    return item;
+                });
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 表格数据格式化
-		const toNames =(row, column, cellValue, index) => {
-			if(row.list==[]){
-				return []
-			}else{
-				const nameList = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.workTimeList.length;t++){
-						if(row.list[i]==state.workTimeList[t].id){
-							nameList.push(state.workTimeList[t].name)
-						}
-					}
-				}
-				return nameList.join()
-			}
-		}
+        // 表格数据格式化
+        const toNames = (row, column, cellValue, index) => {
+            if (row.list == []) {
+                return [];
+            } else {
+                const nameList = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.workTimeList.length; t++) {
+                        if (row.list[i] == state.workTimeList[t].id) {
+                            nameList.push(state.workTimeList[t].name);
+                        }
+                    }
+                }
+                return nameList.join();
+            }
+        };
 
-		// 获取工作时段列表
-		const getWorkTimePeriod = async () => {
-			let res = await workingHoursApi().getWorkTimePeriod();
-			if (res.data.code === '200') {
-				state.workTimeList = res.data.data
-				console.log(state.workTimeList,'list')
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 获取工作时段列表
+        const getWorkTimePeriod = async () => {
+            let res = await workingHoursApi().getWorkTimePeriod();
+            if (res.data.code === '200') {
+                state.workTimeList = res.data.data;
+                console.log(state.workTimeList, 'list');
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
 
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
 
-		// 添加工作时段方法
-		const addRecord = async (data:any) => {
-			let res = await workingHoursSetApi().addWorkTimeGroup(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
+        // 添加工作时段方法
+        const addRecord = async (data: any) => {
+            let res = await workingHoursSetApi().addWorkTimeGroup(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 修改工作时段方法
-		const editRecord = async (data:any) => {
-			let res = await workingHoursSetApi().updateWorkTimeGroup(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        // 修改工作时段方法
+        const editRecord = async (data: any) => {
+            let res = await workingHoursSetApi().updateWorkTimeGroup(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						name: state.addRecord.name,
-						info: state.addRecord.info,
-						workTimePeriodIds: state.addRecord.list
-					}
-					if (state.chosenIndex == null) {
-						await addRecord(data)
-					} else {
-						data.id = JSON.stringify(state.addRecord.id),
-								console.log(data,'修改参数')
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        name: state.addRecord.name,
+                        info: state.addRecord.info,
+                        workTimePeriodIds: state.addRecord.list
+                    };
+                    if (state.chosenIndex == null) {
+                        await addRecord(data);
+                    } else {
+                        (data.id = JSON.stringify(state.addRecord.id)), console.log(data, '修改参数');
+                        await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
 
-		}
+        // 删除工作时间组方法
+        const deleteRecord = async (data: any) => {
+            let res = await workingHoursSetApi().deleteWorkTimeGroup(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 删除工作时间组方法
-		const deleteRecord = async (data:any) => {
-			let res = await workingHoursSetApi().deleteWorkTimeGroup(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.id;
+            state.deleteDialog = true;
+        };
 
-		const deleteRecordBtn = (row) => {
-			state.deleteId = row.id
-			state.deleteDialog = true
-		}
+        const conFirmDelete = () => {
+            deleteRecord({ id: state.deleteId });
+            state.deleteDialog = false;
+        };
 
-		const conFirmDelete = () => {
-			deleteRecord({ id: state.deleteId })
-			state.deleteDialog = false
-		}
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            if (state.deleteArr.length > 0) {
+                state.deleteSetDialog = true;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: '请先选择要删除的记录'
+                });
+            }
+        };
 
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			if (state.deleteArr.length > 0) {
-				state.deleteSetDialog = true
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: '请先选择要删除的记录'
-				});
-			}
-		};
+        const conFirmDeleteBatch = async () => {
+            let res = await workingHoursSetApi().deletBatchWorkTimeGroup({ ids: state.deleteArr });
+            if (res.data.code === '200') {
+                state.deleteSetDialog = false;
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+                state.deleteSetDialog = false;
+            }
+        };
 
-		const conFirmDeleteBatch = async () => {
-			let res = await workingHoursSetApi().deletBatchWorkTimeGroup({ids: state.deleteArr});
-			if (res.data.code === '200') {
-				state.deleteSetDialog = false
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-				state.deleteSetDialog = false
-			}
-		}
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
 
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            if (row.list == []) {
+                state.details.list = [];
+            } else {
+                state.details.list = [];
+                for (let i = 0; i < row.list.length; i++) {
+                    for (let t = 0; t < state.workTimeList.length; t++) {
+                        if (row.list[i] == state.workTimeList[t].id) {
+                            state.details.list.push(state.workTimeList[t].name);
+                        }
+                    }
+                }
+            }
+            state.dialogDetails = true;
+        };
 
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			if(row.list==[]){
-				state.details.list = []
-			}else{
-				state.details.list = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.workTimeList.length;t++){
-						if(row.list[i]==state.workTimeList[t].id){
-							state.details.list.push(state.workTimeList[t].name)
-						}
-					}
-				}
-			}
-			state.dialogDetails = true
-		}
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+        // 点击修改
+        const editRecordBtn = (index, row) => {
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+            state.addRecord = JSON.parse(JSON.stringify(row));
+        };
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+        };
+        const openAdd = () => {
+            if (state.chosenIndex == null) {
+                state.addRecord.info = '';
+            }
+        };
+        const indexClear = () => {
+            state.deleteId = null;
+        };
 
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
-		// 点击修改
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			state.addRecord = JSON.parse(JSON.stringify(row))
-		}
-		const closeAdd = () => {
-			state.addRecord = {}
-			state.chosenIndex = null
-		}
-		const openAdd = () => {
-			if (state.chosenIndex == null) {
-				state.addRecord.info = ''
-			}
-		}
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			toNames,
-			toggleSelection,
-			handleSelectionChange,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			getWorkTimePeriod,
-			reLoadData,
-			deleteRecord,
-			deleteBatchBtn,
-			conFirmDeleteBatch,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			openAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            toNames,
+            toggleSelection,
+            handleSelectionChange,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            getWorkTimePeriod,
+            reLoadData,
+            deleteRecord,
+            deleteBatchBtn,
+            conFirmDeleteBatch,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            openAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
 </script>
 
 <style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
 
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
 
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
 
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
 
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
 </style>
diff --git a/src/views/system/personShiftManage/scheduleManage/schedule/index.vue b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue
new file mode 100644
index 0000000..0d693ed
--- /dev/null
+++ b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue
@@ -0,0 +1,576 @@
+<template>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="groupName" label="班组名称" />
+                        <el-table-column property="groupMembers" label="班组人员" width="180" :show-overflow-tooltip="true" />
+                        <el-table-column property="groupInfo" label="描述" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="时间策略">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="班组名称">
+                    <el-input v-model="details.groupName" readonly />
+                </el-form-item>
+                <el-form-item label="班组人员">
+                    <el-input v-model="details.groupMembers" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item label="描述">
+                    <el-input v-model="details.groupInfo" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="时间策略编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="班组名称" prop="groupName">
+                    <el-input v-model="addRecord.groupName"> </el-input>
+                </el-form-item>
+                <el-form-item label="选择部门" prop="department">
+                    <el-cascader v-model="addRecord.department" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" />
+                </el-form-item>
+                <el-form-item label="选择人员" prop="groupMembers" v-if="addRecord.department !== ''">
+                    <el-select v-model="addRecord.groupMembers" multiple>
+                        <el-option v-for="(item, index) in workerList" :label="item.username" :key="index" :value="item.uid">{{ item.username }}</el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="描述" prop="groupInfo">
+                    <el-input v-model="addRecord.groupInfo" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script lang="ts">
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
+
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    departmentList: Array<any>;
+    workerList: Array<string>;
+    casProps: {};
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize: number;
+    addRecord: {
+        groupName: string;
+        department: number | null;
+        depId: number | null;
+        groupMembers: Array<any>;
+        groupInfo: string;
+    };
+    details: {
+        groupName: string;
+        department: number | null;
+        groupMembers: Array<any>;
+        groupInfo: string;
+    };
+}
+
+export default {
+    name: 'workingHours',
+    components: {},
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            departmentList: [],
+            department: '',
+            workerList: [],
+            casProps: {
+                expandTrigger: 'hover',
+                emitPath: false,
+                value: 'depId',
+                label: 'depName'
+            },
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            addRecord: {
+                groupName: '',
+                department: null,
+                groupMembers: [],
+                depId: null,
+                groupInfo: ''
+            },
+            details: {
+                groupName: '',
+                department: null,
+                groupMembers: [],
+                depId: null,
+                groupInfo: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            groupName: string;
+            department: number | null;
+            depId: number;
+            groupMembers: Array<any>;
+            groupInfo: string;
+        }
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
+
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
+
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            groupName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            department: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            groupMembers: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getAllDepartment();
+        });
+
+        // 分页获取班组管理列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { groupName: state.searchWord, containGroupMemberEnable: true } };
+            let res = await teamManageApi().getRecordPage(data);
+            if (res.data.code === '200') {
+                state.tableData = res.data.data.map((item) => {
+                    if (!item.groupMembers || item.groupMembers == null) {
+                        item.groupMembers = [];
+                    } else {
+                        item.groupMembers = Array.from(item.groupMembers, ({ username }) => username);
+                    }
+                    return item;
+                });
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 获取部门列表
+        const getAllDepartment = async () => {
+            let res = await teamManageApi().getAllDepartment();
+            if (res.data.code === '200') {
+                state.departmentList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const handleChange = async (value) => {
+            state.addRecord.depId = value;
+            console.log(state.addRecord.department, 'de');
+            let res = await teamManageApi().getAllMember(value);
+            if (res.data.code === '200') {
+                state.workerList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
+
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
+
+        // 添加班组管理方法
+        const addRecord = async (data: any) => {
+            let res = await teamManageApi().addRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 修改工作时段方法
+        const editRecordBtn = async (index, row) => {
+            state.addRecord = JSON.parse(JSON.stringify(row));
+            state.addRecord.department = '';
+            state.addRecord.groupMembers = [];
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+        };
+
+        const editRecord = async (data: any) => {
+            let res = await teamManageApi().updateRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        groupName: state.addRecord.groupName,
+                        groupInfo: state.addRecord.groupInfo,
+                        depId: state.addRecord.depId,
+                        groupMemberIds: state.addRecord.groupMembers
+                    };
+                    if (state.chosenIndex == null) {
+                        await addRecord(data);
+                    } else {
+                        data.groupId = JSON.stringify(state.addRecord.groupId);
+                        await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
+
+        // 删除工作时间组方法
+        const deleteRecord = async (data: any) => {
+            let res = await teamManageApi().deleteRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const deleteRecordBtn = (row) => {
+            console.log(row, 'row');
+            state.deleteId = row.groupId;
+            state.deleteDialog = true;
+        };
+
+        const conFirmDelete = () => {
+            deleteRecord({ groupId: state.deleteId });
+            state.deleteDialog = false;
+        };
+
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            ElMessage({
+                type: 'warning',
+                message: '抱歉,本页面暂不支持批量删除'
+            });
+            // if (state.deleteArr.length > 0) {
+            // 	state.deleteSetDialog = true
+            // } else {
+            // 	ElMessage({
+            // 		type: 'warning',
+            // 		message: '请先选择要删除的记录'
+            // 	});
+            // }
+        };
+
+        // const conFirmDeleteBatch = async () => {
+        // 	let res = await teamManageApi().deletBatchRecord({ids: state.deleteArr});
+        // 	if (res.data.code === '200') {
+        // 		state.deleteSetDialog = false
+        // 		ElMessage({
+        // 			type: 'success',
+        // 			message: res.data.msg
+        // 		});
+        // 		getListByPage()
+        // 	} else {
+        // 		ElMessage({
+        // 			type: 'warning',
+        // 			message: res.data.msg
+        // 		});
+        // 		state.deleteSetDialog = false
+        // 	}
+        // }
+
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
+
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            state.dialogDetails = true;
+        };
+
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+        };
+        const openAdd = () => {
+            if (state.chosenIndex == null) {
+                state.addRecord.info = '';
+            }
+        };
+        const indexClear = () => {
+            state.deleteId = null;
+        };
+
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            handleChange,
+            toggleSelection,
+            handleSelectionChange,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            reLoadData,
+            deleteRecord,
+            deleteBatchBtn,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            openAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
+
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
+
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
+</style>
diff --git a/src/views/system/personShiftManage/scheduleManage/strategy/index.vue b/src/views/system/personShiftManage/scheduleManage/strategy/index.vue
new file mode 100644
index 0000000..95e396f
--- /dev/null
+++ b/src/views/system/personShiftManage/scheduleManage/strategy/index.vue
@@ -0,0 +1,673 @@
+<template>
+    <div class="home-container">
+        <div style="height: 100%">
+            <el-row class="homeCard">
+                <el-col :span="8">
+                    <div class="grid-content topInfo">
+                        <el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
+                        <el-button type="primary" @click="searchRecord">查询</el-button>
+                        <el-button plain @click="clearSearch">重置</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <div class="homeCard">
+                <div class="main-card">
+                    <el-row class="cardTop">
+                        <el-col :span="12" class="mainCardBtn">
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新建</el-button>
+                            <!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+                            <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
+                        </el-col>
+                        <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" />
+                    </el-row>
+                    <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="100" />
+                        <el-table-column property="groupStrategyName" label="班组策略名称" />
+                        <el-table-column property="timeStrategy" label="时间策略" width="180" :show-overflow-tooltip="true" />
+                        <el-table-column property="cycleName" label="循环类型" :show-overflow-tooltip="true" />
+                        <el-table-column property="groupNames" label="班组" />
+                        <el-table-column property="cycleStartTime" label="排班开始时间" width="160" />
+                        <el-table-column property="groupStrategyInfo" label="描述信息" />
+                        <el-table-column fixed="right" label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+                                <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>
+                                <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pageBtn">
+                        <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-dialog v-model="dialogDetails" title="班组策略">
+            <el-form :model="details" label-width="120px">
+                <el-form-item label="策略名称">
+                    <el-input v-model="details.groupStrategyName" readonly />
+                </el-form-item>
+                <el-form-item label="时间策略">
+                    <el-input v-model="details.timeStrategy" readonly />
+                </el-form-item>
+                <el-form-item label="循环类型">
+                    <el-input v-model="details.cycleName" readonly />
+                </el-form-item>
+                <el-form-item label="班组">
+                    <el-input v-model="details.groupNames" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item label="排班开始时间">
+                    <el-input v-model="details.cycleStartTime" readonly />
+                </el-form-item>
+                <el-form-item label="描述信息" v-if="details.groupStrategyInfo">
+                    <el-input v-model="details.groupStrategyInfo" type="textarea" readonly />
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="dialogAddRecord" title="班组策略编辑" @close="closeAdd" @open="openAdd">
+            <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+                <el-form-item label="策略名称" prop="groupStrategyName">
+                    <el-input v-model="addRecord.groupStrategyName"> </el-input>
+                </el-form-item>
+                <el-form-item label="时间策略" prop="timeStrategyId">
+                    <el-select v-model="addRecord.timeStrategyId">
+                        <el-option v-for="(item, index) in timeList" :key="index" :label="item.name" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="循环类型" prop="cycle">
+                    <el-select v-model="addRecord.cycle">
+                        <el-option v-for="(item, index) in cycleList" :key="index" :label="item.name" :value="item.value" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="班组选择" prop="groupIds">
+                    <el-select v-model="addRecord.groupIds" multiple>
+                        <el-option v-for="(item, index) in teamList" :key="index" :label="item.groupName" :value="item.id" />
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="排班开始时间" prop="cycleStartTime">
+                    <el-date-picker v-model="addRecord.cycleStartTime" type="date" value-format="YYYY-MM-DD" />
+                </el-form-item>
+                <el-form-item label="描述信息" prop="groupStrategyInfo">
+                    <el-input v-model="addRecord.groupStrategyInfo" type="textarea"> </el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+                    <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+                </el-form-item>
+            </el-form>
+        </el-dialog>
+        <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+            <span>您确定要删除该条记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
+            <span>您确定要删除这些记录吗?</span>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
+                    <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script lang="ts">
+import { toRefs, reactive, ref, onMounted } from 'vue';
+import { storeToRefs } from 'pinia';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useUserInfo } from '/@/stores/userInfo';
+import { Session } from '/@/utils/storage';
+import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
+import { ElTable } from 'element-plus';
+import { FormInstance, FormRules, ElMessage } from 'element-plus';
+import { teamStrategyApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamStrategy';
+import { timeStrategyApi } from '/@/api/systemManage/basicDateManage/personShiftManage/timeStrategy';
+import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
+
+// 定义接口来定义对象的类型
+interface stateType {
+    tableData: Array<string>;
+    pageRecord: Array<string>;
+    timeList: Array<any>;
+    teamList: Array<any>;
+    cycleList: Array<any>;
+    multipleSelection: Array<any>;
+    deleteArr: Array<any>;
+    dialogDetails: boolean;
+    dialogAddRecord: boolean;
+    deleteDialog: boolean;
+    deleteSetDialog: boolean;
+    pageIndex: number;
+    pageSize: number;
+    chosenIndex: null | number;
+    deleteId: null | number;
+    searchWord: string;
+    totalSize: number;
+    addRecord: {
+        groupStrategyName: string;
+        timeStrategyId: number | null;
+        timeStrategy: string;
+        groupIds: Array<number>;
+        cycle: number | null;
+        cycleName: string;
+        cycleStartTime: string;
+        groupStrategyInfo: string;
+        groupStrategyId: number | null;
+    };
+    details: {
+        groupStrategyName: string;
+        timeStrategyId: number | null;
+        timeStrategy: string;
+        groups: Array<any>;
+        cycle: number | null;
+        cycleName: string;
+        cycleStartTime: string;
+        groupStrategyInfo: string;
+    };
+}
+
+export default {
+    name: 'teamStrategy',
+    components: {},
+    setup() {
+        const userInfo = useUserInfo();
+        const { userInfos } = storeToRefs(userInfo);
+
+        const state = reactive<stateType>({
+            pageIndex: 1,
+            pageSize: 10,
+            totalSize: 0,
+            chosenIndex: null,
+            searchWord: '',
+            tableData: [],
+            pageRecord: [],
+            timeList: [],
+            teamList: [],
+            cycleList: [
+                {
+                    name: '周',
+                    value: 3
+                },
+                {
+                    name: '月',
+                    value: 2
+                },
+                {
+                    name: '年',
+                    value: 1
+                }
+            ],
+            multipleSelection: [],
+            dialogDetails: false,
+            dialogAddRecord: false,
+            deleteDialog: false,
+            deleteSetDialog: false,
+            addRecord: {
+                groupStrategyName: '',
+                timeStrategyId: null,
+                timeStrategy: '',
+                groupIds: [],
+                cycle: null,
+                cycleName: '',
+                cycleStartTime: '',
+                groupStrategyInfo: '',
+                groupStrategyId: null
+            },
+            details: {
+                groupStrategyName: '',
+                timeStrategyId: null,
+                timeStrategy: '',
+                groups: [],
+                cycle: null,
+                cycleName: '',
+                cycleStartTime: '',
+                groupStrategyInfo: ''
+            },
+            deleteId: null,
+            deleteArr: []
+        });
+        interface User {
+            groupStrategyName: string;
+            timeStrategyId: null | number;
+            timeStrategy: string;
+            groups: Array<any>;
+            cycle: null | number;
+            cycleName: string;
+            cycleStartTime: string;
+            groupStrategyInfo: string;
+        }
+        const multipleTableRef = ref<InstanceType<typeof ElTable>>();
+        const toggleSelection = (rows?: User[]) => {
+            if (rows) {
+                rows.forEach((row) => {
+                    // TODO: improvement typing when refactor table
+                    // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+                    // @ts-expect-error
+                    multipleTableRef.value!.toggleRowSelection(row, undefined);
+                });
+            } else {
+                multipleTableRef.value!.clearSelection();
+            }
+        };
+
+        // 多选
+        const handleSelectionChange = (val: User[]) => {
+            state.multipleSelection = JSON.parse(JSON.stringify(val));
+            state.deleteArr = state.multipleSelection.map((item) => {
+                item = item.id;
+                return item;
+            });
+        };
+
+        const addRef = ref<FormInstance>();
+        const addRules = reactive<FormRules>({
+            groupStrategyName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            timeStrategyId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            groupIds: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            cycle: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            cycleStartTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
+        });
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            getListByPage();
+            getTimeList();
+            getTeamList();
+        });
+
+        // 分页获取班组策略列表
+        const getListByPage = async () => {
+            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { name: state.searchWord, containGroupEnable: true } };
+            let res = await teamStrategyApi().getRecordPage(data);
+            if (res.data.code === '200') {
+                state.pageRecord = res.data.data;
+                state.tableData = res.data.data.map((item) => {
+                    item.cycleName = item.cycle == 1 ? '年' : item.cycle == 2 ? '月' : item.cycle == 3 ? '周' : '';
+                    if (!item.groups || item.groups == null) {
+                        item.groups = [];
+                    } else {
+                        item.groups = item.groups.map((i) => {
+                            return Object.assign({}, { groupId: i.groupId, groupName: i.groupName });
+                        });
+                        item.groupIds = Array.from(item.groups, ({ groupId }) => groupId);
+                        item.groupNames = Array.from(item.groups, ({ groupName }) => groupName);
+                    }
+                    return item;
+                });
+                state.tableData.map(async (item) => {
+                    if (!item.timeStrategyId || item.timeStrategyId == null) {
+                        item.timeStrategy = '';
+                    } else {
+                        let op = await timeStrategyApi().getRecordById({ id: item.timeStrategyId });
+                        if (op.data.code && op.data.code === '200') {
+                            if (op.data.data) {
+                                item.timeStrategy = op.data.data.name;
+                            } else {
+                                item.timeStrategy = '';
+                            }
+                        } else {
+                            ElMessage({
+                                type: 'warning',
+                                message: res.data.msg
+                            });
+                        }
+                    }
+                    return item;
+                });
+                console.log(state.tableData, 'state.tableData');
+                state.totalSize = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 循环类型格式化
+        // const toNames =(row, column, cellValue, index) =>{
+        // 	return row.cycle == 1? '年':(row.type == 2? '月': '周')
+        // }
+
+        // 时间策略格式化
+        // const timeName = async (row, column, cellValue, index) =>{
+        // 	let res = await timeStrategyApi().getRecordById({id: row.timeStrategyId})
+        // 	if (res.data.code === '200') {
+        // 		return row.timeStrategyId = res.name
+        // 	} else {
+        // 		ElMessage({
+        // 			type: 'warning',
+        // 			message: res.data.msg
+        // 		});
+        // 	}
+        // }
+
+        // 获取时间策略列表
+        const getTimeList = async () => {
+            let res = await timeStrategyApi().getAllRecord();
+            if (res.data.code === '200') {
+                console.log(res.data.data, 'timestrategy');
+                state.timeList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 获取班组列表
+        const getTeamList = async () => {
+            let res = await teamManageApi().getRecord({ name: '' });
+            if (res.data.code === '200') {
+                state.teamList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 关键词查询记录
+        const searchRecord = async () => {
+            if (state.searchWord == '') {
+                ElMessage({
+                    type: 'warning',
+                    message: '请输入查询关键词'
+                });
+            } else {
+                getListByPage();
+            }
+        };
+
+        const clearSearch = async () => {
+            state.searchWord = '';
+            getListByPage();
+        };
+
+        // 添加班组策略方法
+        const addRecord = async (data: any) => {
+            let res = await teamStrategyApi().addRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 修改工作时段方法
+        const editRecord = async (data: any) => {
+            let res = await teamStrategyApi().updateRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        // 新增修改记录
+        const confirmAddRecord = async (formEl: FormInstance | undefined) => {
+            if (!formEl) return;
+            await formEl.validate(async (valid, fields) => {
+                if (valid) {
+                    const data = {
+                        groupStrategyName: state.addRecord.groupStrategyName,
+                        groupStrategyInfo: state.addRecord.groupStrategyInfo,
+                        groupStrategyCycleType: state.addRecord.cycle,
+                        timeStrategyId: state.addRecord.timeStrategyId,
+                        groupIds: state.addRecord.groupIds,
+                        cycleStartTime: state.addRecord.cycleStartTime
+                    };
+                    if (state.chosenIndex == null) {
+                        await addRecord(data);
+                    } else {
+                        data.groupStrategyId = JSON.stringify(state.addRecord.groupStrategyId);
+                        await editRecord(data);
+                    }
+                    state.dialogAddRecord = false;
+                } else {
+                    console.log('error submit!', fields);
+                }
+            });
+        };
+
+        // 删除班组策略方法
+        const deleteRecord = async (data: any) => {
+            let res = await teamStrategyApi().deleteRecord(data);
+            if (res.data.code === '200') {
+                ElMessage({
+                    type: 'success',
+                    message: res.data.msg
+                });
+                getListByPage();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const deleteRecordBtn = (row) => {
+            state.deleteId = row.groupStrategyId;
+            state.deleteDialog = true;
+        };
+
+        const conFirmDelete = () => {
+            deleteRecord({ groupStrategyId: state.deleteId });
+            state.deleteDialog = false;
+        };
+
+        // 批量删除
+        const deleteBatchBtn = async () => {
+            ElMessage({
+                type: 'warning',
+                message: '抱歉,本页面暂不支持批量删除'
+            });
+            // if (state.deleteArr.length > 0) {
+            // 	state.deleteSetDialog = true
+            // } else {
+            // 	ElMessage({
+            // 		type: 'warning',
+            // 		message: '请先选择要删除的记录'
+            // 	});
+            // }
+        };
+
+        // const conFirmDeleteBatch = async () => {
+        // 	let res = await timeStrategyApi().deletBatchRecord({ids: state.deleteArr});
+        // 	if (res.data.code === '200') {
+        // 		state.deleteSetDialog = false
+        // 		ElMessage({
+        // 			type: 'success',
+        // 			message: res.data.msg
+        // 		});
+        // 		getListByPage()
+        // 	} else {
+        // 		ElMessage({
+        // 			type: 'warning',
+        // 			message: res.data.msg
+        // 		});
+        // 		state.deleteSetDialog = false
+        // 	}
+        // }
+
+        const handleSizeChange = (val: number) => {
+            state.pageSize = val;
+            getListByPage();
+        };
+        const handleCurrentChange = (val: number) => {
+            state.pageIndex = val;
+            getListByPage();
+        };
+
+        // 查看记录
+        const viewRecord = (row) => {
+            state.details = JSON.parse(JSON.stringify(row));
+            state.dialogDetails = true;
+        };
+
+        // 刷新
+        const reLoadData = async () => {
+            getListByPage();
+        };
+        // 点击修改
+        const editRecordBtn = (index, row) => {
+            state.dialogAddRecord = true;
+            state.chosenIndex = index;
+            state.addRecord = JSON.parse(JSON.stringify(row));
+            console.log(state.addRecord, 'state.addRecord');
+        };
+        const closeAdd = () => {
+            state.addRecord = {};
+            state.chosenIndex = null;
+        };
+        const openAdd = () => {
+            if (state.chosenIndex == null) {
+                state.addRecord.info = '';
+            }
+        };
+        const indexClear = () => {
+            state.deleteId = null;
+        };
+
+        // 折线图
+        const renderMenu = async (value: string) => {
+            Session.set('projectId', value);
+            userInfos.value.projectId = value;
+            await initBackEndControlRoutes();
+        };
+        return {
+            addRef,
+            addRules,
+            View,
+            Edit,
+            Delete,
+            Refresh,
+            Plus,
+            toggleSelection,
+            handleSelectionChange,
+            searchRecord,
+            clearSearch,
+            viewRecord,
+            deleteRecordBtn,
+            conFirmDelete,
+            getListByPage,
+            reLoadData,
+            deleteRecord,
+            deleteBatchBtn,
+            handleSizeChange,
+            handleCurrentChange,
+            confirmAddRecord,
+            closeAdd,
+            openAdd,
+            indexClear,
+            editRecordBtn,
+            ...toRefs(state)
+        };
+    }
+};
+</script>
+
+<style scoped lang="scss">
+$homeNavLengh: 8;
+.home-container {
+    height: calc(100vh - 114px);
+    box-sizing: border-box;
+    overflow: hidden;
+    .homeCard {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        background: #fff;
+        border-radius: 4px;
+
+        .main-card {
+            width: 100%;
+            height: 100%;
+            .cardTop {
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                margin-bottom: 20px;
+                .mainCardBtn {
+                    margin: 0;
+                }
+            }
+            .pageBtn {
+                height: 60px;
+                display: flex;
+                align-items: center;
+                justify-content: right;
+
+                .demo-pagination-block + .demo-pagination-block {
+                    margin-top: 10px;
+                }
+                .demo-pagination-block .demonstration {
+                    margin-bottom: 16px;
+                }
+            }
+        }
+        &:last-of-type {
+            height: calc(100% - 100px);
+        }
+    }
+    .el-row {
+        display: flex;
+        align-items: center;
+        margin-bottom: 20px;
+        &:last-child {
+            margin-bottom: 0;
+        }
+        .grid-content {
+            align-items: center;
+            min-height: 36px;
+        }
+
+        .topInfo {
+            display: flex;
+            align-items: center;
+            font-size: 16px;
+            font-weight: bold;
+
+            & > div {
+                white-space: nowrap;
+                margin-right: 20px;
+            }
+        }
+    }
+}
+.el-input {
+    width: 100% !important;
+}
+.el-date-editor::v-deep {
+    width: 100%;
+}
+.el-select {
+    width: 100%;
+}
+</style>
diff --git a/src/views/system/personShiftManage/shiftManage/teamManage/index.vue b/src/views/system/personShiftManage/shiftManage/teamManage/index.vue
deleted file mode 100644
index 56e9ca5..0000000
--- a/src/views/system/personShiftManage/shiftManage/teamManage/index.vue
+++ /dev/null
@@ -1,611 +0,0 @@
-<template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="groupName" label="班组名称"/>
-					<el-table-column property="groupMembers" label="班组人员" width="180" :show-overflow-tooltip="true"/>
-					<el-table-column property="groupInfo" label="描述"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="时间策略">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="班组名称">
-					<el-input
-							v-model="details.groupName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="班组人员">
-					<el-input v-model="details.groupMembers" type="textarea" readonly/>
-				</el-form-item>
-				<el-form-item label="描述">
-					<el-input v-model="details.groupInfo" type="textarea" readonly/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="时间策略编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="班组名称" prop="groupName">
-					<el-input
-							v-model="addRecord.groupName"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="选择部门" prop="department">
-					<el-cascader
-							v-model="addRecord.department"
-							:options="departmentList"
-							:props="casProps"
-							:show-all-levels="false"
-							@change="handleChange"
-					/>
-				</el-form-item>
-				<el-form-item label="选择人员" prop="groupMembers" v-if="addRecord.department !== ''">
-					<el-select v-model="addRecord.groupMembers" multiple>
-						<el-option v-for="(item,index) in workerList" :label="item.username" :key="index" :value="item.uid">{{item.username}}</el-option>
-					</el-select>
-				</el-form-item>
-				<el-form-item label="描述" prop="groupInfo">
-					<el-input
-							v-model="addRecord.groupInfo"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
-                <span class="dialog-footer">
-                    <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
-                    <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
-                </span>
-			</template>
-		</el-dialog>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { teamManageApi } from '/@/api/basicDateManage/personShiftManage/teamManage';
-
-
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		departmentList: Array<any>,
-		workerList: Array<string>,
-		casProps: {},
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean;
-		pageIndex: number,
-		pageSize: number,
-		chosenIndex: null | number,
-		deleteId: null | number,
-		searchWord: string,
-		totalSize: number,
-		addRecord: {
-			groupName: string,
-			department: number | null,
-			depId: number | null,
-			groupMembers: Array<any>,
-			groupInfo: string
-		},
-		details: {
-			groupName: string,
-			department: number | null,
-			groupMembers: Array<any>,
-			groupInfo: string
-		}
-	}
-
-	export default {
-    name: 'workingHours',
-	components:{},
-    setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
-
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			departmentList: [],
-			department: '',
-			workerList: [],
-			casProps: {
-				expandTrigger: 'hover',
-				emitPath: false,
-				value: 'depId',
-				label: 'depName'
-			},
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			addRecord: {
-				groupName: '',
-				department: null,
-				groupMembers: [],
-				depId: null,
-				groupInfo: ''
-			},
-			details: {
-				groupName: '',
-				department: null,
-				groupMembers: [],
-				depId: null,
-				groupInfo: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			groupName: string,
-			department: number | null,
-			depId: number,
-			groupMembers: Array<any>,
-			groupInfo: string
-		}
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
-
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
-
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			groupName: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			department: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			groupMembers: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
-
-		// 页面载入时执行方法
-		onMounted(() => {
-			getListByPage()
-			getAllDepartment()
-		})
-
-		// 分页获取班组管理列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{groupName: state.searchWord,containGroupMemberEnable: true}}
-			let res = await teamManageApi().getRecordPage(data);
-			if (res.data.code === '200') {
-				state.tableData = res.data.data.map((item)=>{
-					if(!item.groupMembers || item.groupMembers == null){
-						item.groupMembers = []
-					}else{
-						item.groupMembers= Array.from(item.groupMembers,({username})=>username)
-					}
-					return item
-				})
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 获取部门列表
-		const getAllDepartment = async () => {
-			let res = await teamManageApi().getAllDepartment();
-			if (res.data.code === '200') {
-				state.departmentList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		const handleChange = async (value)=>{
-			state.addRecord.depId = value
-			console.log(state.addRecord.department,'de')
-			let res = await teamManageApi().getAllMember(value);
-			if(res.data.code === '200'){
-				state.workerList = res.data.data
-			}else{
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
-
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
-
-		// 添加班组管理方法
-		const addRecord = async (data:any) => {
-			let res = await teamManageApi().addRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
-
-		// 修改工作时段方法
-		const editRecordBtn = async (index, row) => {
-			state.addRecord = JSON.parse(JSON.stringify(row))
-			state.addRecord.department = ''
-			state.addRecord.groupMembers = []
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-		}
-
-		const editRecord = async (data:any) => {
-			let res = await teamManageApi().updateRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						groupName: state.addRecord.groupName,
-						groupInfo: state.addRecord.groupInfo,
-						depId: state.addRecord.depId,
-						groupMemberIds: state.addRecord.groupMembers
-					}
-					if (state.chosenIndex == null) {
-						await addRecord(data)
-					} else {
-						data.groupId = JSON.stringify(state.addRecord.groupId)
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
-
-		}
-
-		// 删除工作时间组方法
-		const deleteRecord = async (data:any) => {
-			let res = await teamManageApi().deleteRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		const deleteRecordBtn = (row) => {
-			console.log(row,'row')
-			state.deleteId = row.groupId
-			state.deleteDialog = true
-		}
-
-		const conFirmDelete = () => {
-			deleteRecord({ groupId: state.deleteId })
-			state.deleteDialog = false
-		}
-
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			ElMessage({
-				type: 'warning',
-				message: '抱歉,本页面暂不支持批量删除'
-			});
-			// if (state.deleteArr.length > 0) {
-			// 	state.deleteSetDialog = true
-			// } else {
-			// 	ElMessage({
-			// 		type: 'warning',
-			// 		message: '请先选择要删除的记录'
-			// 	});
-			// }
-		};
-
-		// const conFirmDeleteBatch = async () => {
-		// 	let res = await teamManageApi().deletBatchRecord({ids: state.deleteArr});
-		// 	if (res.data.code === '200') {
-		// 		state.deleteSetDialog = false
-		// 		ElMessage({
-		// 			type: 'success',
-		// 			message: res.data.msg
-		// 		});
-		// 		getListByPage()
-		// 	} else {
-		// 		ElMessage({
-		// 			type: 'warning',
-		// 			message: res.data.msg
-		// 		});
-		// 		state.deleteSetDialog = false
-		// 	}
-		// }
-
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
-
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			state.dialogDetails = true
-		}
-
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
-
-		const closeAdd = () => {
-			state.addRecord = {}
-			state.chosenIndex = null
-		}
-		const openAdd = () => {
-			if (state.chosenIndex == null) {
-				state.addRecord.info = ''
-			}
-		}
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			handleChange,
-			toggleSelection,
-			handleSelectionChange,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			reLoadData,
-			deleteRecord,
-			deleteBatchBtn,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			openAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
-</script>
-
-<style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
-
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
-
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
-
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
-
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
-</style>
diff --git a/src/views/system/personShiftManage/shiftManage/teamStrategy/index.vue b/src/views/system/personShiftManage/shiftManage/teamStrategy/index.vue
deleted file mode 100644
index a31fdcd..0000000
--- a/src/views/system/personShiftManage/shiftManage/teamStrategy/index.vue
+++ /dev/null
@@ -1,718 +0,0 @@
-<template>
-	<div class="home-container">
-		<div style="height: 100%">
-		<el-row class="homeCard">
-			<el-col :span="8">
-				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
-					<el-button type="primary" @click="searchRecord">查询</el-button>
-					<el-button plain @click="clearSearch">重置</el-button>
-				</div>
-			</el-col>
-		</el-row>
-		<div class="homeCard">
-			<div class="main-card">
-				<el-row class="cardTop">
-					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
-<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
-						<el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>
-					</el-col>
-					<el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()"/>
-				</el-row>
-				<el-table
-						ref="multipleTableRef"
-						:data="tableData"
-						style="width: 100%"
-						height="calc(100% - 100px)"
-						:header-cell-style="{background: '#fafafa'}"
-						@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="100" />
-					<el-table-column property="groupStrategyName" label="班组策略名称"/>
-					<el-table-column property="timeStrategy" label="时间策略" width="180" :show-overflow-tooltip="true"/>
-					<el-table-column property="cycleName" label="循环类型" :show-overflow-tooltip="true"/>
-					<el-table-column property="groupNames" label="班组"/>
-					<el-table-column property="cycleStartTime" label="排班开始时间" width="160"/>
-					<el-table-column property="groupStrategyInfo" label="描述信息"/>
-					<el-table-column fixed="right" label="操作" align="center" width="250">
-						<template #default="scope">
-							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
-							<el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index ,scope.row)">修改</el-button>
-							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-				<div class="pageBtn">
-					<el-pagination
-							v-model:currentPage="pageIndex"
-							v-model:page-size="pageSize"
-							:page-sizes="[10, 15]"
-							small=false
-							background
-							layout="total, sizes, prev, pager, next, jumper"
-							:total="totalSize"
-							@size-change="handleSizeChange"
-							@current-change="handleCurrentChange"
-					/>
-				</div>
-			</div>
-		</div>
-		</div>
-		<el-dialog v-model="dialogDetails" title="班组策略">
-			<el-form :model="details" label-width="120px">
-				<el-form-item label="策略名称">
-					<el-input
-							v-model="details.groupStrategyName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="时间策略">
-					<el-input
-							v-model="details.timeStrategy"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="循环类型">
-					<el-input
-							v-model="details.cycleName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="班组">
-					<el-input
-							v-model="details.groupNames"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="排班开始时间">
-					<el-input
-							v-model="details.cycleStartTime"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.groupStrategyInfo">
-					<el-input
-							v-model="details.groupStrategyInfo"
-							type="textarea"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="班组策略编辑" @close="closeAdd" @open="openAdd">
-			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="策略名称" prop="groupStrategyName">
-					<el-input
-							v-model="addRecord.groupStrategyName"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="时间策略" prop="timeStrategyId">
-					<el-select v-model="addRecord.timeStrategyId">
-						<el-option v-for="(item,index) in timeList" :key="index" :label="item.name" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="循环类型" prop="cycle">
-					<el-select v-model="addRecord.cycle">
-						<el-option v-for="(item,index) in cycleList" :key="index" :label="item.name" :value="item.value" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="班组选择" prop="groupIds" >
-					<el-select v-model="addRecord.groupIds" multiple>
-						<el-option v-for="(item,index) in teamList" :key="index" :label="item.groupName" :value="item.id" />
-					</el-select>
-				</el-form-item>
-				<el-form-item label="排班开始时间" prop="cycleStartTime">
-					<el-date-picker v-model="addRecord.cycleStartTime" type="date" value-format="YYYY-MM-DD"/>
-				</el-form-item>
-				<el-form-item label="描述信息" prop="groupStrategyInfo">
-					<el-input
-							v-model="addRecord.groupStrategyInfo"
-							type="textarea"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
-					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
-				</el-form-item>
-			</el-form>
-		</el-dialog>
-		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
-			<span>您确定要删除该条记录吗?</span>
-			<template #footer>
-		  <span class="dialog-footer">
-			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
-			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
-		  </span>
-			</template>
-		</el-dialog>
-		<el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>
-			<span>您确定要删除这些记录吗?</span>
-			<template #footer>
-                <span class="dialog-footer">
-                    <el-button @click="deleteSetDialog = false" size="default">取消</el-button>
-                    <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>
-                </span>
-			</template>
-		</el-dialog>
-	</div>
-</template>
-
-<script lang="ts">
-	import { toRefs, reactive, ref, onMounted } from 'vue';
-	import { storeToRefs } from 'pinia';
-	import { initBackEndControlRoutes } from '/@/router/backEnd';
-	import {useUserInfo} from "/@/stores/userInfo";
-	import { Session } from '/@/utils/storage';
-	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
-	import { ElTable } from 'element-plus'
-	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { teamStrategyApi } from '/@/api/basicDateManage/personShiftManage/teamStrategy';
-	import { timeStrategyApi } from '/@/api/basicDateManage/personShiftManage/timeStrategy';
-	import { teamManageApi } from '/@/api/basicDateManage/personShiftManage/teamManage';
-
-	// 定义接口来定义对象的类型
-	interface stateType {
-		tableData: Array<string>,
-		pageRecord: Array<string>,
-		timeList: Array<any>,
-		teamList: Array<any>,
-		cycleList: Array<any>,
-		multipleSelection: Array<any>,
-		deleteArr: Array<any>,
-		dialogDetails: boolean,
-		dialogAddRecord: boolean,
-		deleteDialog: boolean,
-		deleteSetDialog: boolean;
-		pageIndex: number,
-		pageSize: number,
-		chosenIndex: null | number,
-		deleteId: null | number,
-		searchWord: string,
-		totalSize: number,
-		addRecord: {
-			groupStrategyName: string,
-			timeStrategyId: number | null,
-			timeStrategy: string,
-			groupIds: Array<number>,
-			cycle: number | null,
-			cycleName: string,
-			cycleStartTime: string,
-			groupStrategyInfo: string,
-			groupStrategyId: number | null
-		},
-		details: {
-			groupStrategyName: string,
-			timeStrategyId: number | null,
-			timeStrategy: string,
-			groups: Array<any>,
-			cycle: number | null,
-			cycleName: string,
-			cycleStartTime: string,
-			groupStrategyInfo: string
-		}
-	}
-
-	export default {
-    name: 'teamStrategy',
-	components:{},
-    setup() {
-		const userInfo = useUserInfo()
-		const {userInfos} = storeToRefs(userInfo);
-
-		const state = reactive<stateType>({
-			pageIndex: 1,
-			pageSize: 10,
-			totalSize: 0,
-			chosenIndex: null,
-			searchWord: '',
-			tableData: [],
-			pageRecord: [],
-			timeList: [],
-			teamList: [],
-			cycleList: [
-				{
-					name: '周',
-					value: 3
-				},
-				{
-					name: '月',
-					value: 2
-				},
-				{
-					name: '年',
-					value: 1
-				}
-			],
-			multipleSelection: [],
-			dialogDetails: false,
-			dialogAddRecord: false,
-			deleteDialog: false,
-			deleteSetDialog: false,
-			addRecord: {
-				groupStrategyName: '',
-				timeStrategyId: null,
-				timeStrategy: '',
-				groupIds: [],
-				cycle: null,
-				cycleName: '',
-				cycleStartTime: '',
-				groupStrategyInfo: '',
-				groupStrategyId: null
-			},
-			details: {
-				groupStrategyName: '',
-				timeStrategyId: null,
-				timeStrategy: '',
-				groups: [],
-				cycle: null,
-				cycleName: '',
-				cycleStartTime: '',
-				groupStrategyInfo: ''
-			},
-			deleteId: null,
-			deleteArr: []
-		})
-		interface User {
-			groupStrategyName: string,
-			timeStrategyId: null | number,
-			timeStrategy: string,
-			groups: Array<any>,
-			cycle: null | number,
-			cycleName: string,
-			cycleStartTime: string,
-			groupStrategyInfo: string
-		}
-		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
-		const toggleSelection = (rows?: User[]) => {
-			if (rows) {
-				rows.forEach((row) => {
-					// TODO: improvement typing when refactor table
-					// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-					// @ts-expect-error
-					multipleTableRef.value!.toggleRowSelection(row, undefined)
-				})
-			} else {
-				multipleTableRef.value!.clearSelection()
-			}
-		}
-
-		// 多选
-		const handleSelectionChange = (val: User[]) => {
-			state.multipleSelection = JSON.parse(JSON.stringify(val))
-			state.deleteArr = state.multipleSelection.map((item)=>{
-				item = item.id
-				return item
-			})
-		}
-
-		const addRef = ref<FormInstance>()
-		const addRules = reactive<FormRules>({
-			groupStrategyName: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			timeStrategyId: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			groupIds: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			cycle: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			cycleStartTime: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
-		})
-
-		// 页面载入时执行方法
-		onMounted(() => {
-			getListByPage()
-			getTimeList()
-			getTeamList()
-		})
-
-		// 分页获取班组策略列表
-		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord,containGroupEnable:true}}
-			let res = await teamStrategyApi().getRecordPage(data);
-			if (res.data.code === '200') {
-				state.pageRecord = res.data.data
-				state.tableData = res.data.data.map((item)=>{
-					item.cycleName = item.cycle==1?'年':(item.cycle==2?'月':(item.cycle==3?'周':''))
-					if(!item.groups || item.groups == null){
-						item.groups = []
-					}else{
-						item.groups = item.groups.map((i) =>{
-							return Object.assign({},{'groupId':i.groupId,'groupName':i.groupName})
-						})
-						item.groupIds= Array.from(item.groups,({groupId})=> groupId)
-						item.groupNames= Array.from(item.groups,({groupName})=> groupName)
-					}
-					return item
-				})
-				state.tableData.map(async(item)=>{
-					if(!item.timeStrategyId || item.timeStrategyId == null){
-						item.timeStrategy = ''
-					}else{
-						let op = await timeStrategyApi().getRecordById({id: item.timeStrategyId})
-						if(op.data.code&&op.data.code === '200'){
-							if(op.data.data){
-								item.timeStrategy = op.data.data.name
-							}else{
-								item.timeStrategy = ''
-							}
-						} else {
-							ElMessage({
-								type: 'warning',
-								message: res.data.msg
-							});
-						}
-					}
-					return item
-				})
-				console.log(state.tableData,'state.tableData')
-				state.totalSize = res.data.total
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 循环类型格式化
-		// const toNames =(row, column, cellValue, index) =>{
-		// 	return row.cycle == 1? '年':(row.type == 2? '月': '周')
-		// }
-
-		// 时间策略格式化
-		// const timeName = async (row, column, cellValue, index) =>{
-		// 	let res = await timeStrategyApi().getRecordById({id: row.timeStrategyId})
-		// 	if (res.data.code === '200') {
-		// 		return row.timeStrategyId = res.name
-		// 	} else {
-		// 		ElMessage({
-		// 			type: 'warning',
-		// 			message: res.data.msg
-		// 		});
-		// 	}
-		// }
-
-		// 获取时间策略列表
-		const getTimeList = async () => {
-			let res = await timeStrategyApi().getAllRecord();
-			if (res.data.code === '200') {
-				console.log(res.data.data,'timestrategy')
-				state.timeList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 获取班组列表
-		const getTeamList = async () => {
-			let res = await teamManageApi().getRecord({name: ''});
-			if (res.data.code === '200') {
-				state.teamList = res.data.data
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 关键词查询记录
-		const searchRecord = async()=>{
-			if(state.searchWord==''){
-				ElMessage({
-					type: 'warning',
-					message: '请输入查询关键词'
-				});
-			}else{
-				getListByPage()
-			}
-		}
-
-		const clearSearch = async()=>{
-			state.searchWord=''
-			getListByPage()
-		}
-
-		// 添加班组策略方法
-		const addRecord = async (data:any) => {
-			let res = await teamStrategyApi().addRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		};
-
-		// 修改工作时段方法
-		const editRecord = async (data:any) => {
-			let res = await teamStrategyApi().updateRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		// 新增修改记录
-		const confirmAddRecord = async (formEl: FormInstance | undefined) => {
-			if (!formEl) return
-			await formEl.validate(async (valid, fields) => {
-				if (valid) {
-					const data = {
-						groupStrategyName: state.addRecord.groupStrategyName,
-						groupStrategyInfo: state.addRecord.groupStrategyInfo,
-						groupStrategyCycleType: state.addRecord.cycle,
-						timeStrategyId: state.addRecord.timeStrategyId,
-						groupIds: state.addRecord.groupIds,
-						cycleStartTime: state.addRecord.cycleStartTime
-					}
-					if (state.chosenIndex == null) {
-						await addRecord(data)
-					} else {
-						data.groupStrategyId = JSON.stringify(state.addRecord.groupStrategyId)
-						await editRecord(data)
-					}
-					state.dialogAddRecord = false
-				} else {
-					console.log('error submit!', fields)
-				}
-			})
-
-		}
-
-		// 删除班组策略方法
-		const deleteRecord = async (data:any) => {
-			let res = await teamStrategyApi().deleteRecord(data);
-			if (res.data.code === '200') {
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-			}
-		}
-
-		const deleteRecordBtn = (row) => {
-			state.deleteId = row.groupStrategyId
-			state.deleteDialog = true
-		}
-
-		const conFirmDelete = () => {
-			deleteRecord({ groupStrategyId: state.deleteId })
-			state.deleteDialog = false
-		}
-
-		// 批量删除
-		const deleteBatchBtn = async () => {
-			ElMessage({
-				type: 'warning',
-				message: '抱歉,本页面暂不支持批量删除'
-			});
-			// if (state.deleteArr.length > 0) {
-			// 	state.deleteSetDialog = true
-			// } else {
-			// 	ElMessage({
-			// 		type: 'warning',
-			// 		message: '请先选择要删除的记录'
-			// 	});
-			// }
-		};
-
-		// const conFirmDeleteBatch = async () => {
-		// 	let res = await timeStrategyApi().deletBatchRecord({ids: state.deleteArr});
-		// 	if (res.data.code === '200') {
-		// 		state.deleteSetDialog = false
-		// 		ElMessage({
-		// 			type: 'success',
-		// 			message: res.data.msg
-		// 		});
-		// 		getListByPage()
-		// 	} else {
-		// 		ElMessage({
-		// 			type: 'warning',
-		// 			message: res.data.msg
-		// 		});
-		// 		state.deleteSetDialog = false
-		// 	}
-		// }
-
-		const handleSizeChange = (val: number) => {
-			state.pageSize = val
-			getListByPage()
-		}
-		const handleCurrentChange = (val: number) => {
-			state.pageIndex = val
-			getListByPage()
-		}
-
-		// 查看记录
-		const viewRecord = (row) => {
-			state.details = JSON.parse(JSON.stringify(row))
-			state.dialogDetails = true
-		}
-
-		// 刷新
-		const reLoadData = async () =>{
-			getListByPage()
-		}
-		// 点击修改
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			state.addRecord = JSON.parse(JSON.stringify(row))
-			console.log(state.addRecord,'state.addRecord')
-		}
-		const closeAdd = () => {
-			state.addRecord = {}
-			state.chosenIndex = null
-		}
-		const openAdd = () => {
-			if (state.chosenIndex == null) {
-				state.addRecord.info = ''
-			}
-		}
-		const indexClear = () => {
-			state.deleteId = null
-		}
-
-		// 折线图
-		const renderMenu = async (value: string) => {
-			Session.set('projectId', value)
-			userInfos.value.projectId = value
-			await initBackEndControlRoutes();
-		};
-		return {
-			addRef,
-			addRules,
-			View,
-			Edit,
-			Delete,
-			Refresh,
-			Plus,
-			toggleSelection,
-			handleSelectionChange,
-			searchRecord,
-			clearSearch,
-			viewRecord,
-			deleteRecordBtn,
-			conFirmDelete,
-			getListByPage,
-			reLoadData,
-			deleteRecord,
-			deleteBatchBtn,
-			handleSizeChange,
-			handleCurrentChange,
-			confirmAddRecord,
-			closeAdd,
-			openAdd,
-			indexClear,
-			editRecordBtn,
-			...toRefs(state)
-		};
-	}
-	}
-</script>
-
-<style scoped lang="scss">
-	$homeNavLengh: 8;
-	.home-container {
-		height: calc(100vh - 114px);
-		box-sizing: border-box;
-		overflow: hidden;
-		.homeCard{
-			width: 100%;
-			padding: 20px;
-			box-sizing: border-box;
-			background: #fff;
-			border-radius: 4px;
-
-			.main-card{
-				width: 100%;
-				height: 100%;
-				.cardTop{
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20px;
-					.mainCardBtn{
-						margin: 0;
-					}
-				}
-				.pageBtn{
-					height: 60px;
-					display: flex;
-					align-items: center;
-					justify-content: right;
-
-					.demo-pagination-block + .demo-pagination-block {
-						margin-top: 10px;
-					}
-					.demo-pagination-block .demonstration {
-						margin-bottom: 16px;
-					}
-				}
-			}
-			&:last-of-type{
-				height: calc(100% - 100px);
-			}
-		}
-		.el-row{
-			display: flex;
-			align-items: center;
-			margin-bottom: 20px;
-			&:last-child {
-				margin-bottom: 0;
-			}
-			.grid-content{
-				align-items: center;
-				min-height: 36px;
-			}
-
-			.topInfo {
-				display: flex;
-				align-items: center;
-				font-size: 16px;
-				font-weight: bold;
-
-				&>div{
-					white-space: nowrap;
-					margin-right: 20px;
-				}
-			}
-		}
-	}
-	.el-input{
-		width: 100% !important;
-	}
-	.el-date-editor::v-deep{
-		width: 100%;
-	}
-	.el-select{
-		width: 100%;
-	}
-</style>

--
Gitblit v1.9.2