From fe4005fe29aafa104485ffa2392598bd8dccd347 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期一, 08 八月 2022 14:59:15 +0800
Subject: [PATCH] lct

---
 src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue                                   |    2 
 src/api/systemManage/personShiftManage/workingHours/index.ts                                                   |   58 
 src/views/accidentManagementSystem/workInjuryDeclaration/index.vue                                             |  406 
 src/views/contingencyManagement/panManagement/component/approval.vue                                           |  224 
 src/views/contingencyManagement/contingency/component/openAdd.vue                                              |  503 
 src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue                                 |  144 
 src/views/goalManagement/Goalsummary/index.vue                                                                 |  213 
 src/router/route.ts                                                                                            |    8 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue                    |  549 
 src/components/equipmentDailog/planDailog.vue                                                                  |  156 
 src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts                                   |    0 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue                     |  515 
 src/views/intellectInspect/intelligentMap/index.vue                                                            | 1294 +-
 src/components/equipmentDailog/regionDailog.vue                                                                |  156 
 src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue                                |  314 
 src/components/emergencySupplies/index.vue                                                                     |  215 
 src/views/goalManagement/processForms/component/lowerPlate.vue                                                 |  120 
 src/api/contingencyManagement/emergencyResources/index.ts                                                      |   45 
 .env.development                                                                                               |    5 
 src/views/goalManagement/targetImprovements/component/Dailogprove.vue                                          |  105 
 src/views/goalManagement/targetSettings/component/search.vue                                                   |   52 
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue |  775 +
 src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue                           |  144 
 src/views/accidentManagementSystem/accidentReport/component/openAdd.vue                                        |  665 +
 src/views/facilityManagement/ProductionEquipment/index.vue                                                     |  375 
 src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue                                    |    4 
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue           |  325 
 src/components/equipmentDailog/repairDailog.vue                                                                |  165 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue                  |  219 
 src/components/equipmentDailog/Dailog.vue                                                                      | 1003 +
 src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue            |  628 
 src/views/goalManagement/targetDecompositionMonth/index.vue                                                    |  282 
 src/views/system/menu/component/menuDialog.vue                                                                 |    1 
 src/api/systemManage/user/index.ts                                                                             |    8 
 src/components/DailogSearch/DailogSearch.vue                                                                   |  193 
 src/views/contingencyManagement/processForm/component/formInformationTops.vue                                  |  312 
 src/views/goalManagement/safetyAssessment/index.vue                                                            |  212 
 src/api/systemManage/role/index.ts                                                                             |   10 
 src/views/contingencyManagement/contingency/component/openSee.vue                                              |  425 
 src/components/userSelections/index.vue                                                                        |  446 
 src/views/accidentManagementSystem/accidentReport/index.vue                                                    |  387 
 src/api/systemManage/personShiftManage/teamStrategy/index.ts                                                   |   50 
 src/views/goalManagement/targetEscalation/index.vue                                                            |  198 
 src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue                                            |  177 
 src/components/checkTemplate/index.vue                                                                         |  239 
 src/views/contingencyManagement/processForm/processForm.vue                                                    |  137 
 src/views/goalManagement/safetyAssessment/component/Dailog.vue                                                 |  137 
 vite.config.ts                                                                                                 |    2 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue                    |  235 
 src/api/contingencyManagement/emergencyDrillEvaluation/index.ts                                                |   45 
 src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue      |  221 
 src/api/systemManage/personShiftManage/teamManage/index.ts                                                     |   94 
 src/views/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue                                    |  137 
 src/views/goalManagement/processForms/component/formInformationTop.vue                                         |  144 
 src/api/facilityManagement/index.ts                                                                            |  104 
 src/views/contingencyManagement/panManagement/component/upData.vue                                             |  125 
 src/views/facilityManagement/InstrumentationInformation/index.vue                                              |  374 
 src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue                                       |  177 
 src/components/equipmentDailog/maintenanceDailog.vue                                                           |  134 
 src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue                   |  392 
 src/views/facilityManagement/deviceType/component/Dailog.vue                                                   |  190 
 src/views/contingencyManagement/panManagement/component/abolishLibrary.vue                                     |  219 
 src/views/contingencyManagement/panManagement/component/approvalProcess.vue                                    |  202 
 src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue                                |    2 
 src/views/goalManagement/targetSettings/index.vue                                                              |  297 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/index.vue                                 |  396 
 src/api/systemManage/personShiftManage/holidayTime/index.ts                                                    |    0 
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue                         |  502 
 src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue                          |  440 
 src/api/systemManage/menu/index.ts                                                                             |   10 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue                     |  224 
 src/assets/index.ts                                                                                            |   17 
 src/main.ts                                                                                                    |    2 
 src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue         |  443 
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue              |  213 
 src/views/contingencyManagement/panManagement/component/startUp.vue                                            |  160 
 src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue                                       |  220 
 src/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue                            |  240 
 src/views/contingencyManagement/contingency/index.vue                                                          |  389 
 src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts                                           |   45 
 src/api/contingencyManagement/contingency/index.ts                                                             |   83 
 src/components/equipmentDailog/detectDailog.vue                                                                |  155 
 src/views/facilityManagement/safetyEquipment/index.vue                                                         |  377 
 src/views/goalManagement/performanceAppraisal/component/DailogAq.vue                                           |  367 
 src/api/accidentManagementSystem/index.ts                                                                      |  106 
 src/components/equipmentDailog/standardDailog.vue                                                              |  143 
 src/views/goalManagement/processForms/component/formInformationTops.vue                                        |  162 
 src/api/systemManage/personShiftManage/holidayTimeGroup/index.ts                                               |    0 
 src/views/facilityManagement/deviceType/index.vue                                                              |  130 
 src/components/updata/updata.vue                                                                               |   89 
 src/views/accidentManagementSystem/accidentExpress/index.vue                                                   |  346 
 src/views/goalManagement/processForms/processForms.vue                                                         |  124 
 src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts                                |    0 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue                      |  325 
 src/api/contingencyManagement/emergencyMaterialsInspection/index.ts                                            |   45 
 src/api/contingencyManagement/emergencyPlan/index.ts                                                           |   91 
 src/components/DailogSearchUser/index.vue                                                                      |  237 
 src/views/goalManagement/Incentivestandard/component/DailogAdd.vue                                             |  147 
 src/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue                               |  240 
 src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue                               |   13 
 src/views/goalManagement/Incentivestandard/index.vue                                                           |  282 
 src/api/contingencyManagement/emergencyDrillPlan/index.ts                                                      |   45 
 src/router/index.ts                                                                                            |   44 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue                                    |  392 
 src/api/login/index.ts                                                                                         |    4 
 src/views/contingencyManagement/contingency/component/upData.vue                                               |  125 
 src/views/goalManagement/targetImprovements/index.vue                                                          |  307 
 src/views/contingencyManagement/panManagement/index.vue                                                        |  613 
 src/api/systemManage/department/index.ts                                                                       |   10 
 src/utils/request.ts                                                                                           |    4 
 src/views/goalManagement/index.vue                                                                             |   14 
 src/views/contingencyManagement/panManagement/component/initiateApproval.vue                                   |  159 
 src/views/goalManagement/TargetBook/index.vue                                                                  |  281 
 src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts                                   |    0 
 src/components/equipmentDailog/categoryDailog.vue                                                              |  161 
 src/views/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue                                |  400 
 src/views/contingencyManagement/abolishDialog/abolishDialog.vue                                                |  139 
 src/components/DailogSearchUserManger/index.vue                                                                |  223 
 src/views/goalManagement/IncentiveRecording/index.vue                                                          |  294 
 src/views/intellectInspect/inspectBigScreen/index.vue                                                          |  704 +
 src/views/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue             |  164 
 src/components/equipmentDailog/DailogS.vue                                                                     |  661 +
 src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue                                |  318 
 src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue       |  271 
 src/views/contingencyManagement/processForm/component/lowerPlate.vue                                           |  120 
 src/views/goalManagement/targetDecompositionYear/index.vue                                                     |  280 
 .env.production                                                                                                |    3 
 src/api/goalManagement/index.ts                                                                                |  276 
 src/views/goalManagement/TargetBook/component/DailogAdd.vue                                                    |  206 
 src/views/goalManagement/targetEscalation/component/Dailog.vue                                                 |   53 
 src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue                                 |  510 
 src/api/contingencyManagement/emergencyDrillExecute/index.ts                                                   |   45 
 src/views/goalManagement/performanceAppraisal/component/DailogKh.vue                                           |  241 
 src/api/systemManage/personShiftManage/workingHoursSet/index.ts                                                |   50 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue                        |  572 
 src/views/facilityManagement/keyEquipment/index.vue                                                            |  384 
 src/views/contingencyManagement/panManagement/component/openAdd.vue                                            |  440 
 src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue                                         |  206 
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue    |  841 +
 src/views/goalManagement/performanceAppraisal/index.vue                                                        |  521 
 src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue                                 |  198 
 src/views/goalManagement/targetDecompositionYear/component/Dailog.vue                                          |  237 
 src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts                                    |    0 
 src/components/userCheckbox/index.vue                                                                          |  422 
 src/components/uploaderImg/index.vue                                                                           |   65 
 src/components/regionsDialog/index.vue                                                                         |  129 
 src/views/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue                                   |  120 
 src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts                                     |    0 
 src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts                                   |    0 
 src/api/contingencyManagement/emergencyPlanLog/index.ts                                                        |   45 
 src/api/systemManage/personShiftManage/timeStrategy/index.ts                                                   |   83 
 src/views/contingencyManagement/contingency/component/dialog.vue                                               |  200 
 src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts                               |    0 
 src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue                                         |  120 
 src/views/doublePrevent/riskLevel/action/index.vue                                                             |    2 
 src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue                        |  375 
 src/views/contingencyManagement/emergencyPlanStartRecord/index.vue                                             |  405 
 .env                                                                                                           |    2 
 src/api/workInjuryDeclaration/index.ts                                                                         |  123 
 src/views/goalManagement/TargetBook/component/DailogSearch.vue                                                 |  175 
 src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue                      |  388 
 src/views/contingencyManagement/processForm/component/formInformationTop.vue                                   |  144 
 src/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue                     |  242 
 src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue          |  280 
 src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue                                          |  133 
 /dev/null                                                                                                      |  358 
 src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue                            |  461 
 src/views/doublePrevent/riskLevel/device/index.vue                                                             |    4 
 src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue                                       |  474 
 src/views/goalManagement/targetSettings/component/dailogAdd.vue                                                |  198 
 src/views/facilityManagement/EquipmentStatistics/index.vue                                                     |   91 
 src/assets/index.css                                                                                           |   10 
 172 files changed, 36,957 insertions(+), 1,066 deletions(-)

diff --git a/.env b/.env
index 30b8e66..1287485 100644
--- a/.env
+++ b/.env
@@ -5,4 +5,4 @@
 VITE_OPEN = false
 
 # public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
-VITE_PUBLIC_PATH = /vue-next-admin-preview/
+VITE_PUBLIC_PATH = 'http://121.239.169.27:6006'
diff --git a/.env.development b/.env.development
index b1428e8..0f86f0b 100644
--- a/.env.development
+++ b/.env.development
@@ -2,6 +2,7 @@
 ENV = 'development'
 
 # 本地环境接口地址
-#VITE_API_URL = 'http://192.168.0.35:8008'
+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.29:8008'
-VITE_API_URL = 'http://192.168.0.69:8008'
+#VITE_API_URL = 'http://192.168.0.69:8008'
diff --git a/.env.production b/.env.production
index 0336f50..bf8d144 100644
--- a/.env.production
+++ b/.env.production
@@ -2,4 +2,5 @@
 ENV = 'production'
 
 # 线上环境接口地址
-VITE_API_URL = 'https://lyt-top.gitee.io/vue-next-admin-preview/'
\ No newline at end of file
+VITE_API_URL = 'http://121.239.169.27:16008/safeplatform'
+VITE_API_URL_OUT = 'http://121.239.169.27:16008/safeplatform-out'
diff --git a/src/api/accidentManagementSystem/index.ts b/src/api/accidentManagementSystem/index.ts
new file mode 100644
index 0000000..1094a53
--- /dev/null
+++ b/src/api/accidentManagementSystem/index.ts
@@ -0,0 +1,106 @@
+import request from '/@/utils/request';
+
+export function accidentManagementSystemApi(){
+    return {
+        // 事故快报一览
+        accidentList:(params:object)=>{
+         return request({
+             url:"/accidentExpress/page/list",
+             method:"post",
+             data:params
+         })
+        },
+        // 事故快报新增
+        accidentAdd:(params:object)=>{
+            return request({
+                url:"/accidentExpress/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 事故快报详情
+        accidentScarh:(params:number)=>{
+            return request({
+               url:`/accidentExpress/info/${params}`,
+               method:"get",
+            })
+        },
+         // 事故快报修改
+        accidentView:(params:object)=>{
+            return request({
+                url:"/accidentExpress/update",
+                method:"post",
+                data:params
+            })
+        },
+         // 事故快报删除
+         accidentDele:(params:object)=>{
+             return request({
+                url:`/accidentExpress/batchDelete`,
+                method:"post",
+                data:params
+             })
+         },
+        //  工伤申报一览
+        workList:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/page/list",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报新增
+        workAdd:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报详情
+        workScarh:(params:number)=>{
+            return request({
+               url:`/workInjuryDeclaration/info/${params}`,
+               method:"get",
+            })
+        },
+        // 工伤申报修改
+        workView:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/update",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报删除/批量删除
+        workDelete:(params:object)=>{
+            return request({
+               url:`/workInjuryDeclaration/batchDelete`,
+               method:"post",
+                data:params
+            })
+        },
+        // 伤亡人员一览
+        casualtyList:(id:number)=>{
+            return request({
+                url:`/accidentExpress/casualty/list/${id}`,
+                method:"get",
+            })
+        },
+        // 伤亡人员新增
+        casualtyAdd:(params:object)=>{
+            return request({
+                url:`/accidentExpress/casualty/add`,
+                method:"post",
+                data:params
+            })
+        },
+        // 伤亡人员删除
+        casualtyDel:(id:number)=>{
+            return request({
+                url:`/accidentExpress/casualty/del/${id}`,
+                method:"get",
+            })
+        },
+    }
+}
\ No newline at end of file
diff --git a/src/api/contingencyManagement/contingency/index.ts b/src/api/contingencyManagement/contingency/index.ts
new file mode 100644
index 0000000..d3222b2
--- /dev/null
+++ b/src/api/contingencyManagement/contingency/index.ts
@@ -0,0 +1,83 @@
+import request from '/@/utils/request';
+
+export function contingencyApi(){
+    return{
+        //应急队伍一览
+        getTeamManagementList: (params: object) => {
+            return request({
+                url: `/emergencyTeam/page/list`,
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急队伍新增
+        addEmergencyTeam: (params:object) => {
+            return request({
+                url: `/emergencyTeam/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍详情
+        seeEmergencyTeam: (params:number) => {
+            return request({
+                url: `/emergencyTeam/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急队伍编辑
+        editEmergencyTeam: (params: object) => {
+            return request({
+                url: `/emergencyTeam/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍删除
+        deleteEmergencyTeam: (params:object) => {
+            return request({
+                url: `/emergencyTeam/batchDelete`,
+                method: 'post',
+                data:params
+            });
+        },
+        // 应急队伍人员一览
+        getEmergencyTeamPersonnelList: (params: number) => {
+            return request({
+                url: `/emergencyTeam/memberList/${params}`,
+                method: 'get',
+                // data:params
+            })
+        },
+        // 应急队伍人员新增
+        addEmergencyTeamPersonnel: (params:object) => {
+            return request({
+                url: `/emergencyTeam/addMember`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍人员详情
+        seeEmergencyTeamPersonnel: (params:number) => {
+            return request({
+                url: `/emergencyTeam/infoMember/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急队伍人员编辑
+        editEmergencyTeamPersonnel: (params: object) => {
+            return request({
+                url: `/emergencyTeam/updateMember`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍人员删除
+        deleteEmergencyTeamPersonnel: (params:object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..547de4c
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function emergencyDrillEvaluationApi(){
+    return{
+        // 应急演练实施评价一览
+        getEmergencyDrillEvaluationList: (params: object) => {
+            return request({
+                url: '/emergencyDrillEvaluation/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急演练实施评价新增
+        addEmergencyDrillEvaluation: (params:object) => {
+            return request({
+                url: `/emergencyDrillEvaluation/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急演练实施评价详情
+        seeEmergencyDrillEvaluation: (params:number) => {
+            return request({
+                url: `/emergencyDrillEvaluation/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急演练实施评价编辑
+        editEmergencyDrillEvaluation: (params: object) => {
+            return request({
+                url: `/emergencyDrillEvaluation/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急演练实施评价删除
+        deleteEmergencyDrillEvaluation: (params:object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..a5b380a
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyDrillExecute/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function emergencyDrillExecuteApi(){
+    return{
+        // 应急演练实施一览
+        getEmergencyDrillExecuteList: (params: object) => {
+            return request({
+                url: '/emergencyDrillExecute/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急演练实施新增
+        addEmergencyDrillExecute: (params:object) => {
+            return request({
+                url: `/emergencyDrillExecute/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急演练实施详情
+        seeEmergencyDrillExecute: (params:number) => {
+            return request({
+                url: `/emergencyDrillExecute/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急演练实施编辑
+        editEmergencyDrillExecute: (params: object) => {
+            return request({
+                url: `/emergencyDrillExecute/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急演练实施删除
+        deleteEmergencyDrillExecute: (params:any) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..e4ad774
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyDrillPlan/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function releaseDrillPlanApi(){
+    return{
+        //演练计划发布一览
+        getReleaseDrillPlanList: (params: object) => {
+            return request({
+                url: '/emergencyDrillPlan/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 演练计划发布新增
+        addReleaseDrillPlan: (params:object) => {
+            return request({
+                url: `/emergencyDrillPlan/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 演练计划发布详情
+        seeReleaseDrillPlan: (params:number) => {
+            return request({
+                url: `/emergencyDrillPlan/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 演练计划发布编辑
+        editReleaseDrillPlan: (params: object) => {
+            return request({
+                url: `/emergencyDrillPlan/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 演练计划发布删除
+        deleteReleaseDrillPlan: (params:object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..d9571c4
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function emergencyMaterialsInspectionApi(){
+    return{
+        //应急物资检查一览
+        getEmergencyMaterialsInspectionList: (params: object) => {
+            return request({
+                url: '/emergencySuppliesInspect/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急物资检查新增
+        addEmergencyMaterialsInspection: (params:object) => {
+            return request({
+                url: `/emergencySuppliesInspect/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急物资检查详情
+        seeEmergencyMaterialsInspection: (params:number) => {
+            return request({
+                url: `/emergencySuppliesInspect/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急物资检查编辑
+        editEmergencyMaterialsInspection: (params: object) => {
+            return request({
+                url: `/emergencySuppliesInspect/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急物资检查删除
+        deleteEmergencyMaterialsInspection: (params:object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..fb79a63
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyPlan/index.ts
@@ -0,0 +1,91 @@
+import request from '/@/utils/request';
+
+export function emergencyPlanApi(){
+    return{
+        // 应急预案管理一览
+        getEmergencyPlanList: (params: object) => {
+            return request({
+                url: '/emergencyPlan/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急预案管理新增
+        addEmergencyPlan: (params: object) => {
+            return request({
+                url: `/emergencyPlan/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍详情
+        seeEmergencyTeam: (params:number) => {
+            return request({
+                url: `/emergencyPlan/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急队伍编辑
+        editEmergencyTeam: (params: object) => {
+            return request({
+                url: `/emergencyPlan/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍删除
+        deleteEmergencyTeam: (params:object) => {
+            return request({
+                url: `/emergencyPlan/batchDelete`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急队伍废止
+        EmergencyTeam: (params:object) => {
+            return request({
+                url: `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=true`,
+                method: 'get',
+            });
+        },
+        // 应急队伍还原
+        reductionEmergencyTeam: (params:number) => {
+            return request({
+                url: `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=false`,
+                method: 'get',
+            });
+        },
+        // 应急预案管理审批新增
+        approvalEmergencyPlan: (params: object) => {
+            return request({
+                url: `/emergencyWorkApprove/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急预案管理审批修改
+        editApprovalEmergencyPlan: (params: object) => {
+            return request({
+                url: `/emergencyWorkApprove/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急预案管理审批查看
+        approvalProcessEmergencyPlan: (params: number) => {
+            return request({
+                url: `/emergencyWorkApprove/info/${params}`,
+                method: 'get',
+                data: params
+            });
+        },
+        // 审批一览
+        processEmergencyPlan: (params: object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..ce58752
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyPlanLog/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function emergencyPlanLogApi(){
+    return{
+        // 应急预案启动记录一览
+        getEmergencyPlanLogList: (params: object) => {
+            return request({
+                url: '/emergencyPlanLog/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急预案启动记录新增
+        addEmergencyPlanLog:(params:object)=>{
+            return request({
+                url:"/emergencyPlanLog/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 应急预案启动记录详情
+        seeEmergencyPlanLog:(params:number)=>{
+            return request({
+                url:`/emergencyPlanLog/info/${params}`,
+                method:"get",
+            })
+        },
+        // 应急预案启动记录修改
+        editEmergencyPlanLog:(params:object)=>{
+            return request({
+                url:"/emergencyPlanLog/update",
+                method:"post",
+                data:params
+            })
+        },
+        // 应急预案启动记录删除
+        deleteEmergencyPlanLog:(params:object)=>{
+            return request({
+                url:`/emergencyPlanLog/batchDelete`,
+                method:"post",
+                data:params
+            })
+        },
+    }
+}
\ No newline at end of file
diff --git a/src/api/contingencyManagement/emergencyResources/index.ts b/src/api/contingencyManagement/emergencyResources/index.ts
new file mode 100644
index 0000000..15f2778
--- /dev/null
+++ b/src/api/contingencyManagement/emergencyResources/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function emergencySuppliesApi(){
+    return{
+        // 应急物资一览
+        getEmergencySuppliesList:(params:object)=>{
+            return request({
+                url:"/emergencySupplies/page/list",
+                method:'post',
+                data:params,
+            });
+        },
+        // 应急物资新增
+        addEmergencySupplies:(params:object)=>{
+            return request({
+                url:"/emergencySupplies/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 应急物资详情
+        seeEmergencySupplies: (params:number) => {
+            return request({
+                url: `/emergencySupplies/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急物资编辑
+        editEmergencySupplies: (params: object) => {
+            return request({
+                url: `/emergencySupplies/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急物资删除
+        deleteEmergencySupplies: (params:object) => {
+            return request({
+                url: `/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
new file mode 100644
index 0000000..b0412ce
--- /dev/null
+++ b/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts
@@ -0,0 +1,45 @@
+import request from '/@/utils/request';
+
+export function maintenanceEmergencyMaterialsApi(){
+    return{
+        //应急物资保养一览
+        getMaintenanceEmergencyMaterialsList: (params: object) => {
+            return request({
+                url: '/emergencySuppliesMaintain/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 应急物资保养新增
+        addMaintenanceEmergencyMaterials: (params:object) => {
+            return request({
+                url: `/emergencySuppliesMaintain/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急物资保养详情
+        seeMaintenanceEmergencyMaterials: (params:number) => {
+            return request({
+                url: `/emergencySuppliesMaintain/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 应急物资保养编辑
+        editMaintenanceEmergencyMaterials: (params: object) => {
+            return request({
+                url: `/emergencySuppliesMaintain/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 应急物资保养删除
+        deleteMaintenanceEmergencyMaterials: (params:object) => {
+            return request({
+                url: `/emergencySuppliesMaintain/batchDelete`,
+                method: 'post',
+                data: params
+            });
+        },
+    }
+}
\ No newline at end of file
diff --git a/src/api/facilityManagement/index.ts b/src/api/facilityManagement/index.ts
new file mode 100644
index 0000000..52ea447
--- /dev/null
+++ b/src/api/facilityManagement/index.ts
@@ -0,0 +1,104 @@
+import request from '/@/utils/request';
+export function facilityManagementApi(){
+    return{
+        // 设备设施类型管理 查询单条数据
+        getequipmentTypeMngDetail:(params:any)=>{
+            return request({
+                url:`/equipmentTypeMng/selectOne/${params}`,
+                method:"get"
+            })
+        },
+        // 设备设施类型管理 新增或者修改数据
+        getequipmentTypeMngAddOrUpdate:(params:object)=>{
+            return request({
+                url:"/equipmentTypeMng/addOrUpdate",
+                method:"post",
+                data:params
+            })
+        },
+         // 设备设施类型管理 删除 
+         getequipmentTypeMngDelete:(params:any)=>{
+            return request({
+                url:`/equipmentTypeMng/delete`,
+                method:"post",
+                data:params
+            })
+        },
+         // 设备设施类型管理 查询树状数据 
+         getequipmentTypeMngTreeData:()=>{
+            return request({
+                url:`/equipmentTypeMng/treeData`,
+                method:"get"
+            })
+        },
+        // 仪器仪表信息、生产设备设施、安全设备设施 查询单条数据
+        getequipmentInfoDetail:(params:any)=>{
+            return request({
+                url:`/equipmentInfo/selectOne/${params}`,
+                method:"get"
+            })
+        },
+        // 仪器仪表信息、生产设备设施、安全设备设施 新增或者修改数据
+        getequipmentInfoAddOrUpdate:(params:object)=>{
+            return request({
+                url:"/equipmentInfo/addOrUpdate",
+                method:"post",
+                data:params
+            })
+        },
+        // 仪器仪表信息、生产设备设施、安全设备设施 删除 
+        getequipmentInfoDelete:(params:any)=>{
+            return request({
+                url:`/equipmentInfo/delete`,
+                method:"post",
+                data:params
+            })
+        },
+        // 仪器仪表信息、生产设备设施、安全设备设施 分页查询数据
+        getequipmentInfoList:(params:object)=>{
+            return request({
+                url:"/equipmentInfo/page/list",
+                method:"post",
+                data:params
+            })
+        },
+         // 仪器仪表信息、生产设备设施、安全设备设施 统计
+         getequipmentInfoStatistics:()=>{
+            return request({
+                url:`/equipmentInfo/statistics`,
+                method:"get"
+            })
+        },
+        // 重点监管装置/设备 查询单条数据
+        getkeypointEquipmentInfoDetail:(params:any)=>{
+            return request({
+                url:`/keypointEquipmentInfo/selectOne/${params}`,
+                method:"get"
+            })
+        },
+        // 重点监管装置/设备 新增或者修改数据
+        getkeypointEquipmentInfoAddOrUpdate:(params:object)=>{
+            return request({
+                url:`/keypointEquipmentInfo/addOrUpdate`,
+                method:"post",
+                data:params
+            })
+        },
+        // 重点监管装置/设备 删除
+        getkeypointEquipmentInfoDetele:(params:any)=>{
+            return request({
+                url:`/keypointEquipmentInfo/delete`,
+                method:"post",
+                data:params
+            })
+        },
+         // 重点监管装置/设备 分页查询数据
+         getkeypointEquipmentInfoAddOrList:(params:object)=>{
+            return request({
+                url:`/keypointEquipmentInfo/page/list`,
+                method:"post",
+                data:params
+            })
+        },
+    }
+}
\ No newline at end of file
diff --git a/src/api/goalManagement/index.ts b/src/api/goalManagement/index.ts
new file mode 100644
index 0000000..83745aa
--- /dev/null
+++ b/src/api/goalManagement/index.ts
@@ -0,0 +1,276 @@
+
+import request from '/@/utils/request';
+export function goalManagementApi() {
+    return {
+        // 目标设置、目标指标分解列表
+        getTargetMngList: (params: object) => {
+            return request({
+                url: "/targetMng/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        // 目标设置详情
+        getTargetMngDetail: (params: any) => {
+            return request({
+                url: `/targetMng/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        // 目标设置新增或者修改数据
+        getTargetMngAddOrupdata: (params: object) => {
+            return request({
+                url: "/targetMng/addOrUpdate",
+                method: "post",
+                data: params
+            })
+        },
+        // 目标设置删除
+        getTargetMngDelete: (params: any) => {
+            return request({
+                url: `/targetMng/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 目标指标分解-新增或者修改数据
+        gettargetDivideDetail: (params: object) => {
+            return request({
+                url: "/targetDivideDetail/addOrUpdate",
+                method: "post",
+                data: params
+            })
+        },
+        // 统计
+        getEquipmentInfo: () => {
+            return request({
+                url: "/equipmentInfo/statistics",
+                method: "get"
+            })
+        },
+        // 目标责任书 分页查询数据
+        gettargetDutyfileInfoList: (params: object) => {
+            return request({
+                url: "/targetDutyfileInfo/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        // 目标责任书 查询单条数据
+        gettargetDutyfileInfoDetail: (params: number) => {
+            return request({
+                url: `/targetDutyfileInfo/selectOne/${params}`,
+                method: "get"
+            })
+        },
+        // 目标责任书 新增或者修改数据 
+        gettargetDutyfileInfoAddorUpdata: (params: any) => {
+            return request({
+                url: `/targetDutyfileInfo/addOrUpdate`,
+                method: "post",
+                data: params
+            })
+        },
+        // 目标责任书 删除
+        gettargetDutyfileInfoDelete: (params: any) => {
+            return request({
+                url: `/targetDutyfileInfo/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 奖惩标准设定 分页查询数据
+        getrewardPunishmentStandardList: (params: object) => {
+            return request({
+                url: "/rewardPunishmentStandard/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        // 奖惩标准设定 查询单条数据 
+        getrewardPunishmentStandardDetail: (params: any) => {
+            return request({
+                url: `/rewardPunishmentStandard/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        // 奖惩标准设定 新增或者修改数据
+        getrewardPunishmentStandardaddOrUpdate: (params: object) => {
+            return request({
+                url: "/rewardPunishmentStandard/addOrUpdate",
+                method: "post",
+                data: params
+            })
+        },
+        // 奖惩标准设定 删除 
+        getrewardPunishmentStandardDelete: (params: any) => {
+            return request({
+                url: `/rewardPunishmentStandard/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 奖惩记录 分页查询数据
+        getrewardPunishmentList: (params: object) => {
+            return request({
+                url: "/rewardPunishmentDetail/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        // 奖惩记录 查询单条数据 
+        getrewardPunishmentDetail: (params: any) => {
+            return request({
+                url: `/rewardPunishmentDetail/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        // 奖惩记录 新增或者修改数据
+        getrewardPunishmentAddOrUpdate: (params: object) => {
+            return request({
+                url: `/rewardPunishmentDetail/addOrUpdate`,
+                method: "post",
+                data: params
+            })
+        },
+        // 奖惩记录 删除 
+        getrewardPunishmentDelete: (params: any) => {
+            return request({
+                url: `/rewardPunishmentDetail/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 绩效考核管理 安全考核管理 分页查询数据
+        getexamineMngList: (params: object) => {
+            return request({
+                url: "/examineMng/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        //  绩效考核管理 安全考核管理 查询单条数据 
+        getexamineMngDetail: (params: any) => {
+            return request({
+                url: `/examineMng/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        //  绩效考核管理 安全考核管理 新增或者修改数据
+        getexamineMngAddOrUpdate: (params: object) => {
+            return request({
+                url: `/examineMng/addOrUpdate`,
+                method: "post",
+                data: params
+            })
+        },
+        //  绩效考核管理 安全考核管理 删除 
+        getexamineMngDelete: (params: any) => {
+            return request({
+                url: `/examineMng/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 绩效考核管理 考核标准设定 分页查询数据
+        getexamineTemplateList: (params: object) => {
+            return request({
+                url: "/examineTemplate/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        //  绩效考核管理 考核标准设定 查询单条数据 
+        getexamineTemplateDetail: (params: any) => {
+            return request({
+                url: `/examineTemplate/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        //  绩效考核管理 考核标准设定 新增或者修改数据
+        getexamineTemplateAddOrUpdate: (params: object) => {
+            return request({
+                url: `/examineTemplate/addOrUpdate`,
+                method: "post",
+                data: params
+            })
+        },
+        //  绩效考核管理 考核标准设定 删除 
+        getexamineTemplateDelete: (params: any) => {
+            return request({
+                url: `/examineTemplate/delete`,
+                method: "post",
+                data:params
+            })
+        },
+        // 目标汇总 分页查询数据
+        gettargetDutySummaryList: (params: object) => {
+            return request({
+                url: "/targetDutySummary/page/list",
+                method: "post",
+                data: params
+            })
+        },
+        //  目标汇总 查询单条数据 
+        gettargetDutySummaryDetail: (params: any) => {
+            return request({
+                url: `/targetDutySummary/selectOne/${params}`,
+                method: "get",
+            })
+        },
+        //  目标汇总 新增或者修改数据
+        gettargetDutySummaryAddOrUpdate: (params: object) => {
+            return request({
+                url: `/targetDutySummary/addOrUpdate`,
+                method: "post",
+                data: params
+            })
+        },
+        //  目标汇总 删除 
+        gettargetDutySummaryDelete: (params: any) => {
+            return request({
+                url: `/targetDutySummary/delete?ids=${params}`,
+                method: "get",
+            })
+        },
+        // 安全目标考核 查询单条数据
+        gettargetExamineDetail: (params: any) => {
+            return request({
+                url: `/targetExamine/selectOne/${params}`,
+                method: "get"
+            })
+        },
+        // 安全目标考核 新增或者修改数据
+        gettargetExamineAddOrUpdate: (params: object) => {
+            return request({
+                url: "/targetExamine/addOrUpdate",
+                method: "post",
+                data: params
+            })
+        },
+        //   目标检查上报 (有疑问) 新增或者修改数据 ---???
+        getworkApproveAddOrUpdate: (params: object) => {
+            return request({
+                url: "/workApprove/submitApprove",
+                method: "post",
+                data: params
+            })
+        },
+        // 部门树
+        getTreedepartment: () => {
+            return request({
+                    url:"/department/list",
+                    method: "post"
+                })
+
+        },
+        // 人员
+        getManName:(params:any)=>{
+            return request({
+                url:`/account/dep/list?depId=${params}`,
+                method:"get"
+            })
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index 0cd50c5..ac55ce0 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -10,7 +10,7 @@
         // v1
         signIn: (params: object) => {
             return request({
-                url: '/auth/login',
+                url: import.meta.env.VITE_API_URL + '/auth/login',
                 method: 'post',
                 data: params
             });
@@ -18,7 +18,7 @@
         // v1
         signOut: () => {
             return request({
-                url: '/auth/logout',
+                url: import.meta.env.VITE_API_URL + '/auth/logout',
                 method: 'post'
             });
         }
diff --git a/src/api/basicDateManage/personShiftManage/holidayTime/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/holidayTime/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/holidayTime/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/holidayTimeGroup/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/teamManage/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/teamManage/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/teamManage/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/teamStrategy/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/teamStrategy/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/teamStrategy/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/timeStrategy/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/timeStrategy/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/timeStrategy/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/workingHours/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/workingHours/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/workingHours/index.ts
diff --git a/src/api/basicDateManage/personShiftManage/workingHoursSet/index.ts b/src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts
similarity index 100%
rename from src/api/basicDateManage/personShiftManage/workingHoursSet/index.ts
rename to src/api/systemManage/basicDateManage/personShiftManage/workingHoursSet/index.ts
diff --git a/src/api/systemManage/department/index.ts b/src/api/systemManage/department/index.ts
index 3733527..fb22c65 100644
--- a/src/api/systemManage/department/index.ts
+++ b/src/api/systemManage/department/index.ts
@@ -5,14 +5,14 @@
         // v2
         getDepartmentList: () => {
             return request({
-                url: `/department/list`,
+                url: import.meta.env.VITE_API_URL + `/department/list`,
                 method: 'post'
             });
         },
         // v2
         addDepartment: (data: object) => {
             return request({
-                url: `/department/add`,
+                url: import.meta.env.VITE_API_URL + `/department/add`,
                 method: 'post',
                 data: data
             });
@@ -20,7 +20,7 @@
         // v2
         modDepartment: (data: object) => {
             return request({
-                url: `/department/mod`,
+                url: import.meta.env.VITE_API_URL + `/department/mod`,
                 method: 'post',
                 data: data
             });
@@ -28,10 +28,10 @@
         // v1
         deleteDepartment: (value?: object) => {
             return request({
-                url: `/department/del`,
+                url: import.meta.env.VITE_API_URL + `/department/del`,
                 method: 'post',
                 data: value
             });
-        },
+        }
     };
 }
diff --git a/src/api/systemManage/menu/index.ts b/src/api/systemManage/menu/index.ts
index ddfda6c..85514f2 100644
--- a/src/api/systemManage/menu/index.ts
+++ b/src/api/systemManage/menu/index.ts
@@ -11,14 +11,14 @@
         // v2
         getMenuAdmin: (value?: string) => {
             return request({
-                url: `/auth/menu?projectId= ${value}`,
+                url: import.meta.env.VITE_API_URL + `/auth/menu?projectId= ${value}`,
                 method: 'post'
             });
         },
         // v1
         addMenu: (value?: object) => {
             return request({
-                url: `/menu/add`,
+                url: import.meta.env.VITE_API_URL + `/menu/add`,
                 method: 'post',
                 data: value
             });
@@ -26,7 +26,7 @@
         // v1
         modMenu: (value?: object) => {
             return request({
-                url: `/menu/mod`,
+                url: import.meta.env.VITE_API_URL + `/menu/mod`,
                 method: 'post',
                 data: value
             });
@@ -34,7 +34,7 @@
         // v1
         deleteMenu: (value?: object) => {
             return request({
-                url: `/menu/del`,
+                url: import.meta.env.VITE_API_URL + `/menu/del`,
                 method: 'post',
                 data: value
             });
@@ -42,7 +42,7 @@
         // v1
         getProjectList: () => {
             return request({
-                url: `/project/list`,
+                url: import.meta.env.VITE_API_URL + `/project/list`,
                 method: 'post'
             });
         }
diff --git a/src/api/systemManage/personShiftManage/holidayTime/index.ts b/src/api/systemManage/personShiftManage/holidayTime/index.ts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/holidayTime/index.ts
diff --git a/src/api/systemManage/personShiftManage/holidayTimeGroup/index.ts b/src/api/systemManage/personShiftManage/holidayTimeGroup/index.ts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/holidayTimeGroup/index.ts
diff --git a/src/api/systemManage/personShiftManage/teamManage/index.ts b/src/api/systemManage/personShiftManage/teamManage/index.ts
new file mode 100644
index 0000000..d378691
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/teamManage/index.ts
@@ -0,0 +1,94 @@
+import request from '/@/utils/request';
+
+export function teamManageApi() {
+    return {
+        //班组分页列表
+        getRecordPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/page/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //班组列表
+        getRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //班组-班组成员分页列表
+        getAllRecordPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/member/page/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //所有部门列表
+        getAllDepartment: () => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/department/list`,
+                method: 'post'
+            });
+        },
+
+        //用户-部门所有用户
+        getAllMember: (data: number) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/account/dep/list?depId=${data}`,
+                method: 'get',
+                data: data
+            });
+        },
+
+        // 班组-班组成员列表
+        getAllRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/member/list`,
+                method: 'get',
+                data: data
+            });
+        },
+
+        // 班组新增
+        addRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/add`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 班组修改
+        updateRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/mod`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 班组删除
+        deleteRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/group/del`,
+                method: 'post',
+                data: data
+            });
+        }
+
+        // 时间策略批量删除
+        // deletBatchRecord: (data: object)=>{
+        //     return request({
+        //         url: `/timeStrategy/deleteBatchTimeStrategy`,
+        //         method: 'post',
+        //         data: data
+        //     })
+        // },
+    };
+}
diff --git a/src/api/systemManage/personShiftManage/teamStrategy/index.ts b/src/api/systemManage/personShiftManage/teamStrategy/index.ts
new file mode 100644
index 0000000..1e9365f
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/teamStrategy/index.ts
@@ -0,0 +1,50 @@
+import request from '/@/utils/request';
+
+export function teamStrategyApi() {
+    return {
+        //获取班组策略分页列表
+        getRecordPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/page/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 班组策略新增
+        addRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/add`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 班组策略修改
+        updateRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/mod`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 班组策略删除
+        deleteRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/schedule/groupStrategy/del`,
+                method: 'post',
+                data: data
+            });
+        }
+
+        // 时间策略批量删除
+        // deletBatchRecord: (data: object)=>{
+        //     return request({
+        //         url: `/timeStrategy/deleteBatchTimeStrategy`,
+        //         method: 'post',
+        //         data: data
+        //     })
+        // },
+    };
+}
diff --git a/src/api/systemManage/personShiftManage/timeStrategy/index.ts b/src/api/systemManage/personShiftManage/timeStrategy/index.ts
new file mode 100644
index 0000000..e33a1cd
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/timeStrategy/index.ts
@@ -0,0 +1,83 @@
+import request from '/@/utils/request';
+
+export function timeStrategyApi() {
+    return {
+        //获取工作时间组列表
+        getWorkTimeList: () => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimeGroup`,
+                method: 'get'
+            });
+        },
+
+        //获取休息时间组列表
+        getRestTimeList: () => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/breakTime/getAllBreakTimeGroup`,
+                method: 'get'
+            });
+        },
+
+        //时间策略分页列表
+        getRecordPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getAllTimeStrategyByPage`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 时间策略全部列表
+        getAllRecord: () => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getAllTimeStrategy`,
+                method: 'get'
+            });
+        },
+
+        //根据id获取时间策略列表
+        getRecordById: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/getTimeStrategyById`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 时间策略新增
+        addRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/addTimeStrategy`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 时间策略修改
+        updateRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/updateTimeStrategy`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 时间策略删除
+        deleteRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/deleteTimeStrategy`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 时间策略批量删除
+        deletBatchRecord: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/timeStrategy/deleteBatchTimeStrategy`,
+                method: 'post',
+                data: data
+            });
+        }
+    };
+}
diff --git a/src/api/systemManage/personShiftManage/workingHours/index.ts b/src/api/systemManage/personShiftManage/workingHours/index.ts
new file mode 100644
index 0000000..590bbf5
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/workingHours/index.ts
@@ -0,0 +1,58 @@
+import request from '/@/utils/request';
+
+export function workingHoursApi() {
+    return {
+        // 获取工作时间段列表
+        getWorkTimePeriod: (value: { name: string }) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimePeriod`,
+                method: 'get'
+            });
+        },
+
+        //工作时间段分页列表
+        postPeriodPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimePeriodByPage?pageSiz`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 新增工作时间段
+        postWorkTimePeriod: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/addWorkTimePeriod`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 修改工作时间段
+        updateWorkTimePeriod: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/updateWorkTimePeriod`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 删除工作时间段
+        deletWorkTimePeriod: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/deletWorkTimePeriod`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 批量删除
+        deleteBatchWorkTimePeriod: (data: any) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/deleteBatchWorkTimePeriod`,
+                method: 'post',
+                data: data
+            });
+        }
+    };
+}
diff --git a/src/api/systemManage/personShiftManage/workingHoursSet/index.ts b/src/api/systemManage/personShiftManage/workingHoursSet/index.ts
new file mode 100644
index 0000000..564f5e4
--- /dev/null
+++ b/src/api/systemManage/personShiftManage/workingHoursSet/index.ts
@@ -0,0 +1,50 @@
+import request from '/@/utils/request';
+
+export function workingHoursSetApi() {
+    return {
+        //工作时间组分页列表
+        postWorkTimeGroupPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/getWorkTimeGroupByPage`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 工作时间组新增
+        addWorkTimeGroup: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/addWorkTimeGroup`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 工作时间组修改
+        updateWorkTimeGroup: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/updateWorkTimeGroup`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 工作时间组删除
+        deleteWorkTimeGroup: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/deleteWorkTimeGroup`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        // 工作时间组批量删除
+        deletBatchWorkTimeGroup: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/workTime/deletBatchWorkTimeGroup`,
+                method: 'post',
+                data: data
+            });
+        }
+    };
+}
diff --git a/src/api/systemManage/role/index.ts b/src/api/systemManage/role/index.ts
index 3b85d45..85b00cf 100644
--- a/src/api/systemManage/role/index.ts
+++ b/src/api/systemManage/role/index.ts
@@ -5,14 +5,14 @@
         // v2
         getRoleList: () => {
             return request({
-                url: `/role/list`,
+                url: import.meta.env.VITE_API_URL + `/role/list`,
                 method: 'post'
             });
         },
         // v2
         addRole: (data: object) => {
             return request({
-                url: `/role/add`,
+                url: import.meta.env.VITE_API_URL + `/role/add`,
                 method: 'post',
                 data: data
             });
@@ -20,7 +20,7 @@
         // v2
         modRole: (data: object) => {
             return request({
-                url: `/role/mod`,
+                url: import.meta.env.VITE_API_URL + `/role/mod`,
                 method: 'post',
                 data: data
             });
@@ -28,10 +28,10 @@
         // v2
         deleteRole: (value?: object) => {
             return request({
-                url: `/role/del`,
+                url: import.meta.env.VITE_API_URL + `/role/del`,
                 method: 'post',
                 data: value
             });
-        },
+        }
     };
 }
diff --git a/src/api/systemManage/user/index.ts b/src/api/systemManage/user/index.ts
index 1f8f991..c7d4261 100644
--- a/src/api/systemManage/user/index.ts
+++ b/src/api/systemManage/user/index.ts
@@ -5,7 +5,7 @@
         // v1
         getUserList: (data: any) => {
             return request({
-                url: `/account/page/list`,
+                url: import.meta.env.VITE_API_URL + `/account/page/list`,
                 method: 'post',
                 data: data
             });
@@ -13,7 +13,7 @@
         // v1
         addUser: (data: object) => {
             return request({
-                url: `/account/add`,
+                url: import.meta.env.VITE_API_URL + `/account/add`,
                 method: 'post',
                 data: data
             });
@@ -21,7 +21,7 @@
         // v1
         modUser: (data: object) => {
             return request({
-                url: `/account/mod`,
+                url: import.meta.env.VITE_API_URL + `/account/mod`,
                 method: 'post',
                 data: data
             });
@@ -29,7 +29,7 @@
         // v1
         getUserLByDepartment: (depId: number | null) => {
             return request({
-                url: `/account/dep/list?depId=${depId == null ? '' : depId}`,
+                url: import.meta.env.VITE_API_URL + `/account/dep/list?depId=${depId == null ? '' : depId}`,
                 method: 'get'
             });
         }
diff --git a/src/api/workInjuryDeclaration/index.ts b/src/api/workInjuryDeclaration/index.ts
new file mode 100644
index 0000000..e8edf72
--- /dev/null
+++ b/src/api/workInjuryDeclaration/index.ts
@@ -0,0 +1,123 @@
+import request from '/@/utils/request';
+
+export function accidentManagementSystemApi(){
+    return {
+        // 事故快报一览
+        accidentList:(params:object)=>{
+            return request({
+                url:"/accidentExpress/page/list",
+                method:"post",
+                data:params
+            })
+        },
+        // 事故快报新增
+        accidentAdd:(params:object)=>{
+            return request({
+                url:"/accidentExpress/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 事故快报详情
+        accidentScarh:(params:number)=>{
+            return request({
+                url:`/accidentExpress/info/${params}`,
+                method:"get",
+            })
+        },
+        // 事故快报修改
+        accidentView:(params:object)=>{
+            return request({
+                url:"/accidentExpress/update",
+                method:"post",
+                data:params
+            })
+        },
+        // 事故快报删除
+        accidentDele:(params:object)=>{
+            return request({
+                url:`/accidentExpress/batchDelete/${params}`,
+                method:"get",
+            })
+        },
+
+        // 事故报告一览
+        getAccidentReportList: (params: object) => {
+            return request({
+                url: '/accidentReport/page/list',
+                method: 'post',
+                data:params
+            })
+        },
+        // 事故报告新增
+        addAccidentReport: (params: object) => {
+            return request({
+                url: `/accidentReport/add`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 事故报告详情
+        seeAccidentReport: (params:number) => {
+            return request({
+                url: `/accidentReport/info/${params}`,
+                method: 'get'
+            });
+        },
+        // 事故报告编辑
+        editAccidentReport: (params: object) => {
+            return request({
+                url: `/accidentReport/update`,
+                method: 'post',
+                data: params
+            });
+        },
+        // 事故报告删除
+        deleteAccidentReport: (params:object) => {
+            return request({
+                url: `/accidentReport/batchDelete`,
+                method: 'post',
+                data:params
+            });
+        },
+
+        //  工伤申报一览
+        workList:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/page/list",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报新增
+        workAdd:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/add",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报详情
+        seeAccidentManagementSystem:(params:number)=>{
+            return request({
+                url:`workInjuryDeclaration/info/${params}`,
+                method:"get",
+            })
+        },
+        // 工伤申报修改
+        workView:(params:object)=>{
+            return request({
+                url:"/workInjuryDeclaration/update",
+                method:"post",
+                data:params
+            })
+        },
+        // 工伤申报删除/批量删除
+        workDelete:(params:object)=>{
+            return request({
+                url:`/workInjuryDeclaration/batchDelete/${params}`,
+                method:"get",
+            })
+        },
+    }
+}
\ No newline at end of file
diff --git a/src/assets/index.css b/src/assets/index.css
new file mode 100644
index 0000000..08d6baa
--- /dev/null
+++ b/src/assets/index.css
@@ -0,0 +1,10 @@
+.pot {
+	position: absolute;
+	top: 19px;
+	right: 40px;
+    border: none !important;
+    padding: 0;
+}
+.pot:focus,.pot:hover{
+  background-color: #fff !important;
+}
\ No newline at end of file
diff --git a/src/assets/index.ts b/src/assets/index.ts
new file mode 100644
index 0000000..de3e571
--- /dev/null
+++ b/src/assets/index.ts
@@ -0,0 +1,17 @@
+export function timeDate(row: any, column: any, cellValue: any, index: any) {
+    const daterc = row[column.property]
+    if (daterc != null) {
+        var date = new Date(daterc);
+        var year = date.getFullYear();
+        /* 在日期格式中,月份是从0开始,11结束,因此要加0
+         * 使用三元表达式在小于10的前面加0,以达到格式统一  如 09:11:05
+         * */
+        var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+        var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+        var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+        var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+        var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+        // 拼接
+        return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+    }
+}
\ No newline at end of file
diff --git a/src/components/DailogSearch/DailogSearch.vue b/src/components/DailogSearch/DailogSearch.vue
new file mode 100644
index 0000000..9a993bc
--- /dev/null
+++ b/src/components/DailogSearch/DailogSearch.vue
@@ -0,0 +1,193 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择安全目标指标" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="6">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.qName" placeholder="安全目标指标" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="6" :offset="1">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.indexNum" placeholder="目标指标编号" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="6" :offset="1">
+							<el-form-item>
+								<el-button type="primary" @click="listApi">查询</el-button>
+								<el-button @click="resetForm">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete" @click="clear">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px">
+					<el-table-column align="center">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="qName" label="安全目标指标" width="180" />
+					<el-table-column align="center" prop="indexNum" label="目标指标编号" width="180" />
+					<el-table-column align="center" prop="year" label="年度" />
+					<el-table-column align="center" prop="value" label="指标值" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+				<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.qName }}
+				</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 { Delete, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props,{emit}) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = (type:any) => {
+			dialogVisible.value = true;
+			ruleForm.searchParams.targetType=type
+			listApi();
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '', ////指标类型 1:年指标 2:月指标
+				divideStatus: '2', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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(() => {
+		});
+
+		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 dynamicTags = ref(['']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (data: any) => {
+			dynamicTags.value[0] = data;
+		};
+		const clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+		//全屏
+		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("backNum",obj[0])
+			dialogVisible.value = false
+		}
+		return {
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			tableData,
+			currentPage4,
+			total,
+			pageSize4,
+			resetForm,
+			listApi,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			radio1,
+			radio,
+			full,
+			toggleFullscreen,
+			Delete,
+			FullScreen,
+			clear,
+			submitForm
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/components/DailogSearchUser/index.vue b/src/components/DailogSearchUser/index.vue
new file mode 100644
index 0000000..e7f8eb1
--- /dev/null
+++ b/src/components/DailogSearchUser/index.vue
@@ -0,0 +1,237 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="用户选择" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="6">
+				<div class="userTree">
+					<el-input v-model="filterText" placeholder="请输入组织机构过滤"></el-input>
+					<div class="tree">
+						<el-tree ref="treeRef" :data="data" :props="propse" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+					</div>
+				</div>
+			</el-col>
+			<el-col :span="14" style="padding: 20px">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="10" :offset="1">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="登录名" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="8" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" >查询</el-button>
+								<el-button size="default">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px"  @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="55" v-if="types==0"/>
+					<el-table-column align="center"  v-if="types!=0">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.uid" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="realName" label="登录名" />
+					<el-table-column align="center" prop="username" label="用户名" />
+					<el-table-column align="center" prop="address" label="所属机构" />
+					<el-table-column align="center" prop="address" label="所属部门" />
+					<el-table-column align="center" prop="type" label="状态" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="4">
+			<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.realName }}
+				</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, ref, onMounted, reactive, watch } from 'vue';
+import { FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElTree, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	setup(props, { emit }) {
+		//部门树
+		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 filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+		const filterNode = (depName: string, data: Tree) => {
+			if (!depName) return true;
+			return data.depName.includes(depName);
+		};
+		onMounted(() => {
+			department();
+		});
+		//左边树形部分点击获取回调
+		const names = ref<any>();
+		const handleNodeClick = (data: Tree) => {
+			goalManagementApi()
+				.getManName(data.depId)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value=res.data.data
+						total.value=tableData.value.length
+					}else{
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+
+		const data = ref();
+		//中间表格
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref(1);
+		const pageSize4 = ref(10);
+		const total=ref()
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			pageSize4.value=val
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			currentPage4.value=val
+		};
+		// 右方点击添加后显示标签
+		const dynamicTags = ref(['']);
+		const handleClose = (tag: any) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (data: any) => {
+			dynamicTags.value[0] = data;
+		};
+		const handleSelectionChange = (val:any) => {
+             dynamicTags.value=val
+}
+		const types=ref()
+		// 开启弹窗
+		const dialogVisible = ref(false);
+		const openDailog = (type:any) => {
+			types.value=type
+			dialogVisible.value = true;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const submitForm = () => {
+			if(types.value==0){
+				emit('SearchUser', dynamicTags.value,types.value);
+			}else {
+				emit('SearchUser', dynamicTags.value[0],types.value);
+			}
+
+			dialogVisible.value = false;
+		};
+		return {
+			total,
+			types,
+			filterText,
+			treeRef,
+			filterNode,
+			propse,
+			dialogVisible,
+			names,
+			data,
+			handleNodeClick,
+			openDailog,
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			handleSelectionChange,
+			radio1,
+			dynamicTags,
+			handleClose,
+			FullScreen,
+			full,
+			toggleFullscreen,
+			radio,
+			submitForm,
+		};
+	},
+});
+</script>
+<style scoped>
+.userTree {
+	border: 1px solid #ebeef5;
+}
+.userTree .el-input {
+	padding: 10px;
+	border-bottom: 1px solid #ebeef5;
+}
+.tree {
+	height: 500px;
+	overflow: hidden;
+	overflow-y: auto;
+}
+</style>
diff --git a/src/components/DailogSearchUserManger/index.vue b/src/components/DailogSearchUserManger/index.vue
new file mode 100644
index 0000000..1632e6a
--- /dev/null
+++ b/src/components/DailogSearchUserManger/index.vue
@@ -0,0 +1,223 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="用户选择" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="6">
+				<div class="userTree">
+					<el-input v-model="filterText" placeholder="请输入组织机构过滤"></el-input>
+					<div class="tree">
+						<el-tree ref="treeRef" :data="data" :props="propse" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+					</div>
+				</div>
+			</el-col>
+			<el-col :span="14" style="padding: 20px">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="10" :offset="1">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="登录名" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="8" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" >查询</el-button>
+								<el-button size="default">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px" @cell-click="radio">
+					<el-table-column align="center">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.uid" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="realName" label="登录名" />
+					<el-table-column align="center" prop="username" label="用户名" />
+					<el-table-column align="center" prop="address" label="所属机构" />
+					<el-table-column align="center" prop="address" label="所属部门" />
+					<el-table-column align="center" prop="type" label="状态" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[100, 200, 300, 400]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="400"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</el-col>
+			<el-col :span="4">
+			<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.realName }}
+				</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, ref, onMounted, reactive, watch } from 'vue';
+import { FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElTree, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	setup(props, { emit }) {
+		//部门树
+		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 filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+		const filterNode = (depName: string, data: Tree) => {
+			if (!depName) return true;
+			return data.depName.includes(depName);
+		};
+		onMounted(() => {
+			department();
+		});
+		//左边树形部分点击获取回调
+		const names = ref<any>();
+		const handleNodeClick = (data: Tree) => {
+			goalManagementApi()
+				.getManName(data.depId)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value=res.data.data
+					}else{
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+
+		const data = ref();
+		//中间表格
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		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: any) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (event: any) => {
+			dynamicTags.value[0] = event;
+		};
+		const types=ref()
+		// 开启弹窗
+		const dialogVisible = ref(false);
+		const openDailog = (type:any) => {
+			console.log(type)
+			types.value=type
+			dialogVisible.value = true;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const submitForm = () => {
+			emit('SearchUser', dynamicTags.value);
+			dialogVisible.value = false;
+		};
+		return {
+			types,
+			filterText,
+			treeRef,
+			filterNode,
+			propse,
+			dialogVisible,
+			names,
+			data,
+			handleNodeClick,
+			openDailog,
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			radio1,
+			dynamicTags,
+			handleClose,
+			FullScreen,
+			full,
+			toggleFullscreen,
+			radio,
+			submitForm,
+		};
+	},
+});
+</script>
+<style scoped>
+.userTree {
+	border: 1px solid #ebeef5;
+}
+.userTree .el-input {
+	padding: 10px;
+	border-bottom: 1px solid #ebeef5;
+}
+.tree {
+	height: 500px;
+	overflow: hidden;
+	overflow-y: auto;
+}
+</style>
diff --git a/src/components/checkTemplate/index.vue b/src/components/checkTemplate/index.vue
new file mode 100644
index 0000000..15734ac
--- /dev/null
+++ b/src/components/checkTemplate/index.vue
@@ -0,0 +1,239 @@
+<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" status-icon>
+              <el-form-item>
+                <el-input size="default" v-model="listQuery.searchParams.id" placeholder="id"  style="max-width: 215px;"/>
+              </el-form-item>
+              <el-form-item>
+                <el-input size="default" v-model="listQuery.searchParams.teamName" placeholder="队伍名称"  style="max-width: 215px;padding: 0 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;" @click="submitReset">清除选择</el-button>
+          </el-col>
+        </el-row>
+        <el-table
+            :data="tableData"
+            ref="multipleTableRef"
+            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.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+              </el-radio-group>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="id" label="id" />
+          <el-table-column align="center" prop="teamName" label="队伍名称"/>
+        </el-table>
+        <div class="pages">
+          <el-pagination
+              v-model:currentPage="pageIndex"
+              v-model:page-size="pageSize"
+              :page-sizes="[10, 20, 30, 40]"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+          />
+        </div>
+      </el-col>
+      <el-col :span="6" style="padding-left: 15px">
+        <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.teamName }}
+          </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 {
+  Delete,
+  FullScreen
+} from '@element-plus/icons-vue';
+import {
+  ElMessage,
+} from 'element-plus';
+import {contingencyApi} from "/@/api/contingency";
+
+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: {
+        teamName: "",
+        id: "",
+      }
+    });
+    // 列表数据请求
+    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 submitForm = () => {
+      let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+      emit('SearchUser', obj[0]);
+      dialogVisible.value = false;
+    };
+    // 重置
+    const submitReset = () => {
+      listQuery.searchParams.teamName = '';
+      listQuery.searchParams.id = '';
+      radio1.value=""
+      dynamicTags.value[0]=""
+      onSubmit();
+    };
+    // 表格
+    const tableData = ref();
+    // 分页
+    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 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;
+    };
+    onMounted(() => {
+      onSubmit();
+    });
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      openDailog,
+      tableData,
+      pageSize,
+      pageIndex,
+      handleSizeChange,
+      handleCurrentChange,
+      dynamicTags,
+      handleClose,
+      Delete,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      onSubmit,
+      listQuery,
+      submitReset,
+      total,
+      radio,
+      radio1,
+      submitForm,
+
+    };
+  },
+});
+</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/emergencySupplies/index.vue b/src/components/emergencySupplies/index.vue
new file mode 100644
index 0000000..903a5fa
--- /dev/null
+++ b/src/components/emergencySupplies/index.vue
@@ -0,0 +1,215 @@
+<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-form ref="ruleFormRef" :model="ruleForm" :inline="true" 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-button size="default" :icon="Delete">清除选择</el-button>
+            </el-form-item>
+          </el-form>
+        </el-row>
+        <el-table :data="tableData" style="width: 100%;margin-top:20px">
+          <el-table-column width="55">
+            <template #default="scope">
+              <el-radio-group v-model="radio1">
+                <el-radio :label="scope.row" @click="radio(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="handleSizeChange"
+              @current-change="handleCurrentChange"
+          />
+        </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
+} from 'vue';
+import {
+  Delete,
+  FullScreen
+} from '@element-plus/icons-vue';
+import { ElMessage } from 'element-plus';
+import {emergencySuppliesApi} from "/@/api/emergencyResources";
+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: '',
+      }
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表请求数据
+    const onSubmit = async () => {
+      let res = await emergencySuppliesApi().getEmergencySuppliesList(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 = '';
+      onSubmit();
+    };
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+    };
+    const handleCurrentChange = (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;
+    };
+    return {
+      dialogVisible,
+      openDailog,
+      listQuery,
+      onSubmit,
+      tableData,
+      submitReset,
+      handleSizeChange,
+      handleCurrentChange,
+      dynamicTags,
+      handleClose,
+      Delete,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      pageIndex,
+      pageSize,
+      radio1,
+      radio,
+      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/equipmentDailog/Dailog.vue b/src/components/equipmentDailog/Dailog.vue
new file mode 100644
index 0000000..249d42e
--- /dev/null
+++ b/src/components/equipmentDailog/Dailog.vue
@@ -0,0 +1,1003 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" :before-close="resetForm" 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-input v-model="form.qName" placeholder="请填写装置设施名称" />
+			</el-form-item>
+			<el-form-item label="装置设施位号" size="default">
+				<el-input v-model="form.positionNum" placeholder="请填写装置设施位号" />
+			</el-form-item>
+			<el-form-item label="装置设施用途" size="default">
+				<el-input v-model="form.qUsage" placeholder="请填写装置设施用途" />
+			</el-form-item>
+			<el-form-item label="装置设施型号" size="default">
+				<el-input v-model="form.model" placeholder="请填写装置设施型号" />
+			</el-form-item>
+			<el-form-item label="类型/类别外键" size="default">
+				<el-input v-model="form.equipmentTypeId" placeholder="请选择">
+					<template #append>
+						<el-button :icon="Search" @click="opencategory"></el-button>
+					</template>
+				</el-input>
+			</el-form-item>
+			<!-- <el-form-item label="区域名称" size="default">
+				<el-input v-model="form.name" placeholder="请选择">
+					<template #append>
+						<el-button :icon="Search" @click="openRegion"></el-button>
+					</template>
+				</el-input>
+			</el-form-item> -->
+			<el-form-item label="单位部门" size="default">
+				<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-input v-model="form.setPart" placeholder="请填写设置部位" />
+			</el-form-item>
+			<el-form-item label="生产日期" size="default">
+				<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-input v-model="form.useEndDay" placeholder="请填写使用期限" />
+			</el-form-item>
+			<el-form-item label="生命周期" size="default">
+				<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-select>
+			</el-form-item>
+			<el-form-item label="投用日期" size="default">
+				<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-select v-model="form.repairStatus" placeholder="请选择" style="width: 100%">
+					<el-option label="维修中" value="1" />
+					<el-option label="已修好" value="2" />
+				</el-select>
+			</el-form-item>
+			<el-form-item label="停用状态" size="default">
+				<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-select>
+			</el-form-item>
+			<el-form-item label="上次检查日期" size="default">
+				<el-date-picker
+					v-model="form.previousCheckDate"
+					format="YYYY-MM-DD HH:mm:ss"
+					type="datetime"
+					placeholder="选择日期时间"
+					style="width: 100%"
+				/>
+			</el-form-item>
+			<el-form-item label="上次检测日期" size="default">
+				<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-date-picker
+					v-model="form.previousTakecareDate"
+					format="YYYY-MM-DD HH:mm:ss"
+					type="datetime"
+					placeholder="选择日期时间"
+					style="width: 100%"
+				/>
+			</el-form-item>
+			<el-form-item label="下次检查日期" size="default">
+				<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-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-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="请选择">
+					<template #append>
+						<el-button :icon="Search" @click="openUser(0)"></el-button>
+					</template>
+				</el-input>
+			</el-form-item>
+			<el-form-item label="负责人部门" size="default">
+				<el-tree-select
+					v-model="form.leadingPersonDepartmentId"
+					:data="data"
+					check-strictly="true"
+					class="w100"
+					:props="propse"
+					placeholder="请选择"
+				/>
+			</el-form-item>
+			<el-form-item label="供应商" size="default">
+				<el-input v-model="form.supplyName" placeholder="请填写供应商" />
+			</el-form-item>
+			<el-form-item label="使用说明" size="default">
+				<el-input v-model="form.useMemo" placeholder="请填写使用说明" />
+			</el-form-item>
+			<el-form-item label="是否检查" size="default">
+				<el-select v-model="form.isNeedCheck" placeholder="请选择" style="width: 100%">
+					<el-option label="是" value="1" />
+					<el-option label="否" value="2" />
+				</el-select>
+			</el-form-item>
+			<el-form-item label="检查周期" size="default">
+				<el-input v-model="form.checkCycle" placeholder="请填写检查周期" />
+			</el-form-item>
+			<el-form-item label="检查提前提醒" size="default">
+				<el-input v-model="form.checkWarn" placeholder="请填写检查提前提醒" />
+			</el-form-item>
+			<el-form-item label="是否检测" size="default">
+				<el-select v-model="form.isNeedTest" placeholder="请选择" style="width: 100%">
+					<el-option label="是" value="1" />
+					<el-option label="否" value="2" />
+				</el-select>
+			</el-form-item>
+			<el-form-item label="检测周期" size="default">
+				<el-input v-model="form.testCycle" placeholder="请填写检测周期" />
+			</el-form-item>
+			<el-form-item label="检测提前提醒" size="default">
+				<el-input v-model="form.testWarn" placeholder="请填写检测提前提醒" />
+			</el-form-item>
+			<el-form-item label="是否保养" size="default">
+				<el-select v-model="form.isNeedTakecare" placeholder="请选择" style="width: 100%">
+					<el-option label="是" value="1" />
+					<el-option label="否" value="2" />
+				</el-select>
+			</el-form-item>
+			<el-form-item label="检查内容" size="default">
+				<el-input v-model="form.checkContent" placeholder="请填写检查内容" />
+			</el-form-item>
+			<el-form-item label="负责部门" size="default">
+				<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-input v-model="form.checkPoint" placeholder="请填写检查指标" />
+			</el-form-item>
+			<el-form-item label="预警值" size="default">
+				<el-input v-model="form.alertNum" placeholder="请填写预警值" />
+			</el-form-item>
+			<el-form-item label="联锁值" size="default">
+				<el-input v-model="form.lockNum" placeholder="请填写联锁值" />
+			</el-form-item>
+			<el-form-item label="停用理由" size="default">
+				<el-input v-model="form.stopReason" placeholder="请填写停用理由" />
+			</el-form-item>
+			<el-form-item label="停用后措施" size="default">
+				<el-input v-model="form.afterStopStep" placeholder="请填写停用后措施" />
+			</el-form-item>
+			<el-form-item label="实际停用日期" size="default">
+				<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="请选择">
+					<template #append>
+						<el-button :icon="Search" @click="openUser(1)"></el-button>
+					</template>
+				</el-input>
+			</el-form-item>
+			<el-form-item label="停用提交日期" size="default">
+				<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-input v-model="form.recoveryReason" placeholder="请填写恢复理由" />
+			</el-form-item>
+			<el-form-item label="恢复填报日期" size="default">
+				<el-date-picker
+					v-model="form.recoverySubmitDate"
+					format="YYYY-MM-DD HH:mm:ss"
+					type="datetime"
+					placeholder="选择日期时间"
+					style="width: 100%"
+				/>
+			</el-form-item>
+			<el-form-item label="实际恢复日期" size="default">
+				<el-date-picker
+					v-model="form.actualRecoveryDate"
+					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.destoryReason" placeholder="请填写报废理由" />
+			</el-form-item>
+			<el-form-item label="报废填报日期" size="default">
+				<el-date-picker
+					v-model="form.destorySubmitDate"
+					format="YYYY-MM-DD HH:mm:ss"
+					type="datetime"
+					placeholder="选择日期时间"
+					style="width: 100%"
+				/>
+			</el-form-item>
+			<el-form-item label="实际报废日期" size="default">
+				<el-date-picker
+					v-model="form.actualDestoryDate"
+					format="YYYY-MM-DD HH:mm:ss"
+					type="datetime"
+					placeholder="选择日期时间"
+					style="width: 100%"
+				/>
+			</el-form-item>
+		</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-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="takecareDate" :formatter="timeDate" label="保养日期" />
+					<el-table-column align="center" prop="leadingPersonDepartmentId" label="保养负责人单位" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="设备检测" name="second">
+				<el-button type="primary" size="default" @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="检测日期" />
+					<el-table-column align="center" prop="testPersonDepartmentId" label="检测人单位" />
+					<el-table-column align="center" prop="testMemo" label="检测内容" />
+					<el-table-column align="center" prop="testResult" label="检测结果" />
+					<el-table-column align="center" prop="testStatus" label="检测状态" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="设备维修" name="third">
+				<el-button type="primary" size="default" @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="维修状态" />
+					<el-table-column align="center" prop="repairMemo" label="维修情况" />
+					<el-table-column align="center" prop="repairPersonId" label="维修负责人" />
+					<el-table-column align="center" prop="repairPersonDepartmentId" label="维修负责人单位" />
+					<el-table-column align="center" prop="repairStartDate" :formatter="timeDate" label="维修开始日期" />
+					<el-table-column align="center" prop="repairEndDate" :formatter="timeDate" label="维修结束日期" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<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" prop="indexNum" label="序号" width="75" />
+					<el-table-column align="center" prop="checkContent" label="检查内容" />
+					<el-table-column align="center" prop="checkTarget" label="检查指标" />
+					<el-table-column align="center" prop="unit" label="单位" />
+					<el-table-column align="center" prop="checkPart" label="巡检部位" />
+					<el-table-column align="center" prop="rate" label="频次" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="巡检记录" size="default" name="five">
+				<el-table :data="name" style="width: 100%">
+					<el-table-column align="center" type="selection" width="75" />
+					<el-table-column align="center" sortable prop="name" label="任务编号" />
+					<el-table-column align="center" sortable prop="address" label="任务名称" />
+					<el-table-column align="center" sortable prop="address" label="点位类型" />
+					<el-table-column align="center" sortable prop="address" label="检查频次" />
+					<el-table-column align="center" sortable prop="address" :formatter="timeDate" label="巡检时间" />
+					<el-table-column align="center" sortable prop="address" label="巡检人" />
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="保养维修标准" name="six" v-if="Dailogtype">
+				<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 type="primary">点击上传</el-button>
+					<template #tip>
+						<div class="el-upload__tip"></div>
+					</template>
+				</el-upload>
+			</el-tab-pane>
+		</el-tabs>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm">关闭</el-button>
+				<el-button type="primary" @click="submitForm">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<categoryDailog ref="categoryShow"></categoryDailog>
+	<regionDailog ref="regionShow"></regionDailog>
+	<DailogSearchUser ref="UserShow" @SearchUser="userId"></DailogSearchUser>
+	<maintenanceDailog ref="maintenanceShow" @onMain="main"></maintenanceDailog>
+	<detectDailog ref="detectShow" @onDelect="delect"></detectDailog>
+	<repairDailog ref="repairShow" @onRepair="Repair"></repairDailog>
+	<standardDailog ref="standardShow" @onStand="Stand"></standardDailog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import categoryDailog from './categoryDailog.vue';
+import regionDailog from './regionDailog.vue';
+import maintenanceDailog from './maintenanceDailog.vue';
+import detectDailog from './detectDailog.vue';
+import repairDailog from './repairDailog.vue';
+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 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 form = ref({
+			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 titles = ref();
+		const disabled = ref(false);
+		const Dailogtype = ref(false);
+		const openDailog = (title: string, type: boolean, id: number, num: any) => {
+			dialogVisible.value = true;
+			department();
+			Dailogtype.value = type;
+			if (num == 0) {
+				titles.value = `${title}仪表信息`;
+				form.value.infoType = num;
+			} else if (num == 1) {
+				titles.value = `${title}设备设施`;
+				form.value.infoType = num;
+			} else if (num == 2) {
+				titles.value = `${title}设备设施`;
+				form.value.infoType = num;
+			}
+
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				facilityManagementApi()
+					.getequipmentInfoDetail(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()
+				.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);
+					}
+				});
+			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 resetForm = () => {
+			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>();
+		const categoryShow = ref();
+		const opencategory = () => {
+			categoryShow.value.openDailog();
+		};
+		const regionShow = ref();
+		const openRegion = () => {
+			regionShow.value.openDailog();
+		};
+		const UserShow = ref();
+		const openUser = (type: any) => {
+			UserShow.value.openDailog(type);
+		};
+		const maintenanceShow = ref();
+		const openMaintenance = (title: string, data: any) => {
+			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);
+			detectShow.value.openDailog(title, data);
+		};
+		const repairShow = ref();
+		const openRepair = (title: string, data: any) => {
+			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);
+			standardShow.value.openDailog(title, data);
+		};
+		// 上传
+		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 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 userId = (val: any, type: number) => {
+			console.log(val, type);
+			if (type == 0) {
+				form.value.leadingPersonId = val.uid;
+			} else if (type == 1) {
+				form.value.stopSubmitPersonId = val.uid;
+			}
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				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 {
+			userId,
+			department,
+			propse,
+			data,
+			deleteAId,
+			deleteBId,
+			deleteCId,
+			deleteDId,
+			deleteA,
+			deleteB,
+			deleteC,
+			deleteD,
+			main,
+			index,
+			delect,
+			Repair,
+			Stand,
+			resetForm,
+			submitForm,
+			titles,
+			dialogVisible,
+			disabled,
+			Dailogtype,
+			form,
+			openDailog,
+			Search,
+			activeName,
+			categoryShow,
+			opencategory,
+			regionShow,
+			openRegion,
+			UserShow,
+			openUser,
+			maintenanceShow,
+			openMaintenance,
+			detectShow,
+			openDetect,
+			repairShow,
+			openRepair,
+			standardShow,
+			openStandard,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+			beforeRemove,
+			full,
+			toggleFullscreen,
+			FullScreen,
+      timeDate,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-form-item {
+	width: 400px;
+}
+.formType:after {
+	content: '';
+	width: 400px;
+}
+.formType {
+	padding: 20px 20px;
+	display: flex;
+	justify-content: space-between;
+	flex-wrap: wrap;
+}
+.el-form .el-form-item:last-of-type {
+	margin-bottom: 22px !important;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/equipmentDailog/DailogS.vue b/src/components/equipmentDailog/DailogS.vue
new file mode 100644
index 0000000..ff4fe8f
--- /dev/null
+++ b/src/components/equipmentDailog/DailogS.vue
@@ -0,0 +1,661 @@
+<template>
+	<el-dialog :fullscreen="full" v-model="dialogVisible" draggable :title="titles" width="60%">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="130px" :disabled="disabled">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="类型/类别外键" size="default">
+						<el-input v-model="form.equipmentTypeId" placeholder="请选择">
+							<template #append>
+								<el-button :icon="Search" @click="opencategory"></el-button>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="装置/部位名称" size="default">
+						<el-input v-model="form.name" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="所属部门" size="default">
+						<el-tree-select v-model="form.departmentId" :data="data" check-strictly="true" placeholder="请选择" :props="propse" style="width: 100%">
+						</el-tree-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="具体位置" size="default">
+						<el-input v-model="form.position" placeholder="请填写具体位置" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="负责人姓名" size="default">
+						<el-input v-model="form.leadingPersonName" placeholder="请填写负责人姓名" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="联系人" size="default">
+						<el-input v-model="form.connectPersonId" placeholder="请选择">
+							<template #append>
+								<el-button :icon="Search" @click="openUser(0)"></el-button>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="录入人" size="default">
+						<el-input v-model="form.inputPersonId" placeholder="请选择">
+							<template #append>
+								<el-button :icon="Search" @click="openUser(1)"></el-button>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="责任人" size="default">
+						<el-input v-model="form.responsibilityPersonId" placeholder="请选择">
+							<template #append>
+								<el-button :icon="Search" @click="openUser(2)"></el-button>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="装置部位分类" size="default">
+						<el-select v-model="form.partType" placeholder="请选择" style="width: 100%">
+							<el-option label="关键装置" value="关键装置" />
+							<el-option label="重点部位" value="重点部位" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="检查周期" size="default">
+						<el-input v-model="form.checkCycle" placeholder="请选择检查周期" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="相关应急预案" size="default">
+						<el-input v-model="form.emergencePlanId" placeholder="请选择">
+							<template #append>
+								<el-button :icon="Search" @click="openPlan"></el-button>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="主要危险有害因素" size="default">
+						<el-input v-model="form.dangerousElement" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="易导致风险" size="default">
+						<el-input v-model="form.toDangerous" placeholder="请选择易导致风险" />
+					</el-form-item>
+				</el-col>
+
+				<el-col :span="11" :offset="2">
+					<el-form-item label="应急处置措施" size="default">
+						<el-input v-model="form.treatment" placeholder="请选择应急处置措施" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="现场图片">
+						<el-upload
+							v-model="form.scenePic"
+							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-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="备注信息" size="default"> <el-input v-model="form.name" placeholder="请选择应急处置措施" /> </el-form-item>
+				</el-col>
+			</el-row>
+		</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-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="takecareDate" :formatter="timeDate" label="保养日期" />
+					<el-table-column align="center" prop="leadingPersonDepartmentId" label="保养负责人单位" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="设备检测" name="second">
+				<el-button type="primary" size="default" @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="检测日期" />
+					<el-table-column align="center" prop="testPersonDepartmentId" label="检测人单位" />
+					<el-table-column align="center" prop="testMemo" label="检测内容" />
+					<el-table-column align="center" prop="testResult" label="检测结果" />
+					<el-table-column align="center" prop="testStatus" label="检测状态" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="设备维修" name="third">
+				<el-button type="primary" size="default" @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="维修状态" />
+					<el-table-column align="center" prop="repairMemo" label="维修情况" />
+					<el-table-column align="center" prop="repairPersonId" label="维修负责人" />
+					<el-table-column align="center" prop="repairPersonDepartmentId" label="维修负责人单位" />
+					<el-table-column align="center" prop="repairStartDate" :formatter="timeDate" label="维修开始日期" />
+					<el-table-column align="center" prop="repairEndDate" :formatter="timeDate" label="维修结束日期" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<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" />
+					<el-table-column align="center" prop="checkContent" label="检查内容" />
+					<el-table-column align="center" prop="checkTarget" label="检查指标" />
+					<el-table-column align="center" prop="unit" label="单位" />
+					<el-table-column align="center" prop="checkPart" label="巡检部位" />
+					<el-table-column align="center" prop="rate" label="频次" />
+					<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>
+						</template>
+					</el-table-column>
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="巡检记录" name="five">
+				<el-table :data="name" style="width: 100%">
+					<el-table-column align="center" type="selection" width="75" />
+					<el-table-column align="center" sortable prop="name" label="任务编号" />
+					<el-table-column align="center" sortable prop="address" label="任务名称" />
+					<el-table-column align="center" sortable prop="address" label="点位类型" />
+					<el-table-column align="center" sortable prop="address" label="检查频次" />
+					<el-table-column align="center" sortable prop="address" :formatter="timeDate" label="巡检时间" />
+					<el-table-column align="center" sortable prop="address" label="巡检人" />
+				</el-table>
+			</el-tab-pane>
+			<el-tab-pane label="保养维修标准" name="six" v-if="Dailogtype">
+				<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 type="primary">点击上传</el-button>
+					<template #tip>
+						<div class="el-upload__tip"></div>
+					</template>
+				</el-upload>
+			</el-tab-pane>
+		</el-tabs>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm">关闭</el-button>
+				<el-button type="primary" @click="submitForm">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<categoryDailog ref="categoryShow"></categoryDailog>
+	<RegionsDialog ref="planShow" @SearchUser="onUser"></RegionsDialog>
+	<DailogSearchUser ref="UserShow" @SearchUser="userId"></DailogSearchUser>
+	<maintenanceDailog ref="maintenanceShow" @onMain="main"></maintenanceDailog>
+	<detectDailog ref="detectShow" @onDelect="delect"></detectDailog>
+	<repairDailog ref="repairShow" @onRepair="Repair"></repairDailog>
+	<standardDailog ref="standardShow" @onStand="Stand"></standardDailog>
+</template>
+<script lang="ts">
+import { defineComponent, ref } from 'vue';
+import { Search, Plus, FullScreen } from '@element-plus/icons-vue';
+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';
+import detectDailog from './detectDailog.vue';
+import repairDailog from './repairDailog.vue';
+import standardDailog from './standardDailog.vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import {goalManagementApi} from "/@/api/goalManagement";
+export default defineComponent({
+	components: { categoryDailog, RegionsDialog, DailogSearchUser, maintenanceDailog, detectDailog, repairDailog, standardDailog },
+	setup(props, { emit }) {
+		const dialogVisible = ref(false);
+		const form = ref({
+			equipmentTypeId: '',
+
+			treatment: '',
+
+			inputPersonId: '',
+
+			departmentId: '',
+
+			delRepaireDetailList: [],
+
+			delTestDetailList: [],
+
+			takecareDetailList: [],
+      checkDetailList: [],
+
+      responsibilityPersonId: '',
+
+      delTakecareStardardeDetailList: [],
+
+      connectPersonId: '',
+
+      scenePic: '',
+
+      partType: '',
+
+      toDangerous: '',
+
+      dangerousElement: '',
+
+      takecareStardardeDetailList: [
+				{
+					filePath: '',
+				},
+			],
+      testDetailList: [],
+      checkCycle: '',
+      repaireDetailList: [],
+      delCheckStandardeDetailList: [],
+
+      leadingPersonName: '',
+
+      name: '',
+
+			delTakecareDetailList: [],
+
+      position: '',
+
+      emergencePlanId: '',
+
+      checkStandardeDetailList: [],
+      infoTpe: '',
+      delCheckStandardeDetails: '',
+
+      delTakecareStardardeDetails: '',
+
+      delTakecareDetails: '',
+
+      delRepaireDetails: '',
+
+      delTestDetails: '',
+		});
+    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();
+			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;
+      }
+
+      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 activeName = ref('first');
+    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 UserShow = ref();
+		const openUser = (type: any) => {
+			UserShow.value.openDailog(type);
+		};
+		const maintenanceShow = ref();
+		const openMaintenance = (title: string, data: any) => {
+      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);
+			detectShow.value.openDailog(title, data);
+		};
+		const repairShow = ref();
+		const openRepair = (title: string, data: any) => {
+      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);
+			standardShow.value.openDailog(title, data);
+		};
+		// 上传
+		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 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('');
+
+		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 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 full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+      propse,
+      data,
+			submitForm,
+			dialogVisible,
+			Dailogtype,
+			form,
+			openDailog,
+			Search,
+      main,
+      delect,
+      Repair,
+      Stand,
+      index,
+			activeName,
+			categoryShow,
+			opencategory,
+			planShow,
+      onUser,
+			openPlan,
+			UserShow,
+			openUser,
+			maintenanceShow,
+			openMaintenance,
+			detectShow,
+			openDetect,
+			repairShow,
+			openRepair,
+			standardShow,
+      userId,
+			openStandard,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+      disabled,
+      titles,
+			beforeRemove,
+			imageUrl,
+			handleAvatarSuccess,
+			beforeAvatarUpload,
+			Plus,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			resetForm,
+      deleteAId,
+      deleteBId,
+      deleteCId,
+      deleteDId,
+      deleteA,
+      deleteB,
+      deleteC,
+      deleteD,
+      timeDate,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+.avatar-uploader .avatar {
+	width: 178px;
+	height: 178px;
+	display: block;
+}
+</style>
+<style>
+.avatar-uploader .el-upload {
+	border: 1px dashed var(--el-border-color);
+	border-radius: 6px;
+	cursor: pointer;
+	position: relative;
+	overflow: hidden;
+	transition: var(--el-transition-duration-fast);
+}
+
+.avatar-uploader .el-upload:hover {
+	border-color: var(--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/equipmentDailog/categoryDailog.vue b/src/components/equipmentDailog/categoryDailog.vue
new file mode 100644
index 0000000..4338c2d
--- /dev/null
+++ b/src/components/equipmentDailog/categoryDailog.vue
@@ -0,0 +1,161 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择类型/类别外键" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="类别名称" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+							<el-form-item>
+								<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+							</el-form-item>
+						</el-col> -->
+						<el-col :span="11" :offset="1">
+							<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-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px">
+					<el-table-column align="center">
+						<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 align="center" prop="date" label="id" />
+					<el-table-column align="center" prop="name" label="类别名称" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+				<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({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		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(['2016-05-03']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('2016-05-03');
+		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,
+			radio1,
+			radio,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/components/equipmentDailog/detectDailog.vue b/src/components/equipmentDailog/detectDailog.vue
new file mode 100644
index 0000000..96a8f76
--- /dev/null
+++ b/src/components/equipmentDailog/detectDailog.vue
@@ -0,0 +1,155 @@
+<template>
+	<el-dialog v-model="dialogVisible" :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">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="检测日期" size="default">
+						<el-date-picker v-model="form.testDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<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-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="检测内容" size="default">
+						<el-input v-model="form.testMemo" placeholder="请填写检测内容" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="检测结果" size="default">
+						<el-select v-model="form.testResult" 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">
+						<el-input v-model="form.testStatus" placeholder="请填写检测状态" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<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>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="User"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const form = ref({
+			testPersonId: '',
+			testDate: '',
+			testPersonDepartmentId: '',
+			testMemo: '',
+			testResult: '',
+			testStatus: '',
+		});
+		// 开启弹窗
+		const titles = ref();
+		const disabled = ref(false);
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			dialogVisible.value = true;
+			titles.value = `${title}设备检测`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if(title == '修改'){
+				disabled.value = false;
+				form.value = data;
+			}
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		const User = (val: any) => {
+			form.value.testPersonId = val.uid;
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onDelect', form.value);
+			form.value = {
+				testPersonId: '',
+				testDate: '',
+				testPersonDepartmentId: '',
+				testMemo: '',
+				testResult: '',
+				testStatus: '',
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				testPersonId: '',
+				testDate: '',
+				testPersonDepartmentId: '',
+				testMemo: '',
+				testResult: '',
+				testStatus: '',
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			titles,
+			User,
+			disabled,
+			dialogVisible,
+			openDailog,
+			submitForm,
+			resetForm,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/components/equipmentDailog/maintenanceDailog.vue b/src/components/equipmentDailog/maintenanceDailog.vue
new file mode 100644
index 0000000..2b92a9a
--- /dev/null
+++ b/src/components/equipmentDailog/maintenanceDailog.vue
@@ -0,0 +1,134 @@
+<template>
+	<el-dialog :fullscreen="full" v-model="dialogVisible" :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.takecareMemo" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="保养负责人" size="default">
+						<el-input v-model="form.leadingPersonId">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="保养日期" size="default">
+						<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>
+				</el-col>
+			</el-row>
+		</el-form>
+		<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>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="User"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const form = ref({
+			takecareMemo: '',
+			leadingPersonId: '',
+			takecareDate: '',
+			leadingPersonDepartmentId: '',
+		});
+		// 开启弹窗
+    const titles=ref()
+		const disabled=ref(false)
+		const dialogVisible = ref(false);
+		const openDailog = (title:string,data:any) => {
+			dialogVisible.value = true;
+			titles.value=`${title}仪器仪表`
+			if(title=='查看'){
+				disabled.value=true
+				form.value=data
+			}else if(title == '修改'){
+				disabled.value=false
+				form.value=data
+			}
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		const User = (val: any) => {
+			form.value.leadingPersonId = val.uid;
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onMain', form.value);
+			form.value = {
+				takecareMemo: '',
+				leadingPersonId: '',
+				takecareDate: '',
+				leadingPersonDepartmentId: '',
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+				form.value = {
+				takecareMemo: '',
+				leadingPersonId: '',
+				takecareDate: '',
+				leadingPersonDepartmentId: '',
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			disabled,
+			titles,
+			submitForm,
+			resetForm,
+			form,
+			User,
+			dialogVisible,
+			openDailog,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/components/equipmentDailog/planDailog.vue b/src/components/equipmentDailog/planDailog.vue
new file mode 100644
index 0000000..d79f2d7
--- /dev/null
+++ b/src/components/equipmentDailog/planDailog.vue
@@ -0,0 +1,156 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择所属重大危险源单元" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="预案名称" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" :offset="1">
+							<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-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px">
+					<el-table-column align="center" width="80">
+						<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 align="center" prop="date" label="id"/> -->
+					<el-table-column align="center" prop="name" label="预案名称" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+				<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({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		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(['2016-05-03']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('2016-05-03');
+		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,
+			radio1,
+			radio,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/equipmentDailog/regionDailog.vue b/src/components/equipmentDailog/regionDailog.vue
new file mode 100644
index 0000000..66c37a4
--- /dev/null
+++ b/src/components/equipmentDailog/regionDailog.vue
@@ -0,0 +1,156 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择区域名称" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="风险区域名称" />
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" :offset="1">
+							<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-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px">
+					<el-table-column align="center" width="80">
+						<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 align="center" prop="date" label="id"/> -->
+					<el-table-column align="center" prop="name" label="风险区域名称" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+				<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({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		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(['2016-05-03']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('2016-05-03');
+		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,
+			radio1,
+			radio,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/equipmentDailog/repairDailog.vue b/src/components/equipmentDailog/repairDailog.vue
new file mode 100644
index 0000000..bb40c91
--- /dev/null
+++ b/src/components/equipmentDailog/repairDailog.vue
@@ -0,0 +1,165 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" :before-close="resetForm" :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.exceptionInfo" placeholder="请填写设施异常项" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="维修状态" size="default">
+						<el-select v-model="form.repairStatus" placeholder="请选择" style="width: 100%">
+							<el-option label="维修中" value="1" />
+							<el-option label="已修好" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="维修情况" size="default">
+						<el-input v-model="form.repairMemo" placeholder="请填写维修情况" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="维修负责人" size="default">
+						<el-input v-model="form.repairPersonId" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<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-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="维修开始日期" size="default">
+						<el-date-picker v-model="form.repairStartDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="维修结束日期" size="default">
+						<el-date-picker v-model="form.repairEndDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<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>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="User"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const form = ref({
+			exceptionInfo: '',
+			repairStatus: '',
+			repairMemo: '',
+			repairPersonId: '',
+			repairPersonDepartmentId: "",
+			repairStartDate: '',
+			repairEndDate: '',
+		});
+		// 开启弹窗
+		const titles = ref();
+		const disabled = ref(false);
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			dialogVisible.value = true;
+			titles.value = `${title}设备维修`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if(title == '修改') {
+				disabled.value = false;
+				form.value = data;
+			}
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		const User = (val: any) => {
+			form.value.repairPersonId = val.uid;
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onRepair', form.value);
+			form.value = {
+				exceptionInfo: '',
+				repairStatus: '',
+				repairMemo: '',
+				repairPersonId: '',
+				repairPersonDepartmentId: "",
+				repairStartDate: '',
+				repairEndDate: '',
+			};
+		};
+		//  取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				exceptionInfo: '',
+				repairStatus: '',
+				repairMemo: '',
+				repairPersonId: '',
+				repairPersonDepartmentId: "",
+				repairStartDate: '',
+				repairEndDate: '',
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			titles,
+			disabled,
+			dialogVisible,
+			openDailog,
+			Show,
+			User,
+			openUser,
+			submitForm,
+			resetForm,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/equipmentDailog/standardDailog.vue b/src/components/equipmentDailog/standardDailog.vue
new file mode 100644
index 0000000..85febd2
--- /dev/null
+++ b/src/components/equipmentDailog/standardDailog.vue
@@ -0,0 +1,143 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" :before-close="resetForm" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small"  class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px" :disabled="disabled">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="序号" size="default">
+						<el-input v-model="form.indexNum" placeholder="请填写序号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2" size="default">
+					<el-form-item label="检查内容">
+						<el-input v-model="form.checkContent" placeholder="请填写检查内容" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="检查指标" size="default">
+						<el-input v-model="form.checkTarget" placeholder="请填写检查指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="单位" size="default">
+						<el-input v-model="form.unit" placeholder="请填写单位" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="巡检部位" size="default">
+						<el-input v-model="form.checkPart" placeholder="请填写巡检部位" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="频次" size="default">
+						<el-input v-model="form.rate" placeholder="请填写频次" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<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>
+			</span>
+		</template>
+	</el-dialog>
+	<!-- <DailogSearchUser ref="Show"></DailogSearchUser> -->
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const form = ref({
+			indexNum: '',
+			checkContent: '',
+			checkTarget: '',
+			unit: '',
+			checkPart: "",
+			rate: '',
+		});
+		// 开启弹窗
+		const titles = ref();
+		const disabled = ref(false);
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			dialogVisible.value = true;
+			titles.value = `${title}检查标准设置`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if(title=='修改'){
+				disabled.value = false;
+				form.value = data;
+			}
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onStand', form.value);
+			form.value = {
+				indexNum: '',
+				checkContent: '',
+				checkTarget: '',
+				unit: '',
+				checkPart: "",
+				rate: '',
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				indexNum: '',
+				checkContent: '',
+				checkTarget: '',
+				unit: '',
+				checkPart: "",
+				rate: '',
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			titles,
+			disabled,
+			dialogVisible,
+			openDailog,
+			submitForm,
+			resetForm,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/components/regionsDialog/index.vue b/src/components/regionsDialog/index.vue
new file mode 100644
index 0000000..8ecb8ab
--- /dev/null
+++ b/src/components/regionsDialog/index.vue
@@ -0,0 +1,129 @@
+<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 type="selection" width="55" />
+			<el-table-column align="center" prop="name" label="风险区域名称"/>
+		</el-table>
+		<el-pagination
+            style="padding:20px 0;"
+			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"
+		/>
+		</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 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);
+		};
+    //全屏
+    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,
+      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/updata/updata.vue b/src/components/updata/updata.vue
new file mode 100644
index 0000000..5031621
--- /dev/null
+++ b/src/components/updata/updata.vue
@@ -0,0 +1,89 @@
+<template>
+	<el-dialog v-model="dialogVisible" title="导入Excel" width="50%" :fullscreen="full" draggable>
+		<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>下载模板</el-button>
+			<el-button 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, toRefs, reactive, defineComponent, computed } 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,
+      full,
+      toggleFullscreen,
+      FullScreen
+		};
+	},
+});
+</script>
+<style scoped>
+</style>
\ No newline at end of file
diff --git a/src/components/uploaderImg/index.vue b/src/components/uploaderImg/index.vue
new file mode 100644
index 0000000..b769025
--- /dev/null
+++ b/src/components/uploaderImg/index.vue
@@ -0,0 +1,65 @@
+<template>
+	<el-upload
+			v-model:file-list="fileList"
+			action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+			list-type="picture-card"
+			:on-preview="handlePictureCardPreview"
+			:on-remove="handleRemove"
+			:on-success="successFile"
+			:on-error="errorFile"
+	>
+		<el-icon><Plus /></el-icon>
+	</el-upload>
+
+	<el-dialog v-model="dialogVisible">
+		<img w-full :src="dialogImageUrl" alt="Preview Image" />
+	</el-dialog>
+</template>
+<script lang="ts">
+	import { ref,defineComponent } from 'vue'
+	import { Plus } from '@element-plus/icons-vue'
+	import type { UploadProps, UploadUserFile } from 'element-plus'
+
+	export default defineComponent({
+		props: {
+			// svg 图标组件名字
+			fileList: {
+				type: Array,
+			},
+		},
+		components: {
+			Plus
+		},
+		setup() {
+
+			const dialogImageUrl = ref('')
+			const dialogVisible = ref(false)
+
+			const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
+				console.log(uploadFile, uploadFiles)
+			}
+
+			const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
+				dialogImageUrl.value = uploadFile.url!
+				dialogVisible.value = true
+			}
+
+			const successFile = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles)  => {
+				console.log(response, uploadFile,uploadFiles)
+			}
+			const errorFile = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles)  => {
+				console.log(error, uploadFile,uploadFiles)
+			}
+
+
+			return {
+				dialogImageUrl,
+				dialogVisible,
+				handleRemove,
+				handlePictureCardPreview,
+				successFile,
+				errorFile
+			};
+		},
+	});
+</script>
\ No newline at end of file
diff --git a/src/components/userCheckbox/index.vue b/src/components/userCheckbox/index.vue
new file mode 100644
index 0000000..5fc0b7a
--- /dev/null
+++ b/src/components/userCheckbox/index.vue
@@ -0,0 +1,422 @@
+<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
+              @node-click="handleNodeClick"
+              :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="ruleForm" class="demo-form-inline">
+              <el-form-item>
+                <el-input size="default" v-model="ruleForm.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}"
+                @cell-click="checkbox"
+            >
+              <el-table-column type="selection"  width="55">
+                <template #default="scope">
+                  <el-checkbox-group v-model="checkbox1">
+                    <el-checkbox :label="scope.row.uid" size="large">{{ null }}</el-checkbox>
+                  </el-checkbox-group>
+                </template>
+              </el-table-column>
+              <el-table-column prop="realName" label="登录名" width="100" show-overflow-tooltip sortable />
+              <el-table-column prop="username" label="用户名" width="100" show-overflow-tooltip sortable />
+              <el-table-column prop="address" label="所属机构" width="115"  show-overflow-tooltip sortable />
+              <el-table-column prop="address" label="所属部门" width="115" show-overflow-tooltip sortable/>
+              <el-table-column align="center" prop="type" label="状态" />
+<!--              <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"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="total"
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+              />
+            </div>
+          </el-main>
+        </el-container>
+        <div style="width: 200px;">
+          <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.realName }}
+            </el-tag>
+          </div>
+        </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,
+  onMounted,
+} from 'vue';
+
+import type {
+  ElTree,
+  // ElTable,
+} from 'element-plus'
+import {
+  ElMessage,
+} from 'element-plus';
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+import {goalManagementApi} from "/@/api/goalManagement";
+interface Tree {
+  id: number
+  label: string
+  children?: Tree[]
+}
+// interface User {
+//   date: string
+//   name: string
+//   address: string
+// }
+export default defineComponent({
+  name: 'userSelections',
+  components: {
+    // Search,
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+    // 打开弹窗
+    const openDialog = (type:any) => {
+      types.value=type
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      closeDialog();
+    };
+
+    //部门树
+    const department = () => {
+      goalManagementApi()
+          .getTreedepartment()
+          .then((res) => {
+            if (res.data.code == 200) {
+              data.value = res.data.data;
+            } else {
+              ElMessage.error(res.data.msg);
+            }
+          });
+    };
+    const defaultProps = {
+      label: 'depName',
+      children: 'children',
+      value: 'depId',
+    }
+    //部门树查询
+    const filterText = ref('')
+    const treeRef = ref<InstanceType<typeof ElTree>>()  //实例化
+    watch(filterText, (val) => {
+      treeRef.value!.filter(val);
+    });
+    // 节点过滤模糊搜索
+    const filterNode = (depName: string, data: Tree) => {
+      if (!depName) return true
+      return data.depName.includes(depName)
+    }
+    onMounted(() => {
+      department();
+    });
+    //左边树形部分点击获取回调
+    const names = ref<any>();
+    const handleNodeClick = (data: Tree) => {
+      goalManagementApi()
+          .getManName(data.depId)
+          .then((res) => {
+            if (res.data.code == 200) {
+              tableData.value=res.data.data
+            }else{
+              ElMessage.error(res.data.msg);
+            }
+          });
+    };
+
+
+    // 监听搜索关键字改变
+    watch(filterText, (val) => {
+      treeRef.value!.filter(val)
+    })
+    // 树形结构内容
+    const data = ref()
+
+
+
+
+    // const item = {
+    //   date: '孙刚',
+    //   name: '龚赛健',
+    //   address: '综合办公室',
+    //   tag: '正常',
+    // }
+    // const tableData = ref(Array.from({ length: 7 }).fill(item))
+    // 定义表单搜索
+    const ruleForm = reactive({
+      name: '',
+    })
+    const types=ref()
+    // 搜索按钮
+    const onSubmit = () => {
+      let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+      emit('SearchUser', obj[0],types.value);
+      isShowDialog.value = false;
+    }
+
+    // const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+    // 右方点击添加后显示标签
+    const dynamicTags = ref(['']);
+    const handleClose = () => {
+      dynamicTags.value.push(checkbox1.value)
+      // dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+      checkbox1.value = '';
+    };
+    const checkbox1 = ref('');
+    const checkbox = (event: any) => {
+      dynamicTags.value[0] = event;
+    };
+    const tableData = ref();
+    // 分页
+    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,
+      ruleForm,
+      onSubmit,
+      // multipleTableRef,
+      handleClose,
+      dynamicTags,
+      handleSizeChange,
+      handleCurrentChange,
+      pageIndex,
+      pageSize,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      names,
+      handleNodeClick,
+      types,
+      checkbox1,
+      checkbox,
+    };
+  },
+});
+</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/userSelections/index.vue b/src/components/userSelections/index.vue
new file mode 100644
index 0000000..8fdbb3f
--- /dev/null
+++ b/src/components/userSelections/index.vue
@@ -0,0 +1,446 @@
+<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}"
+                  @cell-click="radio"
+              >
+                <el-table-column align="center" width="55">
+                  <template #default="scope">
+                    <el-radio-group v-model="radio1">
+                      <el-radio :label="scope.row.id" 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(props,{emit}) {
+    const isShowDialog = ref(false)
+    // 打开弹窗
+    const openDialog = () => {
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    // 取消
+    const onCancel = () => {
+      let obj=JSON.parse(JSON.stringify(dynamicTags.value))
+      emit("SearchUser",obj[0])
+      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/main.ts b/src/main.ts
index 5635729..18ef496 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -21,6 +21,6 @@
 directive(app);
 other.elSvg(app);
 
-app.use(pinia).use(router).use(ElementPlus, { i18n: i18n.global.t, locale: zhCn}).use(i18n).use(VueGridLayout).mount('#app');
+app.use(pinia).use(router).use(ElementPlus, { i18n: i18n.global.t, locale: zhCn }).use(i18n).use(VueGridLayout).mount('#app');
 
 app.config.globalProperties.mittBus = mitt();
diff --git a/src/router/index.ts b/src/router/index.ts
index 712f6b8..59c04d3 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -66,31 +66,35 @@
 
 // 路由加载前
 router.beforeEach(async (to, from, next) => {
-    NProgress.configure({ showSpinner: false });
-    if (to.meta.title) NProgress.start();
-    const token = Session.get('token');
-    if (to.path === '/login' && !token) {
+    if (to.path === '/intelligentMap') {
         next();
-        NProgress.done();
     } else {
-        if (!token) {
-            next(`/login?redirect=${to.path}&params=${JSON.stringify(to.query ? to.query : to.params)}`);
-            Session.clear();
-            NProgress.done();
-        } else if (token && to.path === '/login') {
-            next('/homeMenu');
+        NProgress.configure({ showSpinner: false });
+        if (to.meta.title) NProgress.start();
+        const token = Session.get('token');
+        if (to.path === '/login' && !token) {
+            next();
             NProgress.done();
         } else {
-            const storesRoutesList = useRoutesList(pinia);
-            const { routesList } = storeToRefs(storesRoutesList);
-            if (routesList.value.length === 0) {
-                // 后端控制路由:路由数据初始化,防止刷新时丢失
-                await initBackEndControlRoutes();
-                // 动态添加路由:防止非首页刷新时跳转回首页的问题
-                // 确保 addRoute() 时动态添加的路由已经被完全加载上去
-                next({ ...to, replace: true });
+            if (!token) {
+                next(`/login?redirect=${to.path}&params=${JSON.stringify(to.query ? to.query : to.params)}`);
+                Session.clear();
+                NProgress.done();
+            } else if (token && to.path === '/login') {
+                next('/homeMenu');
+                NProgress.done();
             } else {
-                next();
+                const storesRoutesList = useRoutesList(pinia);
+                const { routesList } = storeToRefs(storesRoutesList);
+                if (routesList.value.length === 0) {
+                    // 后端控制路由:路由数据初始化,防止刷新时丢失
+                    await initBackEndControlRoutes();
+                    // 动态添加路由:防止非首页刷新时跳转回首页的问题
+                    // 确保 addRoute() 时动态添加的路由已经被完全加载上去
+                    next({ ...to, replace: true });
+                } else {
+                    next();
+                }
             }
         }
     }
diff --git a/src/router/route.ts b/src/router/route.ts
index 699646d..3bcf1c9 100644
--- a/src/router/route.ts
+++ b/src/router/route.ts
@@ -79,5 +79,13 @@
             title: '首页',
             isKeepAlive: false
         }
+    },
+    {
+        path: '/intelligentMap',
+        name: 'intelligentMap',
+        component: () => import('/@/views/intellectInspect/intelligentMap/index.vue'),
+        meta: {
+            title: '巡检路线'
+        }
     }
 ];
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 62a638f..9b5d13d 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -6,7 +6,7 @@
 // var jsonBig = require('json-bigint')({ "storeAsString": true });
 // 配置新建一个 axios 实例
 const service = axios.create({
-    baseURL: import.meta.env.VITE_API_URL as any,
+    // baseURL: import.meta.env.VITE_API_URL as any,
     timeout: 50000,
     headers: { 'Content-Type': 'application/json' }
 });
@@ -14,7 +14,7 @@
 service.interceptors.request.use(
     (config) => {
         for (let key in config.data) {
-            if (config.data[key] == '') {
+            if (config.data[key] == '' && config.data[key] !== 0) {
                 config.data[key] = null;
             }
         }
diff --git a/src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue b/src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue
new file mode 100644
index 0000000..c586c23
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/accidentExpress/component/openAdd.vue b/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
new file mode 100644
index 0000000..50a59d7
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/accidentExpress/index.vue b/src/views/accidentManagementSystem/accidentExpress/index.vue
new file mode 100644
index 0000000..ce1a6df
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/accidentReport/component/openAdd.vue b/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue
new file mode 100644
index 0000000..de8cecb
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/accidentReport/index.vue b/src/views/accidentManagementSystem/accidentReport/index.vue
new file mode 100644
index 0000000..6694d4b
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue b/src/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue
new file mode 100644
index 0000000..d349645
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue b/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
new file mode 100644
index 0000000..581cd61
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue b/src/views/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue
new file mode 100644
index 0000000..f3ef29b
--- /dev/null
+++ b/src/views/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/views/accidentManagementSystem/workInjuryDeclaration/index.vue b/src/views/accidentManagementSystem/workInjuryDeclaration/index.vue
new file mode 100644
index 0000000..503246d
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/abolishDialog/abolishDialog.vue b/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
new file mode 100644
index 0000000..c0ee5e8
--- /dev/null
+++ b/src/views/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="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('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/views/contingencyManagement/abolishDialog/component/formInformationTop.vue b/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/abolishDialog/component/formInformationTops.vue b/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue
new file mode 100644
index 0000000..68ae8a6
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/abolishDialog/component/lowerPlate.vue b/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue b/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
new file mode 100644
index 0000000..de19c3f
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/contingency/component/dialog.vue b/src/views/contingencyManagement/contingency/component/dialog.vue
new file mode 100644
index 0000000..add861a
--- /dev/null
+++ b/src/views/contingencyManagement/contingency/component/dialog.vue
@@ -0,0 +1,200 @@
+<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
new file mode 100644
index 0000000..3effe20
--- /dev/null
+++ b/src/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue
@@ -0,0 +1,240 @@
+<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
new file mode 100644
index 0000000..4ae9379
--- /dev/null
+++ b/src/views/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="公司"></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="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/views/contingencyManagement/contingency/component/openSee.vue b/src/views/contingencyManagement/contingency/component/openSee.vue
new file mode 100644
index 0000000..066f66d
--- /dev/null
+++ b/src/views/contingencyManagement/contingency/component/openSee.vue
@@ -0,0 +1,425 @@
+<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/component/upData.vue b/src/views/contingencyManagement/contingency/component/upData.vue
new file mode 100644
index 0000000..cc3e2d0
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/contingency/index.vue b/src/views/contingencyManagement/contingency/index.vue
new file mode 100644
index 0000000..1be771a
--- /dev/null
+++ b/src/views/contingencyManagement/contingency/index.vue
@@ -0,0 +1,389 @@
+<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="shanghai"></el-option>
+              <el-option label="分厂-车间" value="beijing"></el-option>
+              <el-option label="工序-班组等" value="beijing"></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></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 '/@/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';
+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/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
new file mode 100644
index 0000000..07f4e5f
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue
new file mode 100644
index 0000000..8e18978
--- /dev/null
+++ b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/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/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue
new file mode 100644
index 0000000..bc66e00
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue
new file mode 100644
index 0000000..bba7134
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
new file mode 100644
index 0000000..094d1b1
--- /dev/null
+++ b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue
@@ -0,0 +1,628 @@
+<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/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue
new file mode 100644
index 0000000..a6cdd4e
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue
new file mode 100644
index 0000000..c3a4156
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue b/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue
new file mode 100644
index 0000000..767809d
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
new file mode 100644
index 0000000..8e18978
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
new file mode 100644
index 0000000..2e903f9
--- /dev/null
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
@@ -0,0 +1,572 @@
+<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="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
+                  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/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue
new file mode 100644
index 0000000..ba15f44
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
new file mode 100644
index 0000000..5f85b72
--- /dev/null
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
@@ -0,0 +1,392 @@
+<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></el-table-column>
+        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable></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/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
new file mode 100644
index 0000000..afc2ebf
--- /dev/null
+++ b/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue
@@ -0,0 +1,198 @@
+<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" />
+    <EditEmergencyPersonnel ref="editRef" />
+  </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 EditEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/editEmergencyPersonnel.vue";
+import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
+
+export default defineComponent({
+  name: 'openEdit',
+  components: {
+    DailogSearchUser,
+    AddEmergencyPersonnel,
+    EditEmergencyPersonnel
+  },
+  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/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue
new file mode 100644
index 0000000..da6b207
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyPlanStartRecord/index.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/index.vue
new file mode 100644
index 0000000..29f589c
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue b/src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue
new file mode 100644
index 0000000..3137291
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue b/src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue
new file mode 100644
index 0000000..5e14343
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue
new file mode 100644
index 0000000..0953d51
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue
new file mode 100644
index 0000000..b30bcc2
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue
new file mode 100644
index 0000000..17defc0
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue
new file mode 100644
index 0000000..f5b2e61
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue
new file mode 100644
index 0000000..2e719ea
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue
new file mode 100644
index 0000000..d8d1973
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/emergencySupplies/index.vue b/src/views/contingencyManagement/emergencyResources/emergencySupplies/index.vue
new file mode 100644
index 0000000..3f9dc77
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue b/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
new file mode 100644
index 0000000..7bcfdce
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue b/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue
new file mode 100644
index 0000000..3544d06
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/abolishLibrary.vue b/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue
new file mode 100644
index 0000000..f13523f
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/approval.vue b/src/views/contingencyManagement/panManagement/component/approval.vue
new file mode 100644
index 0000000..b6db937
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/approvalProcess.vue b/src/views/contingencyManagement/panManagement/component/approvalProcess.vue
new file mode 100644
index 0000000..2356a0b
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/initiateApproval.vue b/src/views/contingencyManagement/panManagement/component/initiateApproval.vue
new file mode 100644
index 0000000..eb2afa2
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/openAdd.vue b/src/views/contingencyManagement/panManagement/component/openAdd.vue
new file mode 100644
index 0000000..a5d978a
--- /dev/null
+++ b/src/views/contingencyManagement/panManagement/component/openAdd.vue
@@ -0,0 +1,440 @@
+<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="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.treeSelect"
+								:data="data"
+								multiple
+								:render-after-expand="true"
+								:props="propse"
+								show-checkbox
+								clearable
+								check-strictly
+							/>
+							<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="综合应急预案"></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="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="公司级"></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="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;
+						}
+					});
+			}
+		};
+		//日期选择器
+		const releaseDate = ref('');
+		// 上传附件
+		const fileList = ref<UploadUserFile[]>([]);
+		//部门树
+		const department = () => {
+			goalManagementApi()
+				.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();
+					} 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;
+      ruleForm.value = {
+        name: '', // 预案名称
+        type: '', //预案类型
+        associatedDanger: '', // 危险源关联
+        level: '', // 预案级别
+        authorUid: '', // 编写人
+        authorName: '',
+        authorDeptId: '', // 编写部门
+        releaseDate: '', // 发布实施日期
+        fileList: [
+          {
+            fileUrl: 'url',
+            fileName: 'name',
+          },
+        ],
+        emergencyTeam: '', //应急队伍
+        areaList: [], //区域列表
+        teamList: [
+        ],
+        deptList: [],
+        abolishStatus: false,
+      };
+			formEl.resetFields();
+		};
+		// 应急队伍弹窗
+		const Shows = ref();
+		const daiInpt = (data: any) => {
+      Shows.value.openDailog(data);
+		};
+    const SearchUser = (e: 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 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/views/contingencyManagement/panManagement/component/startUp.vue b/src/views/contingencyManagement/panManagement/component/startUp.vue
new file mode 100644
index 0000000..49f5500
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/component/upData.vue b/src/views/contingencyManagement/panManagement/component/upData.vue
new file mode 100644
index 0000000..cc3e2d0
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/panManagement/index.vue b/src/views/contingencyManagement/panManagement/index.vue
new file mode 100644
index 0000000..0daee03
--- /dev/null
+++ b/src/views/contingencyManagement/panManagement/index.vue
@@ -0,0 +1,613 @@
+<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></el-table-column>
+				<el-table-column prop="level" 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="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/views/contingencyManagement/processForm/component/formInformationTop.vue b/src/views/contingencyManagement/processForm/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/processForm/component/formInformationTops.vue b/src/views/contingencyManagement/processForm/component/formInformationTops.vue
new file mode 100644
index 0000000..53eed6a
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/processForm/component/lowerPlate.vue b/src/views/contingencyManagement/processForm/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/processForm/processForm.vue b/src/views/contingencyManagement/processForm/processForm.vue
new file mode 100644
index 0000000..98218a0
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue b/src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue
new file mode 100644
index 0000000..ef75063
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue b/src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue
new file mode 100644
index 0000000..8a1f2a5
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue b/src/views/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue
new file mode 100644
index 0000000..cbb82fb
--- /dev/null
+++ b/src/views/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/views/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue b/src/views/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue
new file mode 100644
index 0000000..98218a0
--- /dev/null
+++ b/src/views/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/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue
index a452740..f10235d 100644
--- a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue
+++ b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue
@@ -188,8 +188,8 @@
         });
         // 初始化表格数据
         const initWorkTableData = async () => {
-            state.workData.params.checkWorkType = state.workData.params.checkWorkType === '' ? null : state.workData.params.checkWorkType;
-            state.workData.params.checkWorkStatus = state.workData.params.checkWorkStatus === '' ? null : state.workData.params.checkWorkStatus;
+            // state.workData.params.checkWorkType = state.workData.params.checkWorkType === '' ? null : state.workData.params.checkWorkType;
+            // state.workData.params.checkWorkStatus = state.workData.params.checkWorkStatus === '' ? null : state.workData.params.checkWorkStatus;
             let res = await workApi().getWorkList(state.workData.params);
             if (res.data.code === '200') {
                 state.workData.data = res.data.data;
diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue
index 220b8f8..6dba9f5 100644
--- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue
+++ b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue
@@ -149,7 +149,7 @@
                 loading: false,
                 params: {
                     pageIndex: 1,
-                    pageSize: 15,
+                    pageSize: 10,
                     dangerLevel: null,
                     dangerSource: null,
                     dangerStatus: null,
diff --git a/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue b/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue
index 72818ae..77ca4ba 100644
--- a/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue
+++ b/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue
@@ -121,11 +121,14 @@
                 measureDesc: null
             },
             riskControlMeasureFormRules: {
-                riskCode: [{ required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' }],
-                riskUnitName: [{ required: true, message: '请填写安全风险分析单元名称', trigger: 'blur' }],
-                liableDepId: [{ required: true, message: '请选择责任部门', trigger: 'change' }],
-                liablePersonId: [{ required: true, message: '请选择责任人', trigger: 'change' }],
-                produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }]
+                riskEventId: [{ required: true, message: '请选择风险事件', trigger: 'change' }],
+                controlMeasureCode: [{ required: true, message: '请填写风险措施编码', trigger: 'blur' }],
+                controlType: [{ required: true, message: '请选择管控方式', trigger: 'change' }],
+                checkContent: [{ required: true, message: '请填写管控内容', trigger: 'blur' }],
+                classify1: [{ required: true, message: '请选择管控措施分类1', trigger: 'change' }],
+                classify2: [{ required: true, message: '请选择管控措施分类2', trigger: 'change' }],
+                classify3: [{ required: true, message: '请填写管控措施分类3', trigger: 'blur' }],
+                measureDesc: [{ required: true, message: '请填写措施说明', trigger: 'blur' }]
             }
         });
 
diff --git a/src/views/doublePrevent/riskLevel/action/index.vue b/src/views/doublePrevent/riskLevel/action/index.vue
index 79efcfe..b5827cb 100644
--- a/src/views/doublePrevent/riskLevel/action/index.vue
+++ b/src/views/doublePrevent/riskLevel/action/index.vue
@@ -114,7 +114,7 @@
 }
 interface classifyOneType {
     id: number;
-    classifyOneType: string;
+    riskMeasureName: string;
 }
 
 interface SafetyRiskEventDataState {}
diff --git a/src/views/doublePrevent/riskLevel/device/index.vue b/src/views/doublePrevent/riskLevel/device/index.vue
index 4dbb256..a8208fe 100644
--- a/src/views/doublePrevent/riskLevel/device/index.vue
+++ b/src/views/doublePrevent/riskLevel/device/index.vue
@@ -3,6 +3,10 @@
         <el-card shadow="hover">
             <div class="system-user-search mb15">
                 <div class="basic-line">
+                    <span>生产装置名称:</span>
+                    <el-input v-model="productionDeviceData.params.produceDeviceName" class="input-box"> </el-input>
+                </div>
+                <div class="basic-line">
                     <span>风险等级:</span>
                     <el-select v-model="productionDeviceData.params.riskLevel" clearable filterable class="input-box" placeholder="请选择风险等级">
                         <el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
diff --git a/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue b/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue
index 80d88b3..88b9e1b 100644
--- a/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue
+++ b/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue
@@ -12,7 +12,7 @@
                     </el-col>
                     <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                         <el-form-item label="安全风险事件名称" prop="riskEventName">
-                            <el-input class="input-length" v-model.trim="safetyRiskEventForm.riskEventName" placeholder="请输入生产装置名称" clearable></el-input>
+                            <el-input class="input-length" v-model.trim="safetyRiskEventForm.riskEventName" placeholder="请输入请输入安全风险事件名称" clearable></el-input>
                         </el-form-item>
                     </el-col>
                 </el-row>
diff --git a/src/views/facilityManagement/EquipmentStatistics/index.vue b/src/views/facilityManagement/EquipmentStatistics/index.vue
new file mode 100644
index 0000000..07a359f
--- /dev/null
+++ b/src/views/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/views/facilityManagement/InstrumentationInformation/index.vue b/src/views/facilityManagement/InstrumentationInformation/index.vue
new file mode 100644
index 0000000..e64297f
--- /dev/null
+++ b/src/views/facilityManagement/InstrumentationInformation/index.vue
@@ -0,0 +1,374 @@
+<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" 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, 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,
+			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/views/facilityManagement/ProductionEquipment/index.vue b/src/views/facilityManagement/ProductionEquipment/index.vue
new file mode 100644
index 0000000..ab8551e
--- /dev/null
+++ b/src/views/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/views/facilityManagement/deviceType/component/Dailog.vue b/src/views/facilityManagement/deviceType/component/Dailog.vue
new file mode 100644
index 0000000..576135f
--- /dev/null
+++ b/src/views/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/views/facilityManagement/deviceType/index.vue b/src/views/facilityManagement/deviceType/index.vue
new file mode 100644
index 0000000..11958ec
--- /dev/null
+++ b/src/views/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/views/facilityManagement/keyEquipment/index.vue b/src/views/facilityManagement/keyEquipment/index.vue
new file mode 100644
index 0000000..52374a7
--- /dev/null
+++ b/src/views/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/views/facilityManagement/safetyEquipment/index.vue b/src/views/facilityManagement/safetyEquipment/index.vue
new file mode 100644
index 0000000..576cfb7
--- /dev/null
+++ b/src/views/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/views/goalManagement/Goalsummary/index.vue b/src/views/goalManagement/Goalsummary/index.vue
new file mode 100644
index 0000000..4d241e4
--- /dev/null
+++ b/src/views/goalManagement/Goalsummary/index.vue
@@ -0,0 +1,213 @@
+<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.year" placeholder="年度" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4" >
+					<el-form-item size="default">
+						<el-tree-select v-model="ruleForm.searchParams.departmentId" :data="data" class="w100" 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>
+		<div class="minCenter">
+			<div class="btns">
+				<p>汇总日期:2022-07-04 23:00:07</p>
+				<div>
+					<el-button type="primary" size="default" :icon="Download">导出</el-button>
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%">
+				<el-table-column label="责任部门" align="center">
+					<template #default="scope">{{ scope.row.departmentId }}</template>
+				</el-table-column>
+				<el-table-column property="targetValue" align="center" label="安全目标指标" />
+				<el-table-column property="examineValue" label="考核指标" align="center" show-overflow-tooltip />
+				<el-table-column property="yiYue" label="1月" align="center" show-overflow-tooltip />
+				<el-table-column property="february" label="2月" align="center" show-overflow-tooltip />
+				<el-table-column property="erYue" label="3月" align="center" show-overflow-tooltip />
+				<el-table-column property="sanYue" label="4月" align="center" show-overflow-tooltip />
+				<el-table-column property="siYue" label="5月" align="center" show-overflow-tooltip />
+				<el-table-column property="wuYue" label="6月" align="center" show-overflow-tooltip />
+				<el-table-column property="liuYue" label="7月" align="center" show-overflow-tooltip />
+				<el-table-column property="qiYue" label="8月" align="center" show-overflow-tooltip />
+				<el-table-column property="baYue" label="9月" align="center" show-overflow-tooltip />
+				<el-table-column property="jiuYue" label="10月" align="center" show-overflow-tooltip />
+				<el-table-column property="shiYue" label="11月" align="center" show-overflow-tooltip />
+				<el-table-column property="shiyiYue" label="12月" align="center" show-overflow-tooltip />
+				<el-table-column label="考核结果" align="center">
+					<template #default="scope">{{ scope.row.examineResult }}</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>
+	</div>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				year: '', //年度
+				departmentId: '', //责任部门
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.year = '';
+			ruleForm.searchParams.departmentId = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetDutySummaryList(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 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 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: [],
+					},
+				],
+			},
+		];
+		return {
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			data,
+			resetForm,
+			listApi,
+			handleSizeChange,
+			handleCurrentChange,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: left;
+}
+.btns p {
+	font-size: 18px;
+	line-height: 40px;
+	margin-right: 20px;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue b/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
new file mode 100644
index 0000000..ec8fdd2
--- /dev/null
+++ b/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
@@ -0,0 +1,177 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-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="24">
+					<el-form-item label="员工姓名" size="default">
+						<el-input v-model="form.personId" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="daiInpts" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="奖惩名称" size="default">
+						<el-input v-model="form.rewardPunishmentStandardId" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="daiInpt" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="11" :offset="2">
+					<el-form-item label="奖惩类型" size="default">
+						<el-input disabled v-model="form.personId" />
+					</el-form-item>
+				</el-col> -->
+			</el-row>
+			<!-- <el-row>
+				<el-col :span="24">
+					<el-form-item label="奖惩内容" size="default">
+						<el-input disabled v-model="form.personId" placeholder="请填写奖惩内容" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="依据" size="default">
+						<el-input disabled v-model="form.personId" placeholder="请填写奖惩依据" />
+					</el-form-item>
+				</el-col>
+			</el-row> -->
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</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 type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="UserId"></DailogSearchUser>
+	<DailogSearch ref="Shows" @backNum="numberId"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+export default defineComponent({
+	components: { DailogSearch, DailogSearchUser },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			rewardPunishmentStandardId: '', //奖惩标准/外键
+			memo: '', ////备注信息
+			personId: "", ////员工(多个用逗号隔开)
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = `${title}奖惩标准设定`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getrewardPunishmentDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			goalManagementApi()
+				.getrewardPunishmentAddOrUpdate(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 = {
+				rewardPunishmentStandardId: '', //奖惩标准/外键
+				memo: '', ////备注信息
+				personId: "", ////员工(多个用逗号隔开)
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				rewardPunishmentStandardId: '', //奖惩标准/外键
+				memo: '', ////备注信息
+				personId: "", ////员工(多个用逗号隔开)
+			};
+		};
+
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		const Show = ref();
+		const daiInpts = () => {
+			Show.value.openDailog();
+		};
+		const numberId=(val:any)=>{
+			console.log(val)
+			form.value.rewardPunishmentStandardId=val.id
+		}
+		const UserId=(val:any)=>{
+			form.value.personId=val.id
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			UserId,
+			form,
+			titles,
+			disabled,
+			openDailog,
+			submitForm,
+			numberId,
+			resetForm,
+			Shows,
+			daiInpt,
+			Show,
+			daiInpts,
+			full,
+			toggleFullscreen,
+			Search,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue b/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
new file mode 100644
index 0000000..3cdcb66
--- /dev/null
+++ b/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
@@ -0,0 +1,206 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="奖惩类型" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.standardType" placeholder="奖惩类型" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="11" :offset="1">
+							<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-button size="default" :icon="Delete" @click="clear">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px" @cell-click="radio">
+						<el-table-column align="center">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="qname" label="奖惩名称" width="180" />
+					<el-table-column align="center" label="奖惩类型" width="180">
+						<template #default="scope">
+              <span v-if="scope.row.standardType==1">奖励</span>
+              <span v-if="scope.row.standardType==2">惩罚</span>
+              <span></span>
+						</template>
+					</el-table-column>	
+					<el-table-column align="center" prop="content" label="奖惩内容" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+			<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.qname }}
+				</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 { Delete, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props,{emit}) {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				standardType: '', ////奖惩类型 1:奖励 2:惩罚
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.standardType = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentStandardList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.standardType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			
+		});
+		// 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 dialogVisible=ref(false)
+		const openDailog=()=>{
+			dialogVisible.value=true
+			listApi();
+		}
+			// 右方点击添加后显示标签
+		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 clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+			const submitForm=()=>{
+			let obj=JSON.parse(JSON.stringify(dynamicTags.value))
+			emit("backNum",obj[0])
+			dialogVisible.value = false
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			submitForm,
+			radio,
+			radio1,
+			clear,
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			listApi,
+			handleClick,
+			handleClose,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/IncentiveRecording/index.vue b/src/views/goalManagement/IncentiveRecording/index.vue
new file mode 100644
index 0000000..b9a9fa9
--- /dev/null
+++ b/src/views/goalManagement/IncentiveRecording/index.vue
@@ -0,0 +1,294 @@
+<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.personId" placeholder="请选择被奖惩者">
+							<template #append>
+								<el-button :icon="Search" @click="openSearch" />
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" 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>
+		<div class="minCenter">
+			<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" plain @click="handleSelectionChange">删除 </el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column property="createTime" align="center" label="奖惩日期" :formatter="timeDate" sortable />
+				<el-table-column label="奖惩类型" align="center" sortable>
+					<template #default="scope">
+						<span v-if="scope.row.standardType == 1">奖励</span>
+						<span v-if="scope.row.standardType == 2">惩罚</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="personId" align="center" label="被奖惩者" sortable />
+				<el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="reason" label="奖惩依据" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<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>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<DailogSearchUser ref="openUser" @SearchUser="userId"></DailogSearchUser>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAdd, DailogSearchUser },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				personId: '', ////员工
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.personId = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.personId = targetType.paneName;
+			listApi();
+		};
+		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, ruleForm.searchParams.personId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentDelete(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(() => {
+					goalManagementApi()
+						.getrewardPunishmentDelete(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 openUser = ref();
+		const openSearch = () => {
+			openUser.value.openDailog();
+		};
+		const userId = (val: any) => {
+			ruleForm.searchParams.personId = val.uid;
+		};
+		return {
+			timeDate,
+			ruleForm,
+			userId,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openD,
+			onDelete,
+			openAdd,
+			warning,
+			danger,
+			deletAll,
+			openSearch,
+			handleSelectionChange,
+			onDeleteAll,
+			openUser,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+			Search,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue b/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
new file mode 100644
index 0000000..3d5abeb
--- /dev/null
+++ b/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
@@ -0,0 +1,147 @@
+<template>
+	<el-dialog v-model="dialogVisible"  :before-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-select v-model="form.standardType" style="width: 100%" placeholder="请选择">
+							<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">
+						<el-input v-model="form.content" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="奖惩名称" size="default">
+						<el-input v-model="form.qName" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="依据" size="default">
+						<el-input v-model="form.reason" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</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 type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+export default defineComponent({
+	setup(props, { emit }) {
+		let Shows = ref(false);
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			qName: "", ////奖惩名称
+			reason: "", ////依据
+			memo: "", ////备注信息
+			content: "", ////奖惩内容
+			standardType: null ////奖惩类型 1:奖励 2:惩罚
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = `${title}奖惩标准设定`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getrewardPunishmentStandardDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			goalManagementApi()
+				.getrewardPunishmentStandardaddOrUpdate(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 = {
+				qName: "", ////奖惩名称
+				reason: "", ////依据
+				memo: "", ////备注信息
+				content: "", ////奖惩内容
+				standardType: null, ////奖惩类型 1:奖励 2:惩罚
+			}
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				qName: "", ////奖惩名称
+				reason: "", ////依据
+				memo: "", ////备注信息
+				content: "", ////奖惩内容
+				standardType: null, ////奖惩类型 1:奖励 2:惩罚
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+
+		return {
+			form,
+			titles,
+			dialogVisible,
+			openDailog,
+			disabled,
+			Search,
+			submitForm,
+			resetForm,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/Incentivestandard/index.vue b/src/views/goalManagement/Incentivestandard/index.vue
new file mode 100644
index 0000000..a8f3fed
--- /dev/null
+++ b/src/views/goalManagement/Incentivestandard/index.vue
@@ -0,0 +1,282 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-select v-model="ruleForm.searchParams.standardType" size="default" style="width: 100%" placeholder="请选择">
+							<el-option label="奖励" value="1" />
+							<el-option label="惩罚" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" 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>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')" >新建</el-button>
+					<el-button size="default" type="warning" :disabled="warning" plain :icon="EditPen" @click="openD">修改 </el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="handleSelectionChange">删除</el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Upload" @click="upButton"></el-button>
+					<el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column property="qname" align="center" label="奖惩名称" sortable />
+				<el-table-column property="name" align="center" label="奖惩类型" sortable>
+					<template #default="scope">
+						<span v-if="scope.row.standardType == 1">奖励</span>
+						<span v-if="scope.row.standardType == 2">惩罚</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="reason" label="依据" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<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>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<!-- <upData ref="upShow"></upData> -->
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import upData from '../../../components/updata/updata.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, upData, DailogAdd },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				standardType: '', ////奖惩类型 1:奖励 2:惩罚
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.standardType = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentStandardList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.standardType = targetType.paneName;
+			listApi();
+		};
+		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, ruleForm.searchParams.standardType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentStandardDelete(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(() => {
+					goalManagementApi()
+						.getrewardPunishmentStandardDelete(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',
+					// });
+				});
+		};
+		return {
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/TargetBook/component/DailogAdd.vue b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
new file mode 100644
index 0000000..3f572d3
--- /dev/null
+++ b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
@@ -0,0 +1,206 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-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="24">
+					<el-form-item label="岗位" size="default">
+						<el-input v-model="form.jobId" placeholder="请选择">
+							<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="责任书签订日期" size="default">
+						<el-date-picker v-model="form.signDate" style="width:100%" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择日期时间" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<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"
+							multiple
+							:on-preview="handlePreview"
+							:on-remove="handleRemove"
+							:before-remove="beforeRemove"
+							:limit="3"
+							:on-exceed="handleExceed"
+						>
+							<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" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearch ref="Shows" @backNum="IdNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogSearch },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			indexNum: '', //目标指标编号
+			memo: '', ////备注信息
+			signDate: '', //责任书签订日期
+			extraFile: '666', //责任书附件
+			jobId: '', //岗位
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value =`${title}目标责任书`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.gettargetDutyfileInfoDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			goalManagementApi()
+				.gettargetDutyfileInfoAddorUpdata(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 = {
+				indexNum: '', //目标指标编号
+				memo: '', ////备注信息
+				signDate: '', //责任书签订日期
+				extraFile: '666', //责任书附件
+				jobId: '', //岗位
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				indexNum: '', //目标指标编号
+				memo: '', ////备注信息
+				signDate: '', //责任书签订日期
+				extraFile: '666', //责任书附件
+				jobId: '', //岗位
+			};
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		const IdNumber=(val:any)=>{
+         form.value.jobId=val.id
+		}
+		// 点击上传
+		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 full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			IdNumber,
+			dialogVisible,
+			form,
+			disabled,
+			titles,
+			openDailog,
+			daiInpt,
+			submitForm,
+			resetForm,
+			Shows,
+			Search,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+			beforeRemove,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/TargetBook/component/DailogSearch.vue b/src/views/goalManagement/TargetBook/component/DailogSearch.vue
new file mode 100644
index 0000000..1801078
--- /dev/null
+++ b/src/views/goalManagement/TargetBook/component/DailogSearch.vue
@@ -0,0 +1,175 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择岗位" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="岗位名称" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="11" :offset="1">
+							<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-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px"  @cell-click="radio">
+					<el-table-column align="center">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="date" label="岗位名称" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+			<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.id }}
+				</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 } from 'vue';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	setup(props,{emit}) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = [
+			{   id:1,
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				id:2,
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{	
+				id:3,	
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{	id:4,
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		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 clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+			const submitForm=()=>{
+			let obj=JSON.parse(JSON.stringify(dynamicTags.value))
+			emit("backNum",obj[0])
+			dialogVisible.value = false
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			radio1,
+			radio,
+			clear,
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			tableData,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			submitForm,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/TargetBook/index.vue b/src/views/goalManagement/TargetBook/index.vue
new file mode 100644
index 0000000..870165a
--- /dev/null
+++ b/src/views/goalManagement/TargetBook/index.vue
@@ -0,0 +1,281 @@
+<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.jobId" placeholder="请选择岗位">
+							<template #append> <el-button :icon="Search" @click="openSearch" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" 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>
+		<div class="minCenter">
+			<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" plain @click="onDeleteAll">删除</el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<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="index" label="序号" align="center" width="70" />
+				<el-table-column property="jobId" align="center" label="岗位" sortable />
+				<el-table-column property="signDate" align="center" label="责任书签订日期" :formatter="timeDate" sortable />
+				<el-table-column property="extraFile" align="center" label="附件" sortable />
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" style="width: 300px">
+					<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>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<DailogSearch ref="openUser"></DailogSearch>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import DailogSearch from './component/DailogSearch.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAdd, DailogSearch },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				jobId: '', ////岗位号/外键
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.jobId = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetDutyfileInfoList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.jobId = targetType.paneName;
+			listApi();
+		};
+		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, ruleForm.searchParams.jobId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.gettargetDutyfileInfoDelete(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(() => {
+					goalManagementApi()
+						.gettargetDutyfileInfoDelete(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 openUser = ref();
+		const openSearch = () => {
+			openUser.value.openDailog();
+		};
+		return {
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			openUser,
+			openSearch,
+			timeDate,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+			Search,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/index.vue b/src/views/goalManagement/index.vue
new file mode 100644
index 0000000..8d45119
--- /dev/null
+++ b/src/views/goalManagement/index.vue
@@ -0,0 +1,14 @@
+<template>
+    <router-view></router-view>
+</template>
+
+<script>
+export default {
+    name: "index"
+}
+</script>
+
+<style scoped>
+
+</style>
+
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
new file mode 100644
index 0000000..af27844
--- /dev/null
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
@@ -0,0 +1,367 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" @close="handleClose(ruleFormRef)" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px" ref="ruleFormRef" :rules="rules">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核标题" size="default" prop="title">
+						<el-input v-model="form.title" placeholder="请填写考核标题"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核日期" size="default" prop="examineDate">
+						<el-date-picker v-model="form.examineDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="合格分数" size="default" prop="acceptanceNumber">
+						<el-input v-model="form.acceptanceNumber" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="总分" size="default" prop="examineTotalNumber">
+						<el-input v-model="form.examineTotalNumber" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核部门" size="default" prop="examineDepartmentId">
+						<el-tree-select
+							v-model="form.examineDepartmentId"
+							:data="data"
+							class="w100"
+							@node-click="nameData1"
+							:props="propse"
+							check-strictly
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核人" size="default" prop="examinePersonName">
+						<el-input v-model="form.examinePersonName">
+							<template #append> <el-button :icon="Search" @click="daiInpt(1)" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="被考核部门" size="default" prop="beExaminedDepartmentId">
+						<el-tree-select
+							v-model="form.beExaminedDepartmentId"
+							:data="data"
+							@node-click="nameData2"
+							class="w100"
+							:props="propse"
+							check-strictly
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="被考核人" size="default" prop="beExaminedPersonName">
+						<el-input v-model="form.beExaminedPersonName">
+							<template #append> <el-button :icon="Search" @click="daiInpt(0)" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<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"
+							multiple
+							:on-preview="handlePreview"
+							:on-remove="handleRemove"
+							:before-remove="beforeRemove"
+							:limit="3"
+							:on-exceed="handleExceed"
+						>
+							<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-row>
+				<el-col :span="11">
+					<el-form-item label="考核模板" size="default" prop="examineTemplateName">
+						<el-input disabled v-model="form.examineTemplateName">
+							<template #append> <el-button :icon="Search" @click="daiAdd" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="备注信息" prop="memo">
+						<el-input v-model="form.memo" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="考核项目" name="1">
+				<!-- <el-button type="primary" size="default" @click="daiAdd">新增</el-button> -->
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="tableData" style="width: 100%">
+			<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" prop="address" label="上报人" />
+			<el-table-column align="center" label="操作">
+				<template #default>
+					<el-button link type="primary">查看</el-button>
+				</template>
+			</el-table-column> -->
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearch ref="Show"></DailogSearch>
+	<DailogSearchUser ref="Shows" @SearchUser="userId"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import type { FormInstance, FormRules } from 'element-plus';
+export default defineComponent({
+	components: { DailogSearchUser, DailogSearch },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			beExaminedDepartmentId: '', ////被考核部门ID/外键
+			beExaminedDepartmentName: '',
+			beExaminedPersonId: '', ////被考核人ID/外键(可能有多个,用逗号隔开)
+			beExaminedPersonName: '',
+			examineDate: '', ////考核日期
+			examineDepartmentId: '', ////考核部门ID/外键
+			examineDepartmentName: '',
+			examinePersonId: '', ////考核人ID/外键
+			examinePersonName: '',
+			examineTemplateId: 1, ////绩效考核模板ID/外键
+			examineTemplateName: '',
+			examineTotalNumber: '', ////总分
+			extraFile: '9', //责任书附件
+			itemDetail: '', ////考核项目
+			memo: '', ////备注信息
+			numberDetailJson: '[{"id":"123","number":"123"}]', ////各个考核项目的具体得分,json格式。形式为:[{“id”:"123","number":"123"}]
+			title: '', ////考核标题
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			department();
+			dialogVisible.value = true;
+			titles.value = `${title}安全考核管理`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getexamineMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 验证
+		const rules = reactive<FormRules>({
+			title: [{ required: true, message: '考核标题不能为空', trigger: 'blur' }],
+			examineDate: [{ required: true, message: '考核日期不能为空', trigger: 'blur' }],
+			examineDepartmentId: [{ required: true, message: '考核部门不能为空', trigger: 'blur' }],
+			examinePersonName: [],
+			examinePersonId: [],
+			beExaminedDepartmentId: [{ required: true, message: '被考核部门不能为空', trigger: 'blur' }],
+			beExaminedPersonName: [],
+			beExaminedPersonId: [],
+			examineTemplateId: [],
+			examineTemplateName: [{ required: true, message: '考核模板不能为空', trigger: 'blur' }],
+			memo: [],
+		});
+		// 提交
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					dialogVisible.value = false;
+					goalManagementApi()
+						.getexamineMngAddOrUpdate(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('navAddorUpdata');
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		//   取消
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			dialogVisible.value = false;
+			formEl.resetFields();
+		};
+		const handleClose=(formEl: FormInstance | undefined)=>{
+			if (!formEl) return;
+			formEl.resetFields();
+		}
+		const activeName = ref('1');
+		// 新增弹窗
+		const Show = ref();
+		const daiAdd = () => {
+			Show.value.openDailog();
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = (type: any) => {
+			Shows.value.openDailog(type);
+		};
+		// 点击上传
+		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 userId = (val: any, type: any) => {
+			if (type == 1) {
+				form.value.examinePersonId = val.uid;
+				form.value.examinePersonName = val.realName;
+			} else if (type == 2) {
+				let uid=[]
+				let realName=[]
+				for(let i=0;i<val.length;i++){
+					uid.push(val[i].uid)
+					realName.push(val[i].realName)
+				}
+				form.value.beExaminedPersonId = uid.toString();
+				form.value.beExaminedPersonName =realName.toString();
+				console.log(form.value.beExaminedPersonId,form.value.beExaminedPersonName)
+			}
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				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();
+		const nameData1 = (val: any) => {
+			form.value.examineDepartmentName = val.depName;
+		};
+		const nameData2 = (val: any) => {
+			form.value.beExaminedDepartmentName = val.depName;
+			console.log(form.value);
+		};
+		return {
+			rules,
+			handleClose,
+			nameData1,
+			nameData2,
+			ruleFormRef,
+			department,
+			propse,
+			data,
+			userId,
+			activeName,
+			dialogVisible,
+			form,
+			titles,
+			disabled,
+			openDailog,
+			submitForm,
+			resetForm,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+			beforeRemove,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue b/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue
new file mode 100644
index 0000000..2c51d4a
--- /dev/null
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue
@@ -0,0 +1,241 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" title="新建考核标准设定" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="标准标题" size="default">
+						<el-input v-model="form.title"> </el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="适用范围" size="default">
+						<el-select v-model="form.applyRange" style="width: 100%" placeholder="请选择">
+							<el-option label="安全生产xxx" value="1" />
+							<el-option label="安全生产xxx" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<div v-if="clickType">
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="设定人" size="default">
+							<el-input v-model="form.setPersonId" disabled>
+								<template #append> <el-button :icon="Search" @click="daiInpt" /></template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2">
+						<el-form-item label="设定人部门" size="default">
+							<el-select v-model="form.setPersonDepartmentId" disabled style="width: 100%" placeholder="请选择">
+								<el-option label="Zone one" value="shanghai" />
+								<el-option label="Zone two" value="beijing" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="模板分类编码" size="default">
+						<el-input v-model="form.templateCode" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="合格分数" size="default">
+						<el-input v-model="form.acceptanceNumber" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2" v-if="clickType">
+					<el-form-item label="设定日期" size="default">
+						<el-date-picker disabled v-model="form.setTimem" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标分解" name="1">
+				<el-button type="primary" size="default" @click="daiAdd('新增','')">新增</el-button>
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="form.examineItemList" style="width: 100%">
+			<el-table-column align="center" prop="itemType" label="类型" width="180" />
+			<el-table-column align="center" prop="itemDetail" label="考核项目" width="180" />
+			<el-table-column align="center" prop="content" label="考核内容" />
+			<el-table-column align="center" prop="judgeStandard" label="评定标准" />
+			<el-table-column align="center" prop="memo" label="考核说明" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
+					<el-button link type="primary" @click="daiAdd('修改', scope.row)">修改</el-button>
+					<el-button link type="primary" @click="deleteA(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogKhS ref="Show" @onAdd="AddObj"></DailogKhS>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogKhS from './DailogKhS.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogKhS },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			examineItemList: [], //考核项目列表
+			setTimem: 1658386392466,
+			memo: '', ////备注信息
+			templateCode: '', ////模板分类编码
+			title: '', ////标准标题
+			setPersonId: 1, //设定人
+			acceptanceNumber: '', ////合格分数
+			setPersonDepartmentId: 2, //设定人部门
+			applyRange: '', ////适用范围
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		const clickType = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = `${title}安全考核管理`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getexamineTemplateDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			} else {
+				clickType.value = false;
+			}
+		};
+		// 接受传值
+		const AddObj = (val: any) => {
+			if (index.value == -1) {
+				form.value.examineItemList.push(val);
+			} else {
+				form.value.examineItemList[index.value] = val;
+			}
+		};
+		// 删除
+		const deleteA = (tag: any) => {
+			form.value.examineItemList.splice(form.value.examineItemList.indexOf(tag), 1);
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			goalManagementApi()
+				.getexamineTemplateAddOrUpdate(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 = {
+				examineItemList: [], //考核项目列表
+				setTimem: 1658386392466,
+				memo: '', ////备注信息
+				templateCode: '', ////模板分类编码
+				title: '', ////标准标题
+				setPersonId: 1, //设定人
+				acceptanceNumber: '', ////合格分数
+				setPersonDepartmentId: 2, //设定人部门
+				applyRange: '', ////适用范围
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				examineItemList: [], //考核项目列表
+				setTimem: 1658386392466,
+				memo: '', ////备注信息
+				templateCode: '', ////模板分类编码
+				title: '', ////标准标题
+				setPersonId: 1, //设定人
+				acceptanceNumber: '', ////合格分数
+				setPersonDepartmentId: 2, //设定人部门
+				applyRange: '', ////适用范围
+			};
+		};
+		const activeName = ref('1');
+		// 新增弹窗
+		const index = ref<any>();
+		const Show = ref();
+		const daiAdd = (title: string, data: any) => {
+			index.value = form.value.examineItemList.indexOf(data);
+			Show.value.openDailog(title, data);
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			index,
+			form,
+			dialogVisible,
+			deleteA,
+			AddObj,
+			openDailog,
+			activeName,
+			titles,
+			disabled,
+			submitForm,
+			resetForm,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			clickType,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue b/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue
new file mode 100644
index 0000000..98b6f83
--- /dev/null
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue
@@ -0,0 +1,133 @@
+<template>
+	<el-dialog v-model="dialogVisible"  :before-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="24">
+					<el-form-item label="类型">
+						<el-input v-model="form.itemType" type="textarea"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核项目">
+						<el-input v-model="form.itemDetail" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核内容">
+						<el-input v-model="form.content" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="评定标准">
+						<el-input v-model="form.judgeStandard" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核说明">
+						<el-input v-model="form.memo" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<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>
+			</span>
+		</template>
+	</el-dialog>
+	<!-- <DailogAdd ref="Show"></DailogAdd>
+  <DailogSearch ref="Shows"></DailogSearch> -->
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+// import DailogAdd from './DailogAdd.vue'
+// import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue'
+export default defineComponent({
+	// components:{DailogAdd,DailogSearch},
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			itemType: '', ////类型
+			memo: '', //备注
+			itemDetail: '', ////考核项目
+			content: '', ////考核内容
+			judgeStandard: '', ////评定标准
+		});
+		const disabled=ref(false)
+		const titles=ref()
+		const openDailog = (title: string, value: any) => {
+			dialogVisible.value = true;
+			titles.value=`${title}考核项目`
+			if (title == '查看') {
+				form.value = value;
+				disabled.value=true
+			}else if(title == '修改'){
+				disabled.value=false
+				form.value = value;
+			}
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onAdd', form.value);
+			form.value = {
+				itemType: '', ////类型
+				memo: '', //备注
+				itemDetail: '', ////考核项目
+				content: '', ////考核内容
+				judgeStandard: '', ////评定标准
+			};
+		};
+		// 取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				itemType: '', ////类型
+				memo: '', //备注
+				itemDetail: '', ////考核项目
+				content: '', ////考核内容
+				judgeStandard: '', ////评定标准
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			disabled,
+			titles,
+			dialogVisible,
+			openDailog,
+			submitForm,
+			resetForm,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue b/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue
new file mode 100644
index 0000000..01d64c1
--- /dev/null
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue
@@ -0,0 +1,177 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择安全目标指标" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.title" placeholder="标准标题" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="6" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" @click="listApi()">查询</el-button>
+								<el-button size="default" @click="reset">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete" @click="clear">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px" @cell-click="radio">
+					<el-table-column align="center" width="70px">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="title" label="标准标题" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					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"
+				/>
+			</el-col>
+			<el-col :span="7">
+			<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.title }}
+				</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="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';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup() {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+			listApi()
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+				pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				title: '', //标准标题
+			},
+		});
+		const listApi = () => {
+			goalManagementApi()
+				.getexamineTemplateList(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);
+					}
+				});
+		};
+    //   重置
+	const reset=()=>{
+		ruleForm.searchParams.title=""
+		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 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 clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			reset,
+			dialogVisible,
+			listApi,
+			openDailog,
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			Delete,
+			full,
+			toggleFullscreen,
+			radio1,
+			radio,
+			clear,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/performanceAppraisal/index.vue b/src/views/goalManagement/performanceAppraisal/index.vue
new file mode 100644
index 0000000..a1c9637
--- /dev/null
+++ b/src/views/goalManagement/performanceAppraisal/index.vue
@@ -0,0 +1,521 @@
+<template>
+	<div>
+		<div class="minCenter">
+			<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+				<el-tab-pane label="安全考核管理" name="1">
+					<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+						<el-row>
+							<el-col :span="4">
+								<el-form-item size="default">
+									<el-tree-select v-model="ruleForm.searchParams.examineDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" 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>
+					<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" plain :icon="Delete" @click="onDeleteAll">删除</el-button>
+						</div>
+					</div>
+					<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>
+								<div class="tableC">
+									<el-table :data="tableData.currentExamineDtoList" style="width: 100%">
+										<el-table-column align="center" prop="itemDetail" label="考核项目" />
+										<el-table-column align="center" prop="content" label="考核内容" />
+										<el-table-column align="center" prop="number" label="考核分数" />
+									</el-table>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column property="examineDate" align="center" :formatter="timeDate" label="考核日期" sortable />
+						<el-table-column property="examineDepartmentName" align="center" label="考核部门" sortable />
+						<el-table-column property="examinePersonId" label="考核人" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="beExaminedDepartmentName" label="被考核部门" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="examineTotalNumber" label="总分" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="numberDetailJson.number" label="考核结果" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="extraFile" label="附件" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250px">
+							<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>
+				</el-tab-pane>
+				<el-tab-pane label="考核标准设定" name="2">
+					<el-form :model="ruleForms" status-icon label-width="20px" class="topTitle">
+						<el-row>
+							<el-col :span="4">
+								<el-form-item size="default">
+									<el-input v-model="ruleForms.searchParams.title" placeholder="标准标题" />
+								</el-form-item>
+							</el-col>
+							<el-col :span="4">
+								<el-form-item>
+									<el-button size="default" type="primary" @click="listApis">查询</el-button>
+									<el-button size="default" @click="resetForms">重置</el-button>
+								</el-form-item>
+							</el-col>
+						</el-row>
+					</el-form>
+					<div class="btns">
+						<div>
+							<el-button size="default" type="primary" :icon="Plus" @click="openDs('新建')">新建</el-button>
+							<el-button size="default" :disabled="warnings" type="warning" plain :icon="EditPen">修改</el-button>
+							<el-button size="default" :disabled="dangers" type="danger" plain :icon="Delete"  @click="onDeleteAlls">删除</el-button>
+						</div>
+					</div>
+					<el-table ref="multipleTableRef" :data="tableDatas" style="width: 100%" @selection-change="handleSelectionChanges">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default>
+								<div class="tableC">
+									<el-table :data="tableDatas.examineItemList" style="width: 100%">
+										<el-table-column align="center" prop="itemType" label="类型" />
+										<el-table-column align="center" prop="itemDetail" label="考核项目" />
+										<el-table-column align="center" prop="content" label="考核内容" />
+										<el-table-column align="center" prop="judgeStandard" label="评定标准" />
+										<el-table-column align="center" prop="memo" label="考核说明" />
+									</el-table>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="标准标题" property="title" align="center" sortable />
+						<el-table-column property="applyRange" align="center" label="适用范围" sortable />
+						<el-table-column property="setPersonId" label="设定人" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPersonDepartmentId" label="设定人部门" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setTimem" label="设定日期" align="center" :formatter="timeDate" sortable show-overflow-tooltip />
+						<el-table-column property="templateCode" label="模板分类编码" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="acceptanceNumber" label="合格分数" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250px">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openDs('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openDs('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDeletes(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4s"
+							v-model:page-size="pageSize4s"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="totals"
+							@size-change="handleSizeChanges"
+							@current-change="handleCurrentChanges"
+						/>
+					</div>
+				</el-tab-pane>
+			</el-tabs>
+		</div>
+		<DailogAq ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAq>
+		<DailogKh ref="openAdds" @navAddorUpdata="onAddorUpdatas"></DailogKh>
+	</div>
+</template>
+<script lang="ts">
+import {timeDate} from '/@/assets/index.ts'
+import DailogAq from './component/DailogAq.vue';
+import DailogKh from './component/DailogKh.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAq, DailogKh },
+	setup() {
+		// 搜索条件 安全考核管理
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				examineDepartmentId: '',
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.examineDepartmentId = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getexamineMngList(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, ruleForm.searchParams.examineDepartmentId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineMngDelete(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(() => {
+					goalManagementApi()
+						.getexamineMngDelete(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('1');
+		const handleClick = (val: any) => {
+			if (val == '1') {
+				listApi();
+			}else{
+				listApis();
+			}
+		};
+		// 搜索条件 考核标准设定
+		const ruleForms = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				title: '', //标准标题
+			},
+		});
+		// 重置
+		const resetForms = () => {
+			ruleForm.searchParams.examineDepartmentId = '';
+		};
+		const listApis = () => {
+			goalManagementApi()
+				.getexamineTemplateList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableDatas.value = res.data.data;
+						currentPage4s.value = res.data.pageIndex;
+						pageSize4s.value = res.data.pageSize;
+						totals.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApis();
+			department()
+		});
+		const onAddorUpdatas = () => {
+			listApis();
+		};
+		// 表格
+		const tableDatas = ref();
+		const currentPage4s = ref();
+		const pageSize4s = ref();
+		const totals = ref();
+		const handleSizeChanges = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForms.pageSize = val;
+			listApis();
+		};
+		const handleCurrentChanges = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForms.pageIndex = val;
+			listApis();
+		};
+		// 弹窗
+		const openAdds = ref();
+		const openDs = (title: String, id: number) => {
+			openAdds.value.openDailog(title, ruleForm.searchParams.examineDepartmentId, id);
+		};
+		// 删除
+		const onDeletes = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineTemplateDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApis();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warnings = ref(true);
+		const dangers = ref(true);
+		const deletAlls = ref();
+		const handleSelectionChanges = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAlls.value = arr;
+			if (val.length == 1) {
+				warnings.value = false;
+				dangers.value = false;
+			} else if (val.length == 0) {
+				warnings.value = true;
+				dangers.value = true;
+			} else {
+				warnings.value = true;
+				dangers.value = false;
+			}
+		};
+		const onDeleteAlls = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineTemplateDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApis();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+			//部门树
+		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 {
+			timeDate,
+			department,
+			propse,
+			data,
+			activeName,
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			ruleForms,
+			resetForms,
+			listApis,
+			onAddorUpdatas,
+			tableDatas,
+			currentPage4s,
+			pageSize4s,
+			totals,
+			handleSizeChanges,
+			handleCurrentChanges,
+			openAdds,
+			openDs,
+			onDeletes,
+			warnings,
+			dangers,
+			deletAlls,
+			handleSelectionChanges,
+			onDeleteAlls,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 20px;
+}
+.topTitle {
+	padding: 5px 0 20px 0;
+	border-bottom: 1px solid #dedede;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
diff --git a/src/views/goalManagement/processForms/component/formInformationTop.vue b/src/views/goalManagement/processForms/component/formInformationTop.vue
new file mode 100644
index 0000000..5f34405
--- /dev/null
+++ b/src/views/goalManagement/processForms/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="安全目标指标" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<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="年度" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<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/views/goalManagement/processForms/component/formInformationTops.vue b/src/views/goalManagement/processForms/component/formInformationTops.vue
new file mode 100644
index 0000000..ba671e5
--- /dev/null
+++ b/src/views/goalManagement/processForms/component/formInformationTops.vue
@@ -0,0 +1,162 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="11">
+				<el-form-item label="安全目标指标" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="目标指标编号" size="default">
+					<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="年度" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="责任部门" size="default">
+					<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="改进期限" size="default">
+					<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="发起人" size="default">
+					<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="发起时间" size="default">
+					<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
+				</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:20px 0 0px 0;
+}
+</style>
diff --git a/src/views/goalManagement/processForms/component/lowerPlate.vue b/src/views/goalManagement/processForms/component/lowerPlate.vue
new file mode 100644
index 0000000..3eea9f5
--- /dev/null
+++ b/src/views/goalManagement/processForms/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="流程标题" size="default">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" 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" size="default">
+						<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" size="default">
+						<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/views/goalManagement/processForms/processForms.vue b/src/views/goalManagement/processForms/processForms.vue
new file mode 100644
index 0000000..331337a
--- /dev/null
+++ b/src/views/goalManagement/processForms/processForms.vue
@@ -0,0 +1,124 @@
+<template>
+	<div>
+	<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;
+}
+.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;
+}
+</style>
diff --git a/src/views/goalManagement/safetyAssessment/component/Dailog.vue b/src/views/goalManagement/safetyAssessment/component/Dailog.vue
new file mode 100644
index 0000000..7639890
--- /dev/null
+++ b/src/views/goalManagement/safetyAssessment/component/Dailog.vue
@@ -0,0 +1,137 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="目标分解" width="70%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.qName" :disabled="disabled">
+							<template #append> <el-button :icon="Search" @click="daiInpt" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.indexNum" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.year" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<el-input v-model="form.value" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+			<el-tab-pane label="目标指标分解" name="1"> </el-tab-pane>
+		</el-tabs>
+		<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" prop="address" label="上报值" />
+			<el-table-column align="center" prop="address" label="上报时间" />
+			<el-table-column align="center" prop="address" 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-button link type="primary">查看</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<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>
+	<DailogSearch ref="Shows" @backNum="onNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogSearch },
+	setup() {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({});
+		const targetType = ref();
+		const disabled = ref(false);
+		const titles = ref();
+		const openDailog = (title: string, type: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = title;
+			targetType.value = type;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			}
+		};
+		const onNumber = (e: object) => {
+			form.value = e;
+		};
+		// 导航
+		const activeName = ref('1');
+		// 表格
+		const tableData = ref([]);
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog(targetType.value);
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			dialogVisible,
+			openDailog,
+			targetType,
+			onNumber,
+			disabled,
+			titles,
+			activeName,
+			tableData,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/safetyAssessment/index.vue b/src/views/goalManagement/safetyAssessment/index.vue
new file mode 100644
index 0000000..4925e9b
--- /dev/null
+++ b/src/views/goalManagement/safetyAssessment/index.vue
@@ -0,0 +1,212 @@
+<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.indexNum" placeholder="请输入目标指标" />
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" 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>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="考核指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" width="300" sortable show-overflow-tooltip>
+					<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="View" @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>
+			<Dailog ref="openAdd"></Dailog>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import Dailog from './component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.targetType = targetType.paneName;
+			listApi();
+		};
+		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 onDelete = (id: number) => {
+			var arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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 openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.targetType, id);
+		};
+
+		return {
+			listApi,
+			ruleForm,
+			resetForm,
+			handleClick,
+			tableData,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			onAddorUpdata,
+			total,
+			openAdd,
+			openD,
+			onDelete,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetDecompositionMonth/index.vue b/src/views/goalManagement/targetDecompositionMonth/index.vue
new file mode 100644
index 0000000..09e743f
--- /dev/null
+++ b/src/views/goalManagement/targetDecompositionMonth/index.vue
@@ -0,0 +1,282 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					<el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain>修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default>
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentId" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentId" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonId" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :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>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import search from '../targetSettings/component/search.vue';
+import Dailog from '../targetDecompositionYear/component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '2', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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 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 activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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 add=()=>{
+			listApi()
+		}
+		return {
+			add,
+			listApi,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue b/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
new file mode 100644
index 0000000..8960533
--- /dev/null
+++ b/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
@@ -0,0 +1,237 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" title="目标分解" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.qName" :disabled="disabled">
+							<template #append>
+								<el-button :icon="Search" @click="daiInpt" />
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.indexNum" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.year" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<el-input v-model="form.value" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标分解" name="1">
+				<el-button type="primary" size="default" @click="daiAdd('新增')" :disabled="disabled">新增</el-button>
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="formUp.targetDivideDetailList" style="width: 100%">
+			<el-table-column align="center" property="dutyDepartmentId" label="责任部门" width="180" />
+			<el-table-column align="center" property="value" label="考核指标" width="180" />
+			<el-table-column align="center" property="makerDepartmentId" label="制定人部门" />
+			<el-table-column align="center" property="makeDate" label="制定日期" :formatter="timeDate"/>
+			<el-table-column align="center" property="commitPersonName" label="上报人" />
+			<el-table-column align="center" property="操作">
+				<template #default="scope">
+					<el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
+					<el-button link :disabled="disabled" type="primary" @click="daiAdd('修改', scope.row)">修改</el-button>
+					<el-button link :disabled="disabled" type="primary" @click="Delete(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" v-if="disabled == false" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogAdd ref="Show" @onAdd="add"></DailogAdd>
+	<DailogSearch ref="Shows" @backNum="onNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import {timeDate} from '/@/assets/index.ts'
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogAdd from './DailogAdd.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { emit } from 'process';
+export default defineComponent({
+	components: { DailogAdd, DailogSearch},
+	setup(props,{emit}) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			qName: '',
+			indexNum: '',
+			year: '',
+			value: '',
+			targetDivideDetailList:[]
+		});
+		const targetType = ref();
+		const disabled = ref(false);
+		const titles = ref();
+		const openDailog = (title: string, type: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = title;
+			targetType.value = type;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							formUp.targetDivideDetailList=form.value.targetDivideDetailList
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			}
+		};
+		const onNumber = (val: object) => {
+			form.value = val;
+		};
+		// 导航
+		const activeName = ref('1');
+		// 表格
+		const tableData = ref([]);
+		// 新增弹窗
+		const index=ref<any>()
+		const Show = ref();
+		const daiAdd = (title: string, data: any) => {
+			index.value = formUp.targetDivideDetailList.indexOf(data);
+			Show.value.openDailog(title, data);
+		};
+		const formUp = reactive({
+			targetId: '', //关联的目标指标/外键
+			delTargetDivideDetails: '', //要删除的目标指标分解ID,多个用逗号隔开
+			targetDivideDetailList: [], //目标指标分解列表
+		});
+		const add = (val: any) => {
+            if(index.value==-1){
+				formUp.targetDivideDetailList.push(val);
+			}else{
+				formUp.targetDivideDetailList[index.value] = val;
+			}
+			
+			// let obj=JSON.parse(JSON.stringify(form.value))
+		};
+		// 新增
+		const submitForm = () => {
+			formUp.delTargetDivideDetails=arr.value.toString()
+			formUp.targetId = form.value.id;
+			goalManagementApi()
+				.gettargetDivideDetail(formUp)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						dialogVisible.value = false;
+						emit("addList")
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+				form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList:[]
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		const arr=ref([])
+		// 删除
+		const Delete = (data: any) => {
+			formUp.targetDivideDetailList.splice(form.value.targetDivideDetailList.indexOf(data), 1);
+			formUp.targetId = data.targetId;
+			arr.value.push(data.id)
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog(targetType.value);
+		};
+		// 关闭
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList:[]
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		// 时间格式处理
+		// const timeDate = (data: any) => {
+		// 	let result = new Date(data).getTime();
+		// 	return result;
+		// };
+		return {
+			index,
+			timeDate,
+			arr,
+			form,
+			dialogVisible,
+			openDailog,
+			activeName,
+			tableData,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			onNumber,
+			targetType,
+			disabled,
+			resetForm,
+			titles,
+			add,
+			formUp,
+			submitForm,
+			Delete,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue b/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
new file mode 100644
index 0000000..9786b4e
--- /dev/null
+++ b/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
@@ -0,0 +1,220 @@
+<template>
+	<el-dialog v-model="dialogVisible" :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" ref="ruleFormRef" :rules="rules">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="责任部门" prop="dutyDepartmentId" size="default">
+						<el-tree-select v-model="form.dutyDepartmentId" check-strictly="true" :data="data" class="w100" :props="propse" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核指标" prop="value" size="default">
+						<el-input v-model.number="form.value" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="制定人部门" prop="makerDepartmentId" size="default">
+						<el-tree-select v-model="form.makerDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="制定日期" prop="makeDate" size="default">
+						<el-date-picker v-model="form.makeDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="上报人" prop="commitPersonName" size="default">
+						<el-input v-model="form.commitPersonName">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2"> </el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="onUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, onMounted } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import DailogSearchUser from '../../../../components/DailogSearchUser/index.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const ruleFormRef = ref<FormInstance>()
+		const form = ref({
+			dutyDepartmentId: '', ////责任部门/外键
+			makerDepartmentId: '', ////制定人部门/外键
+			commitPersonId: '', ////上报人/外键
+			commitPersonName: '',
+			value: '', ////考核指标值
+			makeDate: '', ////制定日期
+		});
+		//部门
+		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',
+		};
+		onMounted(() => {
+			department();
+		});
+		const disabled = ref(false);
+		// 开启弹窗
+		const titles = ref();
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			titles.value = `${title}目标指标分解`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if (title == '修改') {
+				disabled.value = false;
+				form.value = data;
+			} else {
+				disabled.value = false;
+			}
+			dialogVisible.value = true;
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		const rules = reactive<FormRules>({
+			dutyDepartmentId: [
+				{
+					required: true,
+					message: '责任部门不能为空',
+					trigger: 'change',
+				},
+			],
+			makerDepartmentId: [
+				{
+					required: true,
+					message: '制定人部门不能为空',
+					trigger: 'change',
+				},
+			],
+			commitPersonId: [
+				{
+					required: true,
+					message: '上报人不能为空',
+					trigger: 'blur',
+				},
+			],
+			value: [
+				{
+					required: true,
+					message: '考核指标值不能为空',
+					trigger: 'blur',
+				},
+				{
+					type: 'number',
+					message: '考核指标值只能为数字类型',
+					trigger: 'blur',
+				},
+			],
+			makeDate: [
+				{
+					required: true,
+					message: '制定日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			commitPersonName: [],
+		});
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					emit('onAdd', form.value);
+					dialogVisible.value = false;
+					// handleClose(formEl)
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+
+		const resetForm = (formEl: FormInstance | undefined) => {
+			// console.log(formEl);
+			if (!formEl) return
+			formEl.resetFields();
+			// dialogVisible.value = false;
+		};
+		// const handleClose = (formEl: any) => {
+		// 	formEl.resetFields();
+		// };
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const data = ref();
+		const onUser = (e: any) => {
+			console.log(e)
+			form.value.commitPersonId = e.uid;
+			form.value.commitPersonName = e.realName;
+		};
+		return {
+			disabled,
+			titles,
+			// handleClose,
+			form,
+			propse,
+			department,
+			dialogVisible,
+			openDailog,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			data,
+			onUser,
+			ruleFormRef,
+			rules,
+			submitForm,
+			resetForm,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/index.vue b/src/views/goalManagement/targetDecompositionYear/index.vue
new file mode 100644
index 0000000..b4d29b8
--- /dev/null
+++ b/src/views/goalManagement/targetDecompositionYear/index.vue
@@ -0,0 +1,280 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					<el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain>修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default>
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="tableData.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentId" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentId" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonId" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :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>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import Dailog from './component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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 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 activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title,ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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 add=()=>{
+			listApi()
+		}
+		return {
+			listApi,
+			add,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
diff --git a/src/views/goalManagement/targetEscalation/component/Dailog.vue b/src/views/goalManagement/targetEscalation/component/Dailog.vue
new file mode 100644
index 0000000..b998c9b
--- /dev/null
+++ b/src/views/goalManagement/targetEscalation/component/Dailog.vue
@@ -0,0 +1,53 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="记录" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-table :data="tableData" style="width: 100%">
+			<el-table-column align="center" label="序号" type="index" width="80" />
+			<el-table-column align="center" prop="dutyDepartmentId" label="责任部门" />
+			<el-table-column align="center" prop="value" label="考核指标" />
+			<el-table-column align="center" prop="makerDepartmentId" label="制定部门" />
+			<el-table-column align="center" prop="makeDate" label="制定日期" />
+			<el-table-column align="center" prop="value" label="检查值" />
+			<el-table-column align="center" prop="commitPersonId" label="检查人" />
+			<el-table-column align="center" prop="makeDate" label="检查时间" />
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false">关闭</el-button>
+				<el-button type="primary" @click="dialogVisible = false">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref } from 'vue';
+import { FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	setup() {
+		const dialogVisible = ref(false);
+		const tableData = ref();
+		const openDailog = (data: any) => {
+			dialogVisible.value = true;
+			// console.log(data)
+			tableData.value = data;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			tableData,
+			openDailog,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
diff --git a/src/views/goalManagement/targetEscalation/index.vue b/src/views/goalManagement/targetEscalation/index.vue
new file mode 100644
index 0000000..d39c1f4
--- /dev/null
+++ b/src/views/goalManagement/targetEscalation/index.vue
@@ -0,0 +1,198 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+				<el-tab-pane label="检查" name="1"> </el-tab-pane>
+				<el-tab-pane label="上报" name="2"></el-tab-pane>
+				<el-tab-pane label="审核" name="3"></el-tab-pane>
+			</el-tabs>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column v-if="activeName == 1" label="操作" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="EditPen" @click="jumpFrom(0)">检查</el-button>
+						<el-button link type="primary" size="default" :icon="View" @click="openDai(scope.row.targetDivideDetailList)">记录</el-button>
+					</template>
+				</el-table-column>
+				<el-table-column v-if="activeName == 2" label="操作" align="center" show-overflow-tooltip>
+					<template #default>
+						<el-button link type="primary" size="default" :icon="EditPen" @click="jumpFrom(1)">上报</el-button>
+					</template>
+				</el-table-column>
+				<el-table-column v-if="activeName == 3" label="操作" align="center" show-overflow-tooltip>
+					<template #default>
+						<el-button link type="primary" size="default" :icon="EditPen" @click="jumpFrom">待审批</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>
+		<Dailog ref="Show"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import Dailog from './component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { useRouter } from 'vue-router';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			// let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.targetType = val.paneName;
+			listApi();
+		};
+		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 activeName = ref<any>('1');
+		// 记录弹窗
+		const Show = ref();
+		const openDai = (data: any) => {
+			Show.value.openDailog(data);
+		};
+		// 流程表单
+		const router = useRouter();
+		const jumpFrom = (data: any) => {
+			router.push({
+				path: '/processForms',
+				query: {
+					type: data,
+				},
+			});
+		};
+		return {
+			activeName,
+			total,
+			handleClick,
+			ruleForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			resetForm,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openDai,
+			router,
+			jumpFrom,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetImprovements/component/Dailogprove.vue b/src/views/goalManagement/targetImprovements/component/Dailogprove.vue
new file mode 100644
index 0000000..ee0c885
--- /dev/null
+++ b/src/views/goalManagement/targetImprovements/component/Dailogprove.vue
@@ -0,0 +1,105 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="Tips" width="50%" :before-close="handleClose">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="责任部门" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="改进期限" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2" >
+					<el-form-item label="发起人" size="default">
+						<el-input v-model="model"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="发起时间" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标" name="first"></el-tab-pane>
+		</el-tabs>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false">关闭</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Plus, Delete, Upload, Download, Refresh, View, Search, FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	setup() {
+		const dialogVisible = ref(false);
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+		const openDailog = () => {
+			dialogVisible.value = true;
+		};
+		const activeName = ref('first');
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			form,
+			openDailog,
+			activeName,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetImprovements/index.vue b/src/views/goalManagement/targetImprovements/index.vue
new file mode 100644
index 0000000..b273902
--- /dev/null
+++ b/src/views/goalManagement/targetImprovements/index.vue
@@ -0,0 +1,307 @@
+<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.pass" placeholder="安全目标指标" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="4">
+				<el-form-item>
+					<el-button type="primary" size="default" @click="submitForm(ruleFormRef)">查询</el-button>
+					<el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+				</el-form-item>
+			</el-col>
+		</el-row>
+	</el-form>
+	<div class="minCenter">
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+			<el-tab-pane label="发起改进" name="1">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+					<el-table-column label="序号" align="center" type="index" width="70" />
+					<el-table-column label="安全目标指标" align="center" sortable>
+						<template #default="scope">{{ scope.row.date }}</template>
+					</el-table-column>
+					<el-table-column property="name" align="center" label="目标指标编号" sortable />
+					<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="上报值" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核时间" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核结果" align="center" sortable show-overflow-tooltip />
+					<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+						<template #default>
+							<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+							<el-button link type="primary" size="default" :icon="Delete">删除</el-button>
+						</template>
+					</el-table-column>
+				</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-tab-pane>
+			<el-tab-pane label="整改" name="2">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+					<el-table-column label="序号" align="center" type="index" width="70" />
+					<el-table-column label="安全目标指标" align="center" sortable>
+						<template #default="scope">{{ scope.row.date }}</template>
+					</el-table-column>
+					<el-table-column property="name" align="center" label="目标指标编号" sortable />
+					<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="改进期限" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="发起人" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="发起时间" align="center" sortable show-overflow-tooltip />
+					<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+						<template #default>
+							<el-button link type="primary" size="default" :icon="View" @click="openDai">查看</el-button>
+							<el-button link type="primary" size="default" :icon="Delete" @click="jump">整改上报</el-button>
+						</template>
+					</el-table-column>
+				</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-tab-pane>
+			<el-tab-pane label="验证" name="3">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+			<el-table-column label="序号" align="center" type="index" width="70" />
+			<el-table-column label="安全目标指标" align="center" sortable>
+				<template #default="scope">{{ scope.row.date }}</template>
+			</el-table-column>
+			<el-table-column property="name" align="center" label="目标指标编号" sortable />
+			<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改值" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改时间" align="center" sortable show-overflow-tooltip />
+			<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+				<template #default>
+					<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+					<el-button link type="primary" size="default" :icon="Delete">删除</el-button>
+				</template>
+			</el-table-column>
+		</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-tab-pane>
+			<el-tab-pane label="完成" name="4">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+			<el-table-column label="序号" align="center" type="index" width="70" />
+			<el-table-column label="安全目标指标" align="center" sortable>
+				<template #default="scope">{{ scope.row.date }}</template>
+			</el-table-column>
+			<el-table-column property="name" align="center" label="目标指标编号" sortable />
+			<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改值" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改时间" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="验证结果" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="验证日期" align="center" sortable show-overflow-tooltip />
+			<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+				<template #default>
+					<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+					<el-button link type="primary" size="default" :icon="Delete">审批进度</el-button>
+				</template>
+			</el-table-column>
+		</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-tab-pane>
+		</el-tabs>
+	</div>
+	<Dailogprove ref="Show"></Dailogprove>
+	</div>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+interface User {
+	date: string;
+	name: string;
+	address: string;
+}
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+import Dailogprove from './component/Dailogprove.vue';
+import { useRouter } from 'vue-router';
+export default defineComponent({
+	components: { ElButton, ElInput,Dailogprove},
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		const resetForm = (formEl: FormInstance | undefined) => {
+			console.log(!formEl);
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 下方导航与表格
+		const activeName = ref('1');
+		const handleClick = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		const formatter = (row: User, column: TableColumnCtx<User>) => {
+			return row.address;
+		};
+
+		const tableData: User[] = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-08',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-06',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-07',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		const currentPage4 = ref(4);
+		const pageSize4 = ref(100);
+		const small = ref(false);
+		const disabled = ref(false);
+		const background = ref(false);
+		const handleSizeChange = (val: number) => {
+			console.log(`${val} items per page`);
+		};
+		const handleCurrentChange = (val: number) => {
+			console.log(`current page: ${val}`);
+		};
+        const Show=ref()
+		const openDai=()=>{
+			Show.value.openDailog()
+		}
+		const router=useRouter()
+		const jump=()=>{
+       router.push({
+		   path:"/processForms"
+	   })
+		}
+		return {
+			ruleForm,
+			resetForm,
+			activeName,
+			handleClick,
+			tableData,
+			formatter,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			small,
+			disabled,
+			background,
+			Show,
+			router,
+			jump,
+			openDai,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/component/dailogAdd.vue b/src/views/goalManagement/targetSettings/component/dailogAdd.vue
new file mode 100644
index 0000000..f0fdef8
--- /dev/null
+++ b/src/views/goalManagement/targetSettings/component/dailogAdd.vue
@@ -0,0 +1,198 @@
+<template>
+	<el-dialog v-model="Shows" @close="handleClose(ruleFormRef)" :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" ref="ruleFormRef" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" prop="qName" size="default">
+						<el-input v-model="form.qName" placeholder="请填写安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" prop="indexNum" size="default">
+						<el-input v-model="form.indexNum" placeholder="请填写目标指标编号" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" prop="year" size="default">
+						<el-input v-model.number="form.year" maxlength="8" placeholder="请填写年度" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" prop="value" size="default">
+						<el-input v-model="form.value" placeholder="请填写指标值" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="指标级别" size="default" prop="level">
+						<el-select v-model="form.level" placeholder="请选择" style="width: 100%">
+							<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 :span="11" :offset="2">
+					<el-form-item label="完成期限" size="default" prop="completeDate">
+						<el-date-picker v-model="form.completeDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-form-item label="备注信息" prop="memo">
+				<el-input v-model="form.memo" size="default" type="textarea" />
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" v-if="titles == '查看目标设定' ? false : true" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, watch, defineComponent } from 'vue';
+import screenfull from 'screenfull';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import type { FormInstance, FormRules } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, Search, FullScreen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props, { emit }) {
+		let Shows = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			indexNum: '', //目标指标编号
+			qName: '', //安全目标指标
+			year: '', //年度
+			level: '', ////指标级别 1:公司级 2:部门分厂级 3:工段班组级
+			memo: '', ////备注信息
+			targetType: '', ////指标类型 1:年指标 2:月指标
+			completeDate: '', ////完成期限
+			divideStatus: '2', ////分解状态 1:已分解 2:未分解
+			value: '', ////指标值
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDialog = (title: string, value: any, id: number) => {
+			Shows.value = true;
+			titles.value = `${title}目标设定`;
+			form.value.targetType = value;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const rules = reactive<FormRules>({
+			qName: [
+				{
+					required: true,
+					message: '安全目标指标不能为空',
+					trigger: 'change',
+				},
+			],
+			indexNum: [
+				{
+					required: true,
+					message: '目标指标编号不能为空',
+					trigger: 'change',
+				},
+			],
+			year: [
+				{
+					required: true,
+					message: '年度不能为空',
+					trigger: 'change',
+				},
+			],
+			value: [
+				{
+					required: true,
+					message: '指标值不能为空',
+					trigger: 'change',
+				},
+			],
+			level:[],
+			completeDate:[],
+			memo:[]
+
+		});
+		// 提交
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					Shows.value = false;
+					goalManagementApi()
+						.getTargetMngAddOrupdata(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('navAddorUpdata');
+							} else {
+								ElMessage.error(res.data.msg);
+								formEl.resetFields();
+							}
+						});
+						formEl.resetFields();
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		//   取消
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			Shows.value = false;
+		};
+		const handleClose = (formEl: FormInstance | undefined) => {
+			formEl.resetFields();
+		};
+		return {
+			openDialog,
+			handleClose,
+			titles,
+			Shows,
+			form,
+			full,
+			disabled,
+			toggleFullscreen,
+			rules,
+			ruleFormRef,
+			submitForm,
+			resetForm,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/component/search.vue b/src/views/goalManagement/targetSettings/component/search.vue
new file mode 100644
index 0000000..35b1a6a
--- /dev/null
+++ b/src/views/goalManagement/targetSettings/component/search.vue
@@ -0,0 +1,52 @@
+<template>
+	<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+		<el-row>
+			<el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.pass" size="default" placeholder="安全目标指标" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" size="default" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="16">
+				<el-form-item>
+					<el-button type="primary" size="default" @click="submitForm(ruleFormRef)">查询</el-button>
+					<el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+				</el-form-item>
+			</el-col>
+		</el-row>
+	</el-form>
+</template>
+<script lang="ts">
+import { ref, reactive, defineComponent } from 'vue';
+import {
+  FormInstance,
+} from "element-plus";
+export default defineComponent({
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+        const resetForm = (formEl: FormInstance | undefined) => {
+      console.log(!formEl);
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+		return {
+			ruleForm,
+            resetForm
+		};
+	},
+});
+</script>
+<style scoped>
+  .topTitle {
+  background-color: #fff;
+  padding: 20px 0px 20px 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/index.vue b/src/views/goalManagement/targetSettings/index.vue
new file mode 100644
index 0000000..63a96fc
--- /dev/null
+++ b/src/views/goalManagement/targetSettings/index.vue
@@ -0,0 +1,297 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<el-tabs v-model="ruleForm.searchParams.targetType" class="demo-tabs" @tab-click="handleClick">
+				<div class="btns">
+					<div>
+						<el-button type="primary" size="default" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button type="danger" :disabled="danger" size="default" @click="onDeleteAll" :icon="Delete" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="upButton"></el-button>
+                <el-button size="default" :icon="Download"></el-button>
+                <el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<el-tab-pane label="目标定制(年)" name="1"> </el-tab-pane>
+				<el-tab-pane label="目标定制(月)" name="2"></el-tab-pane>
+			</el-tabs>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="level" label="指标级别" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="completeDate" label="完成期限" align="center" :formatter="timeDate" sortable show-overflow-tooltip />
+				<el-table-column label="状态" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<span v-if="scope.row.divideStatus == 1">已分解</span>
+						<span v-if="scope.row.divideStatus == 2">未分解</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" width="300" sortable show-overflow-tooltip>
+					<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="View" @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>
+			<dailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></dailogAdd>
+			<upData ref="upShow"></upData>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import dailogAdd from './component/dailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import upData from '../../../components/updata/updata.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, dailogAdd, upData },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(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);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.targetType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const small = ref(false);
+		const disabled = ref(false);
+		const background = ref(false);
+		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.openDialog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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(() => {
+					goalManagementApi()
+						.getTargetMngDelete(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 upShow = ref();
+		// const upButton = () => {
+		// 	upShow.value.openDialog();
+		// };
+		return {
+			timeDate,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			handleClick,
+			openAdd,
+			openD,
+			// upShow,
+			// upButton,
+			small,
+			disabled,
+			background,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			listApi,
+			ruleForm,
+			resetForm,
+			onAddorUpdata,
+			onDelete,
+			handleSelectionChange,
+			deletAll,
+			danger,
+			onDeleteAll,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
diff --git a/src/views/intellectInspect/inspectBigScreen/index.vue b/src/views/intellectInspect/inspectBigScreen/index.vue
new file mode 100644
index 0000000..53838fc
--- /dev/null
+++ b/src/views/intellectInspect/inspectBigScreen/index.vue
@@ -0,0 +1,704 @@
+<template>
+    <div class="container">
+        <div class="big-title" @click="goBack"><span></span>大型实验室智能巡检系统<span></span></div>
+        <div style="font-size: 14px; color: #00ffff">{{ present }}</div>
+        <div class="blocks">
+            <div class="current-data">
+                <div class="data-area">
+                    <img src="../../../assets/loginPage/xj-icon.png" />
+                    <div>当前巡检:<span>实验室装置区</span></div>
+                </div>
+                <div class="data-spot">
+                    <div>
+                        <span>巡检点</span>
+                        <p>3970A</p>
+                    </div>
+                    <div>
+                        <span>指标</span>
+                        <p>压力</p>
+                    </div>
+                </div>
+            </div>
+            <div class="line-map">
+                <div class="item item-t item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73017</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73018</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73016</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73019</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80℃</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-t item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970C</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="item item-t undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970D</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="item finish">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <span></span>
+                    <p>完成巡检</p>
+                </div>
+                <div class="item start">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <span></span>
+                    <p>开始巡检</p>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73020</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970B</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="pic-tit water">
+                    <img src="../../../assets/loginPage/equipment.JPG" />
+                    <p>实验室装置区</p>
+                </div>
+                <div></div>
+                <div class="pic-tit">
+                    <img src="../../../assets/loginPage/wind.JPG" />
+                    <p>实验室风机系统</p>
+                </div>
+                <div class="item item-l warning">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73021</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>130℃</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970A</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="pic-tit water">
+                    <img src="../../../assets/loginPage/watersys.JPG" />
+                    <p>实验室循环水系统</p>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80210</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80211</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80212</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80213</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+            </div>
+            <div class="section-1"></div>
+            <div class="section-2"></div>
+            <div class="section-3"></div>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    name: 'NewForm',
+    props: {},
+    data() {
+        return {
+            present: ''
+        };
+    },
+    created() {
+        setInterval(() => {
+            this.present = new Date().toLocaleString();
+        }, 1000);
+    }
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+@keyframes warn {
+    0% {
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0;
+    }
+
+    25% {
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.1;
+    }
+
+    50% {
+        transform: scale(0.5);
+        -webkit-transform: scale(0.5);
+        opacity: 0.3;
+    }
+
+    75% {
+        transform: scale(0.8);
+        -webkit-transform: scale(0.8);
+        opacity: 0.6;
+    }
+
+    100% {
+        transform: scale(1);
+        -webkit-transform: scale(1);
+        opacity: 0;
+    }
+}
+
+@keyframes warn1 {
+    0% {
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0;
+    }
+
+    25% {
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.1;
+    }
+
+    50% {
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.3;
+    }
+
+    75% {
+        transform: scale(0.5);
+        -webkit-transform: scale(0.5);
+        opacity: 0.6;
+    }
+
+    100% {
+        transform: scale(0.8);
+        -webkit-transform: scale(0.8);
+        opacity: 0;
+    }
+}
+
+@keyframes circle {
+    0% {
+        transform: rotate(0);
+        -webkit-transform: rotate(0);
+    }
+    100% {
+        transform: rotate(360deg);
+        -webkit-transform: rotate(360deg);
+    }
+}
+.container {
+    width: 100%;
+    height: 100%;
+    position: relative;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    background: url('../../../assets/loginPage/map-bg.jpg') no-repeat center;
+    background-size: 100% 100%;
+    .big-title {
+        height: 40px;
+        line-height: 40px;
+        font-size: 28px;
+        font-weight: bold;
+        margin: 10px 0 20px;
+        text-align: center;
+        color: #fff;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+
+        span {
+            width: 60px;
+            height: 1px;
+            background: #36fcfc;
+            margin: 0 20px;
+        }
+    }
+
+    .blocks {
+        position: relative;
+        width: 100%;
+        height: 100%;
+        padding: 20px 20px 20px 100px;
+        box-sizing: border-box;
+        .line-map {
+            position: absolute;
+            width: calc(100% - 120px);
+            left: 110px;
+            top: 10px;
+            flex-direction: column;
+            align-items: center;
+            z-index: 99;
+            display: grid;
+            grid-template-columns: repeat(7, 1fr);
+            grid-gap: 0;
+
+            .item {
+                width: calc((100vw - 120px) / 7);
+                height: calc((100vh - 130px) / 5);
+                padding: 20px 40px 20px 20px;
+                position: relative;
+                box-sizing: border-box;
+
+                section {
+                    width: 28px;
+                    height: 28px;
+                    border-radius: 50%;
+                    position: absolute;
+                    border: 1px solid #00ff66;
+                    top: -14px;
+                    left: -14px;
+
+                    .dot {
+                        position: absolute;
+                        width: 18px;
+                        height: 18px;
+                        left: 4px;
+                        top: 4px;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border: 1px solid #00ff66;
+                        border-radius: 50%;
+                        background-color: #00ff66;
+                        z-index: 2;
+                    }
+                    .pulse {
+                        position: absolute;
+                        width: 56px;
+                        height: 56px;
+                        left: -15px;
+                        top: -15px;
+                        border: 1px solid #00ff66;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border-radius: 50%;
+                        z-index: 1;
+                        opacity: 0;
+                        -webkit-animation: warn 2s ease-out;
+                        -moz-animation: warn 2s ease-out;
+                        animation: warn 2s ease-out;
+                        -webkit-animation-iteration-count: infinite;
+                        -moz-animation-iteration-count: infinite;
+                        animation-iteration-count: infinite;
+                        box-shadow: 1px 1px 30px #00ff66;
+                    }
+                    .pulse1 {
+                        position: absolute;
+                        width: 56px;
+                        height: 56px;
+                        left: -15px;
+                        top: -15px;
+                        border: 1px solid #3399ff;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border-radius: 50%;
+                        z-index: 1;
+                        opacity: 0;
+                        -webkit-animation: warn1 2s ease-out;
+                        -moz-animation: warn1 2s ease-out;
+                        animation: warn1 2s ease-out;
+                        -webkit-animation-iteration-count: infinite;
+                        -moz-animation-iteration-count: infinite;
+                        animation-iteration-count: infinite;
+                        box-shadow: 1px 1px 30px #3399ff;
+                    }
+                }
+                & > div {
+                    padding: 10px 0;
+                    border-radius: 8px;
+                    background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2));
+                    border: 1px solid rgba(54, 252, 252, 0.6);
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: center;
+
+                    div {
+                        &:nth-of-type(2) {
+                            margin: 5px 0;
+                        }
+
+                        span {
+                            display: inline-block;
+                            width: 50%;
+                            font-size: 14px;
+                            color: #fff;
+                            text-align: left;
+
+                            &:first-of-type {
+                                text-align: right;
+                                color: rgba(255, 255, 255, 0.8);
+                            }
+                        }
+                    }
+                }
+
+                p {
+                    width: 140px;
+                    height: 50px;
+                    font-size: 18px;
+                    line-height: 48px;
+                    text-align: center;
+                    color: #fff;
+                    border-radius: 8px;
+                    background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4));
+                    border: 1px solid rgba(54, 252, 252, 0.6);
+                }
+            }
+
+            .item-t {
+                border-top: 1px solid #36fcfc;
+            }
+            .item-l {
+                border-left: 1px solid #36fcfc;
+            }
+            .warning {
+                & > section {
+                    border: 1px solid #ff0000;
+
+                    .dot {
+                        border: 1px solid #ff0000;
+                        background: #ff0000;
+                    }
+                    .pulse {
+                        border: 1px solid #ff0000;
+                        box-shadow: 1px 1px 30px #ff0000;
+                    }
+                    .pulse1 {
+                        border: 1px solid #ff0000;
+                        box-shadow: 1px 1px 30px #ff0000;
+                    }
+                }
+
+                & > div {
+                    div:last-of-type {
+                        span:nth-of-type(2) {
+                            color: #ff0000;
+                        }
+                    }
+                }
+            }
+            .undone {
+                & > section {
+                    border: 1px solid #ccc;
+
+                    .dot {
+                        border: 1px solid #ccc;
+                        background: #ccc;
+                    }
+                    .pulse {
+                        display: none;
+                    }
+                    .pulse1 {
+                        display: none;
+                    }
+                }
+            }
+            .pic-tit {
+                display: flex;
+                width: calc((100vw - 120px) / 7);
+                height: 160px;
+                padding: 20px;
+                transform: translate(-20px, -40%);
+                flex-direction: column;
+                align-items: flex-start;
+
+                img {
+                    width: calc((100vw - 120px) / 7 - 40px);
+                    height: 90px;
+                    margin-bottom: 10px;
+                    border-radius: 4px;
+                }
+                p {
+                    font-size: 16px;
+                    color: #00ffff;
+                    font-weight: bold;
+                }
+            }
+
+            .water {
+                transform: none;
+            }
+            .start {
+                padding: 40px 0;
+                p {
+                    margin-top: -21px;
+                    margin-left: 20px;
+                }
+                span {
+                    width: 1px;
+                    height: 50px;
+                    background: #36fcfc;
+                    position: absolute;
+                    top: -10px;
+                    left: 0;
+                }
+                section {
+                    position: absolute;
+                    top: 30px;
+                    left: -14px;
+                }
+            }
+            .finish {
+                padding: 0 40px;
+                p {
+                    margin-top: -25px;
+                    margin-left: 4px;
+                }
+                span {
+                    width: 100%;
+                    height: 1px;
+                    background: #36fcfc;
+                    position: absolute;
+                    top: 0;
+                    left: calc(40px - 100%);
+                }
+                section {
+                    position: absolute;
+                    top: -14px;
+                    left: 30px;
+                }
+            }
+        }
+        .current-data {
+            position: absolute;
+            z-index: 999999;
+            width: 270px;
+            height: 142px;
+            left: 50%;
+            padding: 20px 30px;
+            box-sizing: border-box;
+            transform: translateX(-65%);
+            background: url('../../../assets/loginPage/xj-bg.png') no-repeat center;
+            background-size: 100% 100%;
+
+            .data-area {
+                display: flex;
+                align-items: center;
+                border-bottom: 1px solid #00ffff;
+                font-weight: bold;
+                padding-bottom: 10px;
+                box-sizing: border-box;
+
+                img {
+                    width: 30px;
+                    height: 30px;
+                    margin-right: 10px;
+                    animation: circle 1s ease-in-out infinite;
+                }
+
+                div {
+                    font-size: 15px;
+                    color: rgba(255, 255, 255, 0.8);
+
+                    span {
+                        color: #00ffff;
+                    }
+                }
+            }
+
+            .data-spot {
+                display: flex;
+                align-items: flex-start;
+                margin-top: 10px;
+
+                & > div {
+                    display: flex;
+                    flex-direction: column;
+                    align-items: center;
+                    width: 50%;
+                    font-size: 14px;
+                    color: rgba(255, 255, 255, 0.8);
+
+                    p {
+                        margin-top: 6px;
+                        color: #00ffff;
+                    }
+
+                    &:first-of-type {
+                        border-right: 1px solid #36fcfc;
+                    }
+                }
+            }
+        }
+        .section-1 {
+            position: absolute;
+            left: 70px;
+            top: -10px;
+            width: calc((200vw - 240px) / 7 + 60px);
+            height: 630px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
+        .section-2 {
+            position: absolute;
+            left: calc((400vw - 480px) / 7 + 70px);
+            top: 150px;
+            width: calc((200vw - 240px) / 7 + 60px);
+            height: 470px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
+        .section-3 {
+            position: absolute;
+            left: 100px;
+            top: 630px;
+            width: calc((500vw - 600px) / 7 + 30px);
+            height: 180px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
+    }
+}
+</style>
diff --git a/src/views/intellectInspect/intelligentMap/index.vue b/src/views/intellectInspect/intelligentMap/index.vue
index 3df2f3c..507c8c1 100644
--- a/src/views/intellectInspect/intelligentMap/index.vue
+++ b/src/views/intellectInspect/intelligentMap/index.vue
@@ -1,716 +1,710 @@
 <template>
-  <div class="container">
-    <div class="big-title"><span></span>大型实验室智能巡检系统<span></span></div>
-    <div style="font-size: 14px;color: #00ffff">{{present}}</div>
-    <div class="blocks">
-      <div class="current-data">
-        <div class="data-area">
-          <img src="../../../assets/loginPage/xj-icon.png">
-          <div>当前巡检:<span>实验室装置区</span></div>
-        </div>
-        <div class="data-spot">
-          <div>
-            <span>巡检点</span>
-            <p>3970A</p>
-          </div>
-          <div>
-            <span>指标</span>
-            <p>压力</p>
-          </div>
-        </div>
-      </div>
-      <div class="line-map">
-        <div class="item item-t item-l">
-            <section>
-              <div class="dot"></div>
-              <div class="pulse"></div>
-              <div class="pulse1"></div>
-            </section>
-            <div>
-              <div><span>巡检点:</span><span>73017</span></div>
-              <div><span>定位状态:</span><span>已完成</span></div>
-              <div><span>压力:</span><span>3.6Bar</span></div>
+    <div class="container">
+        <div class="big-title" @click="goBack"><span></span>大型实验室智能巡检系统<span></span></div>
+        <div style="font-size: 14px; color: #00ffff">{{ present }}</div>
+        <div class="blocks">
+            <div class="current-data">
+                <div class="data-area">
+                    <img src="../../../assets/loginPage/xj-icon.png" />
+                    <div>当前巡检:<span>实验室装置区</span></div>
+                </div>
+                <div class="data-spot">
+                    <div>
+                        <span>巡检点</span>
+                        <p>3970A</p>
+                    </div>
+                    <div>
+                        <span>指标</span>
+                        <p>压力</p>
+                    </div>
+                </div>
             </div>
+            <div class="line-map">
+                <div class="item item-t item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73017</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73018</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div></div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73016</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73019</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80℃</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-t item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970C</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="item item-t undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970D</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="item finish">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <span></span>
+                    <p>完成巡检</p>
+                </div>
+                <div class="item start">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <span></span>
+                    <p>开始巡检</p>
+                </div>
+                <div class="item item-l">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73020</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>压力:</span><span>3.6Bar</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970B</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div class="pic-tit water">
+                    <img src="../../../assets/loginPage/equipment.JPG" />
+                    <p>实验室装置区</p>
+                </div>
+                <div></div>
+                <div class="pic-tit">
+                    <img src="../../../assets/loginPage/wind.JPG" />
+                    <p>实验室风机系统</p>
+                </div>
+                <div class="item item-l warning">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>73021</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>130℃</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="item item-l undone">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>3970A</span></div>
+                        <div><span>定位状态:</span><span>未完成</span></div>
+                        <div><span>压力:</span><span>--</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+                <div class="pic-tit water">
+                    <img src="../../../assets/loginPage/watersys.JPG" />
+                    <p>实验室循环水系统</p>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80210</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80211</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item item-t">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80212</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div class="item">
+                    <section>
+                        <div class="dot"></div>
+                        <div class="pulse"></div>
+                        <div class="pulse1"></div>
+                    </section>
+                    <div>
+                        <div><span>巡检点:</span><span>80213</span></div>
+                        <div><span>定位状态:</span><span>已完成</span></div>
+                        <div><span>温度:</span><span>80摄氏度</span></div>
+                    </div>
+                </div>
+                <div></div>
+                <div></div>
+            </div>
+            <div class="section-1"></div>
+            <div class="section-2"></div>
+            <div class="section-3"></div>
         </div>
-        <div class="item item-l">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>73018</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>压力:</span><span>3.6Bar</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-        <div></div>
-        <div></div>
-        <div></div>
-        <div class="item item-l">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>73016</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>压力:</span><span>3.6Bar</span></div>
-          </div>
-        </div>
-        <div class="item item-l">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>73019</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>80℃</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-        <div class="item item-t item-l undone">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>3970C</span></div>
-            <div><span>定位状态:</span><span>未完成</span></div>
-            <div><span>压力:</span><span>--</span></div>
-          </div>
-        </div>
-        <div class="item item-t undone">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>3970D</span></div>
-            <div><span>定位状态:</span><span>未完成</span></div>
-            <div><span>压力:</span><span>--</span></div>
-          </div>
-        </div>
-        <div class="item finish">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <span></span>
-          <p>
-            完成巡检
-          </p>
-        </div>
-        <div class="item start">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <span></span>
-          <p>
-            开始巡检
-          </p>
-        </div>
-        <div class="item item-l">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>73020</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>压力:</span><span>3.6Bar</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-        <div class="item item-l undone">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>3970B</span></div>
-            <div><span>定位状态:</span><span>未完成</span></div>
-            <div><span>压力:</span><span>--</span></div>
-          </div>
-        </div>
-        <div class="pic-tit water">
-          <img src="../../../assets/loginPage/equipment.JPG">
-          <p>实验室装置区</p>
-        </div>
-        <div></div>
-        <div class="pic-tit">
-          <img src="../../../assets/loginPage/wind.JPG">
-          <p>实验室风机系统</p>
-        </div>
-        <div class="item item-l warning">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>73021</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>130℃</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-        <div class="item item-l undone">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>3970A</span></div>
-            <div><span>定位状态:</span><span>未完成</span></div>
-            <div><span>压力:</span><span>--</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-        <div class="pic-tit water">
-          <img src="../../../assets/loginPage/watersys.JPG">
-          <p>实验室循环水系统</p>
-        </div>
-        <div class="item item-t">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>80210</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>80摄氏度</span></div>
-          </div>
-        </div>
-        <div class="item item-t">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>80211</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>80摄氏度</span></div>
-          </div>
-        </div>
-        <div class="item item-t">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>80212</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>80摄氏度</span></div>
-          </div>
-        </div>
-        <div class="item">
-          <section>
-            <div class="dot"></div>
-            <div class="pulse"></div>
-            <div class="pulse1"></div>
-          </section>
-          <div>
-            <div><span>巡检点:</span><span>80213</span></div>
-            <div><span>定位状态:</span><span>已完成</span></div>
-            <div><span>温度:</span><span>80摄氏度</span></div>
-          </div>
-        </div>
-        <div></div>
-        <div></div>
-      </div>
-      <div class="section-1">
-
-      </div>
-      <div class="section-2">
-
-      </div>
-      <div class="section-3">
-
-      </div>
     </div>
-  </div>
 </template>
 
 <script>
 export default {
-  name: 'NewForm',
-  props: {
-
-  },
-  data(){
-    return{
-      present: ''
+    name: 'NewForm',
+    props: {},
+    data() {
+        return {
+            present: ''
+        };
+    },
+    created() {
+        setInterval(() => {
+            this.present = new Date().toLocaleString();
+        }, 1000);
+    },
+    methods: {
+        goBack() {
+            this.$router.go(-1);
+            // this.$router.push('/discriminate');
+        }
     }
-  },
-  created() {
-    setInterval(() => {
-      this.present = new Date().toLocaleString()
-    }, 1000)
-  }
-}
+};
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped lang="scss">
-  @keyframes warn {
+@keyframes warn {
     0% {
-      transform: scale(0.3);
-      -webkit-transform: scale(0.3);
-      opacity: 0.0;
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0;
     }
 
     25% {
-      transform: scale(0.3);
-      -webkit-transform: scale(0.3);
-      opacity: 0.1;
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.1;
     }
 
     50% {
-      transform: scale(0.5);
-      -webkit-transform: scale(0.5);
-      opacity: 0.3;
+        transform: scale(0.5);
+        -webkit-transform: scale(0.5);
+        opacity: 0.3;
     }
 
     75% {
-      transform: scale(0.8);
-      -webkit-transform: scale(0.8);
-      opacity: 0.6;
+        transform: scale(0.8);
+        -webkit-transform: scale(0.8);
+        opacity: 0.6;
     }
 
     100% {
-      transform: scale(1);
-      -webkit-transform: scale(1);
-      opacity: 0.0;
+        transform: scale(1);
+        -webkit-transform: scale(1);
+        opacity: 0;
     }
-  }
+}
 
-  @keyframes warn1 {
+@keyframes warn1 {
     0% {
-      transform: scale(0.3);
-      -webkit-transform: scale(0.3);
-      opacity: 0.0;
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0;
     }
 
     25% {
-      transform: scale(0.3);
-      -webkit-transform: scale(0.3);
-      opacity: 0.1;
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.1;
     }
 
     50% {
-      transform: scale(0.3);
-      -webkit-transform: scale(0.3);
-      opacity: 0.3;
+        transform: scale(0.3);
+        -webkit-transform: scale(0.3);
+        opacity: 0.3;
     }
 
     75% {
-      transform: scale(0.5);
-      -webkit-transform: scale(0.5);
-      opacity: 0.6;
+        transform: scale(0.5);
+        -webkit-transform: scale(0.5);
+        opacity: 0.6;
     }
 
     100% {
-      transform: scale(0.8);
-      -webkit-transform: scale(0.8);
-      opacity: 0.0;
+        transform: scale(0.8);
+        -webkit-transform: scale(0.8);
+        opacity: 0;
     }
-  }
-  
-  @keyframes circle {
+}
+
+@keyframes circle {
     0% {
-      transform: rotate(0);
-      -webkit-transform: rotate(0);
+        transform: rotate(0);
+        -webkit-transform: rotate(0);
     }
     100% {
-      transform: rotate(360deg);
-      -webkit-transform: rotate(360deg);
+        transform: rotate(360deg);
+        -webkit-transform: rotate(360deg);
     }
-  }
-  .container{
+}
+.container {
     width: 100%;
     height: 100%;
     position: relative;
     display: flex;
     flex-direction: column;
     align-items: center;
-    background: url("../../../assets/loginPage/map-bg.jpg") no-repeat center;
+    background: url('../../../assets/loginPage/map-bg.jpg') no-repeat center;
     background-size: 100% 100%;
-    .big-title{
-      height: 40px;
-      line-height: 40px;
-      font-size: 28px;
-      font-weight: bold;
-      margin: 10px 0 20px;
-      text-align: center;
-      color: #fff;
-      display: flex;
-      align-items: center;
-      justify-content: center;
+    .big-title {
+        height: 40px;
+        line-height: 40px;
+        font-size: 28px;
+        font-weight: bold;
+        margin: 10px 0 20px;
+        text-align: center;
+        color: #fff;
+        display: flex;
+        align-items: center;
+        justify-content: center;
 
-      span{
-        width: 60px;
-        height: 1px;
-        background: #36FCFC;
-        margin: 0 20px;
-      }
+        span {
+            width: 60px;
+            height: 1px;
+            background: #36fcfc;
+            margin: 0 20px;
+        }
     }
 
-    .blocks{
-      position: relative;
-      width: 100%;
-      height: 100%;
-      padding: 20px 20px 20px 100px;
-      box-sizing: border-box;
-      .line-map{
-        position: absolute;
-        width: calc(100% - 120px);
-        left: 110px;
-        top: 10px;
-        flex-direction: column;
-        align-items: center;
-        z-index: 99;
-        display: grid;
-        grid-template-columns: repeat(7,1fr);
-        grid-gap: 0;
-
-          .item{
-            width: calc((100vw - 120px)/ 7);
-            height: calc((100vh - 130px)/ 5);
-            padding: 20px 40px 20px 20px;
-            position: relative;
-            box-sizing: border-box;
-
-            section{
-              width: 28px;
-              height: 28px;
-              border-radius: 50%;
-              position: absolute;
-              border: 1px solid #00ff66;
-              top: -14px;
-              left: -14px;
-
-              .dot {
-                position: absolute;
-                width: 18px;
-                height: 18px;
-                left: 4px;
-                top: 4px;
-                -webkit-border-radius: 50%;
-                -moz-border-radius: 50%;
-                border: 1px solid #00ff66;
-                border-radius: 50%;
-                background-color:#00ff66;
-                z-index: 2;
-              }
-              .pulse {
-                position: absolute;
-                width: 56px;
-                height: 56px;
-                left: -15px;
-                top: -15px;
-                border: 1px solid #00ff66;
-                -webkit-border-radius: 50%;
-                -moz-border-radius: 50%;
-                border-radius: 50%;
-                z-index: 1;
-                opacity: 0;
-                -webkit-animation: warn 2s ease-out;
-                -moz-animation: warn 2s ease-out;
-                animation: warn 2s ease-out;
-                -webkit-animation-iteration-count: infinite;
-                -moz-animation-iteration-count: infinite;
-                animation-iteration-count: infinite;
-                box-shadow: 1px 1px 30px #00ff66;
-              }
-              .pulse1 {
-                position: absolute;
-                width: 56px;
-                height: 56px;
-                left: -15px;
-                top: -15px;
-                border: 1px solid #3399ff;
-                -webkit-border-radius: 50%;
-                -moz-border-radius: 50%;
-                border-radius: 50%;
-                z-index: 1;
-                opacity: 0;
-                -webkit-animation: warn1 2s ease-out;
-                -moz-animation: warn1 2s ease-out;
-                animation: warn1 2s ease-out;
-                -webkit-animation-iteration-count: infinite;
-                -moz-animation-iteration-count: infinite;
-                animation-iteration-count: infinite;
-                box-shadow: 1px 1px 30px #3399ff;
-              }
-            }
-            &>div{
-              padding: 10px 0;
-              border-radius: 8px;
-              background-image: linear-gradient(to right,rgba(8,109,209,.4),rgba(11,255,255,.2));
-              border: 1px solid rgba(54,252,252,.6);
-              display: flex;
-              flex-direction: column;
-              justify-content: center;
-
-              div{
-                &:nth-of-type(2){
-                  margin: 5px 0;
-                }
-
-                span{
-                  display: inline-block;
-                  width: 50%;
-                  font-size: 14px;
-                  color: #fff;
-                  text-align: left;
-
-                  &:first-of-type{
-                    text-align: right;
-                    color: rgba(255,255,255,.8);
-                  }
-                }
-              }
-            }
-
-            p{
-              width: 140px;
-              height: 50px;
-              font-size: 18px;
-              line-height: 48px;
-              text-align: center;
-              color: #fff;
-              border-radius: 8px;
-              background-image: linear-gradient(to right,rgba(11,255,255,.2),rgba(8,109,209,.4));
-              border: 1px solid rgba(54,252,252,.6);
-            }
-          }
-
-          .item-t{
-            border-top: 1px solid #36FCFC;
-          }
-          .item-l{
-            border-left: 1px solid #36FCFC;
-          }
-          .warning{
-            &>section{
-              border: 1px solid #ff0000;
-
-              .dot{
-                border: 1px solid #ff0000;
-                background: #ff0000;
-              }
-              .pulse{
-                border: 1px solid #ff0000;
-                box-shadow: 1px 1px 30px #ff0000;
-              }
-              .pulse1{
-                border: 1px solid #ff0000;
-                box-shadow: 1px 1px 30px #ff0000;
-              }
-            }
-
-            &>div{
-              div:last-of-type{
-                span:nth-of-type(2){
-                  color: #ff0000;
-                }
-              }
-            }
-          }
-          .undone{
-            &>section{
-              border: 1px solid #ccc;
-
-              .dot{
-                border: 1px solid #ccc;
-                background: #ccc;
-              }
-              .pulse{
-                display: none;
-              }
-              .pulse1{
-                display: none;
-              }
-            }
-          }
-          .pic-tit{
-            display: flex;
-            width: calc((100vw - 120px)/ 7);
-            height: 160px;
-            padding: 20px;
-            transform: translate(-20px,-40%);
-            flex-direction: column;
-            align-items: flex-start;
-
-            img{
-              width: calc((100vw - 120px)/ 7 - 40px);
-              height: 90px;
-              margin-bottom: 10px;
-              border-radius: 4px;
-            }
-            p{
-              font-size: 16px;
-              color: #00ffff;
-              font-weight: bold;
-            }
-          }
-
-          .water{
-            transform: none;
-          }
-          .start{
-            padding: 40px 0;
-            p{
-              margin-top: -21px;
-              margin-left: 20px;
-            }
-            span{
-              width: 1px;
-              height: 50px;
-              background: #36FCFC;
-              position: absolute;
-              top: -10px;
-              left: 0;
-            }
-            section{
-              position: absolute;
-              top: 30px;
-              left: -14px;
-            }
-          }
-          .finish{
-            padding: 0 40px;
-            p{
-              margin-top: -25px;
-              margin-left: 4px;
-            }
-            span{
-              width: 100%;
-              height: 1px;
-              background: #36FCFC;
-              position: absolute;
-              top: 0;
-              left: calc(40px - 100%);
-            }
-            section{
-              position: absolute;
-              top: -14px;
-              left: 30px;
-            }
-          }
-      }
-      .current-data{
-        position: absolute;
-        z-index: 999999;
-        width: 270px;
-        height: 142px;
-        left: 50%;
-        padding: 20px 30px;
+    .blocks {
+        position: relative;
+        width: 100%;
+        height: 100%;
+        padding: 20px 20px 20px 100px;
         box-sizing: border-box;
-        transform: translateX(-65%);
-        background: url("../../../assets/loginPage/xj-bg.png") no-repeat center;
-        background-size: 100% 100%;
-
-        .data-area{
-          display: flex;
-          align-items: center;
-          border-bottom: 1px solid #00FFFF;
-          font-weight: bold;
-          padding-bottom: 10px;
-          box-sizing: border-box;
-
-          img{
-            width: 30px;
-            height: 30px;
-            margin-right: 10px;
-            animation: circle 1s ease-in-out infinite;
-          }
-
-          div{
-            font-size: 15px;
-            color: rgba(255,255,255,.8);
-
-            span{
-              color: #00FFFF;
-            }
-          }
-        }
-
-        .data-spot{
-          display: flex;
-          align-items: flex-start;
-          margin-top: 10px;
-
-          &>div{
-            display: flex;
+        .line-map {
+            position: absolute;
+            width: calc(100% - 120px);
+            left: 110px;
+            top: 10px;
             flex-direction: column;
             align-items: center;
-            width: 50%;
-            font-size: 14px;
-            color: rgba(255,255,255,.8);
+            z-index: 99;
+            display: grid;
+            grid-template-columns: repeat(7, 1fr);
+            grid-gap: 0;
 
-            p{
-              margin-top: 6px;
-              color: #00FFFF;
+            .item {
+                width: calc((100vw - 120px) / 7);
+                height: calc((100vh - 130px) / 5);
+                padding: 20px 40px 20px 20px;
+                position: relative;
+                box-sizing: border-box;
+
+                section {
+                    width: 28px;
+                    height: 28px;
+                    border-radius: 50%;
+                    position: absolute;
+                    border: 1px solid #00ff66;
+                    top: -14px;
+                    left: -14px;
+
+                    .dot {
+                        position: absolute;
+                        width: 18px;
+                        height: 18px;
+                        left: 4px;
+                        top: 4px;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border: 1px solid #00ff66;
+                        border-radius: 50%;
+                        background-color: #00ff66;
+                        z-index: 2;
+                    }
+                    .pulse {
+                        position: absolute;
+                        width: 56px;
+                        height: 56px;
+                        left: -15px;
+                        top: -15px;
+                        border: 1px solid #00ff66;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border-radius: 50%;
+                        z-index: 1;
+                        opacity: 0;
+                        -webkit-animation: warn 2s ease-out;
+                        -moz-animation: warn 2s ease-out;
+                        animation: warn 2s ease-out;
+                        -webkit-animation-iteration-count: infinite;
+                        -moz-animation-iteration-count: infinite;
+                        animation-iteration-count: infinite;
+                        box-shadow: 1px 1px 30px #00ff66;
+                    }
+                    .pulse1 {
+                        position: absolute;
+                        width: 56px;
+                        height: 56px;
+                        left: -15px;
+                        top: -15px;
+                        border: 1px solid #3399ff;
+                        -webkit-border-radius: 50%;
+                        -moz-border-radius: 50%;
+                        border-radius: 50%;
+                        z-index: 1;
+                        opacity: 0;
+                        -webkit-animation: warn1 2s ease-out;
+                        -moz-animation: warn1 2s ease-out;
+                        animation: warn1 2s ease-out;
+                        -webkit-animation-iteration-count: infinite;
+                        -moz-animation-iteration-count: infinite;
+                        animation-iteration-count: infinite;
+                        box-shadow: 1px 1px 30px #3399ff;
+                    }
+                }
+                & > div {
+                    padding: 10px 0;
+                    border-radius: 8px;
+                    background-image: linear-gradient(to right, rgba(8, 109, 209, 0.4), rgba(11, 255, 255, 0.2));
+                    border: 1px solid rgba(54, 252, 252, 0.6);
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: center;
+
+                    div {
+                        &:nth-of-type(2) {
+                            margin: 5px 0;
+                        }
+
+                        span {
+                            display: inline-block;
+                            width: 50%;
+                            font-size: 14px;
+                            color: #fff;
+                            text-align: left;
+
+                            &:first-of-type {
+                                text-align: right;
+                                color: rgba(255, 255, 255, 0.8);
+                            }
+                        }
+                    }
+                }
+
+                p {
+                    width: 140px;
+                    height: 50px;
+                    font-size: 18px;
+                    line-height: 48px;
+                    text-align: center;
+                    color: #fff;
+                    border-radius: 8px;
+                    background-image: linear-gradient(to right, rgba(11, 255, 255, 0.2), rgba(8, 109, 209, 0.4));
+                    border: 1px solid rgba(54, 252, 252, 0.6);
+                }
             }
 
-            &:first-of-type{
-              border-right: 1px solid #36FCFC;
+            .item-t {
+                border-top: 1px solid #36fcfc;
             }
-          }
+            .item-l {
+                border-left: 1px solid #36fcfc;
+            }
+            .warning {
+                & > section {
+                    border: 1px solid #ff0000;
+
+                    .dot {
+                        border: 1px solid #ff0000;
+                        background: #ff0000;
+                    }
+                    .pulse {
+                        border: 1px solid #ff0000;
+                        box-shadow: 1px 1px 30px #ff0000;
+                    }
+                    .pulse1 {
+                        border: 1px solid #ff0000;
+                        box-shadow: 1px 1px 30px #ff0000;
+                    }
+                }
+
+                & > div {
+                    div:last-of-type {
+                        span:nth-of-type(2) {
+                            color: #ff0000;
+                        }
+                    }
+                }
+            }
+            .undone {
+                & > section {
+                    border: 1px solid #ccc;
+
+                    .dot {
+                        border: 1px solid #ccc;
+                        background: #ccc;
+                    }
+                    .pulse {
+                        display: none;
+                    }
+                    .pulse1 {
+                        display: none;
+                    }
+                }
+            }
+            .pic-tit {
+                display: flex;
+                width: calc((100vw - 120px) / 7);
+                height: 160px;
+                padding: 20px;
+                transform: translate(-20px, -40%);
+                flex-direction: column;
+                align-items: flex-start;
+
+                img {
+                    width: calc((100vw - 120px) / 7 - 40px);
+                    height: 90px;
+                    margin-bottom: 10px;
+                    border-radius: 4px;
+                }
+                p {
+                    font-size: 16px;
+                    color: #00ffff;
+                    font-weight: bold;
+                }
+            }
+
+            .water {
+                transform: none;
+            }
+            .start {
+                padding: 40px 0;
+                p {
+                    margin-top: -21px;
+                    margin-left: 20px;
+                }
+                span {
+                    width: 1px;
+                    height: 50px;
+                    background: #36fcfc;
+                    position: absolute;
+                    top: -10px;
+                    left: 0;
+                }
+                section {
+                    position: absolute;
+                    top: 30px;
+                    left: -14px;
+                }
+            }
+            .finish {
+                padding: 0 40px;
+                p {
+                    margin-top: -25px;
+                    margin-left: 4px;
+                }
+                span {
+                    width: 100%;
+                    height: 1px;
+                    background: #36fcfc;
+                    position: absolute;
+                    top: 0;
+                    left: calc(40px - 100%);
+                }
+                section {
+                    position: absolute;
+                    top: -14px;
+                    left: 30px;
+                }
+            }
         }
-      }
-      .section-1{
-        position: absolute;
-        left: 70px;
-        top: -10px;
-        width: calc((200vw - 240px) / 7 + 60px);
-        height: 630px;
-        background: rgba(0,100,190,.1);
-        border: 1px solid rgba(0,100,190,.4);
-        border-radius: 8px;
-      }
-      .section-2{
-        position: absolute;
-        left: calc((400vw - 480px)/ 7 + 70px);
-        top: 150px;
-        width: calc((200vw - 240px) / 7 + 60px);
-        height: 470px;
-        background: rgba(0,100,190,.1);
-        border: 1px solid rgba(0,100,190,.4);
-        border-radius: 8px;
-      }
-      .section-3{
-        position: absolute;
-        left: 100px;
-        top: 630px;
-        width: calc((500vw - 600px)/ 7 + 30px);
-        height: 180px;
-        background: rgba(0,100,190,.1);
-        border: 1px solid rgba(0,100,190,.4);
-        border-radius: 8px;
-      }
+        .current-data {
+            position: absolute;
+            z-index: 999999;
+            width: 270px;
+            height: 142px;
+            left: 50%;
+            padding: 20px 30px;
+            box-sizing: border-box;
+            transform: translateX(-65%);
+            background: url('../../../assets/loginPage/xj-bg.png') no-repeat center;
+            background-size: 100% 100%;
+
+            .data-area {
+                display: flex;
+                align-items: center;
+                border-bottom: 1px solid #00ffff;
+                font-weight: bold;
+                padding-bottom: 10px;
+                box-sizing: border-box;
+
+                img {
+                    width: 30px;
+                    height: 30px;
+                    margin-right: 10px;
+                    animation: circle 1s ease-in-out infinite;
+                }
+
+                div {
+                    font-size: 15px;
+                    color: rgba(255, 255, 255, 0.8);
+
+                    span {
+                        color: #00ffff;
+                    }
+                }
+            }
+
+            .data-spot {
+                display: flex;
+                align-items: flex-start;
+                margin-top: 10px;
+
+                & > div {
+                    display: flex;
+                    flex-direction: column;
+                    align-items: center;
+                    width: 50%;
+                    font-size: 14px;
+                    color: rgba(255, 255, 255, 0.8);
+
+                    p {
+                        margin-top: 6px;
+                        color: #00ffff;
+                    }
+
+                    &:first-of-type {
+                        border-right: 1px solid #36fcfc;
+                    }
+                }
+            }
+        }
+        .section-1 {
+            position: absolute;
+            left: 70px;
+            top: -10px;
+            width: calc((200vw - 240px) / 7 + 60px);
+            height: 630px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
+        .section-2 {
+            position: absolute;
+            left: calc((400vw - 480px) / 7 + 70px);
+            top: 150px;
+            width: calc((200vw - 240px) / 7 + 60px);
+            height: 470px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
+        .section-3 {
+            position: absolute;
+            left: 100px;
+            top: 630px;
+            width: calc((500vw - 600px) / 7 + 30px);
+            height: 180px;
+            background: rgba(0, 100, 190, 0.1);
+            border: 1px solid rgba(0, 100, 190, 0.4);
+            border-radius: 8px;
+        }
     }
-  }
+}
 </style>
diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue
index 3df8384..0830adb 100644
--- a/src/views/system/menu/component/menuDialog.vue
+++ b/src/views/system/menu/component/menuDialog.vue
@@ -168,6 +168,7 @@
                     btnPower: ''
                 };
             } else {
+                debugger;
                 state.buttonName = '修改';
                 state.title = '修改菜单';
                 state.ruleForm = JSON.parse(JSON.stringify(value));
diff --git a/src/views/system/personShiftManage/teamManage/index.vue b/src/views/system/personShiftManage/teamManage/index.vue
deleted file mode 100644
index c0bbe06..0000000
--- a/src/views/system/personShiftManage/teamManage/index.vue
+++ /dev/null
@@ -1,358 +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">查询</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="warning" :icon="Edit" size="default" plain>修改</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="teamName" label="班组名称"/>
-					<el-table-column property="teamMember" 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="editRecord(scope.$index ,scope.row)">修改</el-button>
-							<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-form-item label="班组名称">
-					<el-input
-							v-model="details.teamName"
-							readonly
-					/>
-				</el-form-item>
-				<el-form-item label="班组人员">
-					<el-input v-model="details.teamMember" 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="teamName">
-					<el-input
-							v-model="addRecord.teamName"
-					>
-					</el-input>
-				</el-form-item>
-				<el-form-item label="班组人员" prop="teamMember">
-					<el-cascader
-							v-model="addRecord.teamMember"
-							:options="workerList"
-							:props="casProps"
-							:show-all-levels="false"
-							@change="handleChange"
-					/>
-				</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>
-	</div>
-</template>
-
-<script lang="ts" setup>
-	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 } 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 {
-
-	}
-	const userInfo = useUserInfo()
-	const { userInfos } = storeToRefs(userInfo);
-	const state  = reactive<stateType>({});
-	const currentPage = ref(1)
-	const pageSize = ref(10)
-	const chosenIndex = ref(-1)
-	const casProps = {
-		expandTrigger: 'hover',
-		multiple: true,
-		emitPath: false,
-		checkStrictly: false
-	}
-	const handleSizeChange = (val: number) => {
-		console.log(`${val} items per page`)
-	}
-	const handleCurrentChange = (val: number) => {
-		console.log(`current page: ${val}`)
-	}
-	const workerList =reactive([
-		{
-			value: 'A部门车间',
-			label: 'A部门车间',
-			children: [
-				{
-					value: '刘能',
-					label: '刘能',
-				},
-				{
-					value: '赵四',
-					label: '赵四',
-				},
-				{
-					value: '谢广坤',
-					label: '谢广坤',
-				},
-				{
-					value: '王大拿',
-					label: '王大拿',
-				},
-				{
-					value: '刘能',
-					label: '刘能',
-				},
-				{
-					value: '赵四',
-					label: '赵四',
-				}
-			]
-		},
-		{
-			value: 'B部门车间',
-			label: 'B部门车间',
-			children: [
-				{
-					value: '刘备',
-					label: '刘备',
-				},
-				{
-					value: '关羽',
-					label: '关羽',
-				},
-				{
-					value: '张飞',
-					label: '张飞',
-				},
-				{
-					value: '赵云',
-					label: '赵云',
-				},
-				{
-					value: '黄忠',
-					label: '黄忠',
-				},
-				{
-					value: '马超',
-					label: '马超',
-				}
-			]
-		}
-	])
-	const tableData = reactive(
-			[
-			{
-				teamName: 'A车间班组',
-				teamMember: ['张三','李四','李羽飞']
-			},
-			{
-				teamName: 'B车间班组',
-				teamMember: ['刘能','赵四','谢广坤']
-			},
-		]
-	)
-	const addRef = ref<FormInstance>()
-	const addRules = reactive<FormRules>({
-		teamName:[{required: true, message: '该内容不能为空',trigger:'blur'}],
-		teamMember:[{required: true, message: '该内容不能为空',trigger:'blur'}]
-	})
-	const dialogDetails = ref(false)
-	const dialogAddRecord = ref(false)
-	const deleteDialog = ref(false)
-	const addRecord = ref({})
-	const details = ref({})
-	const viewRecord = (row) =>{
-		details.value = JSON.parse(JSON.stringify(row))
-		dialogDetails.value = true
-	}
-	const deleteRecord = (index) =>{
-		chosenIndex.value = index
-		deleteDialog.value = true
-	}
-	const conFirmDelete = ()=> {
-		tableData.splice(chosenIndex.value,1)
-		deleteDialog.value = false
-	}
-	const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
-		if (!formEl) return
-		await formEl.validate((valid, fields) => {
-			if (valid) {
-				if(chosenIndex.value == -1){
-					tableData.unshift(addRecord.value)
-				}else{
-					tableData[chosenIndex.value] = addRecord.value
-				}
-				dialogAddRecord.value =false
-			} else {
-				console.log('error submit!', fields)
-			}
-		})
-
-	}
-	const closeAdd =()=>{
-		addRecord.value={}
-		chosenIndex.value = -1
-	}
-	const indexClear = ()=>{
-		chosenIndex.value = -1
-	}
-	const editRecord =(index, row)=>{
-		dialogAddRecord.value = true
-		chosenIndex.value = index
-		addRecord.value = JSON.parse(JSON.stringify(row))
-	}
-	// 折线图
-	const renderMenu = async (value: string) => {
-		Session.set('projectId',value)
-		userInfos.value.projectId = value
-		await initBackEndControlRoutes();
-	};
-</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/vite.config.ts b/vite.config.ts
index 971a832..0c5fae7 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -14,9 +14,11 @@
 const viteConfig = defineConfig((mode: ConfigEnv) => {
     const env = loadEnv(mode.mode, process.cwd());
     return {
+        publicPath: './',
         plugins: [vue()],
         root: process.cwd(),
         resolve: { alias },
+        assetsInclude: ['**/*.JPG'],
         base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,
         hmr: true,
         optimizeDeps: {

--
Gitblit v1.9.2