From 52d175d89b4801cc30c258b93789b783be0bba3b Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期二, 07 二月 2023 10:48:04 +0800 Subject: [PATCH] 菜单 --- .idea/scienceexperimentweb.iml | 12 ++ src/utils/request.ts | 2 .env | 2 .idea/.gitignore | 5 src/router/backEnd.ts | 9 src/api/systemManage/menu/index.ts | 12 + .env.development | 8 /dev/null | 177 ----------------------------- src/router/route.json | 16 ++ .idea/vcs.xml | 6 + src/views/home/index.vue | 15 ++ .idea/modules.xml | 8 + src/router/route.ts | 23 +++ src/views/test/index.vue | 13 ++ src/views/loginPage/component/accountLogin.vue | 30 ++-- src/router/index.ts | 4 src/api/login/index.ts | 2 src/App.vue | 6 src/views/system/menu/component/menuDialog.vue | 2 19 files changed, 135 insertions(+), 217 deletions(-) diff --git a/.env b/.env index 19f641e..6119adb 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ # port 端口号 -VITE_PORT = 8888 +VITE_PORT = 8001 # open 运行 npm run dev 时自动打开浏览器 VITE_OPEN = false diff --git a/.env.development b/.env.development index 2ef70b0..bb3516f 100644 --- a/.env.development +++ b/.env.development @@ -4,16 +4,16 @@ #VITE_API_URL = 'http://192.168.0.35:8008' #李宇飞接口地址 -VITE_API_URL = 'http://192.168.0.50:8008' +#VITE_API_URL = 'http://192.168.0.50:8008' #张凤接口地址 #VITE_API_URL = 'http://192.168.0.29:8008' #黄振接口地址 -#VITE_API_URL = 'http://192.168.0.179:8008' +VITE_API_URL = 'http://192.168.0.5:8084' #施正红接口地址 -#VITE_API_URL = 'http://192.168.0.69:8008' +#VITE_API_URL = 'http://192.168.0.8:8084' #戚会山接口地址 #VITE_API_URL = 'http://121.239.169.27:16006/safeplatform' @@ -38,7 +38,7 @@ #VITE_API_URL = 'http://192.168.0.52:7021/safeplatform' #本地测试接口地址 -VITE_API_URL_SOCKET = 'http://192.168.0.52:7021/safeplatform' +#VITE_API_URL_SOCKET = 'http://192.168.0.52:7021/safeplatform' #本地测试websocket接口地址 #VITE_API_URL = 'http://192.168.0.29:7008' diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..7084c7e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/scienceexperimentweb.iml" filepath="$PROJECT_DIR$/.idea/scienceexperimentweb.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/scienceexperimentweb.iml b/.idea/scienceexperimentweb.iml new file mode 100644 index 0000000..0c8867d --- /dev/null +++ b/.idea/scienceexperimentweb.iml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="WEB_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/temp" /> + <excludeFolder url="file://$MODULE_DIR$/.tmp" /> + <excludeFolder url="file://$MODULE_DIR$/tmp" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 942737a..8d21990 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,13 +1,13 @@ <template> <!-- <transition name="fade" mode="out-in">--> <!-- <keep-alive :exclude="excludeList">--> -<!-- <router-view v-if="!$route.meta.iskeepAlive" :key="$route.path"></router-view>--> +<!-- <router-view v-if="!$route.json.meta.iskeepAlive" :key="$route.json.path"></router-view>--> <!-- </keep-alive>--> <!-- </transition>--> - <!-- <router-view v-if="!$route.meta.iskeepAlive" v-slot="{ Component }">--> + <!-- <router-view v-if="!$route.json.meta.iskeepAlive" v-slot="{ Component }">--> <!-- <transition name="fade" mode="in-out">--> <!-- <keep-alive :exclude="excludeList" :include="includeList">--> - <!-- <components :is="Component" :key="$route.id"></components>--> + <!-- <components :is="Component" :key="$route.json.id"></components>--> <!-- </keep-alive>--> <!-- </transition>--> <!-- </router-view>--> diff --git a/src/api/accidentManagementSystem/index.ts b/src/api/accidentManagementSystem/index.ts deleted file mode 100644 index 657ef56..0000000 --- a/src/api/accidentManagementSystem/index.ts +++ /dev/null @@ -1,145 +0,0 @@ -import request from '/@/utils/request'; - -export function accidentManagementSystemApi() { - return { - // 事故快报一览 - accidentList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/page/list', - method: 'post', - data: params - }); - }, - // 事故快报新增 - accidentAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/add', - method: 'post', - data: params - }); - }, - // 事故快报详情 - accidentScarh: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/info/${params}`, - method: 'get' - }); - }, - // 事故快报修改 - accidentView: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/update', - method: 'post', - data: params - }); - }, - // 事故快报删除 - accidentDele: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/batchDelete`, - method: 'post', - data: params - }); - }, - // 工伤申报一览 - workList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/page/list', - method: 'post', - data: params - }); - }, - // 工伤申报新增 - workAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/add', - method: 'post', - data: params - }); - }, - // 工伤申报详情 - workScarh: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/info/${params}`, - method: 'get' - }); - }, - // 工伤申报修改 - workView: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/update', - method: 'post', - data: params - }); - }, - // 工伤申报删除/批量删除 - workDelete: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/batchDelete`, - method: 'post', - data: params - }); - }, - // 伤亡人员一览 - casualtyList: (id: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/list/${id}`, - method: 'get' - }); - }, - // 伤亡人员新增 - casualtyAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/add`, - method: 'post', - data: params - }); - }, - // 伤亡人员删除 - casualtyDel: (id: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/casualty/del/${id}`, - method: 'get' - }); - }, - // 事故案例 一览 - getaccidentCaseList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentCase/page/list`, - method: 'post', - data: params - }); - }, - //事故案例 新增 - getaccidentCaseAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentCase/add`, - method: 'post', - data: params - }); - }, - //事故案例 新增 - getaccidentCaseUpdata: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentCase/update`, - method: 'post', - data: params - }); - }, - //事故案例 详情 - getaccidentCaseDetail: (id: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentCase/info/${id}`, - method: 'get' - }); - }, - //事故案例 删除 - getaccidentCaseDelete: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentCase/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/contingency/index.ts b/src/api/contingencyManagement/contingency/index.ts deleted file mode 100644 index b54e382..0000000 --- a/src/api/contingencyManagement/contingency/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import request from '/@/utils/request'; - -export function contingencyApi() { - return { - //应急队伍一览 - getTeamManagementList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/page/list`, - method: 'post', - data: params - }); - }, - // 应急队伍新增 - addEmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/add`, - method: 'post', - data: params - }); - }, - // 应急队伍详情 - seeEmergencyTeam: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/info/${params}`, - method: 'get' - }); - }, - // 应急队伍编辑 - editEmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/update`, - method: 'post', - data: params - }); - }, - // 应急队伍删除 - deleteEmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/batchDelete`, - method: 'post', - data: params - }); - }, - // 应急队伍人员一览 - getEmergencyTeamPersonnelList: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/memberList/${params}`, - method: 'get' - // data:params - }); - }, - // 应急队伍人员新增 - addEmergencyTeamPersonnel: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/addMember`, - method: 'post', - data: params - }); - }, - // 应急队伍人员详情 - seeEmergencyTeamPersonnel: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/infoMember/${params}`, - method: 'get' - }); - }, - // 应急队伍人员编辑 - editEmergencyTeamPersonnel: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/updateMember`, - method: 'post', - data: params - }); - }, - // 应急队伍人员删除 - deleteEmergencyTeamPersonnel: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyTeam/deleteMember/${params}`, - method: 'get' - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts b/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts deleted file mode 100644 index b2f81aa..0000000 --- a/src/api/contingencyManagement/emergencyDrillEvaluation/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencyDrillEvaluationApi() { - return { - // 应急演练实施评价一览 - getEmergencyDrillEvaluationList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillEvaluation/page/list', - method: 'post', - data: params - }); - }, - // 应急演练实施评价新增 - addEmergencyDrillEvaluation: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/add`, - method: 'post', - data: params - }); - }, - // 应急演练实施评价详情 - seeEmergencyDrillEvaluation: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/info/${params}`, - method: 'get' - }); - }, - // 应急演练实施评价编辑 - editEmergencyDrillEvaluation: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/update`, - method: 'post', - data: params - }); - }, - // 应急演练实施评价删除 - deleteEmergencyDrillEvaluation: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillEvaluation/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyDrillExecute/index.ts b/src/api/contingencyManagement/emergencyDrillExecute/index.ts deleted file mode 100644 index 911ac5f..0000000 --- a/src/api/contingencyManagement/emergencyDrillExecute/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencyDrillExecuteApi() { - return { - // 应急演练实施一览 - getEmergencyDrillExecuteList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillExecute/page/list', - method: 'post', - data: params - }); - }, - // 应急演练实施新增 - addEmergencyDrillExecute: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/add`, - method: 'post', - data: params - }); - }, - // 应急演练实施详情 - seeEmergencyDrillExecute: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/info/${params}`, - method: 'get' - }); - }, - // 应急演练实施编辑 - editEmergencyDrillExecute: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/update`, - method: 'post', - data: params - }); - }, - // 应急演练实施删除 - deleteEmergencyDrillExecute: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillExecute/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyDrillPlan/index.ts b/src/api/contingencyManagement/emergencyDrillPlan/index.ts deleted file mode 100644 index 110d032..0000000 --- a/src/api/contingencyManagement/emergencyDrillPlan/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function releaseDrillPlanApi() { - return { - //演练计划发布一览 - getReleaseDrillPlanList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyDrillPlan/page/list', - method: 'post', - data: params - }); - }, - // 演练计划发布新增 - addReleaseDrillPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/add`, - method: 'post', - data: params - }); - }, - // 演练计划发布详情 - seeReleaseDrillPlan: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/info/${params}`, - method: 'get' - }); - }, - // 演练计划发布编辑 - editReleaseDrillPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/update`, - method: 'post', - data: params - }); - }, - // 演练计划发布删除 - deleteReleaseDrillPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyDrillPlan/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts b/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts deleted file mode 100644 index 0809c93..0000000 --- a/src/api/contingencyManagement/emergencyMaterialsInspection/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencyMaterialsInspectionApi() { - return { - //应急物资检查一览 - getEmergencyMaterialsInspectionList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencySuppliesInspect/page/list', - method: 'post', - data: params - }); - }, - // 应急物资检查新增 - addEmergencyMaterialsInspection: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/add`, - method: 'post', - data: params - }); - }, - // 应急物资检查详情 - seeEmergencyMaterialsInspection: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/info/${params}`, - method: 'get' - }); - }, - // 应急物资检查编辑 - editEmergencyMaterialsInspection: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/update`, - method: 'post', - data: params - }); - }, - // 应急物资检查删除 - deleteEmergencyMaterialsInspection: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesInspect/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyPlan/index.ts b/src/api/contingencyManagement/emergencyPlan/index.ts deleted file mode 100644 index 4b7a323..0000000 --- a/src/api/contingencyManagement/emergencyPlan/index.ts +++ /dev/null @@ -1,91 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencyPlanApi() { - return { - // 应急预案管理一览 - getEmergencyPlanList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlan/page/list', - method: 'post', - data: params - }); - }, - // 应急预案管理新增 - addEmergencyPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/add`, - method: 'post', - data: params - }); - }, - // 应急队伍详情 - seeEmergencyTeam: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/info/${params}`, - method: 'get' - }); - }, - // 应急队伍编辑 - editEmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/update`, - method: 'post', - data: params - }); - }, - // 应急队伍删除 - deleteEmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/batchDelete`, - method: 'post', - data: params - }); - }, - // 应急队伍废止 - EmergencyTeam: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=true`, - method: 'get' - }); - }, - // 应急队伍还原 - reductionEmergencyTeam: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlan/updateAbolish?id=${params}&abolishStatus=false`, - method: 'get' - }); - }, - // 应急预案管理审批新增 - approvalEmergencyPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/add`, - method: 'post', - data: params - }); - }, - // 应急预案管理审批修改 - editApprovalEmergencyPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/update`, - method: 'post', - data: params - }); - }, - // 应急预案管理审批查看 - approvalProcessEmergencyPlan: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/info/${params}`, - method: 'get', - data: params - }); - }, - // 审批一览 - processEmergencyPlan: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyWorkApprove/page/list`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyPlanLog/index.ts b/src/api/contingencyManagement/emergencyPlanLog/index.ts deleted file mode 100644 index 80c1885..0000000 --- a/src/api/contingencyManagement/emergencyPlanLog/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencyPlanLogApi() { - return { - // 应急预案启动记录一览 - getEmergencyPlanLogList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/page/list', - method: 'post', - data: params - }); - }, - // 应急预案启动记录新增 - addEmergencyPlanLog: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/add', - method: 'post', - data: params - }); - }, - // 应急预案启动记录详情 - seeEmergencyPlanLog: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlanLog/info/${params}`, - method: 'get' - }); - }, - // 应急预案启动记录修改 - editEmergencyPlanLog: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyPlanLog/update', - method: 'post', - data: params - }); - }, - // 应急预案启动记录删除 - deleteEmergencyPlanLog: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyPlanLog/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/emergencyResources/index.ts b/src/api/contingencyManagement/emergencyResources/index.ts deleted file mode 100644 index d1c0a9b..0000000 --- a/src/api/contingencyManagement/emergencyResources/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function emergencySuppliesApi() { - return { - // 应急物资一览 - getEmergencySuppliesList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencySupplies/page/list', - method: 'post', - data: params - }); - }, - // 应急物资新增 - addEmergencySupplies: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencySupplies/add', - method: 'post', - data: params - }); - }, - // 应急物资详情 - seeEmergencySupplies: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/info/${params}`, - method: 'get' - }); - }, - // 应急物资编辑 - editEmergencySupplies: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/update`, - method: 'post', - data: params - }); - }, - // 应急物资删除 - deleteEmergencySupplies: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySupplies/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts b/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts deleted file mode 100644 index 082041c..0000000 --- a/src/api/contingencyManagement/maintenanceEmergencyMaterials/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function maintenanceEmergencyMaterialsApi() { - return { - //应急物资保养一览 - getMaintenanceEmergencyMaterialsList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencySuppliesMaintain/page/list', - method: 'post', - data: params - }); - }, - // 应急物资保养新增 - addMaintenanceEmergencyMaterials: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/add`, - method: 'post', - data: params - }); - }, - // 应急物资保养详情 - seeMaintenanceEmergencyMaterials: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/info/${params}`, - method: 'get' - }); - }, - // 应急物资保养编辑 - editMaintenanceEmergencyMaterials: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/update`, - method: 'post', - data: params - }); - }, - // 应急物资保养删除 - deleteMaintenanceEmergencyMaterials: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencySuppliesMaintain/batchDelete`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/doublePreventSystem/check/index.ts b/src/api/doublePreventSystem/check/index.ts deleted file mode 100644 index 2bf8d00..0000000 --- a/src/api/doublePreventSystem/check/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import request from '/@/utils/request'; - -export function hiddenCheckApi() { - return { - // v1 - getHiddenCheckList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/select/getRectifyOverPage`, - method: 'post', - data: data - }); - }, - // v1 - submitHiddenCheck: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/reportRectify`, - method: 'post', - data: data - }); - }, - // v1 - getAllHiddenCheckList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/checkUnit/index.ts b/src/api/doublePreventSystem/checkUnit/index.ts deleted file mode 100644 index 70a60d9..0000000 --- a/src/api/doublePreventSystem/checkUnit/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import request from '/@/utils/request'; - -export function checkUnitApi() { - return { - // v1 - getCheckUnitList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/select/getTaskUnitPage`, - method: 'post', - data: data - }); - }, - // v1 - addCheckUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/insert/saveTaskUnit`, - method: 'post', - data: data - }); - }, - // v1 - modCheckUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/update/updateTaskUnit`, - method: 'post', - data: data - }); - }, - // v1 - deleteCheckUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/delete/deleteTaskUnit`, - method: 'post', - data: data - }); - }, - getAllCheckUnitList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/taskUnit/select/listTaskUnit`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/productionDevice/index.ts b/src/api/doublePreventSystem/productionDevice/index.ts deleted file mode 100644 index f090b09..0000000 --- a/src/api/doublePreventSystem/productionDevice/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function productionDeviceApi() { - return { - // v1 - getProductionDeviceList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/getDevicePage`, - method: 'post', - data: data - }); - }, - // v1 - addProductionDevice: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/insert/saveDevice`, - method: 'post', - data: data - }); - }, - // v1 - modProductionDevice: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/update/updateDevice`, - method: 'post', - data: data - }); - }, - // v1 - deleteProductionDevice: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/delete/deleteDevice`, - method: 'post', - data: data - }); - }, - // v1 - getAllProductionDeviceList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/record/index.ts b/src/api/doublePreventSystem/record/index.ts deleted file mode 100644 index 38122d7..0000000 --- a/src/api/doublePreventSystem/record/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import request from '/@/utils/request'; - -export function recordApi() { - return { - // v1 - getRecordList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkTask/select/getTaskPage`, - method: 'post', - data: data - }); - }, - - // v1 - submitRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkTask/update/updateTask`, - method: 'post', - data: data - }); - }, - - getTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkTask/update/taskToUser`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/doublePreventSystem/rectify/index.ts b/src/api/doublePreventSystem/rectify/index.ts deleted file mode 100644 index 30f1466..0000000 --- a/src/api/doublePreventSystem/rectify/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -import request from '/@/utils/request'; - -export function hiddenRectifyApi() { - return { - // v1 - getHiddenRectifyList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/select/getDangerRectifyPage`, - method: 'post', - data: data - }); - }, - // v1 - submitHiddenRectify: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/applyReport`, - method: 'post', - data: data - }); - }, - // v1 - delayHiddenRectifyTime: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/update/timeOutRectify`, - method: 'post', - data: data - }); - }, - // v1 - deleteHiddenRectify: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerRectify/delete/deleteDangerRectify`, - method: 'post', - data: data - }); - }, - // v1 - getAllHiddenRectifyList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`, - method: 'post' - }); - }, - getCodeByTime: (date: string) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/count/byCreateDate?date=${date}`, - method: 'get' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/report/index.ts b/src/api/doublePreventSystem/report/index.ts deleted file mode 100644 index 89e12ef..0000000 --- a/src/api/doublePreventSystem/report/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import request from '/@/utils/request'; - -export function hiddenReportApi() { - return { - // v1 - getHiddenReportList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/select/getDangerManagePage`, - method: 'post', - data: data - }); - }, - // v1 - addHiddenReport: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/insert/saveDangerManage`, - method: 'post', - data: data - }); - }, - // v1 - modHiddenReport: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/update/updateDangerManage`, - method: 'post', - data: data - }); - }, - // v1 - deleteHiddenReport: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/dangerManage/delete/deleteDangerManage`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/doublePreventSystem/riskControlMeasure/index.ts b/src/api/doublePreventSystem/riskControlMeasure/index.ts deleted file mode 100644 index c9d4955..0000000 --- a/src/api/doublePreventSystem/riskControlMeasure/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import request from '/@/utils/request'; - -export function riskControlMeasureApi() { - return { - // v1 - getRiskControlMeasureList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/getRiskControlMeasurePage`, - method: 'post', - data: data - }); - }, - // v1 - addRiskControlMeasure: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/insert/saveRiskControlMeasure`, - method: 'post', - data: data - }); - }, - // v1 - modRiskControlMeasure: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/update/updateRiskControlMeasure`, - method: 'post', - data: data - }); - }, - // v1 - deleteRiskControlMeasure: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/delete/deleteRiskControlMeasure`, - method: 'post', - data: data - }); - }, - getAllRiskControlMeasureList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/listControlMeasure`, - method: 'post' - }); - }, - getClassifyData: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskControlMeasure/select/listMeasures`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts b/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts deleted file mode 100644 index 58e8d2f..0000000 --- a/src/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function safetyRiskAnalyseUnitApi() { - return { - // v1 - getSafetyRiskAnalyseUnitList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/select/getRiskUnitPage`, - method: 'post', - data: data - }); - }, - // v1 - addSafetyRiskAnalyseUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/insert/saveRiskAnaUnit`, - method: 'post', - data: data - }); - }, - // v1 - modSafetyRiskAnalyseUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/update/updateRiskAnaUnit`, - method: 'post', - data: data - }); - }, - // v1 - deleteSafetyRiskAnalyseUnit: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskAnaUnit/delete/deleteRiskAnaUnit`, - method: 'post', - data: data - }); - }, - // v1 - getAllSafetyRiskAnalyseUnitList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/listRiskUnits`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/safetyRiskEvent/index.ts b/src/api/doublePreventSystem/safetyRiskEvent/index.ts deleted file mode 100644 index 4eb648e..0000000 --- a/src/api/doublePreventSystem/safetyRiskEvent/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '/@/utils/request'; - -export function safetyRiskEventApi() { - return { - // v1 - getSafetyRiskEventList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/getRiskEventPage`, - method: 'post', - data: data - }); - }, - // v1 - addSafetyRiskEvent: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/insert/saveRiskEvent`, - method: 'post', - data: data - }); - }, - // v1 - modSafetyRiskEvent: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/update/updateRiskEvent`, - method: 'post', - data: data - }); - }, - // v1 - deleteSafetyRiskEvent: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/delete/deleteRiskEvent`, - method: 'post', - data: data - }); - }, - // v1 - getAllSafetyRiskEventList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/riskEvent/select/getListEvents`, - method: 'post' - }); - } - }; -} diff --git a/src/api/doublePreventSystem/work/index.ts b/src/api/doublePreventSystem/work/index.ts deleted file mode 100644 index c4737e4..0000000 --- a/src/api/doublePreventSystem/work/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import request from '/@/utils/request'; - -export function workApi() { - return { - // v1 - getWorkList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkWork/select/getCheckWorkPage`, - method: 'post', - data: data - }); - }, - // v1 - addWork: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkWork/insert/saveCheckWork`, - method: 'post', - data: data - }); - }, - // v1 - modWork: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkWork/update/updateCheckWork`, - method: 'post', - data: data - }); - }, - // v1 - deleteWork: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/checkWork/delete/deleteCheckWork`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/facilityManagement/claimReturnRecords/index.ts b/src/api/facilityManagement/claimReturnRecords/index.ts deleted file mode 100644 index 58e17b0..0000000 --- a/src/api/facilityManagement/claimReturnRecords/index.ts +++ /dev/null @@ -1,27 +0,0 @@ -import request from "/@/utils/request"; - -export function claimReturnRecordsApi() { - return { - getClaimReturnRecords: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/material/record/page/list`, - method: 'post', - data - }); - }, - returnGoods: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/material/record/revert`, - method: 'post', - data - }); - }, - refreshReturnAndNoReturn: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/material/record/queryById`, - method: 'post', - data - }); - }, - } -} diff --git a/src/api/facilityManagement/goodsDetailManage/index.ts b/src/api/facilityManagement/goodsDetailManage/index.ts deleted file mode 100644 index 6ca4c36..0000000 --- a/src/api/facilityManagement/goodsDetailManage/index.ts +++ /dev/null @@ -1,89 +0,0 @@ -import request from '/@/utils/request'; -export function goodsDetailApi() { - return { - // 设备设施类型管理 查询单条数据 - getGoodsDetailList: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/page/list`, - method: 'post', - data - }); - }, - addGoodsDetail: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/save`, - method: 'post', - data - }); - }, - checkOutBySingle: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/single/delivery`, - method: 'post', - data - }); - }, - checkOutByMore: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/batch/delivery/ids`, - method: 'post', - data - }); - }, - updateGoodsDetail: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/update`, - method: 'post', - data - }); - }, - getGoodsListByLevel: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/safeMaterial/list`, - method: 'post', - }); - }, - checkOutOne: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/single/delivery`, - method: 'post', - data - }); - }, - checkOutMore: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/batch/delivery/ids`, - method: 'post', - data - }); - }, - checkInOne: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/single/receipt`, - method: 'post', - data - }); - }, - checkInMore: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/batch/receipt`, - method: 'post', - data - }); - }, - deleteSingleGoods: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/delete`, - method: 'post', - data - }); - }, - deleteBatchGoods: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/deleteBatch`, - method: 'post', - data - }); - }, - } -} diff --git a/src/api/facilityManagement/index.ts b/src/api/facilityManagement/index.ts deleted file mode 100644 index ffb78be..0000000 --- a/src/api/facilityManagement/index.ts +++ /dev/null @@ -1,104 +0,0 @@ -import request from '/@/utils/request'; -export function facilityManagementApi() { - return { - // 设备设施类型管理 查询单条数据 - getequipmentTypeMngDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/selectOne/${params}`, - method: 'get' - }); - }, - // 设备设施类型管理 新增或者修改数据 - getequipmentTypeMngAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/equipmentTypeMng/addOrUpdate', - method: 'post', - data: params - }); - }, - // 设备设施类型管理 删除 - getequipmentTypeMngDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/delete`, - method: 'post', - data: params - }); - }, - // 设备设施类型管理 查询树状数据 - getequipmentTypeMngTreeData: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentTypeMng/treeData`, - method: 'get' - }); - }, - // 仪器仪表信息、生产设备设施、安全设备设施 查询单条数据 - getequipmentInfoDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/selectOne/${params}`, - method: 'get' - }); - }, - // 仪器仪表信息、生产设备设施、安全设备设施 新增或者修改数据 - getequipmentInfoAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/addOrUpdate', - method: 'post', - data: params - }); - }, - // 仪器仪表信息、生产设备设施、安全设备设施 删除 - getequipmentInfoDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/delete`, - method: 'post', - data: params - }); - }, - // 仪器仪表信息、生产设备设施、安全设备设施 分页查询数据 - getequipmentInfoList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/page/list', - method: 'post', - data: params - }); - }, - // 仪器仪表信息、生产设备设施、安全设备设施 统计 - getequipmentInfoStatistics: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipmentInfo/statistics`, - method: 'get' - }); - }, - // 重点监管装置/设备 查询单条数据 - getkeypointEquipmentInfoDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/selectOne/${params}`, - method: 'get' - }); - }, - // 重点监管装置/设备 新增或者修改数据 - getkeypointEquipmentInfoAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 重点监管装置/设备 删除 - getkeypointEquipmentInfoDetele: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/delete`, - method: 'post', - data: params - }); - }, - // 重点监管装置/设备 分页查询数据 - getkeypointEquipmentInfoAddOrList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/keypointEquipmentInfo/page/list`, - method: 'post', - data: params - }); - } - }; -} diff --git a/src/api/facilityManagement/safetyGoodsAndEquipment/index.ts b/src/api/facilityManagement/safetyGoodsAndEquipment/index.ts deleted file mode 100644 index d8daf35..0000000 --- a/src/api/facilityManagement/safetyGoodsAndEquipment/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -import request from '/@/utils/request'; -export function goodsAndEquipmentApi() { - return { - // 设备设施类型管理 查询单条数据 - getGoodsEquipmentData: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/safeMaterial/page/list`, - method: 'post', - data - }); - }, - getAllSafetyEquipment: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/classify/list`, - method: 'post', - }); - }, - getAllSafetyEquipmentByPage: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/classify/page/list`, - method: 'post', - data - }); - }, - addGoodsEquipment: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/safeMaterial/save`, - method: 'post', - data - }); - }, - updateGoodsEquipment: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/safeMaterial/update`, - method: 'post', - data - }); - }, - deleteGoodsEquipment: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/safeMaterial/delete`, - method: 'post', - data - }); - }, - addGoodsClassify: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/classify/save`, - method: 'post', - data - }); - }, - updateGoodsClassify: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/classify/update`, - method: 'post', - data - }); - }, - deleteGoodsClassify: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/classify/delete`, - method: 'post', - data - }); - }, - batchInStorageGoods: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/saveBatch`, - method: 'post', - data - }); - }, - batchOutStorageGoods: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/equipment/smDetail/batch/delivery/random`, - method: 'post', - data - }); - }, - } -} diff --git a/src/api/goalManagement/index.ts b/src/api/goalManagement/index.ts deleted file mode 100644 index 2b9409f..0000000 --- a/src/api/goalManagement/index.ts +++ /dev/null @@ -1,412 +0,0 @@ -import request from '/@/utils/request'; -export function goalManagementApi() { - return { - // 目标设置、目标指标分解列表 - getTargetMngList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetMng/page/list', - method: 'post', - data: params - }); - }, - // 目标设置详情 - getTargetMngDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetMng/selectOne/${params}`, - method: 'get' - }); - }, - // 目标设置新增或者修改数据 - getTargetMngAddOrupdata: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetMng/addOrUpdate', - method: 'post', - data: params - }); - }, - // 目标设置删除 - getTargetMngDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetMng/delete`, - method: 'post', - data: params - }); - }, - // 目标指标分解-新增或者修改数据 - gettargetDivideDetail: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDivideDetail/addOrUpdate', - method: 'post', - data: params - }); - }, - // 统计 - getEquipmentInfo: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/equipmentInfo/statistics', - method: 'get' - }); - }, - // 目标责任书 分页查询数据 - gettargetDutyfileInfoList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyfileInfo/page/list', - method: 'post', - data: params - }); - }, - // 目标责任书 查询单条数据 - gettargetDutyfileInfoDetail: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/selectOne/${params}`, - method: 'get' - }); - }, - // 目标责任书 新增或者修改数据 - gettargetDutyfileInfoAddorUpdata: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 目标责任书 删除 - gettargetDutyfileInfoDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutyfileInfo/delete`, - method: 'post', - data: params - }); - }, - // 奖惩标准设定 分页查询数据 - getrewardPunishmentStandardList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentStandard/page/list', - method: 'post', - data: params - }); - }, - // 奖惩标准设定 查询单条数据 - getrewardPunishmentStandardDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentStandard/selectOne/${params}`, - method: 'get' - }); - }, - // 奖惩标准设定 新增或者修改数据 - getrewardPunishmentStandardaddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentStandard/addOrUpdate', - method: 'post', - data: params - }); - }, - // 奖惩标准设定 删除 - getrewardPunishmentStandardDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentStandard/delete`, - method: 'post', - data: params - }); - }, - // 奖惩记录 分页查询数据 - getrewardPunishmentList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/rewardPunishmentDetail/page/list', - method: 'post', - data: params - }); - }, - // 奖惩记录 查询单条数据 - getrewardPunishmentDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/selectOne/${params}`, - method: 'get' - }); - }, - // 奖惩记录 新增或者修改数据 - getrewardPunishmentAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 奖惩记录 删除 - getrewardPunishmentDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/rewardPunishmentDetail/delete`, - method: 'post', - data: params - }); - }, - // 绩效考核管理 安全考核管理 分页查询数据 - getexamineMngList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/examineMng/page/list', - method: 'post', - data: params - }); - }, - // 绩效考核管理 安全考核管理 查询单条数据 - getexamineMngDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineMng/selectOne/${params}`, - method: 'get' - }); - }, - // 绩效考核管理 安全考核管理 新增或者修改数据 - getexamineMngAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineMng/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 绩效考核管理 安全考核管理 删除 - getexamineMngDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineMng/delete`, - method: 'post', - data: params - }); - }, - // 绩效考核管理 考核标准设定 分页查询数据 - getexamineTemplateList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/examineTemplate/page/list', - method: 'post', - data: params - }); - }, - // 绩效考核管理 考核标准设定 查询单条数据 - getexamineTemplateDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/selectOne/${params}`, - method: 'get' - }); - }, - // 绩效考核管理 考核标准设定 新增或者修改数据 - getexamineTemplateAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 绩效考核管理 考核标准设定 删除 - getexamineTemplateDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/examineTemplate/delete`, - method: 'post', - data: params - }); - }, - // 目标汇总 分页查询数据 - gettargetDutySummaryList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutySummary/page/list', - method: 'post', - data: params - }); - }, - // 目标汇总 查询单条数据 - gettargetDutySummaryDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/selectOne/${params}`, - method: 'get' - }); - }, - // 目标汇总 新增或者修改数据 - gettargetDutySummaryAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/addOrUpdate`, - method: 'post', - data: params - }); - }, - // 目标汇总 删除 - gettargetDutySummaryDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutySummary/delete?ids=${params}`, - method: 'get' - }); - }, - //安全目标考核 列表 - gettargetExamineList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetMng/page/list', - method: 'post', - data: params - }); - }, - // 安全目标考核 查询单条数据 - gettargetExamineDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetExamine/selectOne/${params}`, - method: 'get' - }); - }, - // 安全目标考核 新增或者修改数据 - gettargetExamineAddOrUpdate: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetExamine/addOrUpdate', - method: 'post', - data: params - }); - }, - // 目标检查上报 分页查询数据 - getworkApproveList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetMng/checkAndSubimt/list', - method: 'post', - data: params - }); - }, - // 目标检查上报 查看审批流程 - getworkApproveListCode: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyWorkApprove/page/list', - method: 'post', - data: params - }); - }, - // 目标检查上报 分页查询检查记录 - getworkApproveListCheckData: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyWorkApprove/page/listCheckData', - method: 'post', - data: params - }); - }, - // 目标检查上报 查询单条数据 - getworkApproveDetail: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetDutyWorkApprove/selectOne/${params}`, - method: 'get' - }); - }, - - // 目标检查上报 新增数据 - getworkApproveAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyWorkApprove/add', - method: 'post', - data: params - }); - }, - // 目标检查上报 新增数据 - getworkApproveUpdata: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyWorkApprove/update', - method: 'post', - data: params - }); - }, - // 目标检查上报 删除 - getworkApproveDelete: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetDutyWorkApprove/delete', - method: 'post', - data: params - }); - }, - // 部门树 - getTreedepartment: () => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/department/list', - method: 'post' - }); - }, - // 人员 - getManName: (params: any) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/account/dep/list?depId=${params}`, - method: 'get' - }); - }, - beforeUploadFile(fileName1: string, fileName2: string) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/minio/file/presign?prefixName=' + fileName1 + '&suffixName=' + fileName2, - method: 'get' - }); - }, - searchFile(fileName: string) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/minio/file/view?obj=' + fileName, - method: 'get' - }); - }, - // 应急统计 - emergencyStat(params: object) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/emergencyCount/emergencyDrillExecute/count`, - method: 'post', - data: params - }); - }, - // 目标分类 分页查询数据 - gettargetClassList(params: object) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetType/page/list', - method: 'post', - data: params - }); - }, - // 目标分类 查询单条数据 - gettargetClassDetail(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetType/selectOne/${params}`, - method: 'get' - }); - }, - // 目标分类 新增或者修改数据 - gettargetClassAdd(params: object) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetType/addOrUpdate', - method: 'post', - data: params - }); - }, - // 目标分类 删除 - gettargetClassDelete(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetType/delete', - method: 'post', - data: params - }); - }, - // 目标分类 查询所有数据All - gettargetClassAll(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/targetType/page/listAll', - method: 'post', - data: params - }); - }, - // 统计 查询应急物资 - emergencySuppliesCount(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/emergencyCount/emergencySupplies/count', - method: 'post', - data: params - }); - }, - // 统计 事故快报 - accidentReportCount(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentCount/accidentReport/count', - method: 'post', - data: params - }); - }, - // 目标 统计 - gettargetstatistics(params: any) { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/targetMng/statistics?targetType=${params}`, - method: 'get' - // data:params - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/RFID/index.ts b/src/api/intellectInspectSystem/RFID/index.ts deleted file mode 100644 index 534ffda..0000000 --- a/src/api/intellectInspectSystem/RFID/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -import request from '/@/utils/request'; - -export function RFIDApi() { - return { - // v1 - getRFIDList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/select/listRfidByPage`, - method: 'post', - data: data - }); - }, - // v1 - addRFID: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/insert/saveRfid`, - method: 'post', - data: data - }); - }, - // v1 - modRFID: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/update/updateRfidById`, - method: 'post', - data: data - }); - }, - // v1 - deleteRFID: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/delete/deleteRfidById`, - method: 'post', - data: data - }); - }, - // v1 - getAllRFIDList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRfid/select/listRfidName`, - method: 'get' - }); - }, - - // 获取图片上传地址 - getUploadUrl: (name: string) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheck/minio/file/presign`, - method: 'post', - data: { prefixName: name.split('.')[0], suffixName: name.split('.')[1] } - }); - }, - uploadFile: (path: string, file: any) => { - return request({ - headers: { - contentType: 'application/json;charset=UTF-8' - }, - url: path, - method: 'put', - data: file - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/facilityAreaManage/index.ts b/src/api/intellectInspectSystem/facilityAreaManage/index.ts deleted file mode 100644 index 3c71309..0000000 --- a/src/api/intellectInspectSystem/facilityAreaManage/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -import request from '/@/utils/request'; - -export function facilityAreaApi() { - return { - // v1 - getFacilityAreaList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionByPage`, - method: 'post', - data: data - }); - }, - // v1 - getFacilityAreaById: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/getRegionById`, - method: 'post', - data: data - }); - }, - // v1 - addFacilityArea: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/insert/saveRegion`, - method: 'post', - data: data - }); - }, - // v1 - modFacilityArea: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/update/updateRegionById`, - method: 'post', - data: data - }); - }, - // v1 - deleteFacilityArea: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/delete/deleteRegionById`, - method: 'post', - data: data - }); - }, - // v1 - getAllFacilityAreaList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionName`, - method: 'get' - }); - }, - // v1 - getFacilityAreaType: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckRegionType/select/listRegionType`, - method: 'get' - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/inspectPointManage/index.ts b/src/api/intellectInspectSystem/inspectPointManage/index.ts deleted file mode 100644 index 500e718..0000000 --- a/src/api/intellectInspectSystem/inspectPointManage/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import request from '/@/utils/request'; - -export function inspectPointApi() { - return { - // v1 - getInspectPointList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/select/listPointByPage`, - method: 'post', - data: data - }); - }, - // v1 - getInspectPointById: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/select/getPointById`, - method: 'post', - data: data - }); - }, - // v1 - addInspectPoint: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/insert/savePoint`, - method: 'post', - data: data - }); - }, - // v1 - modInspectPoint: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/update/updatePointById`, - method: 'post', - data: data - }); - }, - // v1 - deleteInspectPoint: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/delete/deletePointById`, - method: 'post', - data: data - }); - }, - // v1 - getAllInspectPointList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckRegion/select/listRegionName`, - method: 'get' - }); - }, - getInspectPointAll: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckPoint/select/getPointRegionRfidId`, - method: 'post' - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/inspectRecord/index.ts b/src/api/intellectInspectSystem/inspectRecord/index.ts deleted file mode 100644 index a7d17bb..0000000 --- a/src/api/intellectInspectSystem/inspectRecord/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import request from '/@/utils/request'; - -export function inspectRecordApi() { - return { - // v1 - getInspectRecordList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTask/select/listTaskByPage`, - method: 'post', - data: data - }); - }, - // v1 - getInspectRecordById: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTask/select/listTaskMainAndQuota`, - method: 'post', - data: data - }); - }, - getInspectRecordByIndex: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTask/select/listTaskByPageAndStatusAndTime`, - method: 'post', - data: data - }); - }, - getInspectRecordSum: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTask/select/listTaskQuotaGbRegionGbQuotaGbPoint`, - method: 'post', - data: data - }); - }, - - getDayRecord: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTask/select/listTaskByNoCheckTaskAndAbnormalTask`, - method: 'get', - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/inspectTargetManage/index.ts b/src/api/intellectInspectSystem/inspectTargetManage/index.ts deleted file mode 100644 index cec17ec..0000000 --- a/src/api/intellectInspectSystem/inspectTargetManage/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import request from '/@/utils/request'; - -export function inspectTargetApi() { - return { - // v1 - getInspectTargetList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuota/select/listQuotaByPage`, - method: 'post', - data: data - }); - }, - // v1 - getInspectTargetById: (id: number) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuota/select/getQuotaById?id=${id}`, - method: 'get' - }); - }, - // v1 - addInspectTarget: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuota/insert/saveQuota`, - method: 'post', - data: data - }); - }, - // v1 - modInspectTarget: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuota/update/updateQuotaById`, - method: 'post', - data: data - }); - }, - // v1 - deleteInspectTarget: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuota/delete/deleteQuotaById`, - method: 'post', - data: data - }); - }, - // v1 - getAllInspectTargetList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`, - method: 'post' - }); - }, - // v1 - getQuotaTypeList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuotaType/select/listQuotaType`, - method: 'get' - }); - } - }; -} diff --git a/src/api/intellectInspectSystem/inspectTask/index.ts b/src/api/intellectInspectSystem/inspectTask/index.ts deleted file mode 100644 index 683bdd8..0000000 --- a/src/api/intellectInspectSystem/inspectTask/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import request from '/@/utils/request'; - -export function inspectTaskApi() { - return { - // v1 - getInspectTaskList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/select/listTaskUnitByPage`, - method: 'post', - data: data - }); - }, - // v1 - getInspectTaskById: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/select/getTaskUnitById`, - method: 'post', - data: data - }); - }, - // v1 - addInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/insert/saveTaskUnit`, - method: 'post', - data: data - }); - }, - // v1 - modInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/update/updateTaskUnitMainById`, - method: 'post', - data: data - }); - }, - // v1 - deleteInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/delete/deleteTaskUnit`, - method: 'post', - data: data - }); - }, - // v1 - addChainOfInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/insert/saveTaskUnitPoint`, - method: 'post', - data: data - }); - }, - // v1 - modChainOfInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/update/updateTaskUnitPointById`, - method: 'post', - data: data - }); - }, - // v1 - deleteChainOfInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/delete/deleteTaskUnitPoint`, - method: 'post', - data: data - }); - }, - getQuotaList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/safeCheckQuotaType/select/listQuotaType`, - method: 'get' - }); - }, - openOrCloseInspectTask: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckTaskUnit/update/updateTaskUnitStatusById`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/intelligentLine/index.ts b/src/api/intelligentLine/index.ts deleted file mode 100644 index d79e528..0000000 --- a/src/api/intelligentLine/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -import request from '/@/utils/request'; - -export function lineApi() { - return { - // 分页获取休息日列表 - getLine: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/SafeCheckSmartScreen/select/getSmartScreenDataByTaskId`, - method: 'post', - data: data - }); - }, - - // 获取Url - getUrl: () => { - return request({ - url: import.meta.env.VITE_API_URL_SOCKET + `/ws/namesrv/get/one?srv=safeplatform-websocket`, - method: 'get' - }); - } - }; -} diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 61d862f..dceecdf 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -10,7 +10,7 @@ // v1 signIn: (params: object) => { return request({ - url: import.meta.env.VITE_API_URL + '/auth/login', + url: import.meta.env.VITE_API_URL + '/account/auth/login', method: 'post', data: params }); diff --git a/src/api/specialWorkSystem/approveBasic/index.ts b/src/api/specialWorkSystem/approveBasic/index.ts deleted file mode 100644 index 15b3ba4..0000000 --- a/src/api/specialWorkSystem/approveBasic/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import request from '/@/utils/request'; - -export function approveBasicApi() { - return { - // v1 - getApproveBasicList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/page/list`, - method: 'post', - data: data - }); - }, - // v1 - addApproveBasic: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/save`, - method: 'post', - data: data - }); - }, - // v1 - modApproveBasic: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/update`, - method: 'post', - data: data - }); - }, - // v1 - deleteApproveBasic: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/delete`, - method: 'post', - data: data - }); - }, - // v1 - getAllApproveBasicList: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/ruleItemStand/list`, - method: 'post', - data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/approveRule/index.ts b/src/api/specialWorkSystem/approveRule/index.ts deleted file mode 100644 index a95e65d..0000000 --- a/src/api/specialWorkSystem/approveRule/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import request from '/@/utils/request'; - -export function approveRuleApi() { - return { - // v1 - getApproveRuleList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/listByPage`, - method: 'post', - data: data - }); - }, - // v1 - addApproveRule: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/save`, - method: 'post', - data: data - }); - }, - // v1 - modApproveRule: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/update`, - method: 'post', - data: data - }); - }, - // v1 - deleteApproveRule: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/del`, - method: 'post', - data: data - }); - }, - // v1 - getAllApproveRuleList: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL + `/prevent/device/select/listDevices`, - method: 'post', - data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/material/index.ts b/src/api/specialWorkSystem/material/index.ts deleted file mode 100644 index 5133881..0000000 --- a/src/api/specialWorkSystem/material/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import request from '/@/utils/request'; - -export function materialApi() { - return { - - //物资管理分页列表 - getRecordPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/page/list`, - method: 'post', - data: data - }); - }, - - //物资列表 - getRecordList: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/equipment/materialClassify`, - method: 'post' - }); - }, - - // 新增 - addRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/save`, - method: 'post', - data: data - }); - }, - - // 修改 - updateRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/update`, - method: 'post', - data: data - }); - }, - - // 删除 - deleteRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/delete`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/safetyAction/index.ts b/src/api/specialWorkSystem/safetyAction/index.ts deleted file mode 100644 index 13f945a..0000000 --- a/src/api/specialWorkSystem/safetyAction/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import request from '/@/utils/request'; - -export function safetyActionApi() { - return { - // v1 - getSafetyActionList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/measure/page/list`, - method: 'post', - data: data - }); - }, - // v1 - addSafetyAction: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/measure/save`, - method: 'post', - data: data - }); - }, - // v1 - modSafetyAction: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/measure/mod`, - method: 'post', - data: data - }); - }, - // v1 - deleteSafetyAction: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/measure/delete`, - method: 'post', - data: data - }); - }, - // v1 - getAllSafetyActionList: (data: {}) => { - return request({ - url: import.meta.env.VITE_API_URL + `/rule/measure/list`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/workApply/index.ts b/src/api/specialWorkSystem/workApply/index.ts deleted file mode 100644 index 6258f0e..0000000 --- a/src/api/specialWorkSystem/workApply/index.ts +++ /dev/null @@ -1,190 +0,0 @@ -import request from '/@/utils/request'; - -export function workApplyApi() { - return { - // 分页获取申请列表 - getApplyListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/applying/page/list`, - method: 'post', - data: data - }); - }, - - // 所有记录列表 - getApplyList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/all/page/list`, - method: 'post', - data: data - }); - }, - - // 分页获取申请列表 - getAllUsers: () => { - return request({ - url: import.meta.env.VITE_API_URL + `/account/list`, - method: 'get' - }); - }, - - // 导出打印接口 - postPrinting: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/printing`, - method: 'post', - data: data, - responseType: 'blob', - headers:{'Content-Type': 'application/json'} - }); - }, - - - // 动火申请 - postFireApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/hot`, - method: 'post', - data: data - }); - }, - - // 受限空间申请 - postSpaceApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/confinedspace`, - method: 'post', - data: data - }); - }, - - // 吊装申请 - postHoistApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/hoisting`, - method: 'post', - data: data - }); - }, - - // 动土申请 - postGroundApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/groundBreaking`, - method: 'post', - data: data - }); - }, - - // 断路申请 - postBrokenApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/brokenCircuit`, - method: 'post', - data: data - }); - }, - - // 高处申请 - postHeightApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/height`, - method: 'post', - data: data - }); - }, - - // 临时用电申请 - postPowerApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/temporaryPower`, - method: 'post', - data: data - }); - }, - - // 盲板申请 - postPlateApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/blindPlatePlugging`, - method: 'post', - data: data - }); - }, - - // 取消申请 - cancelApply: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/cancel`, - method: 'post', - data: data - }); - }, - - // 查询进度 - getStatus: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/applicant/approved/view`, - method: 'post', - data: data - }); - }, - - // 查询所有进度 - getAllStatus: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/others/view`, - method: 'post', - data: data - }); - }, - - // 获取图片上传路径 - getUploadUrl: (name: string) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/file/getPresignUrl`, - method: 'post', - data: { prefixName: name.split('.')[0], suffixName: name.split('.')[1] } - }); - }, - - // 上传图片 - uploadFile: (path: string, file: any) => { - return request({ - headers: { - contentType: 'application/json;charset=UTF-8' - }, - url: path, - method: 'put', - data: file - }); - }, - - // 删除图片 - deleteFile: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/file/deleteFile`, - method: 'post', - data: data - }); - }, - - // 获取物资配置数据 - getMaterial: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/queryByWorkTypeOrLevel`, - method: 'post', - data: data - }); - }, - - // 根据物资配置id和领取人获取领取情况 - getMaterialDetail: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/material/receive`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/workApproval/index.ts b/src/api/specialWorkSystem/workApproval/index.ts deleted file mode 100644 index 2365cee..0000000 --- a/src/api/specialWorkSystem/workApproval/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import request from '/@/utils/request'; - -export function workApprovalApi() { - return { - // 分页获取审批列表 - getApprovalListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/pending/page/list`, - method: 'post', - data: data - }); - }, - - // 获取当前层级审批数据 - getApprovalData: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/approval/pending/data`, - method: 'post', - data: data - }); - }, - - // 获取当前层级审批进度 - getApprovalStatus: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/approver/approved/view`, - method: 'post', - data: data - }); - }, - - // 终止当前审批进度 - postAbord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/apply/abord`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/workPlan/workAppoint/index.ts b/src/api/specialWorkSystem/workPlan/workAppoint/index.ts deleted file mode 100644 index 9d44e51..0000000 --- a/src/api/specialWorkSystem/workPlan/workAppoint/index.ts +++ /dev/null @@ -1,50 +0,0 @@ -import request from '/@/utils/request'; - -export function workAppointApi() { - return { - // 分页获取列表 - getAppointListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/listAll`, - method: 'post', - data: data - }); - }, - - // 新增列表 - addRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/save`, - method: 'post', - data: data - }); - }, - - //修改列表 - editRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/update`, - method: 'post', - data: data - }); - }, - - //删除列表 - deleteRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/delete`, - method: 'post', - data: data - }); - }, - - //获取各部门各作业的数量 - getAllRecords: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/statistics`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/workPlan/workReservation/index.ts b/src/api/specialWorkSystem/workPlan/workReservation/index.ts deleted file mode 100644 index d432b75..0000000 --- a/src/api/specialWorkSystem/workPlan/workReservation/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import request from '/@/utils/request'; - -export function workReserveApi() { - return { - // 分页获取列表 - getReserveListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/listByDep`, - method: 'post', - data: data - }); - }, - - // 新增列表 - addRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/save`, - method: 'post', - data: data - }); - }, - - //修改列表 - editRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/update`, - method: 'post', - data: data - }); - }, - - //删除列表 - deleteRecord: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/specialWork/appointment/delete`, - method: 'post', - data: data - }); - } - }; -} diff --git a/src/api/specialWorkSystem/workProcess/index.ts b/src/api/specialWorkSystem/workProcess/index.ts deleted file mode 100644 index 0cd1ff0..0000000 --- a/src/api/specialWorkSystem/workProcess/index.ts +++ /dev/null @@ -1,59 +0,0 @@ -import request from '/@/utils/request'; - -export function workProcessApi() { - return { - // 分页获取检测列表 - getDetectionListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/detection/page/list`, - method: 'post', - data: data - }); - }, - - // 分页获取检查列表 - getCheckListPage: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/check/page/list`, - method: 'post', - data: data - }); - }, - - // 检测上报 - postDetectionReport: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/detection/report`, - method: 'post', - data: data - }); - }, - - // 检查上报 - postCheckReport: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/check/report`, - method: 'post', - data: data - }); - }, - - // 获取可上报作业列表 - postReportList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/workApply/list`, - method: 'post', - data: data - }); - }, - - // 获取预警记录 - postAlertList: (data: object) => { - return request({ - url: import.meta.env.VITE_API_URL + `/work/process/warning/page/list`, - method: 'post', - data: data - }); - }, - }; -} diff --git a/src/api/systemManage/menu/index.ts b/src/api/systemManage/menu/index.ts index 85514f2..bbb0469 100644 --- a/src/api/systemManage/menu/index.ts +++ b/src/api/systemManage/menu/index.ts @@ -9,10 +9,16 @@ export function useMenuApi() { return { // v2 - getMenuAdmin: (value?: string) => { + // getMenuAdmin: (value?: string) => { + // return request({ + // url: import.meta.env.VITE_API_URL + `/auth/menu?projectId= ${value}`, + // method: 'post' + // }); + // }, + getMenuAdmin: () => { return request({ - url: import.meta.env.VITE_API_URL + `/auth/menu?projectId= ${value}`, - method: 'post' + url: import.meta.env.VITE_API_URL + `/sys/console/menu/get/all`, + method: 'get' }); }, // v1 diff --git a/src/api/workInjuryDeclaration/index.ts b/src/api/workInjuryDeclaration/index.ts deleted file mode 100644 index 630f412..0000000 --- a/src/api/workInjuryDeclaration/index.ts +++ /dev/null @@ -1,123 +0,0 @@ -import request from '/@/utils/request'; - -export function accidentManagementSystemApi() { - return { - // 事故快报一览 - accidentList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/page/list', - method: 'post', - data: params - }); - }, - // 事故快报新增 - accidentAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/add', - method: 'post', - data: params - }); - }, - // 事故快报详情 - accidentScarh: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/info/${params}`, - method: 'get' - }); - }, - // 事故快报修改 - accidentView: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentExpress/update', - method: 'post', - data: params - }); - }, - // 事故快报删除 - accidentDele: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentExpress/batchDelete/${params}`, - method: 'get' - }); - }, - - // 事故报告一览 - getAccidentReportList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/accidentReport/page/list', - method: 'post', - data: params - }); - }, - // 事故报告新增 - addAccidentReport: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/add`, - method: 'post', - data: params - }); - }, - // 事故报告详情 - seeAccidentReport: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/info/${params}`, - method: 'get' - }); - }, - // 事故报告编辑 - editAccidentReport: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/update`, - method: 'post', - data: params - }); - }, - // 事故报告删除 - deleteAccidentReport: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/accidentReport/batchDelete`, - method: 'post', - data: params - }); - }, - - // 工伤申报一览 - workList: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/page/list', - method: 'post', - data: params - }); - }, - // 工伤申报新增 - workAdd: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/add', - method: 'post', - data: params - }); - }, - // 工伤申报详情 - seeAccidentManagementSystem: (params: number) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `workInjuryDeclaration/info/${params}`, - method: 'get' - }); - }, - // 工伤申报修改 - workView: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + '/workInjuryDeclaration/update', - method: 'post', - data: params - }); - }, - // 工伤申报删除/批量删除 - workDelete: (params: object) => { - return request({ - url: import.meta.env.VITE_API_URL_OUT + `/workInjuryDeclaration/batchDelete/${params}`, - method: 'get' - }); - } - }; -} diff --git a/src/components/DailogClass/index.vue b/src/components/DailogClass/index.vue deleted file mode 100644 index f629089..0000000 --- a/src/components/DailogClass/index.vue +++ /dev/null @@ -1,147 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" @close="resetForm(ruleFormRef)" :fullscreen="full" :title="titles" width="30%" draggable> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px"> - <el-row> - <el-col :span="20"> - <el-form-item label="名称" size="default" prop="typeName"> - <el-input v-model="form.typeName" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="20"> - <el-form-item label="描述" size="default" prop="memo"> - <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(ruleFormRef)" size="default">关闭</el-button> - <el-button type="primary" v-if="disabled == false" @click="submitForm(ruleFormRef)" size="default">确定</el-button> - </span> - </template> - </el-dialog> -</template> -<script lang="ts"> -import { defineComponent, ref, reactive } from 'vue'; -import { timeDate } from '/@/assets/index.ts'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - components: {}, - setup(props, { emit }) { - const ruleFormRef = ref<FormInstance>(); - const dialogVisible = ref<boolean>(false); - const form = ref({ - typeName: '', - memo: '', - }); - const targetType = ref(); - const disabled = ref(false); - const titles = ref(); - const titleT=ref() - const openDailog = (title: string, type: any, id: number) => { - dialogVisible.value = true; - titles.value = `${title}目标分解`; - titleT.value=title - targetType.value = type; - disabled.value = title == '查看' ? true : false; - if (title == '查看' || title == '修改') { - goalManagementApi() - .gettargetClassDetail(id) - .then((res) => { - if (res.data.code == 200) { - form.value = res.data.data; - } else { - ElMessage.error(res.data.msg); - } - }); - } - }; - const rules = reactive<FormRules>({ - typeName: [ - { - required: true, - message: '名称不能为空', - trigger: 'blur', - }, - ], - memo: [ - { - required: true, - message: '描述不能为空', - trigger: 'blur', - }, - ], - }); - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - if(titleT.value=='新建'){ - delete form.value.id - } - dialogVisible.value = false; - goalManagementApi() - .gettargetClassAdd(form.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - message: res.data.msg, - type: 'success', - }); - emit('onAdd'); - } else { - ElMessage.error(res.data.msg); - } - }); - } 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 { - timeDate, - ruleFormRef, - titleT, - rules, - submitForm, - resetForm, - form, - dialogVisible, - openDailog, - Search, - full, - toggleFullscreen, - FullScreen, - targetType, - disabled, - titles, - }; - }, -}); -</script> -<style scoped> -.el-row { - padding: 0 0 20px 0; -} -</style> \ No newline at end of file diff --git a/src/components/DailogSearch/DailogSearch.vue b/src/components/DailogSearch/DailogSearch.vue deleted file mode 100644 index fcf71a6..0000000 --- a/src/components/DailogSearch/DailogSearch.vue +++ /dev/null @@ -1,193 +0,0 @@ -<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="10" :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"> - <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 deleted file mode 100644 index 7345d2e..0000000 --- a/src/components/DailogSearchUser/index.vue +++ /dev/null @@ -1,246 +0,0 @@ -<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" @click="clear">清除选择</el-button> - </el-form-item> - </el-col> - </el-row> - </el-form> - <el-table :data="tableData" style="width: 100%; margin-top: 20px" ref="clearAll" @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; - clear() - }; - const clearAll=ref() - const clear=()=>{ - dynamicTags.value=[] - radio1.value="" - clearAll.value.clearSelection() - } - return { - clear, - clearAll, - 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 deleted file mode 100644 index 1632e6a..0000000 --- a/src/components/DailogSearchUserManger/index.vue +++ /dev/null @@ -1,223 +0,0 @@ -<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 deleted file mode 100644 index 7dcd7eb..0000000 --- a/src/components/checkTemplate/index.vue +++ /dev/null @@ -1,230 +0,0 @@ -<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.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" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" v-if="types == 0"> - <template #default="scope" v-if="types != 0"> - <el-radio-group v-model="radio1"> - <el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio> - </el-radio-group> - </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/contingencyManagement/contingency'; - -export default defineComponent({ - setup(props, { emit }) { - const types = ref(); - const dialogVisible = ref<boolean>(false); - const openDailog = (type: any) => { - types.value = type; - dialogVisible.value = true; - // onSubmit(); - }; - // 搜索条件 - const listQuery = reactive({ - pageIndex: 1, - pageSize: 10, - searchParams: { - teamName: '', - }, - }); - // 列表数据请求 - 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 = () => { - if (types.value == 0) { - emit('SearchUser', dynamicTags.value, types.value); - } else { - emit('SearchUser', dynamicTags.value[0], types.value); - } - dialogVisible.value = false; - }; - const handleSelectionChange = (val: any) => { - dynamicTags.value = val; - }; - // 重置 - const submitReset = () => { - listQuery.searchParams.teamName = ''; - 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) => { - console.log(event); - 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, - types, - handleSelectionChange, - }; - }, -}); -</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/editor/index.vue b/src/components/editor/index.vue deleted file mode 100644 index 78e5726..0000000 --- a/src/components/editor/index.vue +++ /dev/null @@ -1,115 +0,0 @@ -<template> - <div class="editor-container"> - <div ref="editorToolbar"></div> - <div ref="editorContent" :style="{ height }"></div> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, watch, defineComponent } from 'vue'; -import { createEditor, createToolbar, IEditorConfig, IToolbarConfig, IDomEditor } from '@wangeditor/editor'; -import '@wangeditor/editor/dist/css/style.css'; -import { toolbarKeys } from './toolbar'; - -// 定义接口来定义对象的类型 -interface WangeditorState { - editorToolbar: HTMLDivElement | null; - editorContent: HTMLDivElement | null; - editor: any; -} - -export default defineComponent({ - name: 'wngEditor', - props: { - // 节点 id - id: { - type: String, - default: () => 'wangeditor', - }, - // 是否禁用 - isDisable: { - type: Boolean, - default: () => false, - }, - // 内容框默认 placeholder - placeholder: { - type: String, - default: () => '请输入内容', - }, - // 双向绑定:双向绑定值,字段名为固定,改了之后将不生效 - // 参考:https://v3.cn.vuejs.org/guide/migration/v-model.html#%E8%BF%81%E7%A7%BB%E7%AD%96%E7%95%A5 - modelValue: String, - // https://www.wangeditor.com/v5/getting-started.html#mode-%E6%A8%A1%E5%BC%8F - // 模式,可选 <default|simple>,默认 default - mode: { - type: String, - default: () => 'default', - }, - // 高度 - height: { - type: String, - default: () => '310px', - }, - }, - setup(props, { emit }) { - const state = reactive<WangeditorState>({ - editorToolbar: null, - editor: null, - editorContent: null, - }); - // 富文本配置 - const wangeditorConfig = () => { - const editorConfig: Partial<IEditorConfig> = { MENU_CONF: {} }; - props.isDisable ? (editorConfig.readOnly = true) : (editorConfig.readOnly = false); - editorConfig.placeholder = props.placeholder; - editorConfig.onChange = (editor: IDomEditor) => { - // console.log('content', editor.children); - // console.log('html', editor.getHtml()); - emit('update:modelValue', editor.getHtml()); - }; - (<any>editorConfig).MENU_CONF['uploadImage'] = { - base64LimitSize: 10 * 1024 * 1024, - }; - return editorConfig; - }; - // - const toolbarConfig = () => { - const toolbarConfig: Partial<IToolbarConfig> = {}; - toolbarConfig.toolbarKeys = toolbarKeys; - return toolbarConfig; - }; - // 初始化富文本 - // https://www.wangeditor.com/ - const initWangeditor = () => { - state.editor = createEditor({ - html: props.modelValue, - selector: state.editorContent!, - config: wangeditorConfig(), - mode: props.mode, - }); - createToolbar({ - editor: state.editor, - selector: state.editorToolbar!, - mode: props.mode, - config: toolbarConfig(), - }); - }; - // 页面加载时 - onMounted(() => { - initWangeditor(); - }); - // 监听双向绑定值的改变 - // https://gitee.com/lyt-top/vue-next-admin/issues/I4LM7I - watch( - () => props.modelValue, - (value) => { - state.editor.clear(); - state.editor.dangerouslyInsertHtml(value); - } - ); - return { - ...toRefs(state), - }; - }, -}); -</script> diff --git a/src/components/editor/toolbar.ts b/src/components/editor/toolbar.ts deleted file mode 100644 index 14a9bf3..0000000 --- a/src/components/editor/toolbar.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * 工具栏配置 - */ -export const toolbarKeys = [ - 'headerSelect', - 'blockquote', - '|', - 'bold', - 'underline', - 'italic', - { - key: 'group-more-style', - title: '更多', - iconSvg: - '<svg viewBox="0 0 1024 1024"><path d="M204.8 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z"></path><path d="M505.6 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z"></path><path d="M806.4 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z"></path></svg>', - menuKeys: ['through', 'code', 'sup', 'sub', 'clearStyle'], - }, - 'color', - 'bgColor', - '|', - 'fontSize', - 'fontFamily', - 'lineHeight', - '|', - 'bulletedList', - 'numberedList', - 'todo', - { - key: 'group-justify', - title: '对齐', - iconSvg: - '<svg viewBox="0 0 1024 1024"><path d="M768 793.6v102.4H51.2v-102.4h716.8z m204.8-230.4v102.4H51.2v-102.4h921.6z m-204.8-230.4v102.4H51.2v-102.4h716.8zM972.8 102.4v102.4H51.2V102.4h921.6z"></path></svg>', - menuKeys: ['justifyLeft', 'justifyRight', 'justifyCenter', 'justifyJustify'], - }, - { - key: 'group-indent', - title: '缩进', - iconSvg: - '<svg viewBox="0 0 1024 1024"><path d="M0 64h1024v128H0z m384 192h640v128H384z m0 192h640v128H384z m0 192h640v128H384zM0 832h1024v128H0z m0-128V320l256 192z"></path></svg>', - menuKeys: ['indent', 'delIndent'], - }, - '|', - 'emotion', - 'insertLink', - { - key: 'group-image', - title: '图片', - iconSvg: - '<svg viewBox="0 0 1024 1024"><path d="M959.877 128l0.123 0.123v767.775l-0.123 0.122H64.102l-0.122-0.122V128.123l0.122-0.123h895.775zM960 64H64C28.795 64 0 92.795 0 128v768c0 35.205 28.795 64 64 64h896c35.205 0 64-28.795 64-64V128c0-35.205-28.795-64-64-64zM832 288.01c0 53.023-42.988 96.01-96.01 96.01s-96.01-42.987-96.01-96.01S682.967 192 735.99 192 832 234.988 832 288.01zM896 832H128V704l224.01-384 256 320h64l224.01-192z"></path></svg>', - menuKeys: ['uploadImage'], - }, - 'insertTable', - 'codeBlock', - 'divider', - '|', - 'undo', - 'redo', - '|', - 'fullScreen', -]; diff --git a/src/components/emergencySupplies/index.vue b/src/components/emergencySupplies/index.vue deleted file mode 100644 index 8bb4aba..0000000 --- a/src/components/emergencySupplies/index.vue +++ /dev/null @@ -1,215 +0,0 @@ -<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/contingencyManagement/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 deleted file mode 100644 index 9ed675f..0000000 --- a/src/components/equipmentDailog/Dailog.vue +++ /dev/null @@ -1,903 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" :fullscreen="full" @close="resetForm(ruleFormRef)" draggable :title="titles" width="60%"> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px" class="formType"> - <el-form-item label="装置设施名称" size="default" prop="qName"> - <el-input v-model="form.qName" placeholder="请填写装置设施名称" /> - </el-form-item> - <el-form-item label="装置设施位号" size="default" prop="positionNum"> - <el-input disabled v-model="form.positionNum" placeholder="请填写装置设施位号" /> - </el-form-item> - <el-form-item label="装置设施用途" size="default" prop="qUsage"> - <el-input v-model="form.qUsage" placeholder="请填写装置设施用途" /> - </el-form-item> - <el-form-item label="装置设施型号" size="default" prop="model"> - <el-input v-model="form.model" placeholder="请填写装置设施型号" /> - </el-form-item> - <el-form-item label="类型/类别外键" size="default" prop="equipmentTypeName"> - <el-input v-model="form.equipmentTypeName" 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" prop="departmentId"> - <el-tree-select v-model="form.departmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" /> - </el-form-item> - <el-form-item label="设置部位" size="default" prop="setPart"> - <el-input v-model="form.setPart" placeholder="请填写设置部位" /> - </el-form-item> - <el-form-item label="生产日期" size="default" prop="produceTime"> - <el-date-picker v-model="form.produceTime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="使用期限(天)" size="default" prop="useEndDay"> - <el-input v-model="form.useEndDay" placeholder="请填写使用期限" /> - </el-form-item> - <el-form-item label="生命周期" size="default" prop="lifeCycle"> - <el-select v-model="form.lifeCycle" placeholder="请选择" style="width: 100%"> - <el-option label="已投用" :value="1" /> - <el-option label="库存中" :value="2" /> - <el-option label="报废" :value="3" /> - </el-select> - </el-form-item> - <el-form-item label="投用日期" size="default" prop="useDate"> - <el-date-picker v-model="form.useDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="维修状态" size="default" prop="repairStatus"> - <el-select v-model="form.repairStatus" placeholder="请选择" style="width: 100%"> - <el-option label="维修中" :value="1" /> - <el-option label="已修好" :value="2" /> - </el-select> - </el-form-item> - <el-form-item label="停用状态" size="default" prop="stopStatus"> - <el-select v-model="form.stopStatus" placeholder="请选择" style="width: 100%"> - <el-option label="停用" :value="1" /> - <el-option label="在用" :value="2" /> - <el-option label="维修" :value="3" /> - <el-option label="报废" :value="4" /> - </el-select> - </el-form-item> - <el-form-item label="上次检查日期" size="default" prop="previousCheckDate"> - <el-date-picker - v-model="form.previousCheckDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="上次检测日期" size="default" prop="previousTestDate"> - <el-date-picker v-model="form.previousTestDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="上次保养日期" size="default" prop="previousTakecareDate"> - <el-date-picker - v-model="form.previousTakecareDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="下次检查日期" size="default" prop="nextCheckDate"> - <el-date-picker v-model="form.nextCheckDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="下次检测日期" size="default" prop="nextTestDate"> - <el-date-picker v-model="form.nextTestDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="下次保养日期" size="default" prop="nextTakecareDate"> - <el-date-picker v-model="form.nextTakecareDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="负责人" size="default" prop="leadingPersonName"> - <el-input v-model="form.leadingPersonName" placeholder="请选择"> - <template #append> - <el-button :icon="Search" @click="openUser(1)"></el-button> - </template> - </el-input> - </el-form-item> - <el-form-item label="负责人部门" size="default" prop="leadingPersonDepartmentId"> - <el-tree-select - v-model="form.leadingPersonDepartmentId" - :data="data" - check-strictly="true" - class="w100" - :props="propse" - placeholder="请选择" - /> - </el-form-item> - <el-form-item label="供应商" size="default" prop="supplyName"> - <el-input v-model="form.supplyName" placeholder="请填写供应商" /> - </el-form-item> - <el-form-item label="使用说明" size="default" prop="useMemo"> - <el-input v-model="form.useMemo" placeholder="请填写使用说明" /> - </el-form-item> - <el-form-item label="是否检查" size="default" prop="isNeedCheck"> - <el-select v-model="form.isNeedCheck" placeholder="请选择" style="width: 100%"> - <el-option label="是" :value="1" /> - <el-option label="否" :value="2" /> - </el-select> - </el-form-item> - <el-form-item label="检查周期" size="default" prop="checkCycle"> - <el-input v-model="form.checkCycle" placeholder="请填写检查周期" /> - </el-form-item> - <el-form-item label="检查提前提醒" size="default" prop="checkWarn"> - <el-input v-model="form.checkWarn" placeholder="请填写检查提前提醒" /> - </el-form-item> - <el-form-item label="是否检测" size="default" prop="isNeedTest"> - <el-select v-model="form.isNeedTest" placeholder="请选择" style="width: 100%"> - <el-option label="是" :value="1" /> - <el-option label="否" :value="2" /> - </el-select> - </el-form-item> - <el-form-item label="检测周期" size="default" prop="testCycle"> - <el-input v-model="form.testCycle" placeholder="请填写检测周期" /> - </el-form-item> - <el-form-item label="检测提前提醒" size="default" prop="testWarn"> - <el-input v-model="form.testWarn" placeholder="请填写检测提前提醒" /> - </el-form-item> - <el-form-item label="是否保养" size="default" prop="isNeedTakecare"> - <el-select v-model="form.isNeedTakecare" placeholder="请选择" style="width: 100%"> - <el-option label="是" :value="1" /> - <el-option label="否" :value="2" /> - </el-select> - </el-form-item> - <el-form-item label="检查内容" size="default" prop="checkContent"> - <el-input v-model="form.checkContent" placeholder="请填写检查内容" /> - </el-form-item> - <el-form-item label="负责部门" size="default" prop="leadingDepartmentId"> - <el-tree-select v-model="form.leadingDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" /> - </el-form-item> - <el-form-item label="检查指标" size="default" prop="checkPoint"> - <el-input v-model="form.checkPoint" placeholder="请填写检查指标" /> - </el-form-item> - <el-form-item label="预警值" size="default" prop="alertNum"> - <el-input v-model="form.alertNum" placeholder="请填写预警值" /> - </el-form-item> - <el-form-item label="联锁值" size="default" prop="lockNum"> - <el-input v-model="form.lockNum" placeholder="请填写联锁值" /> - </el-form-item> - <el-form-item label="停用理由" size="default" prop="stopReason"> - <el-input v-model="form.stopReason" placeholder="请填写停用理由" /> - </el-form-item> - <el-form-item label="停用后措施" size="default" prop="afterStopStep"> - <el-input v-model="form.afterStopStep" placeholder="请填写停用后措施" /> - </el-form-item> - <el-form-item label="实际停用日期" size="default" prop="actualStopDate"> - <el-date-picker v-model="form.actualStopDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="停用提交人" size="default" prop="stopSubmitPersonName"> - <el-input v-model="form.stopSubmitPersonName" placeholder="请选择"> - <template #append> - <el-button :icon="Search" @click="openUser(2)"></el-button> - </template> - </el-input> - </el-form-item> - <el-form-item label="停用提交日期" size="default" prop="stopSubmitDate"> - <el-date-picker v-model="form.stopSubmitDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - <el-form-item label="恢复理由" size="default" prop="recoveryReason"> - <el-input v-model="form.recoveryReason" placeholder="请填写恢复理由" /> - </el-form-item> - <el-form-item label="恢复填报日期" size="default" prop="recoverySubmitDate"> - <el-date-picker - v-model="form.recoverySubmitDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="实际恢复日期" size="default" prop="actualRecoveryDate"> - <el-date-picker - v-model="form.actualRecoveryDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="报废理由" size="default" prop="destoryReason"> - <el-input v-model="form.destoryReason" placeholder="请填写报废理由" /> - </el-form-item> - <el-form-item label="报废填报日期" size="default" prop="destorySubmitDate"> - <el-date-picker - v-model="form.destorySubmitDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="实际报废日期" size="default" prop="actualDestoryDate"> - <el-date-picker - v-model="form.actualDestoryDate" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="选择日期时间" - style="width: 100%" - /> - </el-form-item> - <el-form-item label="保养周期" size="default" prop="takecareCycle "> - <el-input v-model="form.takecareCycle" placeholder="请填写保养周期" /> - </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" :disabled="disabled" @click="openMaintenance('新增', '')">新增</el-button> - <el-table :data="form.takecareDetailList" style="width: 100%"> - <el-table-column align="center" prop="takecareMemo" label="保养情况" /> - <el-table-column align="center" prop="leadingPersonName" label="保养负责人" /> - <el-table-column align="center" prop="takecareDate" :formatter="timeDate" label="保养日期" /> - <el-table-column align="center" prop="leadingPersonDepartmentName" 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" :disabled="disabled" @click="openDetect('新增', '')">新增</el-button> - <el-table :data="form.testDetailList" style="width: 100%"> - <el-table-column align="center" prop="testPersonName" label="检测人" /> - <el-table-column align="center" prop="testDate" :formatter="timeDate" label="检测日期" /> - <el-table-column align="center" prop="testPersonDepartmentName" label="检测人单位" /> - <el-table-column align="center" prop="testMemo" label="检测内容" /> - <el-table-column align="center" label="检测结果" > - <template #default="scope"> - <span v-if="scope.row.testResult==1">成功</span> - <span v-if="scope.row.testResult==2">失败</span> - </template> - </el-table-column> - <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" :disabled="disabled" @click="openRepair('新增', '')">新增</el-button> - <el-table :data="form.repaireDetailList" style="width: 100%"> - <el-table-column align="center" prop="exceptionInfo" label="设施异常项" /> - <el-table-column align="center" label="维修状态"> - <template #default="scope"> - <span v-if="scope.row.repairStatus==1">维修中</span> - <span v-if="scope.row.repairStatus==2">已修好</span> - </template> - </el-table-column> - <el-table-column align="center" prop="repairMemo" label="维修情况" /> - <el-table-column align="center" prop="repairPersonName" label="维修负责人" /> - <el-table-column align="center" prop="repairPersonDepartmentName" 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" :disabled="disabled" @click="openStandard('新增', '')">新增</el-button> - <el-table :data="form.checkStandardeDetailList" style="width: 100%"> - <el-table-column align="center" prop="indexNum" label="序号" width="75" /> - <el-table-column align="center" prop="checkContent" label="检查内容" /> - <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"> - <uploaderFile :fileList="fileList" :systemName="'EQUIPMENT'" :disabled="disabled" - @successUploader="successUploader"></uploaderFile> - </el-tab-pane> - </el-tabs> - <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> - <categoryDailog ref="categoryShow"></categoryDailog> - <categoryDailog ref="categoryShow" @typeId="Tid"></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, FormInstance, FormRules } from 'element-plus'; -import type { UploadProps, UploadUserFile } from 'element-plus'; -import { facilityManagementApi } from '/@/api/facilityManagement'; -import { goalManagementApi } from '/@/api/goalManagement'; -import { deepClone } from '/@/utils/other'; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - components: { categoryDailog, regionDailog, DailogSearchUser, maintenanceDailog, - detectDailog, repairDailog, standardDailog,uploaderFile }, - setup(props, { emit }) { - const dialogVisible = ref(false); - const ruleFormRef = ref<FormInstance>(); - const form = ref({ - supplyName: '', - - nextTestDate: '', - - qUsage: '', - - departmentId: '', - - produceTime: '', - - actualStopDate: '', - - takecareDetailList: [], - - infoType: '', - - leadingDepartmentId: '', - - useEndDay: '', - - previousTakecareDate: '', - - previousCheckDate: '', - - model: '', - - stopStatus: '', - - testWarn: '', - - stopSubmitDate: '', - - repairStatus: '', - - takecareStardardeDetailList: [ - ], - - nextCheckDate: '', - - checkCycle: '', - - checkPoint: '', - - leadingPersonId: '', - leadingPersonName: '', - - 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: '', - - useDate: '', - - recoverySubmitDate: '', - takecareCycle:"", - - lockNum: '', - - stopSubmitPersonId: '', - stopSubmitPersonName: '', - afterStopStep: '', - - lifeCycle: '', - - delCheckStandardeDetails: '', - - delTakecareStardardeDetails: '', - - delTakecareDetails: '', - - delRepaireDetails: '', - - delTestDetails: '', - }); - const titles = ref(); - const titleT = ref(); - const disabled = ref(false); - const Dailogtype = ref(false); - const openDailog = (title: string, type: boolean, id: number, num: any) => { - dialogVisible.value = true; - titleT.value = title; - 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; - - //初始化日期格式 - form.value.actualDestoryDate = timeC(form.value.actualDestoryDate); - form.value.actualRecoveryDate = timeC(form.value.actualRecoveryDate); - form.value.actualStopDate = timeC(form.value.actualStopDate); - form.value.destorySubmitDate = timeC(form.value.destorySubmitDate); - form.value.nextCheckDate = timeC(form.value.nextCheckDate); - form.value.nextTakecareDate = timeC(form.value.nextTakecareDate); - form.value.nextTestDate = timeC(form.value.nextTestDate); - form.value.previousCheckDate = timeC(form.value.previousCheckDate); - form.value.previousTakecareDate = timeC(form.value.previousTakecareDate); - form.value.previousTestDate = timeC(form.value.previousTestDate); - form.value.produceTime = timeC(form.value.produceTime); - form.value.recoverySubmitDate = timeC(form.value.recoverySubmitDate); - form.value.stopSubmitDate = timeC(form.value.stopSubmitDate); - form.value.useDate = timeC(form.value.useDate); - - fileList.value = (res.data.data.takecareStardardeDetailList?res.data.data.takecareStardardeDetailList:[]) - initFileListData() - } else { - ElMessage.error(res.data.msg); - } - }); - }; - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m +`:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - fileList.value[a].name = fileList.value[a].filePath - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - filePath:fileList.value[a].fileName - } - ) - } - form.value.takecareStardardeDetailList = formFileList - } - const rules = reactive<FormRules>({ - qName: [], - positionNum: [], - qUsage: [], - model: [], - equipmentTypeId: [], - equipmentTypeName: [{ required: true, message: '类型/类别外键不能为空', trigger: 'change' }], - departmentId: [], - setPart: [], - produceTime: [], - useEndDay: [], - lifeCycle: [], - useDate: [], - repairStatus: [], - stopStatus: [], - previousCheckDate: [], - previousTestDate: [], - previousTakecareDate: [], - nextCheckDate: [], - nextTestDate: [], - nextTakecareDate: [], - leadingPersonName: [], - leadingPersonDepartmentId: [], - supplyName: [], - useMemo: [], - isNeedCheck: [], - checkCycle: [], - checkWarn: [], - isNeedTest: [], - testCycle: [], - testWarn: [], - isNeedTakecare: [], - checkContent: [], - leadingDepartmentId: [], - checkPoint: [], - alertNum: [], - lockNum: [], - stopReason: [], - afterStopStep: [], - actualStopDate: [], - stopSubmitPersonName: [], - stopSubmitDate: [], - recoveryReason: [], - recoverySubmitDate: [], - actualRecoveryDate: [], - destoryReason: [], - destorySubmitDate: [], - actualDestoryDate: [], - takecareCycle :[] - }); - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - form.value.delTakecareDetails = deleteAId.value.toString(); - form.value.delTestDetails = deleteBId.value.toString(); - form.value.delRepaireDetails = deleteCId.value.toString(); - form.value.delCheckStandardeDetails = deleteDId.value.toString(); - dialogVisible.value = false; - delete form.value.equipmentTypeName; - delete form.value.departmentName; - delete form.value.leadingPersonDepartmentName; - delete form.value.leadingDepartmentName; - if (titleT.value == '新建') { - delete form.value.id; - } - 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.takecareDetailList = []; - form.value.testDetailList = []; - form.value.repaireDetailList = []; - form.value.checkStandardeDetailList = []; - }; - // 取消 - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.resetFields(); - form.value.takecareDetailList = []; - form.value.testDetailList = []; - form.value.repaireDetailList = []; - form.value.checkStandardeDetailList = []; - fileList.value = [] - dialogVisible.value = false; - }; - 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([]); - - 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 = (data: any) => { - const val = deepClone(data); - if (index.value == -1) { - form.value.takecareDetailList.push(val); - } else { - form.value.takecareDetailList[index.value] = val; - } - }; - const delect = (data: any) => { - const val = deepClone(data); - if (index.value == -1) { - form.value.testDetailList.push(val); - } else { - form.value.testDetailList[index.value] = val; - } - }; - const Repair = (data: any) => { - const val = deepClone(data); - if (index.value == -1) { - form.value.repaireDetailList.push(val); - } else { - form.value.repaireDetailList[index.value] = val; - } - }; - const Stand = (data: any) => { - const val = deepClone(data); - 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 == 1) { - form.value.leadingPersonId = val.uid; - form.value.leadingPersonName = val.realName; - } else if (type == 2) { - form.value.stopSubmitPersonId = val.uid; - form.value.stopSubmitPersonName = val.realName; - } - }; - const Tid = (data: any) => { - form.value.equipmentTypeId = data.id; - form.value.equipmentTypeName = data.typeName; - form.value.positionNum = data.sortNum; - }; - //全屏 - 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 { - Tid, - deepClone, - rules, - 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, - ruleFormRef, - successUploader, - initFileListData, - timeC - }; - }, -}); -</script> -<style scoped> -.el-form-item { - width: 25vw; -} -.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> diff --git a/src/components/equipmentDailog/DailogS.vue b/src/components/equipmentDailog/DailogS.vue deleted file mode 100644 index db4c2a4..0000000 --- a/src/components/equipmentDailog/DailogS.vue +++ /dev/null @@ -1,701 +0,0 @@ -<template> - <el-dialog :fullscreen="full" v-model="dialogVisible" draggable :title="titles" width="60%" @close="resetForm(ruleFormRef)" > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRef" label-width="130px" :rules="rules" :disabled="disabled"> - <el-row> - <el-col :span="11"> - <el-form-item label="类型/类别外键" size="default" prop="equipmentTypeId"> - <el-input v-model="form.equipmentTypeName" 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" prop="connectPersonName"> - <el-input v-model="form.connectPersonName" placeholder="请选择"> - <template #append> - <el-button :icon="Search" @click="openUser(1)"></el-button> - </template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="录入人" size="default" prop="inputPersonName"> - <el-input v-model="form.inputPersonName" placeholder="请选择"> - <template #append> - <el-button :icon="Search" @click="openUser(2)"></el-button> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="责任人" size="default" prop="responsibilityPersonName"> - <el-input v-model="form.responsibilityPersonName" placeholder="请选择"> - <template #append> - <el-button :icon="Search" @click="openUser(3)"></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="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.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.emergencePlanName" 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.memo" 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('新增', '')" :disabled="disabled">新增</el-button> - <el-table :data="form.takecareDetailList" style="width: 100%"> - <el-table-column align="center" prop="takecareMemo" label="保养情况" /> - <el-table-column align="center" prop="leadingPersonName" label="保养负责人" /> - <el-table-column align="center" prop="takecareDate" :formatter="timeDate" label="保养日期" /> - <el-table-column align="center" prop="leadingPersonDepartmentName" label="保养负责人单位" /> - <el-table-column align="center" label="操作"> - <template #default="scope"> - <el-button link type="primary" @click="openMaintenance('查看', scope.row)" size="small" :disabled="disabled">查看</el-button> - <el-button link type="primary" @click="openMaintenance('修改', scope.row)" size="small" :disabled="disabled">修改</el-button> - <el-button link type="primary" @click="deleteA(scope.row)" size="small" :disabled="disabled">删除</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('新增', '')" :disabled="disabled">新增</el-button> - <el-table :data="form.checkDetailList" style="width: 100%"> - <el-table-column align="center" prop="testPersonName" label="检测人" /> - <el-table-column align="center" prop="testDate" :formatter="timeDate" label="检测日期" /> - <el-table-column align="center" prop="testPersonDepartmentName" label="检测人单位" /> - <el-table-column align="center" prop="testMemo" label="检测内容" /> - <el-table-column align="center" prop="testResult" label="检测结果" > - <template #default="scope"> - <span v-if="scope.row.testResult == 1">成功</span> - <span v-if="scope.row.testResult == 2">失败</span> - </template> - </el-table-column> - <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" :disabled="disabled">查看</el-button> - <el-button link type="primary" @click="openDetect('修改', scope.row)" size="small" :disabled="disabled">修改</el-button> - <el-button link type="primary" @click="deleteB(scope.row)" size="small" :disabled="disabled">删除</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('新增', '')" :disabled="disabled">新增</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="维修状态" > - <template #default="scope"> - <span v-if="scope.row.repairStatus == 1">维修中</span> - <span v-if="scope.row.repairStatus == 2">已维修</span> - </template> - </el-table-column> - <el-table-column align="center" prop="repairMemo" label="维修情况" /> - <el-table-column align="center" prop="repairPersonName" label="维修负责人" /> - <el-table-column align="center" prop="repairPersonDepartmentName" 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" :disabled="disabled">查看</el-button> - <el-button link type="primary" @click="openRepair('修改', scope.row)" size="small" :disabled="disabled">修改</el-button> - <el-button link type="primary" @click="deleteC(scope.row)" size="small" :disabled="disabled">删除</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('新增', '')" :disabled="disabled">新增</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" :disabled="disabled">查看</el-button> - <el-button link type="primary" @click="openStandard('修改', scope.row)" size="small" :disabled="disabled">修改</el-button> - <el-button link type="primary" @click="deleteD(scope.row)" size="small" :disabled="disabled">删除</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(ruleFormRef)">关闭</el-button> - <el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button> - </span> - </template> - </el-dialog> - <categoryDailog ref="categoryShow" @typeId="Tid"></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 ,reactive} 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 ,FormInstance ,FormRules,} from 'element-plus'; -import type { UploadProps, UploadUserFile } from 'element-plus'; -import { facilityManagementApi } from '/@/api/facilityManagement'; -import { goalManagementApi } from '/@/api/goalManagement'; -import {deepClone} from '/@/utils/other' -export default defineComponent({ - components: { categoryDailog,Plus, RegionsDialog, DailogSearchUser, maintenanceDailog, detectDailog, repairDailog, standardDailog }, - setup(props, { emit }) { - const dialogVisible = ref(false); - const form = ref({ - equipmentTypeId: 1, - equipmentTypeName:"", - treatment: '', - - inputPersonId: '', - inputPersonName: '', - departmentId: '', - - // delRepaireDetailList: [], - - // delTestDetailList: [], - - takecareDetailList: [], - checkDetailList: [], - - responsibilityPersonId: '', - responsibilityPersonName: '', - // delTakecareStardardeDetailList: [], - - connectPersonId: '', - connectPersonName: '', - - scenePic: '', - - partType: '', - - toDangerous: '', - - dangerousElement: '', - memo:'', - - takecareStardardeDetailList: [ - { - filePath: '', - }, - ], - testDetailList: [], - checkCycle: '', - repaireDetailList: [], - // delCheckStandardeDetailList: [], - - leadingPersonName: '', - - name: '', - - // delTakecareDetailList: [], - - position: '', - - emergencePlanId: '', - emergencePlanName:'', - - checkStandardeDetailList: [], - infoTpe: '', - delCheckStandardeDetails: '', - - delTakecareStardardeDetails: '', - - delTakecareDetails: '', - - delRepaireDetails: '', - - delTestDetails: '', - }); - const ruleFormRef = ref<FormInstance>(); - const titles = ref(); - const titleT = ref(); - const disabled = ref(false); - const Dailogtype = ref(false); - const openDailog = (title: string, type: boolean, id: number, num: any) => { - dialogVisible.value = true; - titleT.value = title; - 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; - if (titleT.value == '新建') { - delete form.value.id; - delete form.value.infoTpe - } - 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 = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.resetFields(); - dialogVisible.value = false; - form.value={} - }; - 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; - form.value.emergencePlanName=e.name - }; - - const UserShow = ref(); - const openUser = (type: any) => { - UserShow.value.openDailog(type); - }; - const userId = (val: any, type: number) => { - if (type == 1) { - form.value.connectPersonId = val.uid; - form.value.connectPersonName = val.realName; - } else if (type == 2) { - form.value.inputPersonId = val.uid; - form.value.inputPersonName = val.realName; - } else if (type == 3) { - form.value.responsibilityPersonId = val.id; - form.value.responsibilityPersonName = val.realName; - } - }; - const Tid=(data:any)=>{ - form.value.equipmentTypeId=data.id - form.value.equipmentTypeName=data.typeName - } - 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 = (data: any) => { - let val=deepClone(data) - if (index.value == -1) { - form.value.takecareDetailList.push(val); - } else { - form.value.takecareDetailList[index.value] = val; - } - }; - const delect = (data: any) => { - let val=deepClone(data) - if (index.value == -1) { - form.value.testDetailList.push(val); - } else { - form.value.testDetailList[index.value] = val; - } - }; - const Repair = (data: any) => { - let val=deepClone(data) - if (index.value == -1) { - form.value.repaireDetailList.push(val); - } else { - form.value.repaireDetailList[index.value] = val; - } - }; - const Stand = (data: any) => { - let val=deepClone(data) - if (index.value == -1) { - form.value.checkStandardeDetailList.push(val); - } else { - form.value.checkStandardeDetailList[index.value] = val; - } - }; - const rules = reactive<FormRules>({ - equipmentTypeId: [], - equipmentTypeName:[], - }) - //图片提交 - 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 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, - ruleFormRef, - index, - activeName, - categoryShow, - opencategory, - planShow, - onUser, - openPlan, - UserShow, - openUser, - rules, - maintenanceShow, - openMaintenance, - detectShow, - openDetect, - repairShow, - openRepair, - standardShow, - userId, - openStandard, - fileList, - handleRemove, - handlePreview, - handleExceed, - disabled, - titles, - beforeRemove, - imageUrl, - handleAvatarSuccess, - beforeAvatarUpload, - Plus, - full, - toggleFullscreen, - FullScreen, - Tid, - resetForm, - deleteAId, - deleteBId, - deleteCId, - deleteDId, - deleteA, - deleteB, - deleteC, - deleteD, - timeDate, - titleT, - }; - }, -}); -</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 deleted file mode 100644 index 4a8bf12..0000000 --- a/src/components/equipmentDailog/categoryDailog.vue +++ /dev/null @@ -1,147 +0,0 @@ -<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" @click="clear">清除选择</el-button> - <el-table :data="tableData" style="width: 100%; margin-top: 20px" row-key="id" :tree-props="propse"> - <el-table-column align="center" width="100px"> - <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="typeName" label="类别名称" /> - </el-table> - </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.typeName }} - </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 { facilityManagementApi } from '/@/api/facilityManagement'; -import { ElMessage,ElMessageBox } from 'element-plus'; -export default defineComponent({ - setup(props,{emit}) { - const dialogVisible = ref<boolean>(false); - const openDailog = () => { - dialogVisible.value = true; - listApi() - }; - // 列表 - 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', - }); - } - }); - }; - // 表格 - const tableData = ref([]) - const propse = { - children: 'childList', - }; - // 右方点击添加后显示标签 - 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=()=>{ - radio1.value="" - dynamicTags.value=[''] - } - const submitForm=()=>{ - emit('typeId',dynamicTags.value[0]) - dialogVisible.value=false - } - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - submitForm, - clear, - dialogVisible, - openDailog, - listApi, - propse, - tableData, - 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 deleted file mode 100644 index 654f54c..0000000 --- a/src/components/equipmentDailog/detectDailog.vue +++ /dev/null @@ -1,194 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" @close="resetForm(ruleFormRef)" :fullscreen="full" :title="titles" width="50%" draggable> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px"> - <el-row> - <el-col :span="11"> - <el-form-item label="检测人" size="default" prop="testPersonName"> - <el-input v-model="form.testPersonName"> - <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" prop="testDate"> - <el-date-picker v-model="form.testDate" format="YYYY-MM-DD HH:mm:ss" value-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="testPersonDepartmentId"> - <el-tree-select - v-model="form.testPersonDepartmentId" - :data="data" - check-strictly="true" - class="w100" - :props="propse" - placeholder="请选择" - /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="检测内容" size="default" prop="testMemo"> - <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" prop="testResult"> - <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" prop="testStatus"> - <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(ruleFormRef)" size="default">关闭</el-button> - <el-button type="primary" @click="submitForm(ruleFormRef)" :disabled="disabled" 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 { ElMessage, ElMessageBox } from 'element-plus'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - components: { DailogSearchUser }, - setup(props, { emit }) { - const ruleFormRef = ref<FormInstance>(); - const form = ref({ - testPersonId: '', - testPersonName: '', - testDate: '', - testPersonDepartmentId: '', - testMemo: '', - testResult: '', - testStatus: '', - }); - // 开启弹窗 - const titles = ref(); - const disabled = ref(false); - const dialogVisible = ref(false); - const openDailog = (title: string, data: any) => { - department(); - dialogVisible.value = true; - titles.value = `${title}设备检测`; - if (title == '查看') { - disabled.value = true; - form.value = data; - } else if (title == '修改') { - disabled.value = false; - form.value = data; - } - }; - // 开启用户弹窗 - const Show = ref(); - const openUser = () => { - Show.value.openDailog(); - }; - const User = (val: any) => { - form.value.testPersonId = val.uid; - form.value.testPersonName = val.realName; - }; - const rules = reactive<FormRules>({ - testPersonName: [{ required: true, message: '检测人不能为空', trigger: 'blur' }], - testDate:[{ required: true, message: '检测日期不能为空', trigger: 'blur' }], - testPersonDepartmentId:[], - testMemo:[{ required: true, message: '检测内容不能为空', trigger: 'blur' }], - testResult:[{ required: true, message: '检测结果不能为空', trigger: 'blur' }], - testStatus:[{ required: true, message: '检测状态不能为空', trigger: 'blur' }], - }); - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - emit('onDelect', form.value); - dialogVisible.value = false; - } else { - console.log('error submit!', fields); - } - }); - - disabled.value = false; - }; - // 取消 - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.clearValidate(); - dialogVisible.value = false; - disabled.value = false; - form.value={} - }; - //全屏 - 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 { - ruleFormRef, - rules, - department, - propse, - data, - 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 deleted file mode 100644 index 3a22bc9..0000000 --- a/src/components/equipmentDailog/maintenanceDailog.vue +++ /dev/null @@ -1,206 +0,0 @@ -<template> - <el-dialog :fullscreen="full" v-model="dialogVisible" @close="resetForms(ruleFormRefs)" :title="titles" width="50%" draggable> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRefs" :rules="rules" :disabled="disabled" label-width="120px"> - <el-row> - <el-col :span="11"> - <el-form-item label="保养情况" size="default" prop="takecareMemo"> - <el-input v-model="form.takecareMemo" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="保养负责人" size="default" prop="leadingPersonName"> - <el-input v-model="form.leadingPersonName"> - <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" prop="takecareDate"> - <el-date-picker - v-model="form.takecareDate" - format="YYYY-MM-DD HH:mm:ss" - value-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" prop="leadingPersonDepartmentId"> - <el-tree-select - v-model="form.leadingPersonDepartmentId" - :data="data" - check-strictly="true" - class="w100" - :props="propse" - placeholder="请选择" - /> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <!-- <el-button type="primary" @click="dialogVisible = false" size="default">继续添加</el-button> --> - <el-button @click="resetForms(ruleFormRefs)" size="default">关闭</el-button> - <el-button type="primary" @click="submitForms(ruleFormRefs)" :disabled="disabled" 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 { ElMessage, ElMessageBox } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import type { FormInstance, FormRules } from 'element-plus'; -import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - components: { DailogSearchUser }, - setup(props, { emit }) { - const ruleFormRefs = ref<FormInstance>(); - const form = ref({ - takecareMemo: '', - leadingPersonId: '', - leadingPersonName: '', - takecareDate: '', - leadingPersonDepartmentId: '', - }); - // 开启弹窗 - const titles = ref(); - const disabled = ref(false); - const dialogVisible = ref(false); - const openDailog = (title: string, data: any) => { - department(); - dialogVisible.value = true; - titles.value = `${title}仪器仪表`; - if (title == '查看') { - disabled.value = true; - form.value = data; - } else if (title == '修改') { - disabled.value = false; - form.value = data; - } - }; - const rules = reactive<FormRules>({ - takecareMemo: [ - { - required: true, - message: '保养情况不能为空', - trigger: 'blur', - }, - ], - leadingPersonName: [ - { - required: true, - message: '保养负责人不能为空', - trigger: 'blur', - }, - ], - takecareDate: [ - { - required: true, - message: '保养日期不能为空', - trigger: 'blur', - }, - ], - leadingPersonDepartmentId: [ - { - required: true, - message: '保养负责人单位不能为空', - trigger: 'blur', - }, - ], - }); - // 开启用户弹窗 - const Show = ref(); - const openUser = () => { - Show.value.openDailog(); - }; - const User = (val: any) => { - form.value.leadingPersonId = val.uid; - form.value.leadingPersonName = val.realName; - }; - // 提交 - const submitForms = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - dialogVisible.value = false; - emit('onMain', form.value); - } else { - console.log('error submit!', fields); - } - }); - disabled.value = false; - }; - // 取消 - const resetForms = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.clearValidate(); - - disabled.value = false; - form.value = {}; - - dialogVisible.value = false; - }; - //全屏 - 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 { - department, - propse, - data, - disabled, - rules, - titles, - submitForms, - resetForms, - form, - User, - dialogVisible, - openDailog, - ruleFormRefs, - 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 deleted file mode 100644 index d79f2d7..0000000 --- a/src/components/equipmentDailog/planDailog.vue +++ /dev/null @@ -1,156 +0,0 @@ -<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 deleted file mode 100644 index 66c37a4..0000000 --- a/src/components/equipmentDailog/regionDailog.vue +++ /dev/null @@ -1,156 +0,0 @@ -<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 deleted file mode 100644 index 18e0663..0000000 --- a/src/components/equipmentDailog/repairDailog.vue +++ /dev/null @@ -1,216 +0,0 @@ -<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" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px"> - <el-row> - <el-col :span="11"> - <el-form-item label="设施异常项" size="default" prop="exceptionInfo"> - <el-input v-model="form.exceptionInfo" placeholder="请填写设施异常项" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="维修状态" size="default" prop="repairStatus"> - <el-select v-model="form.repairStatus" placeholder="请选择" style="width: 100%"> - <el-option label="维修中" :value="1" /> - <el-option label="已修好" :value="2" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="维修情况" size="default" prop="repairMemo"> - <el-input v-model="form.repairMemo" placeholder="请填写维修情况" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="维修负责人" size="default" prop="repairPersonName"> - <el-input v-model="form.repairPersonName" 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" prop="repairPersonDepartmentId"> - <el-tree-select - v-model="form.repairPersonDepartmentId" - :data="data" - check-strictly="true" - class="w100" - :props="propse" - placeholder="请选择" - /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="维修开始日期" size="default" prop="repairStartDate"> - <el-date-picker - v-model="form.repairStartDate" - format="YYYY-MM-DD HH:mm:ss" - value-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="repairEndDate"> - <el-date-picker - v-model="form.repairEndDate" - format="YYYY-MM-DD HH:mm:ss" - value-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(ruleFormRef)" size="default">关闭</el-button> - <el-button type="primary" @click="submitForm(ruleFormRef)" :disabled="disabled" 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 { ElMessage, ElMessageBox } from 'element-plus'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - components: { DailogSearchUser }, - setup(props, { emit }) { - const ruleFormRef = ref<FormInstance>(); - const form = ref({ - exceptionInfo: '', - repairStatus: '', - repairMemo: '', - repairPersonId: '', - repairPersonName: '', - repairPersonDepartmentId: '', - repairStartDate: '', - repairEndDate: '', - }); - // 开启弹窗 - const titles = ref(); - const disabled = ref(false); - const dialogVisible = ref(false); - const openDailog = (title: string, data: any) => { - department(); - dialogVisible.value = true; - titles.value = `${title}设备维修`; - if (title == '查看') { - disabled.value = true; - form.value = data; - } else if (title == '修改') { - disabled.value = false; - form.value = data; - } - }; - // 开启用户弹窗 - const Show = ref(); - const openUser = () => { - Show.value.openDailog(); - }; - const User = (val: any) => { - form.value.repairPersonId = val.uid; - form.value.repairPersonName = val.realName; - }; - const rules = reactive<FormRules>({ - exceptionInfo: [{ required: true, message: '设施异常项不能为空', trigger: 'blur' }], - repairStatus: [{ required: true, message: '维修状态不能为空', trigger: 'blur' }], - repairMemo: [{ required: true, message: '维修情况不能为空', trigger: 'blur' }], - // repairPersonName: [{ required: true, message: '维修负责人不能为空', trigger: 'blur' }], - repairPersonDepartmentId: [{ required: true, message: '维修负责人单位不能为空', trigger: 'blur' }], - repairStartDate: [{ required: true, message: '维修开始日期不能为空', trigger: 'blur' }], - repairEndDate: [{ required: true, message: '维修结束日期不能为空', trigger: 'blur' }], - }); - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - emit('onRepair', form.value); - dialogVisible.value = false; - } else { - console.log('error submit!', fields); - } - }); - disabled.value = false; - }; - // 取消 - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.clearValidate(); - disabled.value = false; - dialogVisible.value = false; - form.value = {}; - }; - //全屏 - 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 { - rules, - ruleFormRef, - department, - propse, - data, - 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 deleted file mode 100644 index 7964ba0..0000000 --- a/src/components/equipmentDailog/standardDailog.vue +++ /dev/null @@ -1,151 +0,0 @@ -<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" ref="ruleFormRef" :rules="rules" label-width="120px" :disabled="disabled"> - <el-row> - <el-col :span="11"> - <el-form-item label="序号" size="default" prop="indexNum"> - <el-input v-model="form.indexNum" placeholder="请填写序号" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2" size="default" prop="checkContent"> - <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" prop="checkTarget"> - <el-input v-model="form.checkTarget" placeholder="请填写检查指标" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="单位" size="default" prop="unit"> - <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" prop="checkPart"> - <el-input v-model="form.checkPart" placeholder="请填写巡检部位" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="频次" size="default" prop="rate"> - <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(ruleFormRef)" size="default">关闭</el-button> - <el-button type="primary" @click="submitForm(ruleFormRef)" size="default">确定</el-button> - </span> - </template> - </el-dialog> - <!-- <DailogSearchUser ref="Show"></DailogSearchUser> --> -</template> -<script lang="ts"> -import { defineComponent, ref, reactive } from 'vue'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'; -export default defineComponent({ - components: { DailogSearchUser }, - setup(props, { emit }) { - const ruleFormRef = ref<FormInstance>(); - 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 rules = reactive<FormRules>({ - indexNum: [{ required: true, message: '序号不能为空', trigger: 'blur' }], - checkContent: [{ required: true, message: '检查内容不能为空', trigger: 'blur' }], - checkTarget: [{ required: true, message: '检查指标不能为空', trigger: 'blur' }], - unit: [{ required: true, message: '单位不能为空', trigger: 'blur' }], - checkPart: [{ required: true, message: '巡检部位不能为空', trigger: 'blur' }], - rate: [{ required: true, message: '频次不能为空', trigger: 'blur' }], - }); - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - emit('onStand', form.value); - dialogVisible.value = false; - } else { - console.log('error submit!', fields); - } - }); - disabled.value = false; - }; - // 取消 - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.clearValidate(); - dialogVisible.value = false; - disabled.value = false; - form.value = {}; - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - rules, - ruleFormRef, - 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 deleted file mode 100644 index 8ecb8ab..0000000 --- a/src/components/regionsDialog/index.vue +++ /dev/null @@ -1,129 +0,0 @@ -<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 deleted file mode 100644 index 5031621..0000000 --- a/src/components/updata/updata.vue +++ /dev/null @@ -1,89 +0,0 @@ -<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/uploaderFile/index.vue b/src/components/uploaderFile/index.vue deleted file mode 100644 index d747984..0000000 --- a/src/components/uploaderFile/index.vue +++ /dev/null @@ -1,183 +0,0 @@ -<template> - <el-upload - v-model:file-list="fileList" - multiple - :disabled="disabled" - class="upload-demo" - :http-request="uploadSectionFile" - :on-preview="handlePictureCardPreview" - :on-remove="handleRemove" - :on-success="successFile" - :on-error="errorFile" - > - <el-button type="primary">点击上传</el-button> - <template #tip> - <div class="el-upload__tip"> - 请上传文件 - <!--jpg/png files with a size less than 500KB.--> - </div> - <slot name="file"> - - </slot> - </template> - </el-upload> - - <!--<el-dialog v-model="dialogVisible">--> - <!--<img w-full :src="dialogImageUrl" alt="Preview Image" />--> - <!--</el-dialog>--> -</template> -<script lang="ts"> -import axios from 'axios'; -import { ref, defineComponent,onMounted,watch } from 'vue'; -import { Plus } from '@element-plus/icons-vue'; -import type { UploadProps, UploadUserFile } from 'element-plus'; -import { ElMessage } from 'element-plus'; -import { goalManagementApi } from '/@/api/goalManagement'; - -export default defineComponent({ - props: { - fileList: { - type: Array, - }, - disabled: { - type: Boolean, - default: () => false, - }, - systemName: { - type: String, - default: () => '', - }, - }, - components: { - Plus, - }, - setup(props, { emit }) { - const dialogImageUrl = ref(''); - const dialogVisible = ref(false); - - const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { - console.log(uploadFile, uploadFiles); - emit('deleteFile',uploadFiles); - }; - - const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile) - goalManagementApi() - .searchFile(uploadFile.name) - .then((res) => { - window.open(res.data, "_blank"); - }) - 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); - }; - watch(props.fileList, (val) => { - viewList.value = val - // searchFile() - }); - onMounted(() => { - if(props.fileList){ - viewList.value = props.fileList - // searchFile() - }else { - viewList.value = [] - } - - }); - const newFileList = ref([]) - const viewList = ref([]) - const searchFile = async () => { - for(var a = 0;a<props.fileList.length;a++){ - await goalManagementApi() - .searchFile(props.fileList[a].fileName) - .then((res) => { - props.fileList[a].url = res.data - }) - } - }; - const uploadSectionFile = (param) => { - let form = new FormData(); - form.append('file', param.file); - //组装文件名(传入后缀名) - console.log(param) - var fileNameList = param.file.name.split('.') - var typeFile = param.file.name.split('.')[fileNameList.length-1] - var fileName1 = getFileName(param.file.type.split('/')[1], 1); - // var fileName2 = getFileName(param.file.type.split('/')[1], 2); - var fileName2 = '.'+typeFile; - goalManagementApi() - .beforeUploadFile(fileName1, fileName2) - .then((res) => { - // 转换形式 - const reader = new FileReader(); - reader.readAsArrayBuffer(param.file); - // 上传图片 - reader.onload = () => { // 上传图片接口 url:上传图片地址 修改请求头 - axios.put(res.data.uploadUrl, reader.result, - { - header: - { "Content-Type": "multipart/form-data" } - } - ) - .then(res1 => - { - props.fileList[props.fileList.length-1].fileName=res.data.fileName - props.fileList[props.fileList.length-1].name=res.data.fileName - props.fileList[props.fileList.length-1].fileUrl='' - emit('successUploader',props.fileList); - ElMessage({ - showClose: true, - message: '上传成功', - type: 'success', - }); - }) - }; - }); - }; - const getFileName = (suffix, type) => { - var projectName = props.systemName; - var date = getNowDate(); - var fileName1 = projectName + '/' + date + '_'; - var fileName2 = '.' + suffix; - if (type == 1) { - return fileName1; - } else if (type == 2) { - return fileName2; - } - return ''; - }; - - //获取当前年月日 - const getNowDate = () => { - var a = new Date().getTime(); //获取到当前时间戳 - var now = new Date(a); //创建一个指定的日期对象 - var year = now.getFullYear(); //年份 - var month = now.getMonth() + 1; //月份(0-11) - var date = now.getDate(); //天数(1到31) - return year + '-' + month + '-' + date; - }; - - return { - dialogImageUrl, - dialogVisible, - handleRemove, - handlePictureCardPreview, - successFile, - errorFile, - uploadSectionFile, - viewList - }; - }, -}); -</script> -<style scoped> - .upload-demo{ - width: 100%; - } -</style> diff --git a/src/components/uploaderImg/index.vue b/src/components/uploaderImg/index.vue deleted file mode 100644 index f044082..0000000 --- a/src/components/uploaderImg/index.vue +++ /dev/null @@ -1,158 +0,0 @@ -<template> - <el-upload - v-model:file-list="fileList" - :disabled="disabled" - :http-request="uploadSectionFile" - 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 axios from 'axios'; -import { ref, defineComponent,onMounted,watch } from 'vue'; -import { Plus } from '@element-plus/icons-vue'; -import type { UploadProps, UploadUserFile } from 'element-plus'; -import { ElMessage } from 'element-plus'; -import { goalManagementApi } from '/@/api/goalManagement'; - -export default defineComponent({ - props: { - // svg 图标组件名字 - fileList: { - type: Array, - }, - disabled: { - type: Boolean, - default: () => false, - }, - systemName: { - type: String, - default: () => '', - }, - }, - components: { - Plus, - }, - setup(props, { emit }) { - const dialogImageUrl = ref(''); - const dialogVisible = ref(false); - - const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { - console.log(uploadFile, uploadFiles); - }; - - const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => { - alert(1) - 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); - }; - watch(props.fileList, (val) => { - viewList.value = val - // searchFile() - }); - onMounted(() => { - if(props.fileList){ - viewList.value = props.fileList - // searchFile() - }else { - viewList.value = [] - } - - }); - const newFileList = ref([]) - const viewList = ref([]) - const searchFile = async () => { - for(var a = 0;a<props.fileList.length;a++){ - await goalManagementApi() - .searchFile(props.fileList[a].fileName) - .then((res) => { - props.fileList[a].url = res.data - }) - } - }; - const uploadSectionFile = (param) => { - let form = new FormData(); - form.append('file', param.file); - //组装文件名(传入后缀名) - var fileName1 = getFileName(param.file.type.split('/')[1], 1); - var fileName2 = getFileName(param.file.type.split('/')[1], 2); - goalManagementApi() - .beforeUploadFile(fileName1, fileName2) - .then((res) => { - // 转换形式 - const reader = new FileReader(); - reader.readAsArrayBuffer(param.file); - // 上传图片 - reader.onload = () => { // 上传图片接口 url:上传图片地址 修改请求头 - axios.put(res.data.uploadUrl, reader.result, - { - header: - { "Content-Type": "multipart/form-data" } - } - ) - .then(res1 => - { - props.fileList[props.fileList.length-1].fileName=res.data.fileName - props.fileList[props.fileList.length-1].fileUrl='' - emit('successUploader',props.fileList); - ElMessage({ - showClose: true, - message: '上传成功', - type: 'success', - }); - }) - }; - }); - }; - const getFileName = (suffix, type) => { - var projectName = props.systemName; - var date = getNowDate(); - var fileName1 = projectName + '/' + date + '_'; - var fileName2 = '.' + suffix; - if (type == 1) { - return fileName1; - } else if (type == 2) { - return fileName2; - } - return ''; - }; - - //获取当前年月日 - const getNowDate = () => { - var a = new Date().getTime(); //获取到当前时间戳 - var now = new Date(a); //创建一个指定的日期对象 - var year = now.getFullYear(); //年份 - var month = now.getMonth() + 1; //月份(0-11) - var date = now.getDate(); //天数(1到31) - return year + '-' + month + '-' + date; - }; - - return { - dialogImageUrl, - dialogVisible, - handleRemove, - handlePictureCardPreview, - successFile, - errorFile, - uploadSectionFile, - viewList - }; - }, -}); -</script> diff --git a/src/components/userCheckbox/index.vue b/src/components/userCheckbox/index.vue deleted file mode 100644 index 5fc0b7a..0000000 --- a/src/components/userCheckbox/index.vue +++ /dev/null @@ -1,422 +0,0 @@ -<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 deleted file mode 100644 index 8fdbb3f..0000000 --- a/src/components/userSelections/index.vue +++ /dev/null @@ -1,446 +0,0 @@ -<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/router/backEnd.ts b/src/router/backEnd.ts index fcec8e0..b7750e8 100644 --- a/src/router/backEnd.ts +++ b/src/router/backEnd.ts @@ -27,7 +27,8 @@ export async function initBackEndControlRoutes() { if (window.nextLoading === undefined) NextLoading.start(); if (!Cookies.get('token')) return false; - const res = await getBackEndControlRoutes(Cookies.get('projectId') === null ? '' : Cookies.get('projectId')); + const res = await getBackEndControlRoutes(); + debugger await useRequestOldRoutes().setRequestOldRoutes(JSON.parse(JSON.stringify(res.data.data))); dynamicRoutes[0].children = await backEndComponent(res.data.data); await setAddRoute(); @@ -57,11 +58,11 @@ }); } -export async function getBackEndControlRoutes(value: string) { +export async function getBackEndControlRoutes() { // const stores = useUserInfo(pinia); // const { userInfos } = storeToRefs(stores); // const auth = userInfos.value.roles[0]; - return menuApi.getMenuAdmin(value); + return menuApi.getMenuAdmin(); } /** @@ -70,7 +71,7 @@ * @description 路径:/src/views/system/homeMenu/components/menuDialog.vue */ export function setBackEndControlRefreshRoutes() { - getBackEndControlRoutes(Cookies.get('projectId')); + getBackEndControlRoutes(); } export function backEndComponent(routes: any) { diff --git a/src/router/index.ts b/src/router/index.ts index 322d85c..a99e192 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -12,6 +12,7 @@ import { initBackEndControlRoutes } from '/@/router/backEnd'; import { useUserInfo } from '/@/stores/userInfo'; import { nextTick } from 'vue'; +import Cookies from 'js-cookie'; // 读取 `/src/stores/themeConfig.ts` 是否开启后端控制路由配置 const storesThemeConfig = useThemeConfig(pinia); @@ -68,7 +69,7 @@ router.beforeEach(async (to, from, next) => { NProgress.configure({ showSpinner: false }); if (to.meta.title) NProgress.start(); - const token = Session.get('token'); + const token = Cookies.get('token'); if (to.path === '/login' && !token) { next(); NProgress.done(); @@ -84,7 +85,6 @@ const storesRoutesList = useRoutesList(pinia); const { routesList } = storeToRefs(storesRoutesList); if (routesList.value.length === 0) { - // 后端控制路由:路由数据初始化,防止刷新时丢失 await initBackEndControlRoutes(); // 动态添加路由:防止非首页刷新时跳转回首页的问题 diff --git a/src/router/route.json b/src/router/route.json new file mode 100644 index 0000000..8dd6cdf --- /dev/null +++ b/src/router/route.json @@ -0,0 +1,16 @@ + +{ + "path": "/home", + "name": "home", + "component": "() => import('/@/views/home/index.vue')", + "meta": { + "title": "首页", + "isLink": "", + "isHide": false, + "isKeepAlive": true, + "isAffix": true, + "isIframe": false, + "roles": ["admin", "common"], + "icon": "iconfont icon-shouye" + } +} diff --git a/src/router/route.ts b/src/router/route.ts index afa1cda..a29e775 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -13,7 +13,7 @@ { path: '/home', name: 'home', - component: () => import('/@/views/newHome/index.vue'), + component: () => import('/@/views/home/index.vue'), meta: { title: '首页', isLink: '', @@ -22,9 +22,24 @@ isAffix: true, isIframe: false, roles: ['admin', 'common'], - icon: 'iconfont icon-shouye' - } - } + icon: 'iconfont icon-shouye', + }, + }, + { + path: '/test', + name: 'test', + component: () => import('/@/views/test/index.vue'), + meta: { + title: '测试', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: true, + isIframe: false, + roles: ['admin', 'common'], + icon: 'iconfont icon-shouye', + }, + }, ] } ]; diff --git a/src/utils/request.ts b/src/utils/request.ts index ed8cf58..21107e5 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -21,7 +21,7 @@ } } if (Cookies.get('token')) { - (<any>config.headers).common['Authorization'] = `${Cookies.get('token')}`; + (<any>config.headers).common['tk'] = `${Cookies.get('token')}`; (<any>config.headers).common['uid'] = `${Cookies.get('uid')}`; } return config; diff --git a/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue b/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue deleted file mode 100644 index 3bcf4a6..0000000 --- a/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue +++ /dev/null @@ -1,187 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" @close="resetForm(ruleFormRef)" :fullscreen="full" :title="titles" width="50%" draggable> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px"> - <el-row> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="标题" size="default" prop="caseTitle"> - <el-input v-model="form.caseTitle" /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="11" :md="11" :lg="11" :xl="11" class="mb20"> - <el-form-item label="发布时间" size="default" prop="caseTime"> - <el-date-picker - v-model="form.caseTime" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="请选择" - style="width: 100%" - /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="23" :md="23" :lg="23" :xl="23" class="mb20"> - <el-form-item label="内容" size="default" prop="caseContent"> - <Wangeditor v-if="dialogVisible" style="width: 100%" :value="form.caseContent" - @change="changeCaseContent" showTop=""></Wangeditor> - </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 type="primary" v-if="disabled == false" @click="submitForm(ruleFormRef)" size="default">确定</el-button> - </span> - </template> - </el-dialog> -</template> -<script lang="ts"> -import { defineComponent, ref, reactive } from 'vue'; -import { timeDate } from '/@/assets/index.ts'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus'; -import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem'; -import Wangeditor from './wangEditor/index.vue'; - - -export default defineComponent({ - components: {Wangeditor}, - setup(props, { emit }) { - const getWangEditorValue = (str:string) => { - console.log(str); - } - const ruleFormRef = ref<FormInstance>(); - const dialogVisible = ref<boolean>(false); - const form = ref({ - caseTitle: '',///案例标题 - caseContent: '',///案例内容 - caseTime: '', - }); - const changeCaseContent = (e) => { - form.value.caseContent = e - } - const targetType = ref(); - const disabled = ref(false); - const titles = ref(); - const titleT = ref(); - const openDailog = (title: string, id: number) => { - dialogVisible.value = true; - titles.value = `${title}事故案例`; - titleT.value = title; - // targetType.value = type; - disabled.value = title == '查看' ? true : false; - if (title == '查看' || title == '修改') { - accidentManagementSystemApi() - .getaccidentCaseDetail(id) - .then((res) => { - if (res.data.code == 200) { - form.value = res.data.data; - } else { - ElMessage.error(res.data.msg); - } - }); - } - }; - const rules = reactive<FormRules>({ - caseTitle: [ - { - required: true, - message: '案例标题不能为空', - trigger: 'blur', - }, - ], - caseTime: [ - { - required: true, - message: '发布时间不能为空', - trigger: 'blur', - }, - ], - }); - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - if (titleT.value == '新建') { - delete form.value.id; - dialogVisible.value = false; - accidentManagementSystemApi() - .getaccidentCaseAdd(form.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - message: res.data.msg, - type: 'success', - }); - emit('onAdd'); - } else { - ElMessage.error(res.data.msg); - } - }); - }else{ - dialogVisible.value = false; - accidentManagementSystemApi() - .getaccidentCaseUpdata(form.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - message: res.data.msg, - type: 'success', - }); - emit('onAdd'); - } else { - ElMessage.error(res.data.msg); - } - }); - } - - } else { - console.log('error submit!', fields); - } - }); - }; - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.resetFields(); - form.value = {} - console.log(form.value) - dialogVisible.value = false; - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - timeDate, - ruleFormRef, - titleT, - rules, - submitForm, - resetForm, - form, - dialogVisible, - openDailog, - Search, - full, - toggleFullscreen, - FullScreen, - targetType, - disabled, - titles, - changeCaseContent - }; - }, -}); -</script> -<style scoped> -.el-row { - padding: 0 0 20px 0; -} -</style> \ No newline at end of file diff --git a/src/views/accidentManagementSystem/accidentCases/component/wangEditor/index.vue b/src/views/accidentManagementSystem/accidentCases/component/wangEditor/index.vue deleted file mode 100644 index 3953efc..0000000 --- a/src/views/accidentManagementSystem/accidentCases/component/wangEditor/index.vue +++ /dev/null @@ -1,174 +0,0 @@ -<template> - <div class="editor"> - <div ref="toolbar" class="toolbar" :class="showTop"> - </div> - <div ref="editor" class="text"> - </div> - </div> -</template> - -<script> - import E from 'wangeditor' - // import {uploadNew,downloadNew} from '@/api/upload'; - // import defaultUrl from "@/api/defaultUrl"; - export default { - name: 'editoritem', - data() { - return { - // uploadPath, - editor: null, - info_: null, - // defaultUrl:defaultUrl, - defaultUrl:'', - } - }, - model: { - prop: 'value', - event: 'change' - }, - props: { - value: { - type: String, - default: '' - }, - isClear: { - type: Boolean, - default: false - }, - showTop: { - type: String, - default: '' - }, - }, - watch: { - isClear(val) { - // 触发清除文本域内容 - if (val) { - this.editor.txt.clear() - this.info_ = null - } - }, - value: function(value) { - if (value !== this.editor.txt.html()) { - this.editor.txt.html(this.value) - } - } - //value为编辑框输入的内容,这里我监听了一下值,当父组件调用得时候,如果给value赋值了,子组件将会显示父组件赋给的值 - }, - mounted() { - var that =this - that.setEditor() - that.editor.txt.html(that.value) - }, - methods: { - setEditor() { - var that =this - this.editor = new E(this.$refs.toolbar, this.$refs.editor) - // 配置菜单 - this.editor.config.menus = [ - 'head', // 标题 - 'bold', // 粗体 - 'fontSize', // 字号 - 'fontName', // 字体 - 'italic', // 斜体 - 'underline', // 下划线 - 'strikeThrough', // 删除线 - 'foreColor', // 文字颜色 - 'backColor', // 背景颜色 - 'link', // 插入链接 - 'list', // 列表 - 'justify', // 对齐方式 - 'quote', // 引用 - 'emoticon', // 表情 - // 'image', // 插入图片 - 'table', // 表格 - // 'video', // 插入视频 - 'code', // 插入代码 - 'undo', // 撤销 - 'redo' // 重复 - ] - - //配置上传图片 - this.editor.config.uploadImgShowBase64 = false // base 64 存储图片 - this.editor.config.uploadImgServer = 'http://otp.cdinfotech.top/file/upload_images'// 配置服务器端地址 - this.editor.config.uploadImgHeaders = { }// 自定义 header - this.editor.config.uploadFileName = 'file' // 后端接受上传文件的参数名 - this.editor.config.uploadImgMaxSize = 2 * 1024 * 1024 // 将图片大小限制为 2M - this.editor.config.uploadImgMaxLength = 1 // 限制一次最多上传 3 张图片 - this.editor.config.uploadImgTimeout = 3 * 60 * 1000 // 设置超时时间 - this.editor.config.uploadImgHooks = { - fail: (xhr, editor, result) => { - // 插入图片失败回调 - }, - success: (xhr, editor, result) => { - // 图片上传成功回调 - }, - timeout: (xhr, editor) => { - // 网络超时的回调 - }, - error: (xhr, editor) => { - // 图片上传错误的回调 - }, - customInsert: (insertImg, result, editor) => { - // 图片上传成功,插入图片的回调 - //result为上传图片成功的时候返回的数据,这里我打印了一下发现后台返回的是data:[{url:"路径的形式"},...] - // console.log(result.data[0].url) - //insertImg()为插入图片的函数 - //循环插入图片 - // for (let i = 0; i < 1; i++) { - // console.log(result) - let url = "http://otp.cdinfotech.top"+result.url - insertImg(url) - // } - } - } - this.editor.config.customUploadImg = function (files, insert) { - let form = new FormData(); - form.append('file', files[0]); - form.append('dir', 'temp1') - // uploadNew(form).then(res=>{ - // if(res.result){ - // let url = that.defaultUrl+`/upload/downloadNew?path=`+encodeURI(res.data.fileUrl) - // insert(url) - // that.$message("上传成功", 'success'); - // }else { - // that.$message.error("上传失败"); - // } - // - // }) - } - - this.editor.config.onchange = (html) => { - this.info_ = html // 绑定当前逐渐地值 - this.$emit('change', this.info_) // 将内容同步到父组件中 - } - // 创建富文本编辑器 - this.editor.create() - //是否可编辑 - if (this.showTop=='hiddenClass'){ - this.editor.disable() - } - } - } - } -</script> - -<style scoped> - .editor { - /*margin: 0 auto;*/ - position: relative; - z-index: 100; - } - .toolbar { - width: 100%; - border: 1px solid #ccc; - } - .text { - border: 1px solid #ccc; - min-height: 250px; - } - .hiddenClass{ - display: none; - - } -</style> diff --git a/src/views/accidentManagementSystem/accidentCases/index.vue b/src/views/accidentManagementSystem/accidentCases/index.vue deleted file mode 100644 index 38728a1..0000000 --- a/src/views/accidentManagementSystem/accidentCases/index.vue +++ /dev/null @@ -1,274 +0,0 @@ -<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.caseTitle" 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 @click="openD('修改', deletAll[0])">修改</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 type="selection" align="center" width="55" /> - <el-table-column label="序号" align="center" type="index" width="70" /> - <el-table-column label="标题" align="center" property="caseTitle" sortable /> - <el-table-column property="caseTime" 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="jump(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> - <DailogCases ref="Show" @onAdd="add"></DailogCases> - </div> -</template> -<script lang="ts"> -import DailogCases from './component/DailogCases.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 { accidentManagementSystemApi } from '/@/api/accidentManagementSystem'; -import { useRouter } from 'vue-router'; -export default defineComponent({ - components: { ElButton, ElInput, DailogCases }, - setup() { - // 搜索条件 - const ruleForm = reactive({ - pageSize: 10, - pageIndex: 1, - searchParams: { - caseTitle: '', - }, - }); - // 下方导航与表格 - const tableData = ref([]); - const currentPage4 = ref(); - const pageSize4 = ref(); - const total = ref(); - const resetForm = () => { - ruleForm.searchParams.caseTitle = ''; - listApi(); - }; - const listApi = () => { - accidentManagementSystemApi() - .getaccidentCaseList(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, id); - }; - // 删除 - const onDelete = (id: number) => { - let arr = []; - arr.push(id); - ElMessageBox.confirm('确定删除所选项吗?', 'Warning', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }) - .then(() => { - console.log(arr); - accidentManagementSystemApi() - .getaccidentCaseDelete(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(() => { - accidentManagementSystemApi() - .getaccidentCaseDelete(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(); - }; - let router = useRouter(); - let jump = (id:any) => { - router.push({ - path: '/accidentCasesCop' , - query:{ - id:id, - } - }); - }; - - return { - jump, - router, - 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: 20px 0px 10px 0px; - display: flex; - justify-content: space-between; -} -.pages { - padding: 20px 0; - display: flex; - justify-content: right; -} -.tableC { - margin: 0 10%; -} -</style> \ No newline at end of file diff --git a/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue b/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue deleted file mode 100644 index 3953efc..0000000 --- a/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue +++ /dev/null @@ -1,174 +0,0 @@ -<template> - <div class="editor"> - <div ref="toolbar" class="toolbar" :class="showTop"> - </div> - <div ref="editor" class="text"> - </div> - </div> -</template> - -<script> - import E from 'wangeditor' - // import {uploadNew,downloadNew} from '@/api/upload'; - // import defaultUrl from "@/api/defaultUrl"; - export default { - name: 'editoritem', - data() { - return { - // uploadPath, - editor: null, - info_: null, - // defaultUrl:defaultUrl, - defaultUrl:'', - } - }, - model: { - prop: 'value', - event: 'change' - }, - props: { - value: { - type: String, - default: '' - }, - isClear: { - type: Boolean, - default: false - }, - showTop: { - type: String, - default: '' - }, - }, - watch: { - isClear(val) { - // 触发清除文本域内容 - if (val) { - this.editor.txt.clear() - this.info_ = null - } - }, - value: function(value) { - if (value !== this.editor.txt.html()) { - this.editor.txt.html(this.value) - } - } - //value为编辑框输入的内容,这里我监听了一下值,当父组件调用得时候,如果给value赋值了,子组件将会显示父组件赋给的值 - }, - mounted() { - var that =this - that.setEditor() - that.editor.txt.html(that.value) - }, - methods: { - setEditor() { - var that =this - this.editor = new E(this.$refs.toolbar, this.$refs.editor) - // 配置菜单 - this.editor.config.menus = [ - 'head', // 标题 - 'bold', // 粗体 - 'fontSize', // 字号 - 'fontName', // 字体 - 'italic', // 斜体 - 'underline', // 下划线 - 'strikeThrough', // 删除线 - 'foreColor', // 文字颜色 - 'backColor', // 背景颜色 - 'link', // 插入链接 - 'list', // 列表 - 'justify', // 对齐方式 - 'quote', // 引用 - 'emoticon', // 表情 - // 'image', // 插入图片 - 'table', // 表格 - // 'video', // 插入视频 - 'code', // 插入代码 - 'undo', // 撤销 - 'redo' // 重复 - ] - - //配置上传图片 - this.editor.config.uploadImgShowBase64 = false // base 64 存储图片 - this.editor.config.uploadImgServer = 'http://otp.cdinfotech.top/file/upload_images'// 配置服务器端地址 - this.editor.config.uploadImgHeaders = { }// 自定义 header - this.editor.config.uploadFileName = 'file' // 后端接受上传文件的参数名 - this.editor.config.uploadImgMaxSize = 2 * 1024 * 1024 // 将图片大小限制为 2M - this.editor.config.uploadImgMaxLength = 1 // 限制一次最多上传 3 张图片 - this.editor.config.uploadImgTimeout = 3 * 60 * 1000 // 设置超时时间 - this.editor.config.uploadImgHooks = { - fail: (xhr, editor, result) => { - // 插入图片失败回调 - }, - success: (xhr, editor, result) => { - // 图片上传成功回调 - }, - timeout: (xhr, editor) => { - // 网络超时的回调 - }, - error: (xhr, editor) => { - // 图片上传错误的回调 - }, - customInsert: (insertImg, result, editor) => { - // 图片上传成功,插入图片的回调 - //result为上传图片成功的时候返回的数据,这里我打印了一下发现后台返回的是data:[{url:"路径的形式"},...] - // console.log(result.data[0].url) - //insertImg()为插入图片的函数 - //循环插入图片 - // for (let i = 0; i < 1; i++) { - // console.log(result) - let url = "http://otp.cdinfotech.top"+result.url - insertImg(url) - // } - } - } - this.editor.config.customUploadImg = function (files, insert) { - let form = new FormData(); - form.append('file', files[0]); - form.append('dir', 'temp1') - // uploadNew(form).then(res=>{ - // if(res.result){ - // let url = that.defaultUrl+`/upload/downloadNew?path=`+encodeURI(res.data.fileUrl) - // insert(url) - // that.$message("上传成功", 'success'); - // }else { - // that.$message.error("上传失败"); - // } - // - // }) - } - - this.editor.config.onchange = (html) => { - this.info_ = html // 绑定当前逐渐地值 - this.$emit('change', this.info_) // 将内容同步到父组件中 - } - // 创建富文本编辑器 - this.editor.create() - //是否可编辑 - if (this.showTop=='hiddenClass'){ - this.editor.disable() - } - } - } - } -</script> - -<style scoped> - .editor { - /*margin: 0 auto;*/ - position: relative; - z-index: 100; - } - .toolbar { - width: 100%; - border: 1px solid #ccc; - } - .text { - border: 1px solid #ccc; - min-height: 250px; - } - .hiddenClass{ - display: none; - - } -</style> diff --git a/src/views/accidentManagementSystem/accidentCasesCop/index.vue b/src/views/accidentManagementSystem/accidentCasesCop/index.vue deleted file mode 100644 index 52831de..0000000 --- a/src/views/accidentManagementSystem/accidentCasesCop/index.vue +++ /dev/null @@ -1,82 +0,0 @@ -<template> - <div style="background-color:#fff;height: 800px;"> - <el-form :model="form" label-width="120px"> - <el-row> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="标题" size="default" prop="caseTitle"> - <el-input v-model="form.caseTitle" /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="11" :md="11" :lg="11" :xl="11" class="mb20"> - <el-form-item label="发布时间" size="default" prop="caseTime"> - <el-date-picker - v-model="form.caseTime" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - type="datetime" - placeholder="请选择" - style="width: 100%" - /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="23" :md="23" :lg="23" :xl="23" class="mb20"> - <el-form-item label="内容" size="default" prop="caseContent"> - <Wangeditor style="width: 100%" :value="form.caseContent" - showTop=""></Wangeditor> - </el-form-item> - </el-col> - </el-row> - </el-form> - </div> -</template> -<script lang="ts"> -import { defineComponent, ref, reactive, onMounted } from 'vue'; -import { timeDate } from '/@/assets/index.ts'; -import type { FormInstance, FormRules } from 'element-plus'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus'; -import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem'; -import Wangeditor from './component/wangEditor/index.vue'; -import {useRoute} from 'vue-router' -export default defineComponent({ - components: {Wangeditor}, - setup(props, { emit }) { - const route = useRoute(); - const num = route.query.id; - const dialogVisible = ref<boolean>(false); - const form = ref({ - caseTitle: '',///案例标题 - caseContent: '',///案例内容 - caseTime: '', - }); - onMounted(()=>{ - listApi(num) - }) - const listApi=(id:any)=>{ - accidentManagementSystemApi() - .getaccidentCaseDetail(id) - .then((res) => { - if (res.data.code == 200) { - form.value = res.data.data; - } else { - ElMessage.error(res.data.msg); - } - }); - } - - return { - timeDate, - form, - dialogVisible, - Search, - route, - num - }; - }, -}); -</script> -<style scoped> -.el-col { - padding: 20px 0 0 0; -} -</style> \ No newline at end of file diff --git a/src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue b/src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue deleted file mode 100644 index c586c23..0000000 --- a/src/views/accidentManagementSystem/accidentExpress/component/numberOfCasualties.vue +++ /dev/null @@ -1,461 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - title="编辑伤亡人员" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form - ref="ruleFormRef" - :model="ruleForm" - size="default" - 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 deleted file mode 100644 index f72d850..0000000 --- a/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue +++ /dev/null @@ -1,534 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" - destroy-on-close @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(ruleFormRef)" 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="fileList" :disabled="disabled" - :systemName="'INCIDENT_MANAGE'" @successUploader="successUploader"></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,ElMessageBox, } 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 = async (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; - fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - initFileListData() - } - }); - } - }; - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - await goalManagementApi() - .searchFile(fileList.value[a].fileName) - .then((res) => { - fileList.value[a].url = res.data - }) - } - } - //日期选择器 - const value1 = ref(''); - // 上传附件 - const fileList = ref([]); - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - // 可选择树 - 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(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (title == '新建事故快报') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - if(ruleForm.value.id==null||ruleForm.value.id==''){ - 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 { - ElMessage({ - showClose: true, - message: '添加成功', - type: 'success', - }); - emit('myAdd', true); - } - - } else { - console.log('error submit!', fields); - } - }); - } else if (title == '修改事故快报') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - accidentManagementSystemApi() - .accidentView(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: '修改成功', - 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 closeDialog = (formEl: FormInstance | undefined) => { - formEl.resetFields(); - fileList.value = [] - console.log(ruleForm); - isShowDialog.value = false; - }; - // 是否有伤亡弹窗 - const typeChang = () => { - console.log('tag', ruleForm); - }; - const ShowUser = ref(); - const openDai = async (formEl: FormInstance | undefined) => { - if(ruleForm.value.id==null||ruleForm.value.id==''){ - if(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - // isShowDialog.value = false; - ElMessageBox.confirm('确认添加此事故快报?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }) - .then(() => { - accidentManagementSystemApi() - .accidentAdd(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - ruleForm.value.id = res.data.data.id - ShowUser.value.openDialog(ruleForm.value.id, disabled.value); - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - } - }); - }) - .catch(() => {}); - } else { - console.log('error submit!', fields); - } - }); - // ElMessage({ - // showClose: true, - // message: '请先添加事故快报', - // type: 'info', - // }); - }else { - 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, - successUploader - }; - }, -}); -</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 deleted file mode 100644 index b6e134b..0000000 --- a/src/views/accidentManagementSystem/accidentExpress/index.vue +++ /dev/null @@ -1,359 +0,0 @@ -<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" @click="onEdit('修改', deletAll[0])"> - <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 - :formatter="dateFormat"></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 - :formatter="dateFormat"></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; - 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; - } - }; - - // 打开新增弹窗 - 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); - } - }; -//格式化表格时间 - const dateFormat = (row,column) => { - // 获取单元格数据 - let data = row[column.property]; - if(data == null) { - return null; - } - let dt = new Date(data) - return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate() + ' ' + dt.getHours() + ':' + dt.getMinutes() + ':' + dt.getSeconds() - }; - return { - upButton, - upShow, - tableData, - pageIndex, - pageSize, - total, - handleSizeChange, - handleCurrentChange, - onEdit, - onOpenAdd, - addRef, - listQuery, - listApi, - submitReset, - warning, - danger, - handleSelectionChange, - onMyAdd, - onDelete, - deletAll, - onDeleteAll, - dateFormat - }; - }, -}); -</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 deleted file mode 100644 index 11591fe..0000000 --- a/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue +++ /dev/null @@ -1,723 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog :title="titles" v-model="isShowDialog" width="800px" 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="140px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="事故快报" prop="accidentExpressId"> - <el-input v-model="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="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="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="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="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-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="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="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="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="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="事故照片"> - <uploaderImg :fileList="ruleForm.expressFileList" :disabled="true"></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="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="事故分析会议纪要"> - <uploaderFile - :fileList="fileList" - :systemName="'INCIDENT_MANAGE'" - :disabled="disabled" - @successUploader="successUploader" - ></uploaderFile> - </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 uploaderFile from '/@/components/uploaderFile/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, - uploaderFile, - }, - setup(props, { emit }) { - const isShowDialog = ref(false); - - const ruleFormRef = ref<FormInstance>(); - //定义表单 - const ruleForm = ref({ - accidentExpressId: '', - - 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 fileList = ref([]); - // 打开弹窗 - 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; - accidentName.value = res.data.data.accidentName; - accidentDepartmentId.value = res.data.data.accidentDepartmentId; - occurrencePlace.value = res.data.data.occurrencePlace; - occurrenceTime.value = res.data.data.occurrenceTime; - fileList.value = res.data.data.fileList ? res.data.data.fileList : []; - initFileListData(); - } - }); - } - }; - const initFileListData = async () => { - //事故照片 - if (ruleForm.value.expressFileList) { - for (var a = 0; a < ruleForm.value.expressFileList.length; a++) { - await goalManagementApi() - .searchFile(ruleForm.value.expressFileList[a].fileName) - .then((res) => { - ruleForm.value.expressFileList[a].url = res.data; - console.log('ruleForm', ruleForm); - }); - } - } else { - ruleForm.value.expressFileList = []; - } - - // 事故分析会议纪要 - for (var a = 0; a < fileList.value.length; a++) { - fileList.value[a].name = fileList.value[a].fileName; - } - }; - // 上传成功组装数据 - const successUploader = (list) => { - fileList.value = list; - const formFileList = []; - for (var a = 0; a < fileList.value.length; a++) { - formFileList.push({ - fileName: fileList.value[a].fileName, - fileUrl: '', - }); - } - ruleForm.value.fileList = formFileList; - }; - // 取消 - const onCancel = (formEl: FormInstance | undefined) => { - resetForm(formEl); - }; - //日期选择器 - const value1 = ref(''); - - // 可选择树 - const treeSelect = ref(); - //定义树形下拉框 - const responsibleDepartment = ref(); - const data = []; - // 必填项提示 - const rules = reactive<FormRules>({ - accidentExpressId: [ - { - required: true, - message: '快报不能为空', - trigger: 'change', - }, - ], - 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 accidentDepartmentId = ref(); - const occurrencePlace = ref(); - const occurrenceTime = ref(); - const accidentName = ref(); - //事故快报回填 - const onSelectItem = (item: any) => { - console.log('item', item[0]); - ruleForm.value.accidentExpressId = item[0].id; - accidentName.value = item[0].accidentName; - accidentDepartmentId.value = item[0].accidentDepartmentId; - occurrencePlace.value = item[0].occurrencePlace; - occurrenceTime.value = item[0].occurrenceTime; - }; - // 表单提交验证必填项 - const submitForm = async (title: string, formEl: FormInstance | undefined) => { - delete ruleForm.value.accidentName; - delete ruleForm.value.accidentDepartmentId; - delete ruleForm.value.occurrencePlace; - delete ruleForm.value.occurrenceTime; - if (!ruleForm.value.fileList) { - ruleForm.value.fileList = []; - } - 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 上传组件待定 - 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: '', - - 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(); - // ruleForm.value.accidentExpressId = item[0].id - ruleForm.value = {}; - fileList.value = []; - accidentName.value = ''; - accidentDepartmentId.value = ''; - occurrencePlace.value = ''; - occurrenceTime.value = ''; - }; - 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, - 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, - accidentDepartmentId, - occurrencePlace, - occurrenceTime, - accidentName, - successUploader, - initFileListData, - }; - }, -}); -</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 deleted file mode 100644 index 57010f2..0000000 --- a/src/views/accidentManagementSystem/accidentReport/index.vue +++ /dev/null @@ -1,404 +0,0 @@ -<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" @click="onEdit('修改', deletAll[0])"> - <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 label="事故类别" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.accidentType==1">人员伤亡事故</span> - <span v-if="scope.row.accidentType==2">火灾爆炸事故</span> - <span v-if="scope.row.accidentType==3">危险品泄露事故</span> - <span v-if="scope.row.accidentType==4">设备事故</span> - <span v-if="scope.row.accidentType==5">工艺事故</span> - </template> - </el-table-column> - <el-table-column label="事故等级" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.accidentGrade==1">一级</span> - <span v-if="scope.row.accidentGrade==2">二级</span> - <span v-if="scope.row.accidentGrade==3">三级</span> - <span v-if="scope.row.accidentGrade==4">四级</span> - </template> - </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-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"></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, - deletAll - }; - }, -}); -</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/accidentStatistics/index.vue b/src/views/accidentManagementSystem/accidentStatistics/index.vue deleted file mode 100644 index f543f1a..0000000 --- a/src/views/accidentManagementSystem/accidentStatistics/index.vue +++ /dev/null @@ -1,183 +0,0 @@ -<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-row > - <el-col :span="5"> - <el-form-item prop="telephone" label="选择年月"> - <el-radio-group v-model="params.type" style="width:100%"> - <el-radio :label="2">年</el-radio> - <el-radio :label="1">月</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item v-if="params.type==2" prop="telephone" label="选择年"> - <el-date-picker - v-model="params.year" - :disabled="disabled" - type="year" - style="width:100%" - value-format="YYYY" - placeholder="选择日期时间" - /> - </el-form-item> - <el-form-item v-if="params.type==1" prop="telephone" label="选择月"> - <el-date-picker - v-model="params.realMonth" - :disabled="disabled" - type="month" - class="w100" - style="width:100%" - value-format="YYYY-MM" - placeholder="选择日期时间" - /> - </el-form-item> - </el-col> - <el-col :span="3"> - <el-button size="default" type="primary" class="ml10" @click="emergencySuppliesCount"> 查询</el-button> - </el-col> - </el-row> - </el-form> - <div class="echarts" ref="echarts1"> - - </div> - </div> - - </el-card> - - </div> -</template> -<script lang="ts"> - import { defineComponent, onMounted, ref } from 'vue'; - import * as echarts from 'echarts'; - import { ElMessage } from 'element-plus'; - import { goalManagementApi } from '/@/api/goalManagement'; - import { toNamespacedPath } from 'path/posix'; - export default defineComponent({ - setup() { - const params = ref({ - level:'', - type:2, - year:'2022', - month:'', - realMonth:'' - }) - const list = ref([]) -//加载数据 - const emergencySuppliesCount = () => { - if(params.value.type==2){ - params.value.month='' - } - if(params.value.type==1){ - params.value.year=params.value.realMonth.split('-')[0] - params.value.month=params.value.realMonth.split('-')[1] - } - goalManagementApi() - .accidentReportCount(params.value) - .then((res) => { - if (res.data.code == 200) { - var newList = [] - for(var a = 0;a<res.data.data.length;a++){ - newList.push( - { - name:res.data.data[a].name+":"+res.data.data[a].num, - value:res.data.data[a].num, - deathNum: res.data.data[a].deathNum, - economicLoss: res.data.data[a].economicLoss, - minorInjuryNum: res.data.data[a].minorInjuryNum, - seriousInjuryNum: res.data.data[a].seriousInjuryNum - } - ) - } - list.value = newList; - initPies() - } else { - ElMessage.error(res.data.msg); - } - }); - }; - const echarts1 = ref() - const initPies = () => { - var myChart = echarts.init(echarts1.value); - myChart.clear() - var option = { - tooltip: { - trigger: 'item', - textStyle:{ - fontSize:18 - }, - formatter(params){ - for(var x in params){ - return params.data.name.split(':')[0] +":"+params.data.value+'<br />'+ - '死亡人数:'+params.data.deathNum+'<br />'+ - '轻伤人数:'+params.data.minorInjuryNum+'<br />'+ - '重伤人数:'+params.data.seriousInjuryNum+'<br />'+ - '经济损失:'+params.data.economicLoss+'<br />' - } - - } - }, - legend: { - top: '5%', - left: 'center', - icon: "circle", - formatter: function(param){ - param=param.split(":"); - return [param[0]+':'+param[1]].join(""); - }, - }, - series: [ - { - name: '事故等级分布', - type: 'pie', - radius: ['40%', '70%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: 10, - borderColor: '#fff', - borderWidth: 2 - }, - label: { - show: false, - position: 'center' - }, - emphasis: { - label: { - show: false, - fontSize: '40', - fontWeight: 'bold' - } - }, - labelLine: { - show: false - }, - data: list.value - } - ] - }; - - myChart.setOption(option, true); - - }; - onMounted(() => { - emergencySuppliesCount() - }); - return { - params, - list, - emergencySuppliesCount, - initPies, - echarts1 - } - } - - }) -</script> -<style scoped> -.echarts{ - width: 500px; - height: 400px; -} -</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 deleted file mode 100644 index 86cd9a6..0000000 --- a/src/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue +++ /dev/null @@ -1,246 +0,0 @@ -<template> - <div> - <el-dialog v-model="dialogVisible" title="选择事故名称" width="900px" draggable :fullscreen="full" @close="handleClose"> - <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="closeDialog()" 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; - radio1.value='' - }; - //查询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 closeDialog=()=>{ - dialogVisible.value = false - handleClose() - }; - 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, - closeDialog - }; - }, -}); -</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 deleted file mode 100644 index cccc214..0000000 --- a/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue +++ /dev/null @@ -1,547 +0,0 @@ -<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="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="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" :name="INCIDENT_MANAGE" - @successUploader="successUploader" :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; - fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - initFileListData() - } - }); - } - }; - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - await goalManagementApi() - .searchFile(fileList.value[a].fileName) - .then((res) => { - fileList.value[a].url = res.data - }) - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - //日期选择器 - 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(); - fileList.value=[] - 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(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (title == '新建工伤申报') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - delete ruleForm.value.accidentName - delete ruleForm.value.occurrenceTime - delete ruleForm.value.id - 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; - delete ruleForm.value.accidentName - delete ruleForm.value.occurrenceTime - 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, - successUploader, - initFileListData - }; - }, -}); -</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 deleted file mode 100644 index 302da1e..0000000 --- a/src/views/accidentManagementSystem/workInjuryDeclaration/component/openEdit.vue +++ /dev/null @@ -1,400 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - title="新建事故快报" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form - ref="ruleFormRef" - :model="ruleForm" - size="default" - 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="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="是否有伤亡"> - <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 deleted file mode 100644 index 00a7afa..0000000 --- a/src/views/accidentManagementSystem/workInjuryDeclaration/index.vue +++ /dev/null @@ -1,397 +0,0 @@ -<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="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" @click="onEdit('修改', deletAll[0])"> - <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 label="工伤类型" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.workInjuryType==1">轻微伤</span> - <span v-if="scope.row.workInjuryType==2">轻伤</span> - </template> - </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; - accidentName.value = 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 accidentName = ref(); - // 重置 - const submitReset = () => { - listQuery.searchParams.accidentExpressId = ''; - accidentName.value = ''; - 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 { - accidentName, - 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, - deletAll, - }; - }, -}); -</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 deleted file mode 100644 index 69dba30..0000000 --- a/src/views/contingencyManagement/abolishDialog/abolishDialog.vue +++ /dev/null @@ -1,139 +0,0 @@ -<template> - <div class="system-user-container"> - <h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4> - <div class="box"> - <el-menu - :default-active="activeIndex" - class="el-menu-demo" - background-color="#ebeef5" - text-color="#fff" - active-text-color="#fff" - mode="horizontal" - @select="handleSelect" - > - <el-menu-item index="1">表单信息</el-menu-item> - <el-menu-item index="2">流程图</el-menu-item> - </el-menu> - <div v-if="activeIndex == 1" class="navType"> - <formInformationTop v-if="false"></formInformationTop> - <formInformationTops></formInformationTops> - </div> - <div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px"> - <div class="title2">流程图 - <!-- <img src=""> --> - </div> - <div style="width:100%;height:400px"></div> - </div> - </div> - <lowerPlate></lowerPlate> - <div class="btns"> - <el-button type="primary">启动</el-button> - </div> - </div> -</template> -<script lang="ts"> -import { defineComponent, reactive, ref,onMounted } from 'vue'; -import { useRouter } from 'vue-router'; -import formInformationTop from './component/formInformationTop.vue' -import formInformationTops from './component/formInformationTops.vue' -import lowerPlate from './component/lowerPlate.vue' -export default defineComponent({ - components:{lowerPlate,formInformationTop,formInformationTops}, - setup() { - const activeIndex = ref<any>('1'); - const handleSelect = (key: string, keyPath: string[]) => { - // console.log(key, keyPath); - activeIndex.value = key; - }; - const form = reactive({ - name: '', - region: '', - date1: '', - date2: '', - delivery: false, - type: [], - resource: '', - desc: '', - }); - - const router=useRouter() - const Type=onMounted(()=>{ - // console.log("xxxxxxx",router) - }) - - return { - activeIndex, - handleSelect, - form, - router, - Type - }; - }, -}); -</script> -<style scoped> -.title { - text-align: center; - font-size: 16px; - margin-bottom: 20px; -} -.box{ - border: 1px solid #dcdfe6; - box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%); -} -.navType { - background-color: #fff; - padding: 15px; -} -.tiao{ - width: 100%; - height: 1px; - background-color: #dcdfe6; - margin: 30px 0 ; - position: relative; -} -.typeS{ - width: 80px; - background-color: #fff; - position: absolute; - left: 30px; - top: -9px; - font-size: 14px; - text-align: center; -} -.logoColor{ - background-color: #67c23a; - color: #fff; - padding: 5px 8px; - border-radius: 5px; - margin-right: 5px; -} -.btns{ - width: 100%; - padding:20px 0; - background-color: #fff; - position: fixed; - bottom: 0px; - left: 0px; - text-align: center; - box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%); - -} -.title2{ - padding: 20px 0 20px 10px; - width: 100%; - border: 1px solid #dcdfe6; -} - -/*弹窗底部边框线*/ -::v-deep .el-dialog__footer{ - border-top: 1px solid #e8e8e8; - border-radius: 0 0 4px 4px; -} -/*弹窗顶部边框线*/ -::v-deep .el-dialog__header { - border-bottom: 1px solid #e8e8e8; - margin-right: 0; - border-radius: 4px 4px 0 0; -} -</style> diff --git a/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue b/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue deleted file mode 100644 index ef75063..0000000 --- a/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue +++ /dev/null @@ -1,144 +0,0 @@ -<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 deleted file mode 100644 index 68ae8a6..0000000 --- a/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue +++ /dev/null @@ -1,318 +0,0 @@ -<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 deleted file mode 100644 index cbb82fb..0000000 --- a/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue +++ /dev/null @@ -1,120 +0,0 @@ -<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 deleted file mode 100644 index cafe13e..0000000 --- a/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue +++ /dev/null @@ -1,305 +0,0 @@ -<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.name" - 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: '', - 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 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: '', - 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.gender=e[0].sex - ruleForm.value.name=e[0].realName - 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, - 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/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue deleted file mode 100644 index 2d9e986..0000000 --- a/src/views/contingencyManagement/contingency/component/openAdd.vue +++ /dev/null @@ -1,569 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" @close="resetForm(ruleFormRef)"> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form ref="ruleFormRef" :model="ruleForm" size="default" :rules="rules" label-width="120px" - :disabled="disabled"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍名称" prop="teamName"> - <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍级别" prop="teamLevel"> - <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择"> - <el-option label="公司" value="1"></el-option> - <el-option label="分厂-车间" value="2"></el-option> - <el-option label="工序-班组等" value="3"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="队伍负责人" prop="principalName"> - <el-input v-model="ruleForm.principalName" placeholder="请选择" class="input-with-select"> - <template #append> - <el-button :icon="Search" @click="openUser"/> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="负责人部门" prop="principalDepartmentId"> - <el-tree-select v-model="ruleForm.principalDepartmentId" :data="newTreeList" 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"> - <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled" - @successUploader="successUploader"></uploaderFile> - </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(ruleFormRef)" :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 uploaderFile from '/@/components/uploaderFile/index.vue'; - // import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan"; - - - export default defineComponent({ - name: 'openAdd', - components: { - AddEmergencyPersonnel, - DailogSearchUserManger, - uploaderFile - }, - setup(prop, {emit}) { - const isShowDialog = ref(false); - const ruleFormRef = ref<FormInstance>(); - const ruleForm = ref({ - teamName: '', // 队伍名称 - teamLevel: '', // 队伍级别 - principalUid: '', // 队伍负责人 - principalName: '', - principalDepartmentId: '', //负责人部门 - principalPhone: '', // 负责人手机 - telephoneNumber: '', // 固定电话 - teamDesc: '', //队伍描述 - fileList: [], - memberList: [] - }); - const titles = ref(); - const disabled = ref(); - 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 == '查看应急队伍管理' || title == '修改应急队伍管理') { - contingencyApi() - .seeEmergencyTeam(id) - .then((res) => { - if (res.data.code == 200) { - ruleForm.value = res.data.data; - fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - initFileListData() - listApi() - } - }); - } - } - // 上传附件 - const fileList = ref([]) - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - fileList.value[a].name = fileList.value[a].fileName - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - //定义树形下拉框 - const principalDepartmentId = ref() - const data = ref() - - - - //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 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(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (title == '新建应急队伍管理') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - if(teamId.value==null||teamId.value==''){ - 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 { - ElMessage({ - showClose: true, - message: '添加成功', - type: 'success', - }); - emit('myAdd', true); - } - } 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: [], - memberList: [] - }; - } - }; - const resetForm = (formEl: FormInstance | undefined) => { - isShowDialog.value = false; - if (!formEl) return; - formEl.resetFields(); - fileList.value = [] - tableData.value=[] - ruleForm.value = {} - }; - // 定义表格数据 - const tableData = ref([]); - //添加队伍负责人弹窗 - const addRef = ref(); - const onAddEmergencyPersonnel = async (formEl: FormInstance | undefined) => { - if(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - // isShowDialog.value = false; - if(teamId.value == ''||teamId.value==null){ - ElMessageBox.confirm('确认添加此应急队伍?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }) - .then(() => { - contingencyApi() - .addEmergencyTeam(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - teamId.value = res.data.data.id - addRef.value.openDialog('新建应急队伍人员','',teamId.value); - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - } - }); - }) - .catch(() => {}); - - }else { - addRef.value.openDialog('新建应急队伍人员','',teamId.value); - } - - - } else { - console.log('error submit!', fields); - } - }); - }; - // 请求列表数据 - 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(); - }; - // 打开修改弹窗 - 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, - teamId, - newTreeList, - successUploader, - initFileListData - }; - }, - }); -</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/upData.vue b/src/views/contingencyManagement/contingency/component/upData.vue deleted file mode 100644 index cc3e2d0..0000000 --- a/src/views/contingencyManagement/contingency/component/upData.vue +++ /dev/null @@ -1,125 +0,0 @@ -<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 deleted file mode 100644 index 8083231..0000000 --- a/src/views/contingencyManagement/contingency/index.vue +++ /dev/null @@ -1,401 +0,0 @@ -<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.teamLevel" placeholder="请选择队伍级别"> - <el-option label="公司" value="1"></el-option> - <el-option label="分厂-车间" value="2"></el-option> - <el-option label="工序-班组等" value="3"></el-option> - </el-select> - </el-form-item> - <el-form-item> - <el-button size="default" type="primary" class="ml10" @click="onSubmit"> - 查询 - </el-button> - <el-button size="default" class="ml10" @click="submitReset"> - 重置 - </el-button> - </el-form-item> - </el-form> - </div> - <div class="button_Line"> - <div class="button_Left"> - <el-button size="default" type="primary" @click="onOpenAdd"> - <el-icon> - <Plus /> - </el-icon>新建 - </el-button> - <el-button size="default" type="warning" plain :disabled="warning" @click="onEdit('修改', deleteAll[0])"> - <el-icon> - <Edit /> - </el-icon>修改 - </el-button> - <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll"> - <el-icon> - <Delete /> - </el-icon>删除 - </el-button> - </div> -<!-- <div class="button_Right">--> -<!-- <el-button size="default" @click="upButton">--> -<!-- <el-icon>--> -<!-- <Upload />--> -<!-- </el-icon>--> -<!-- </el-button>--> -<!-- <el-button size="default">--> -<!-- <el-icon>--> -<!-- <Download />--> -<!-- </el-icon>--> -<!-- </el-button>--> -<!-- <el-button size="default">--> -<!-- <el-icon>--> -<!-- <Refresh />--> -<!-- </el-icon>--> -<!-- </el-button>--> -<!-- </div>--> - </div> - <el-table - :data="tableData" - style="width: 100%" - ref="multipleTableRef" - @selection-change="handleSelectionChange" - > - <el-table-column - type="selection" - width="55" - /> - <el-table-column prop="teamName" label="队伍名称" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.teamLevel == 1">公司</span> - <span v-if="scope.row.teamLevel == 2">分厂-车间</span> - <span v-if="scope.row.teamLevel == 3">工序-班组等</span> - </template> - </el-table-column> - <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="fileList" 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, - Delete, - // Upload, - // Download, - // Refresh, - Edit, - View, - EditPen, -} from '@element-plus/icons-vue' - -import OpenAdd from '../../contingencyManagement/contingency/component/openAdd.vue' -import UpData from '../../contingencyManagement/contingency/component/upData.vue'; -import {contingencyApi} from "../../../api/contingencyManagement/contingency"; - -export default defineComponent({ - name: 'systemUser', - components: { - OpenAdd, - View, - Edit, - EditPen, - Plus, - Delete, - // Upload, - // Download, - // Refresh, - UpData, - contingencyApi - }, - setup() { - // 列表参数 - const listQuery = reactive({ - pageIndex: 1, - pageSize: 10, - searchParams: { - teamName: "", - teamLevel: "", - } - }) - // 定义表格数据 - const tableData = ref([]); - // 列表数据请求 - const onSubmit = async () => { - let res = await contingencyApi().getTeamManagementList(listQuery) - if(res.data.code === '200'){ - tableData.value = res.data.data; - for(var a = 0;a<tableData.value.length;a++){ - if(tableData.value[a].fileList!=null&&tableData.value[a].fileList!=''&&tableData.value[a].fileList.length!=0){ - tableData.value[a].fileList = tableData.value[a].fileList[0].fileName - } - } - 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.teamLevel = ''; - 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 deleted file mode 100644 index 327405b..0000000 --- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue +++ /dev/null @@ -1,925 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - :title="titles" - v-model="isShowDialog" - width="900px" - 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" - > - <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="预案附件"> - <uploaderFile :fileList="ruleForm.planFileList" :disabled="true"></uploaderFile> - </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="附件列表"> - <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled" - @successUploader="successUploader"></uploaderFile> - </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"; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - name: 'approvalProgress', - components: { - UserSelections, - RegionsDialog, - DailogSearchUser, - uploaderFile - }, - setup(props, { emit }) { - const isShowDialog = ref(false) - - const ruleFormRef = ref<FormInstance>() - //定义表单 - const ruleForm = ref ({ - drillExecuteId: '', - suitable: '', - sufficient: '', - arrival: '', - supplies: '', - protection: '', - whole: '', - division: '', - effect: '', - report: '', - safety: '', - rescue: '', - evacuate: '', - needModify: '', - questionAndImprove: '', - modifyContent: '', - fileList: [ - ], - userList: [ - ] - }); - //定义表单 - const realRuleForm = ref ({ - drillExecuteId: '', - suitable: '', - sufficient: '', - arrival: '', - supplies: '', - protection: '', - whole: '', - division: '', - effect: '', - report: '', - safety: '', - rescue: '', - evacuate: '', - needModify: '', - questionAndImprove: '', - modifyContent: '', - fileList: [ - ], - 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+';' - } - } - fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[]) - initFileListData() - }); - } - 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='' - if(res.data.data.planUserList){ - for(var a = 0;a<res.data.data.planUserList.length;a++){ - ruleForm.value.planUserListString += res.data.data.planUserList[a].userName+';' - } - } - - if(res.data.data.planChargeUserList){ - for(var a = 0;a<res.data.data.planChargeUserList.length;a++){ - ruleForm.value.chargeUserListString += res.data.data.planChargeUserList[a].userName+';' - } - } - - if(res.data.data.executeUserList){ - for(var a = 0;a<res.data.data.executeUserList.length;a++){ - ruleForm.value.executeUserListString += res.data.data.executeUserList[a].userName+';' - } - } - //演练负责人(评价) - if(res.data.data.evaluationUserList){ - for(var a = 0;a<res.data.data.evaluationUserList.length;a++){ - ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';' - } - } - } - fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[]) - initFileListData() - }); - } - 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='' - - if(res.data.data.planUserList){ - for(var a = 0;a<res.data.data.planUserList.length;a++){ - ruleForm.value.planUserListString += res.data.data.planUserList[a].userName+';' - } - } - - if(res.data.data.planChargeUserList){ - for(var a = 0;a<res.data.data.planChargeUserList.length;a++){ - ruleForm.value.chargeUserListString += res.data.data.planChargeUserList[a].userName+';' - } - } - - if(res.data.data.executeUserList){ - for(var a = 0;a<res.data.data.executeUserList.length;a++){ - ruleForm.value.executeUserListString += res.data.data.executeUserList[a].userName+';' - } - } - //演练负责人(评价) - if(res.data.data.evaluationUserList){ - for(var a = 0;a<res.data.data.evaluationUserList.length;a++){ - ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';' - } - } - fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[]) - initFileListData() - } - }); - } - - }; - const initFileListData = async () => { - for(var a = 0;a<ruleForm.value.planFileList.length;a++){ - ruleForm.value.planFileList[a].name = ruleForm.value.planFileList[a].fileName - } - // 事故分析会议纪要 - for(var a = 0;a<fileList.value.length;a++){ - fileList.value[a].name = fileList.value[a].fileName - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - const resetForm = (formEl: FormInstance | undefined) => { - isShowDialog.value = false; - if (!formEl) return; - formEl.resetFields(); - fileList.value = [] - }; - // 关闭弹窗 - const closeDialog = () => { - isShowDialog.value = false; - }; - // 取消 - const onCancel = () => { - closeDialog(); - }; - //日期选择器 - const value1 = ref('') - // 上传附件 - const fileList = ref([]) - // 可选择树 - 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) => { - if(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - //演练负责人(评价) - ruleForm.value.userList = ruleForm.value.evaluationUserList - - - - realRuleForm.value.drillExecuteId=ruleForm.value.drillExecuteId - realRuleForm.value.suitable=ruleForm.value.suitable - realRuleForm.value.sufficient=ruleForm.value.sufficient - realRuleForm.value.arrival=ruleForm.value.arrival - realRuleForm.value.supplies=ruleForm.value.supplies - realRuleForm.value.protection=ruleForm.value.protection - realRuleForm.value.whole=ruleForm.value.whole - realRuleForm.value.division=ruleForm.value.division - realRuleForm.value.effect=ruleForm.value.effect - realRuleForm.value.report=ruleForm.value.report - realRuleForm.value.safety=ruleForm.value.safety - realRuleForm.value.rescue=ruleForm.value.rescue - realRuleForm.value.evacuate=ruleForm.value.evacuate - realRuleForm.value.needModify=ruleForm.value.needModify - realRuleForm.value.questionAndImprove=ruleForm.value.questionAndImprove - realRuleForm.value.modifyContent=ruleForm.value.modifyContent - realRuleForm.value.fileList=ruleForm.value.fileList - if(ruleForm.value.userList){ - for(var a = 0;a<ruleForm.value.userList.length;a++){ - realRuleForm.value.userList.push({ - userUid:ruleForm.value.userList[a].userUid, - userName:ruleForm.value.userList[a].userName - }) - } - } - // 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(realRuleForm.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+';' - } - console.log(ruleForm.value.evaluationUserList) - } - //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, - realRuleForm, - successUploader, - initFileListData - }; - }, -}); -</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 deleted file mode 100644 index 6469b53..0000000 --- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/flowChart.vue +++ /dev/null @@ -1,307 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog title="应急演练计划--修改审批进度" v-model="isShowDialog" width="769px" draggable :fullscreen="full"> - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <!-- <img class="process-status-img" src=""> --> - <el-tabs type="border-card"> - <el-tab-pane label="流转记录"> - <el-card class="box-card" shadow="hover"> - <template #header> - <div class="card-header"> - <span>流转记录</span> - </div> - </template> - <div> - <el-steps :active="2"> - <el-step title="开始" description="胡海涛,2022-07-09 20:41:50" /> - <el-step title="一级审批" description="管理员,2022-07-09 20:41:50" /> - </el-steps> - </div> - <el-table :data="tableData" stripe style="width: 100%"> - <el-table-column prop="date" label="执行环节" width="120" /> - <el-table-column prop="name" label="执行人" width="120" /> - <el-table-column prop="address" label="开始时间" width="100" /> - <el-table-column prop="address" label="结束时间" width="100" /> - <el-table-column prop="address" label="办理状态" width="100" /> - <el-table-column prop="address" label="审批意见" width="100" /> - <el-table-column prop="address" label="任务历时" width="100" /> - </el-table> - </el-card> - </el-tab-pane> - <el-tab-pane label="流程信息"> - <el-card class="box-card" shadow="hover"> - <template #header> - <div class="card-header"> - <span>流程信息</span> - </div> - </template> - <div> - <el-timeline> - <el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)"> - <el-card> - <h4 style="margin: 10px 0; padding-bottom: 10px">一级审批</h4> - <el-row> - <el-col class="tip" :span="22" :offset="1"> - <div class="item"> - <span class="label">审批人:</span> - <span class="value">管理员</span> - </div> - <div class="item"> - <span class="label">办理状态:</span> - <span class="value"> - <!-- <el-tag--> - <!-- v-for="item in items"--> - <!-- :key="item.label"--> - <!-- :type="item.type"--> - <!-- class="mx-1"--> - <!-- effect="dark"--> - <!-- >--> - <!-- {{ item.label }}--> - <!-- </el-tag>--> - <p class="text">等待审核</p> - </span> - </div> - <div class="item"> - <span class="label">审批意见:</span> - <span class="value">等待审核</span> - </div> - <div class="item"> - <span class="label">开始时间:</span> - <span class="value">2022-07-09 20:41:50</span> - </div> - <div class="item"> - <span class="label">结束时间:</span> - <span class="value">2022-07-09 20:41:50</span> - </div> - <div class="item"> - <span class="label">用时:</span> - <span class="value">0秒</span> - </div> - </el-col> - </el-row> - </el-card> - </el-timeline-item> - <el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)"> - <el-card> - <h4>开始</h4> - <el-row> - <el-col class="tip" :span="22" :offset="1"> - <div class="item"> - <span class="label">审批人:</span> - <span class="value">胡海涛</span> - </div> - <div class="item"> - <span class="label">办理状态:</span> - <span class="value"> - <p class="text">开始</p> - </span> - </div> - <div class="item"> - <span class="label">审批意见:</span> - <span class="value">等待审核</span> - </div> - <div class="item"> - <span class="label">开始时间:</span> - <span class="value">2022-07-09 20:41:50</span> - </div> - <div class="item"> - <span class="label">结束时间:</span> - <span class="value">2022-07-09 20:41:50</span> - </div> - <div class="item"> - <span class="label">用时:</span> - <span class="value">0秒</span> - </div> - </el-col> - </el-row> - </el-card> - </el-timeline-item> - </el-timeline> - </div> - </el-card> - </el-tab-pane> - <el-tab-pane label="流程图"> - <el-card class="box-card" shadow="hover"> - <template #header> - <div class="card-header"> - <span>流程图</span> - </div> - </template> - <div></div> - </el-card> - </el-tab-pane> - </el-tabs> - </el-dialog> - <RegionsDialog ref="Shows" /> - <UserCheckbox ref="userRef" /> - </div> -</template> - -<script lang="ts"> -import { ref, defineComponent } from 'vue'; - -import type { TagProps } from 'element-plus'; - -import { Search, FullScreen } from '@element-plus/icons-vue'; -import UserCheckbox from '/@/components/userCheckbox/index.vue'; -import RegionsDialog from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue'; - -export default defineComponent({ - name: 'openAdd', - components: { - RegionsDialog, - UserCheckbox, - }, - setup() { - const isShowDialog = ref(false); - // 打开弹窗 - const openDialog = () => { - // state.ruleForm = row; - isShowDialog.value = true; - }; - // 关闭弹窗 - const closeDialog = () => { - isShowDialog.value = false; - }; - const tableData = [ - { - date: '2016-05-03', - name: 'Tom', - address: '2022-07-09 20:41:50', - }, - { - date: '2016-05-02', - name: 'Tom', - address: '2022-07-09 20:41:50', - }, - { - date: '2016-05-04', - name: 'Tom', - address: '2022-07-09 20:41:50', - }, - { - date: '2016-05-01', - name: 'Tom', - address: '2022-07-09 20:41:50', - }, - ]; - - type Item = { type: TagProps['type']; label: string }; - - const items = ref<Array<Item>>([{ type: '', label: '等待审核' }]); - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - openDialog, - closeDialog, - isShowDialog, - Search, - tableData, - items, - toggleFullscreen, - FullScreen, - full, - }; - }, -}); -</script> -<style scoped lang="scss"> -.process-status-img { - width: 128px; - height: auto; - position: absolute; - right: 10px; - top: 60px; - z-index: 999; -} -//弹窗底部边框线 -::v-deep .el-dialog__footer { - border-top: 1px solid #e8e8e8; - border-radius: 0 0 4px 4px; -} -//弹窗顶部边框线 -::v-deep .el-dialog__header { - border-bottom: 1px solid #e8e8e8; - margin-right: 0; - border-radius: 4px 4px 0 0; -} -//tabs字体颜色 -::v-deep .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { - color: #a9d86e !important; -} -.card-header { - display: flex; - justify-content: space-between; - align-items: center; -} -//.box-card { -// width: 480px; -//} -//步骤条字体大小 -::v-deep .el-step__icon-inner { - font-size: 14px !important; -} -//步骤条颜色 -::v-deep .el-step__line { - background-color: #409eff; -} -//表头 -::v-deep .el-table th.el-table__cell { - background-color: #f6f7fa; - font-weight: 400; - color: #909399; -} -.el-table .sort-caret.ascending { - border-bottom-color: #c0c4cc; -} - -.tip { - padding: 8px 16px; - background-color: #ecf8ff; - border-radius: 4px; - border-left: 5px solid #50bfff; - margin: 20px 0; -} -.item { - height: 32px; - line-height: 32px; - margin-bottom: 8px; -} -.item .label { - display: inline-block; - height: 100%; - width: 70px; - font-size: 14px; - color: #5e6d82; - text-align: end; - vertical-align: top; -} -.item .value { - padding-left: 10px; - font-size: 14px; - max-width: calc(100% - 90px); - color: #5e6d82; - display: inline-block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.text { - background-color: #409eff; - color: #fff; - border-width: 1px; - border-style: solid; - border-radius: 4px; - height: 24px; - padding: 0 8px; - line-height: 22px; - display: inline-block; -} -</style> \ No newline at end of file diff --git a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue deleted file mode 100644 index bc66e00..0000000 --- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/rectificationDialog.vue +++ /dev/null @@ -1,775 +0,0 @@ -<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(--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/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue deleted file mode 100644 index bba7134..0000000 --- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/index.vue +++ /dev/null @@ -1,502 +0,0 @@ -<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 deleted file mode 100644 index 3b85b4a..0000000 --- a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/openAdd.vue +++ /dev/null @@ -1,629 +0,0 @@ -<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) => { - delete ruleForm.value.drillName - delete ruleForm.value.autualUserListString - 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 deleted file mode 100644 index a6cdd4e..0000000 --- a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/regionsDialog.vue +++ /dev/null @@ -1,221 +0,0 @@ -<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 deleted file mode 100644 index c3a4156..0000000 --- a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/component/userSelect.vue +++ /dev/null @@ -1,443 +0,0 @@ -<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 deleted file mode 100644 index 767809d..0000000 --- a/src/views/contingencyManagement/emergencyDrill/implementationOfEmergencyDrill/index.vue +++ /dev/null @@ -1,375 +0,0 @@ -<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 deleted file mode 100644 index 5dad014..0000000 --- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue +++ /dev/null @@ -1,325 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - title="应急演练计划--修改审批进度" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <!-- <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 deleted file mode 100644 index 8f988a3..0000000 --- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue +++ /dev/null @@ -1,591 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - :title="titles" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - @close="resetForm(ruleFormRef)" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form - ref="ruleFormRef" - :model="ruleForm" - size="default" - label-width="120px" - :disabled="disabled" - > - <el-row :gutter="35"> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练名称" prop="drillName"> - <el-input v-model="ruleForm.drillName" placeholder="请填写演练名称"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练地点" prop="drillAddress"> - <el-input v-model="ruleForm.drillAddress" placeholder="请填写演练地点"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="主办部门" placeholder="请选择" prop="departmentId"> - <el-tree-select - v-model="ruleForm.departmentId" - :data="data" - check-strictly - class="w100" - :props="propse" - clearable - placeholder="请选择"/> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练方式" prop="drillWay"> - <el-select v-model="ruleForm.drillWay" class="w100" placeholder="请选择"> - <el-option label="综合" value="1"></el-option> - <el-option label="桌面" value="2"></el-option> - <el-option label="专项" value="3"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="应急预案" prop="planName" > - <el-input - v-model="ruleForm.planName" - placeholder="请选择" - class="input-with-select" - > - <template #append> - <el-button :icon="Search" @click="daiInpt"/> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练级别" prop="drillLevel"> - <el-select v-model="ruleForm.drillLevel" class="w100" placeholder="请选择"> - <el-option label="公司级" value="1"></el-option> - <el-option label="分厂级" value="2"></el-option> - <el-option label="车间级" value="3"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="计划定制日期" prop="makingPlanDate"> - <el-date-picker v-model="ruleForm.makingPlanDate" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="计划演练日期" prop="drillPlanDate"> - <el-date-picker v-model="ruleForm.drillPlanDate" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" /> - </el-form-item> - </el-col> - <!--<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">--> - <!--<el-form-item label="修改时间" prop="gmtModitify">--> - <!--<el-date-picker v-model="ruleForm.gmtModitify" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="选择日期时间" style="width: 100%" />--> - <!--</el-form-item>--> - <!--</el-col>--> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="计划定制人" prop="makingUserName"> - <el-input v-model="ruleForm.makingUserName" placeholder="请填写计划定制人" disabled></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="制定部门" prop="makingDepartmentId"> - <el-tree-select - v-model="ruleForm.makingDepartmentId" - check-strictly - :data="data" - class="w100" - :props="propse" - clearable - placeholder="请选择"/> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练人员" prop="userListString" > - <el-input - v-model="ruleForm.userListString" - placeholder="请选择" - class="input-with-select" - > - <template #append> - <el-button :icon="Search" @click="openUser(0)"/> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="演练目的" prop="purpose"> - <el-input - v-model="ruleForm.purpose" - placeholder="请填写演练目的" - class="input-with-select textarea" - type="textarea" - > - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练负责人" prop="chargeUserListString" > - <el-input - v-model="ruleForm.chargeUserListString" - placeholder="请选择" - class="input-with-select" - > - <template #append> - <el-button :icon="Search" @click="openUser(1)"/> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="保险措施" prop="insuranceMeasures"> - <el-input v-model="ruleForm.insuranceMeasures" placeholder="请填写保险措施"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="演练经费" prop="drillExpense"> - <el-input v-model="ruleForm.drillExpense" placeholder="请填写演练经费"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="备注信息" prop="remark"> - <el-input - v-model="ruleForm.remark" - placeholder="请填写备注信息" - class="input-with-select textarea" - type="textarea" - > - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;"> - <el-form-item label="预案附件"> - <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled" - @successUploader="successUploader"></uploaderFile> - </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'; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - name: 'openAdd', - components: { - RegionsDialog, - DailogSearchUser, - uploaderFile - }, - 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+';' - } - fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - initFileListData() - } - }); - } - }; - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - fileList.value[a].name = fileList.value[a].fileName - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - //日期选择器 - const value1 = ref('') - // 上传附件 - const fileList = ref([]) - // 可选择树 - 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) => { - if(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - ruleForm.value.userList = ruleForm.value.userList.concat(ruleForm.value.chargeUserList) - delete ruleForm.value.planName - delete ruleForm.value.chargeUserListString - delete ruleForm.value.userListString - delete ruleForm.value.chargeUserList - delete ruleForm.value.gmtModitify - 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; - fileList.value=[] - 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, - successUploader, - initFileListData - }; - }, -}); -</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 deleted file mode 100644 index 07a7b7b..0000000 --- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue +++ /dev/null @@ -1,223 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" title="选择应急预案" width="900px" draggable :fullscreen="full" @close="closeDialog"> - <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 closeDialog = () =>{ - handleClose('') - } - 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, - closeDialog - }; - }, -}); -</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 deleted file mode 100644 index b1a7099..0000000 --- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue +++ /dev/null @@ -1,404 +0,0 @@ -<template> - <div class="system-user-container"> - <el-card shadow="hover"> - <div class="button_Line"> - <div class="button_Left mb15"> - <el-button size="default" type="primary" @click="onOpenAdd"> - <el-icon> - <Plus /> - </el-icon>新建 - </el-button> - <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll"> - <el-icon> - <Delete /> - </el-icon>删除 - </el-button> - </div> - <div class="button_Right"> -<!-- <el-button @click="upButton">--> -<!-- <el-icon>--> -<!-- <Upload />--> -<!-- </el-icon>--> -<!-- </el-button>--> -<!-- <el-button>--> -<!-- <el-icon>--> -<!-- <Download />--> -<!-- </el-icon>--> -<!-- </el-button>--> -<!-- <el-button>--> -<!-- <el-icon>--> -<!-- <Refresh />--> -<!-- </el-icon>--> -<!-- </el-button>--> - </div> - </div> - <el-table - :data="tableData" - style="width: 100%" - ref="multipleTableRef" - @selection-change="handleSelectionChange" - > - <el-table-column - type="selection" - width="55" - /> - <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.drillWay == 1">综合</span> - <span v-if="scope.row.drillWay == 2">桌面</span> - <span v-if="scope.row.drillWay == 3">专项</span> - </template> - </el-table-column> - <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.drillLevel == 1">公司级</span> - <span v-if="scope.row.drillLevel == 2">分厂级</span> - <span v-if="scope.row.drillLevel == 3">车间级</span> - </template> - </el-table-column> - <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="gmtModitify" label="修改时间" show-overflow-tooltip sortable></el-table-column> - <el-table-column label="操作" width="260" align="center"> - <template #default="scope"> - <!--<el-button size="small" text type="primary" @click="releaseOfDrillPlan(0)">--> - <!--<el-icon style="margin-right: 5px;">--> - <!--<VideoPlay />--> - <!--</el-icon>启动--> - <!--</el-button>--> - <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)"> - <el-icon style="margin-right: 5px;"> - <View /> - </el-icon>查看 - </el-button> - <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)"> - <el-icon style="margin-right: 5px;"> - <EditPen /> - </el-icon>修改 - </el-button> - <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)"> - <el-icon> - <Delete /> - </el-icon>删除 - </el-button> - </template> - </el-table-column> - </el-table> - <div class="pages"> - <el-pagination - v-if="tableData.length == 0 ? false : true" - v-model:currentPage="pageIndex" - v-model:page-size="pageSize" - :page-sizes="[10, 20, 30]" - :pager-count="5" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </el-card> - <OpenAdd ref="addRef" @myAdd="onMyAdd"/> -<!-- <FlowChart ref="flowRef"></FlowChart>--> - <upData ref="upShow"></upData> - </div> -</template> - -<script lang="ts"> -import { - // toRefs, - reactive, - onMounted, - ref, - defineComponent -} from 'vue'; -import { - ElMessageBox, - ElMessage, - // ElTable, -} from 'element-plus'; -import { - Plus, - Delete, - // Upload, - // Download, - // Refresh, - View, - VideoPlay, - EditPen, -} from '@element-plus/icons-vue' -import {useRouter} from "vue-router" -import OpenAdd from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue'; -// import FlowChart from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue'; -import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue'; -import { releaseDrillPlanApi } from '/@/api/contingencyManagement/emergencyDrillPlan'; - -export default defineComponent({ - name: 'systemUser', - components: { - OpenAdd, - EditPen, - Plus, - View, - Delete, - // Upload, - // Download, - // Refresh, - VideoPlay, - UpData, - // FlowChart, - }, - setup() { - // 列表参数 - const listQuery = reactive({ - pageIndex: 1, - pageSize: 10, - searchParams: { - drillName: '' - }, - }); - // 定义表格数据 - const tableData = ref([]); - // 列表数据请求 - const listApi = async () => { - let res = await releaseDrillPlanApi().getReleaseDrillPlanList(listQuery); - if (res.data.code == 200) { - tableData.value = res.data.data; - pageIndex.value = res.data.pageIndex; - pageSize.value = res.data.pageSize; - total.value = res.data.total; - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - } - }; - onMounted(() => { - listApi(); - }); - // 上传 - // const upShow=ref() - // const upButton=()=>{ - // upShow.value.openDialog() - // } - - // 打开新增弹窗 - const addRef = ref(); - const onOpenAdd = () => { - addRef.value.openDialog('新建应急演练计划发布',false); - }; - // 新增后刷新 - const onMyAdd = (e: boolean) => { - if (e) { - listApi(); - } else { - listApi(); - } - }; - // 打开修改用户弹窗 - const onEdit = (val: string, row: object) => { - if (val == '详情') { - addRef.value.openDialog('查看应急演练计划发布',row,true); - } else { - addRef.value.openDialog('修改应急演练计划发布',row,false); - } - }; - // 打开修改用户弹窗 - // const flowRef = ref(); - // const onflowChart = (row: TableDataRow) => { - // flowRef.value.openDialog(row); - // }; - // 删除 - const onRowDel = (id: number) => { - let arr = []; - arr.push(id) - ElMessageBox.confirm('确定删除所选项吗?', '提示',{ - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning', - }).then(() => { - releaseDrillPlanApi() - .deleteReleaseDrillPlan(arr) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - listApi(); - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - listApi(); - } - }); - }) - .catch(() => {}); - }; - // 多选删除 - const onDeleteAll = () => { - ElMessageBox.confirm('确定删除所选项吗?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning', - }) - .then(() => { - releaseDrillPlanApi() - .deleteReleaseDrillPlan(deletAll.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - listApi(); - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - listApi(); - } - }); - }) - .catch(() => {}); - }; - // 分页 - const pageIndex = ref(); - const pageSize = ref(); - const total = ref(); - // 分页改变 - const handleSizeChange = (val: number) => { - listQuery.pageSize = val; - listApi(); - }; - // 分页未改变 - const handleCurrentChange = (val: number) => { - listQuery.pageIndex = val; - listApi(); - }; - const danger = ref(true); - const deletAll = ref(); - const handleSelectionChange = (val: any) => { - let valId = JSON.parse(JSON.stringify(val)); - let arr = []; - for (let i = 0; i < valId.length; i++) { - arr.push(valId[i].id); - } - deletAll.value = arr; - // console.log(deletAll.value); - if (val.length == 1) { - danger.value = false; - } else if (val.length == 0) { - danger.value = true; - } else { - danger.value = false; - } - }; - - // 启动跳转 - const router=useRouter() - const releaseOfDrillPlan=(data:string)=>{ - router.push({ - path:"/releaseOfDrillStart", - query:{ - type:data - } - }) - } - return { - // upButton, - // upShow, - tableData, - // onflowChart, - // flowRef, - onOpenAdd, //新增 - addRef, - onRowDel, - View , - pageIndex, - listQuery, - pageSize, - handleSizeChange, - handleCurrentChange, - router, - releaseOfDrillPlan, - listApi, - danger, - deletAll, - handleSelectionChange, - onMyAdd, - onDeleteAll, - onEdit, - total, - }; - }, -}); -</script> -<style scoped lang="scss"> -.table_Box{ - padding: 20px; - background-color: #fff; -} -.tableForm{ - margin-top: 10px; -} -/*按钮行*/ -.button_Line{ - display: flex; - flex-direction: row; - justify-content: space-between; -} -//表头 -::v-deep .el-table th.el-table__cell { - background-color: #f6f7fa; - font-weight: 400; - color: #909399; -} -.el-table .sort-caret.ascending{ - border-bottom-color: #c0c4cc; -} -//分页 -.pages{ - display: flex; - justify-content: flex-end; - margin-top: 15px; -} -::v-deep .el-pagination .el-pager li { - margin: 0 5px; - background-color: #f4f4f5; - color: #606266; - min-width: 30px; - border-radius: 2px; -} -::v-deep .el-pagination .el-pager li.is-active { - background-color: #409eff; - color: #fff; -} -::v-deep .el-pagination .btn-prev { - margin: 0 5px; - background-color: #f4f4f5; - color: #606266; - min-width: 30px; - border-radius: 2px; -} -::v-deep .el-pagination button:disabled{ - color: #c0c4cc; -} -::v-deep .el-pagination .btn-next{ - margin: 0 5px; - background-color: #f4f4f5; - color: #606266; - min-width: 30px; - border-radius: 2px; -} -</style> \ No newline at end of file diff --git a/src/views/contingencyManagement/emergencyDrillStatistics/index.vue b/src/views/contingencyManagement/emergencyDrillStatistics/index.vue deleted file mode 100644 index a219fea..0000000 --- a/src/views/contingencyManagement/emergencyDrillStatistics/index.vue +++ /dev/null @@ -1,359 +0,0 @@ -<template> - <div> - <div class="echart"> - <h2 class="title">距上次应急演练结束{{day}}天</h2> - <el-form :model="form" label-width="20px"> - <el-row> - <el-col :span="4" :offset="15"> - <el-form-item size="default"> - <el-tree-select v-model="form.deptId" :data="data" @change="eaclick" placeholder="选择部门" :props="propse" style="width: 100%" /> - </el-form-item> - </el-col> - <el-col :span="4"> - <el-form-item size="default"> - <el-select v-model="form.type" placeholder="年/月" @change="eaclick" style="width:100%"> - <el-option label="年" :value="1" /> - <el-option label="月" :value="2" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <div ref="main" style="width: 100%; height: 300px"></div> - <div style="width: 100%; padding-left: 20px"> - <el-select v-model="params.searchParams.classification" style="width: 200px" - placeholder="请选择物资分类" @change="emergencySuppliesCount"> - <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> - <div class="pie-body"> - <div class="pie-item" ref="echarts0"> - </div> - <div class="pie-item" ref="echarts1"> - </div> - <div class="pie-item" ref="echarts2"> - </div> - <div class="pie-item" ref="echarts3"> - </div> - <div class="pie-item" ref="echarts4"> - </div> - <ArrowLeftBold class="pie-left" :class="disabledLeft" @click="leftClick" /> - <ArrowRightBold class="pie-right" :class="disabledRight" @click="rightClick" /> - </div> - </div> - </div> - </div> -</template> -<script lang="ts"> -import { defineComponent, onMounted, ref } from 'vue'; -import * as echarts from 'echarts'; -import { ElMessage } from 'element-plus'; -import { ArrowLeftBold, ArrowRightBold } from '@element-plus/icons-vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -import { toNamespacedPath } from 'path/posix'; -import { deepClone } from '/@/utils/other'; -export default defineComponent({ - components: { - ArrowLeftBold, - ArrowRightBold, - }, - setup() { - const params = ref({ - pageIndex:1, - pageSize:5, - searchParams:{ - classification:'' - } - }) - const list = ref([]) - - const leftClick = () => { - params.value.pageIndex-- - emergencySuppliesCount() - initPies() - } - const rightClick = () => { - params.value.pageIndex++ - emergencySuppliesCount() - initPies() - } - const disabledLeft = ref() - const disabledRight = ref() - //加载数据 - const emergencySuppliesCount = () => { - goalManagementApi() - .emergencySuppliesCount(params.value) - .then((res) => { - if (res.data.code == 200) { - list.value = res.data.data; - initPies() - //禁用左右按钮 - if(res.data.pageIndex==1){ - disabledLeft.value = 'disabled-pie' - }else{ - disabledLeft.value = '' - } - if(res.data.pageIndex==res.data.pages){ - disabledRight.value = 'disabled-pie' - }else{ - disabledRight.value = '' - } - } else { - ElMessage.error(res.data.msg); - } - }); - }; - const echarts0 = ref() - const echarts1 = ref() - const echarts2 = ref() - const echarts3 = ref() - const echarts4 = ref() - const initPies = () => { - var myChart0 = echarts.init(echarts0.value); - var myChart1 = echarts.init(echarts1.value); - var myChart2 = echarts.init(echarts2.value); - var myChart3 = echarts.init(echarts3.value); - var myChart4 = echarts.init(echarts4.value); - myChart0.clear() - myChart1.clear() - myChart2.clear() - myChart3.clear() - myChart4.clear() - for(var a = 0;a<list.value.length;a++){ - var option = { - tooltip: { - trigger: 'item', - show:false - }, - color:['#24c548'], - title: { - text: list.value[a].name+'\n\n'+list.value[a].totalNum, - x: '49%', - y: '35%', - textAlign:'center', - textStyle: { - color: '#24c548', - fontSize: 19, - fontWeight: "bold", - fontFamily:'D-DIN', - textShadowColor:'red' - }, - }, - series: [ - { - name: null, - type: 'pie', - radius: ['80%', '90%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: 10, - borderColor: '#fff', - borderWidth: 0 - }, - label: { - show: false, - position: 'center' - }, - labelLine: { - show: false - }, - data: [ - { value: list.value[a].totalNum, name: list.value[a].name }, - ] - } - ] - }; - - - if(a==0){ - var option0 = deepClone(option) - option0.color = ['#24c548'] - option0.title.textStyle.color = '#24c548' - myChart0.setOption(option0, true); - } - if(a==1){ - var option1 = deepClone(option) - option1.color = ['#e7bd27'] - option1.title.textStyle.color = '#e7bd27' - myChart1.setOption(option1, true); - } - if(a==2){ - var option2 = deepClone(option) - option2.color = ['#e65c3e'] - option2.title.textStyle.color = '#e65c3e' - myChart2.setOption(option2, true); - } - if(a==3){ - var option3 = deepClone(option) - option3.color = ['#8e66e7'] - option3.title.textStyle.color = '#8e66e7' - myChart3.setOption(option3, true); - } - if(a==4){ - var option4 = deepClone(option) - option4.color = ['#28b8d6'] - option4.title.textStyle.color = '#28b8d6' - myChart4.setOption(option4, true); - } - } - - }; - - const form = ref({ - type:1, - deptId:1 - }); - //部门 - 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 eaclick=()=>{ - listApi() - } - onMounted(() => { - listApi() - department(); - emergencySuppliesCount() - }); - const day=ref(0) - const listApi=()=>{ - goalManagementApi().emergencyStat(form.value).then(res=>{ - if(res.data.code==200){ - day.value=res.data.data.days - let date=[] - let names=[] - res.data.data.dataList.forEach(item => { - date.push(item.num) - names.push(item.name) - }); - init(date,names) - } - }) - } - const main = ref(); - const init = (data: any,names:any) => { - var myChart = echarts.init(main.value); - var option = { - tooltip: {}, - grid: { - left: '3%', - right: '4%', - bottom: '5%', - containLabel: true, - }, - xAxis: { - type: 'category', - data: names, - }, - yAxis: { - type: 'value', - name: '次数', - nameTextStyle: { - color: '#aaa', - nameLocation: 'start', - }, - }, - color: ['#6394f9'], - series: [ - { - data: data, - barWidth : 40, - type: 'bar', - }, - ], - }; - - myChart.setOption(option); - }; - const data = ref([]) - return { - form, - main, - init, - data, - department, - propse, - listApi, - eaclick, - day, - list, - emergencySuppliesCount, - params, - initPies, - leftClick, - rightClick, - echarts0, - echarts1, - echarts2, - echarts3, - echarts4, - disabledRight, - disabledLeft - }; - }, -}); -</script> -<style scoped> -.title{ - text-align: center; - padding: 20px 0; -} -.echart { - background-color: #fff; - border-radius: 5px; -} -.el-form { - padding: 20px 0; -} - .pie-body{ - width: 50%; - height: 370px; - display: flex; - justify-content: space-around; - flex-wrap: wrap; - position: relative; - } - .pie-item{ - width: 32%; - height: 48%; - margin-right: 1%; - margin-bottom: 1%; - } - .pie-left{ - position: absolute; - width: 30px; - height: 30px; - left: 0; - top: 48%; - cursor: pointer; - } - .pie-right{ - position: absolute; - width: 30px; - height: 30px; - right: 0; - top: 48%; - cursor: pointer; - } - .disabled-pie{ - pointer-events:none; - color: #9b9da1; - } -</style> diff --git a/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue deleted file mode 100644 index e550b77..0000000 --- a/src/views/contingencyManagement/emergencyPlanStartRecord/component/openSee.vue +++ /dev/null @@ -1,195 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - :title="titles" - v-model="isShowDialog" - width="769px" - draggable - :fullscreen="full" - > - <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button> - <el-form - ref="ruleFormRef" - :model="ruleForm" - size="default" - label-width="120px" - :disabled="disabled" - > - <el-row :gutter="35"> - <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="应急预案" prop="planName" > - <el-input - v-model="ruleForm.planName" - placeholder="请选择" - class="input-with-select" - disabled - > - <template #append> - <el-button :icon="Search" disabled @click="openUser"/> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="备注"> - <el-input - class="textarea" - v-model="ruleForm.remark" - type="textarea" - maxlength="150" - placeholder="请填写备注" - ></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button size="default" @click="resetForm(ruleFormRef)">关闭</el-button> - <el-button size="default" v-if="disabled == true ? false : true" type="primary" @click="submitForm(titles, ruleFormRef)">确定</el-button> - </span> - </template> - </el-dialog> - <DailogSearchUser ref="userRef" @SearchUser="onUser"/> - <AddEmergencyPersonnel ref="addRef" /> - </div> -</template> - -<script lang="ts"> -import { - ref, - defineComponent -} from 'vue'; -import type { - FormInstance, -} from 'element-plus' -import { ElMessage } from 'element-plus'; -import { - Search, - FullScreen -} from '@element-plus/icons-vue' -import DailogSearchUser from "/@/components/DailogSearchUser/index.vue" -import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue"; -import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog"; - -export default defineComponent({ - name: 'openEdit', - components: { - DailogSearchUser, - AddEmergencyPersonnel, - }, - setup(props, { emit }) { - const isShowDialog = ref(false); - - const ruleFormRef = ref<FormInstance>(); - const ruleForm= ref({ - planId: '', //应急预案人员 - remark: '', // 备注 - }) - const titles = ref(); - const disabled = ref(); - - // 打开用户选择弹窗 - const userRef = ref(); - const openUser = () => { - userRef.value.openDailog(); - }; - const onUser = (e:any) => { - ruleForm.value.planId=e.id - }; - // 打开弹窗 - const openDialog = (title: string, id: number, type: boolean) => { - isShowDialog.value = true; - titles.value = title; - disabled.value = type; - if (title == '查看应急预案启动记录' || title == '修改应急预案启动记录') { - emergencyPlanLogApi() - .seeEmergencyPlanLog(id) - .then((res) => { - if (res.data.code == 200) { - ruleForm.value = res.data.data; - } - }); - } - }; - // 表单提交验证必填项 - const submitForm = async (title: string, formEl: FormInstance | undefined) => { - if (title == '修改应急预案启动记录') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - emergencyPlanLogApi() - .editEmergencyPlanLog(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: '修改成功', - type: 'success', - }); - emit('myAdd', true); - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - emit('myAdd', true); - } - formEl.resetFields(); - }); - } else { - console.log('error submit!', fields); - } - }); - formEl.resetFields(); - ruleForm.value = { - planId: '', //应急预案人员 - remark: '', // 备注 - }; - } - }; - const resetForm = (formEl: FormInstance | undefined) => { - isShowDialog.value = false; - if (!formEl) return; - formEl.resetFields(); - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - openDialog, - Search, - ruleFormRef, - openUser, - userRef, - toggleFullscreen, - FullScreen, - full, - titles, - disabled, - emit, - ruleForm, - submitForm, - resetForm, - isShowDialog, - onUser, - }; - }, -}); -</script> -<style scoped lang="scss"> -.textarea{ - height: 50px!important; -} -.textarea ::v-deep .el-textarea__inner{ - height: 50px!important; -} -</style> \ No newline at end of file diff --git a/src/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue b/src/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue deleted file mode 100644 index 9fe5f86..0000000 --- a/src/views/contingencyManagement/emergencyPlanStartRecord/component/selectEmergencyPlan.vue +++ /dev/null @@ -1,246 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" title="选择应急预案" width="900px" draggable :fullscreen="full" @close="closeDialog"> - <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 closeDialog = () => { - handleClose('') - } - 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, - closeDialog - }; - }, -}); -</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 deleted file mode 100644 index 1ce636f..0000000 --- a/src/views/contingencyManagement/emergencyPlanStartRecord/index.vue +++ /dev/null @@ -1,408 +0,0 @@ -<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" @click="onEdit('修改',deleteAll[0])"> - <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 () => { - var planName = listQuery.searchParams.planName - delete listQuery.searchParams.planName - 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; - listQuery.searchParams.planName = planName - } 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 deleted file mode 100644 index a241308..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/component/openAdd.vue +++ /dev/null @@ -1,284 +0,0 @@ -<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; - delete ruleForm.value.suppliesName - delete ruleForm.value.userName - 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; - delete ruleForm.value.suppliesName - delete ruleForm.value.userName - 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 deleted file mode 100644 index 7ad1c4f..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencyMaterialsInspection/index.vue +++ /dev/null @@ -1,391 +0,0 @@ -<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="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" @click="onEdit('修改', deletAll[0])"> - <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 suppliesName=ref() - // 重置 - const submitReset = () => { - listQuery.searchParams.suppliesId = ''; - suppliesName.value="" - 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; - suppliesName.value=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 { - suppliesName, - 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, - deletAll - }; - }, -}); -</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 deleted file mode 100644 index d67642c..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/inspect.vue +++ /dev/null @@ -1,225 +0,0 @@ -<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; - delete ruleForm.value.userName - 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 deleted file mode 100644 index fb8b0a1..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/maintain.vue +++ /dev/null @@ -1,236 +0,0 @@ -<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; - delete ruleForm.value.userName - 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 deleted file mode 100644 index 17defc0..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openAdd.vue +++ /dev/null @@ -1,515 +0,0 @@ -<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 deleted file mode 100644 index f5b2e61..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/openEdit.vue +++ /dev/null @@ -1,549 +0,0 @@ -<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 deleted file mode 100644 index 2e719ea..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/personInCharge.vue +++ /dev/null @@ -1,213 +0,0 @@ -<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 deleted file mode 100644 index d8d1973..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/component/regionsCheckbox.vue +++ /dev/null @@ -1,164 +0,0 @@ -<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 deleted file mode 100644 index afe1cd7..0000000 --- a/src/views/contingencyManagement/emergencyResources/emergencySupplies/index.vue +++ /dev/null @@ -1,397 +0,0 @@ -<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" @click="onEdit('修改', deletAll[0])"> - <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, - deletAll - }; - }, -}); -</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 deleted file mode 100644 index d746a59..0000000 --- a/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue +++ /dev/null @@ -1,277 +0,0 @@ -<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 == '新建应急物资保养') { - delete ruleForm.value.suppliesName - delete ruleForm.value.userName - delete ruleForm.value.id - maintenanceEmergencyMaterialsApi() - .addMaintenanceEmergencyMaterials(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - emit('myAdd', true); - isShowDialog.value = false; - } else { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'error', - }); - emit('myAdd', true); - } - }); - } else if (titles.value == '修改应急物资保养') { - delete ruleForm.value.suppliesName - delete ruleForm.value.userName - maintenanceEmergencyMaterialsApi() - .editMaintenanceEmergencyMaterials(ruleForm.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: '修改成功', - type: 'success', - }); - emit('myAdd', true); - isShowDialog.value = false; - } 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(); - ruleForm.value.userList=[] - }; - 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 deleted file mode 100644 index 69ec3e8..0000000 --- a/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/index.vue +++ /dev/null @@ -1,395 +0,0 @@ -<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="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" @click="onEdit('修改', deletAll[0])"> - <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/spi.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 suppliesName = ref(''); - // 重置 - const submitReset = () => { - listQuery.searchParams.suppliesId = ''; - suppliesName.value = ''; - 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; - suppliesName.value = 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 { - suppliesName, - 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, - deletAll - }; - }, -}); -</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 deleted file mode 100644 index c36b1e3..0000000 --- a/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue +++ /dev/null @@ -1,226 +0,0 @@ -<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> - <template #default="scope"> - <div v-if="scope.row.type==1">综合应急预案</div> - <div v-if="scope.row.type==2">现场处置方案</div> - <div v-if="scope.row.type==3">专项应急预案</div> - <div v-if="scope.row.type==4">其他预案</div> - </template> - </el-table-column> - <el-table-column prop="authorName" 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 deleted file mode 100644 index aed57e8..0000000 --- a/src/views/contingencyManagement/panManagement/component/approval.vue +++ /dev/null @@ -1,239 +0,0 @@ -<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="请填写队伍名称" 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="title"> - <el-input v-model="ruleForm.title" 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="approvePersonId"> - <el-input v-model="ruleForm.approvePersonName" placeholder="请选择" class="input-with-select" disabled> - <template #append> - <el-button :icon="Search" @click="openUser" :disabled="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="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="complete" @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="twoWorkName"> - <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="twoTitle"> - <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="twoApprovePersonName"> - <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, approveId: number, type: boolean, id: number) => { - isShowDialog.value = true; - titles.value = title; - disabled.value = type; - - uid.value = approveId; - if (title == '查看审批' || title == '审批') { - emergencyPlanApi() - .approvalProcessEmergencyPlan(approveId) - .then((res) => { - if (res.data.code == 200) { - ruleForm.value = res.data.data; - ruleForm.value.relateId = id; - } - }); - } - }; - const submitForm = async () => { - console.log(ruleForm.value); - - ruleForm.value.workName = ruleForm.value.twoWorkName; - ruleForm.value.title = ruleForm.value.twoTitle; - ruleForm.value.approvePersonId = ruleForm.value.twoApprovePersonId; - ruleForm.value.approvePersonName = ruleForm.value.twoApprovePersonName; - ruleForm.value.relateType = 1; - isShowDialog.value = false; - if(ruleForm.value.complete == false) { - ruleForm.value.approveStatus=3 - } - delete ruleForm.value.gmtCreate - delete ruleForm.value.complete - delete ruleForm.value.submitPersonName - - delete ruleForm.value.twoApprovePersonId - delete ruleForm.value.twoApprovePersonName - delete ruleForm.value.twoTitle - delete ruleForm.value.twoWorkName - 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 deleted file mode 100644 index 209c51a..0000000 --- a/src/views/contingencyManagement/panManagement/component/approvalProcess.vue +++ /dev/null @@ -1,196 +0,0 @@ -<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> - </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 uid = ref(); - const openDialog = async (id: number) => { - isShowDialog.value = true; - listQuery.searchParams.relateId=id - uid.value = id; - 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 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, - total, - emit, - 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; -} -//分页 -.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 deleted file mode 100644 index eb2afa2..0000000 --- a/src/views/contingencyManagement/panManagement/component/initiateApproval.vue +++ /dev/null @@ -1,159 +0,0 @@ -<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 deleted file mode 100644 index 4114bb7..0000000 --- a/src/views/contingencyManagement/panManagement/component/openAdd.vue +++ /dev/null @@ -1,471 +0,0 @@ -<template> - <div class="system-edit-user-container"> - <el-dialog - :title="titles" - v-model="isShowDialog" - width="50%" - draggable - :fullscreen="full" - :close-on-click-modal="false" - @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="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="responsibleDepartment" - :data="newTreeList" - class="w100" - clearable - :props="propse" - multiple - :render-after-expand="false" - check-strictly - check-on-click-node - placeholder="请选择" - @change="changeDepartment" - /> - <el-divider /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="预案类型" prop="type"> - <el-select v-model="ruleForm.type" class="w100" placeholder="请选择"> - <el-option label="综合应急预案" value="1"></el-option> - <el-option label="现场处置方案" value="2"></el-option> - <el-option label="专项应急预案" value="3"></el-option> - <el-option label="其他预案" value="4"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="危险源关联" prop="associatedDanger"> - <el-select v-model="ruleForm.associatedDanger" class="w100" placeholder="请选择"> - <el-option label="是" :value="false"></el-option> - <el-option label="否" :value="true"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="预案级别" prop="level"> - <el-select v-model="ruleForm.level" class="w100" placeholder="请选择"> - <el-option label="公司级" value="1"></el-option> - <el-option label="分厂级" value="2"></el-option> - <el-option label="车间级" value="3"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="编写人" prop="authorId"> - <el-input v-model="ruleForm.authorName" placeholder="请选择" class="input-with-select"> - <template #append> - <el-button :icon="Search" @click="openUser" /> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> - <el-form-item label="编写部门" prop="authorDeptId"> - <el-tree-select - v-model="ruleForm.authorDeptId" - :data="newTreeList" - 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.teamName" 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="相关附件"> - <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled" - @successUploader="successUploader"></uploaderFile> - </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'; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - name: 'openAdd', - components: { - CheckTemplate, - DailogSearchUserManger, - RegionsDialog, - uploaderFile - }, - setup(prop, { emit }) { - const isShowDialog = ref(false); - const ruleFormRef = ref<FormInstance>(); - const ruleForm = ref({ - name: '', // 预案名称 - type: '', //预案类型 - associatedDanger: '', // 危险源关联 - level: '', // 预案级别 - authorUid: '', // 编写人 - authorName: '', - authorDeptId: '', // 编写部门 - releaseDate: '', // 发布实施日期 - fileList: [], - areaList: [], //区域列表 - teamList: [], - // teamId: '', //应急队伍 - deptList: [], - }); - 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; - ruleForm.value.teamName = '' - responsibleDepartment.value = [] - if(res.data.data.teamList){ - for(var a = 0;a<res.data.data.teamList.length;a++){ - ruleForm.value.teamName+=res.data.data.teamList[a].teamName+';' - } - } - if(res.data.data.deptList){ - for(var a = 0;a<res.data.data.deptList.length;a++){ - - responsibleDepartment.value.push(res.data.data.deptList[a].departmentId) - } - } - fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - initFileListData() - } - }); - } - }; - const initFileListData = async () => { - for(var a = 0;a<fileList.value.length;a++){ - fileList.value[a].name = fileList.value[a].fileName - } - } - // 上传成功组装数据 - const successUploader = (list) =>{ - fileList.value = list - const formFileList = [] - for(var a = 0;a<fileList.value.length;a++){ - formFileList.push( - { - fileName:fileList.value[a].fileName, - fileUrl:'' - } - ) - } - ruleForm.value.fileList = formFileList - } - //日期选择器 - const releaseDate = ref(''); - // 上传附件 - const fileList = ref([]); - //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 changeDepartment = (e) => { - var temList = []; - for (var a = 0; a < e.length; a++) { - temList.push({ - departmentId: e[a], - }); - } - ruleForm.value.deptList = temList; - console.log(ruleForm); - }; - //定义树形下拉框 - const responsibleDepartment = ref([]); - const data = ref(); - - const submitForm = async (title: string, formEl: FormInstance | undefined) => { - if(!ruleForm.value.fileList){ - ruleForm.value.fileList = [] - } - if (title == '新建应急预案管理') { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - isShowDialog.value = false; - delete ruleForm.value.teamName - 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; - delete ruleForm.value.teamName - 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: [], - // teamId: '', //应急队伍ID - areaList: [], //区域列表 - teamList: [], - deptList: [], - }; - } - }; - const resetForm = (formEl: FormInstance | undefined) => { - isShowDialog.value = false; - if (!formEl) return; - formEl.resetFields(); - ruleForm.value = {}; - fileList.value = [] - }; - // 应急队伍弹窗 - const Shows = ref(); - const daiInpt = (data: any) => { - Shows.value.openDailog(data); - }; - const SearchUser = (val: any) => { - let arr = []; - ruleForm.value.teamList = []; - for (let i = 0; i < val.length; i++) { - arr.push(val[i].teamName); - ruleForm.value.teamList.push({ - teamId: val[i].id, - }); - } - ruleForm.value.teamName = 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, - newTreeList, - changeDepartment, - successUploader, - initFileListData - }; - }, -}); -</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 deleted file mode 100644 index 49f5500..0000000 --- a/src/views/contingencyManagement/panManagement/component/startUp.vue +++ /dev/null @@ -1,160 +0,0 @@ -<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 deleted file mode 100644 index cc3e2d0..0000000 --- a/src/views/contingencyManagement/panManagement/component/upData.vue +++ /dev/null @@ -1,125 +0,0 @@ -<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 deleted file mode 100644 index eed76c4..0000000 --- a/src/views/contingencyManagement/panManagement/index.vue +++ /dev/null @@ -1,614 +0,0 @@ -<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="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" 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" @click="onEdit('修改', deleteAll[0])"> - <el-icon> <Edit /> </el-icon>修改 - </el-button> - <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll"> - <el-icon> <Delete /> </el-icon>删除 - </el-button> - <el-button size="default" type="primary" @click="onabolishLibrary"> 废止库 </el-button> - </div> - <div class="button_Right"> - <!-- <el-button size="default" @click="upButton">--> - <!-- <el-icon>--> - <!-- <Upload />--> - <!-- </el-icon>--> - <!-- </el-button>--> - <!-- <el-button size="default">--> - <!-- <el-icon>--> - <!-- <Download />--> - <!-- </el-icon>--> - <!-- </el-button>--> - <!-- <el-button size="default">--> - <!-- <el-icon>--> - <!-- <Refresh />--> - <!-- </el-icon>--> - <!-- </el-button>--> - </div> - </div> - <el-table :data="tableData" style="width: 100%" ref="multipleTableRef" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" /> - <el-table-column prop="name" label="预案名称" show-overflow-tooltip sortable></el-table-column> - <el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.type == 1">综合应急预案</span> - <span v-if="scope.row.type == 2">现场处置方案</span> - <span v-if="scope.row.type == 3">专项应急预案</span> - <span v-if="scope.row.type == 4">其他预案</span> - </template> - </el-table-column> - <el-table-column prop="level" label="预案级别" show-overflow-tooltip sortable> - <template #default="scope"> - <span v-if="scope.row.level == 1">综合应急预案</span> - <span v-if="scope.row.level == 2">现场处置方案</span> - <span v-if="scope.row.level == 3">专项应急预案</span> - </template> - </el-table-column> - <el-table-column prop="releaseDate" label="发布实施日期" show-overflow-tooltip sortable></el-table-column> - <el-table-column label="操作" width="260" align="center" fixed="right"> - <template #default="scope"> - <el-button size="small" text type="primary" @click="isDialogFormVisible(scope.row.id)"> - <el-icon style="margin-right: 5px"> <VideoPlay /> </el-icon>启动 - </el-button> - <el-button size="small" text type="primary" @click="abolish(scope.row.id)"> - <el-icon style="margin-right: 5px"> <VideoPause /> </el-icon>废止 - </el-button> - <el-button size="small" text type="primary" @click="onEdit('修改', scope.row.id)"> - <el-icon style="margin-right: 5px"> <EditPen /> </el-icon>修改 - </el-button> - <el-button - size="small" - text - type="primary" - v-if="scope.row.approveStatus === 0 || scope.row.approveStatus === null" - @click="initiateApproval(scope.row.id)" - > - 发起审批 - </el-button> - <el-button - size="small" - text - type="primary" - v-if="scope.row.approveStatus === 2 && scope.row.checkApprove === true" - @click="onApproval('修改', scope.row.approveId, scope.row.id)" - > - 审批 - </el-button> - <el-button - size="small" - text - type="primary" - v-if="scope.row.approveStatus === 2 && scope.row.checkApprove === false" - @click="onApproval('详情', scope.row.approveId, 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; - onSubmit(); - }; - // 分页未改变 - const onHandleCurrentChange = (val: number) => { - listQuery.pageIndex = val; - onSubmit(); - }; - - // 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, id) => { - if (val == '详情') { - approvalRef.value.openDialog('查看审批', row, true); - } else { - approvalRef.value.openDialog('审批', row, false, id); - } - }; - // 审批流程 - const processRef = ref(); - const onApprovalProcess = (row: object, id) => { - processRef.value.openDialog(row, id); - }; - - //全屏 - 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 deleted file mode 100644 index ef75063..0000000 --- a/src/views/contingencyManagement/processForm/component/formInformationTop.vue +++ /dev/null @@ -1,144 +0,0 @@ -<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 deleted file mode 100644 index 53eed6a..0000000 --- a/src/views/contingencyManagement/processForm/component/formInformationTops.vue +++ /dev/null @@ -1,312 +0,0 @@ -<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 deleted file mode 100644 index cbb82fb..0000000 --- a/src/views/contingencyManagement/processForm/component/lowerPlate.vue +++ /dev/null @@ -1,120 +0,0 @@ -<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 deleted file mode 100644 index 98218a0..0000000 --- a/src/views/contingencyManagement/processForm/processForm.vue +++ /dev/null @@ -1,137 +0,0 @@ -<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 deleted file mode 100644 index ef75063..0000000 --- a/src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTop.vue +++ /dev/null @@ -1,144 +0,0 @@ -<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 deleted file mode 100644 index 8a1f2a5..0000000 --- a/src/views/contingencyManagement/releaseOfDrillStart/component/formInformationTops.vue +++ /dev/null @@ -1,440 +0,0 @@ -<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 deleted file mode 100644 index cbb82fb..0000000 --- a/src/views/contingencyManagement/releaseOfDrillStart/component/lowerPlate.vue +++ /dev/null @@ -1,120 +0,0 @@ -<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 deleted file mode 100644 index 98218a0..0000000 --- a/src/views/contingencyManagement/releaseOfDrillStart/releaseOfDrillStart.vue +++ /dev/null @@ -1,137 +0,0 @@ -<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/dpIndex/index.vue b/src/views/doublePrevent/dpIndex/index.vue deleted file mode 100644 index 2f864e4..0000000 --- a/src/views/doublePrevent/dpIndex/index.vue +++ /dev/null @@ -1,596 +0,0 @@ -<template> - <div class="home-container"> - <el-scrollbar height="100%"> - <div class="main-cont"> - <div class="table-item"> - <div class="item-head"> - <span>告警风险事件概括</span> - <div @click="toRiskEve">查看更多>></div> - </div> - <el-table :data="eventData" style="width: 100%;height: 90%" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column prop="riskEventName" label="风险事件名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskUnitName" label="风险分析单元名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - </el-table> - </div> - <div class="table-item table-item2"> - <div class="item-head"> - <span>隐患状态详情</span> - <div @click="toRiskStatus">查看更多>></div> - </div> - <el-table :data="riskStatusData" style="width: 100%;height: 90%" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column type="index" label="序号" width="60" /> -<!-- <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip width="170px"></el-table-column>--> - <el-table-column prop="dangerCode" label="隐患名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="dangerLevel" label="隐患等级" show-overflow-tooltip> - <template #default="scope"> - <div :style="{color: scope.row.dangerLevel==1?'#409eff':'#ff0000'}"> - {{scope.row.dangerLevel==1?'一般隐患':'重大隐患'}} - </div> - </template> - </el-table-column> - <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="dangerStatus" label="隐患状态" show-overflow-tooltip> - <template #default="scope"> - <div :style="{color: scope.row.dangerStatus==0 || scope.row.dangerStatus==1 ?'#67C23A':(scope.row.dangerStatus==2 || scope.row.dangerStatus==3?'#F56C6C':'#409EFF')}"> - {{scope.row.dangerStatus==0?'整改中':(scope.row.dangerStatus==1?'待验收':(scope.row.dangerStatus==2?'延期整改':(scope.row.dangerStatus==3?'超期未整改':'已验收')))}} - </div> - </template> - </el-table-column> - </el-table> - </div> - <div class="table-item"> - <div class="item-head"> - <span>隐患整改情况</span> - </div> - <div class="riskFix" :id="riskFixId"></div> - </div> - <div class="table-item"> - <div class="item-head"> - <span>风险装置列表</span> - <div @click="toRevice">查看更多>></div> - </div> - <el-table class="deviceTable" :data="deviceData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column prop="produceDeviceName" label="装置名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskLevel" label="风险等级" show-overflow-tooltip> - <template #default="scope"> - <div :style="{color: scope.row.riskLevel==1?'#409EFF':(scope.row.riskLevel==2?'#67C23A':(scope.row.riskLevel==3?'#E6A23C':'#F56C6C'))}"> - {{scope.row.riskLevel==1?'低风险':(scope.row.riskLevel==2?'一般风险':(scope.row.riskLevel==3?'较大风险':'重大风险'))}} - </div> - </template> - </el-table-column> - </el-table> - <div class="deviceLevel"> - <div class="levelItem red"> - <span>0</span> - <div>重大风险</div> - </div> - <div class="levelItem orange"> - <span>2</span> - <div>较大风险</div> - </div> - <div class="levelItem green"> - <span>8</span> - <div>一般风险</div> - </div> - <div class="levelItem blue"> - <span>10</span> - <div>低风险</div> - </div> - </div> - </div> - <div class="table-item"> - <div class="item-head"> - <span>隐患等级分布</span> - </div> - <div class="riskLevel" :id="riskLevelId"></div> - </div> - </div> - </el-scrollbar> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, ref, onMounted } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; - import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; - import { useRouter } from 'vue-router'; - import {hiddenReportApi} from "/@/api/doublePreventSystem/report"; - import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; - import * as echarts from 'echarts/core'; - import {TooltipComponent, TooltipComponentOption, LegendComponent, LegendComponentOption} from 'echarts/components'; - import {PieChart, PieSeriesOption} from 'echarts/charts'; - import {LabelLayout} from 'echarts/features'; - import {CanvasRenderer} from 'echarts/renderers'; - echarts.use([TooltipComponent, LegendComponent, PieChart, CanvasRenderer, LabelLayout]); - // 定义接口来定义对象的类型 - interface stateType { - eventData: Array<any>; - riskStatusData: Array<any>; - deviceData: Array<any>; - pageIndex: number; - pageSize: number; - totalSize: number; - departmentList: []; - classGroupList: Array<classGroup>; - inspectPointAllList: []; - } - interface type { - id: number; - name: string; - } - interface classGroup { - id: number; - groupName: string; - } - export default { - name: 'workingHours', - components: {}, - setup() { - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 5, - totalSize: 0, - eventData: [], - riskStatusData: [], - deviceData: [], - departmentList: [], - classGroupList: [], - inspectPointAllList: [] - }); - const riskFixId = ref("eChartFix" + Date.now() + Math.random()) - const riskLevelId = ref("eChartLe" + Date.now() + Math.random()) - - // 页面载入时执行方法 - onMounted(() => { - getEventRecord(); - getRiskStatusRecord(); - getDeviceRecord(); - initRiskFix(); - initRiskLevel() - }); - - // 告警列表 - const getEventRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; - let res = await safetyRiskEventApi().getSafetyRiskEventList(data) - if (res.data.code === '200'){ - state.eventData = res.data.data - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 隐患状态列表 - const getRiskStatusRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; - let res = await hiddenReportApi().getHiddenReportList(data) - if (res.data.code === '200'){ - state.riskStatusData = res.data.data - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 隐患状态列表 - const getDeviceRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; - let res = await productionDeviceApi().getProductionDeviceList(data) - if (res.data.code === '200'){ - state.deviceData = res.data.data - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 隐患整改情况 - const initRiskFix =()=>{ - const dom = document.getElementById(riskFixId.value); - let myChart = echarts.init(dom, null, { - renderer: 'canvas', - useDirtyRect: false - }); - let app = {}; - - let option; - - option = { - tooltip: { - trigger: 'item' - }, - legend: { - bottom: '5%', - left: 'center' - }, - series: [ - { - type: 'pie', - radius: ['35%', '60%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: 6, - borderColor: '#fff', - borderWidth: 2 - }, - label: { - alignTo: 'labelLine', - formatter: '{name|{b}}\n{value|{c}}', - minMargin: 5, - edgeDistance: 5, - lineHeight: 15, - rich: { - name: { - fontSize: 14, - color: '#666' - } - } - }, - labelLine: { - length: 15, - maxSurfaceAngle: 80 - }, - emphasis: { - label: { - show: true, - fontSize: '40', - fontWeight: 'bold' - } - }, - data: [ - { value: 1048, name: '整改中' }, - { value: 735, name: '待验收' }, - { value: 580, name: '延期整改' }, - { value: 484, name: '超期未整改' }, - { value: 300, name: '已验收' } - ], - center: ['50%','40%'] - } - ] - }; - - if (option && typeof option === 'object') { - myChart.setOption(option); - } - - window.addEventListener('resize', myChart.resize); - } - - // 隐患整改情况 - const initRiskLevel =()=>{ - const dom = document.getElementById(riskLevelId.value); - let myChart = echarts.init(dom, null, { - renderer: 'canvas', - useDirtyRect: false - }); - let app = {}; - - let option; - - option = { - tooltip: { - trigger: 'item', - formatter: '已完成整改:75%' + '\n\r' + '整改中:19%' + '\n\r' + '暂未整改:6%' - }, - legend: { - bottom: '5%', - left: 'center' - }, - series: [ - { - type: 'pie', - radius: ['35%', '60%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: 6, - borderColor: '#fff', - borderWidth: 2 - }, - label: { - alignTo: 'labelLine', - formatter: '{name|{b}}\n{value|{c}}', - minMargin: 5, - edgeDistance: 5, - lineHeight: 15, - rich: { - name: { - fontSize: 14, - color: '#666' - } - } - }, - labelLine: { - length: 15, - maxSurfaceAngle: 80 - }, - emphasis: { - label: { - show: true, - fontSize: '40', - fontWeight: 'bold' - } - }, - data: [ - { value: 1048, name: '一般隐患' }, - { value: 235, name: '重大隐患' } - ], - center: ['50%','40%'] - } - ] - }; - - if (option && typeof option === 'object') { - myChart.setOption(option); - } - - window.addEventListener('resize', myChart.resize); - setTimeout(()=>{ - myChart.resize - },500) - } - - const toRiskEve = ()=>{ - router.push({ - path: 'event', - }); - } - - const toRiskStatus = ()=>{ - router.push({ - path: 'hiddenReport', - }); - } - - const toRevice = ()=>{ - router.push({ - path: 'device', - }); - } - - return { - View, - Edit, - Delete, - Refresh, - Plus, - router, - riskFixId, - riskLevelId, - toRiskEve, - toRiskStatus, - toRevice, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - - @media screen and (min-width: 1366px) { - .main-cont { - width: 100%; - height: 100%; - display: grid; - margin-bottom: 40px; - box-sizing: border-box; - grid-gap: 20px; - grid-template-columns: repeat(3, 1fr); - grid-template-rows: repeat(2, 1fr); - grid-auto-flow: row; - justify-content: center; - } - .item-head{ - height: 25px; - line-height: 25px; - span{ - font-size: 20px; - } - div{ - font-size: 16px; - } - } - - .levelItem{ - font-size: 16px; - - span{ - margin-bottom: 10px; - font-size: 24px; - font-weight: bolder; - } - } - } - - @media screen and (min-width: 1024px) and (max-width: 1366px){ - .main-cont { - width: 100%; - height: 100%; - display: grid; - margin-bottom: 40px; - box-sizing: border-box; - grid-gap: 15px; - grid-template-columns: repeat(3, 1fr); - grid-template-rows: repeat(2, 1fr); - grid-auto-flow: row; - justify-content: center; - } - .item-head{ - height: 20px; - line-height: 20px; - span{ - font-size: 16px; - } - div{ - font-size: 14px; - } - } - .levelItem{ - font-size: 14px; - - span{ - margin-bottom: 10px; - font-size: 20px; - font-weight: bolder; - } - } - } - - @media screen and (max-width: 1024px) { - .main-cont { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - margin-bottom: 40px; - box-sizing: border-box; - justify-content: center; - } - .item-head{ - height: 20px; - line-height: 20px; - span{ - font-size: 16px; - } - div{ - font-size: 14px; - } - } - .levelItem{ - font-size: 12px; - - span{ - margin-bottom: 10px; - font-size: 16px; - font-weight: bolder; - } - } - } - .home-container { - height: 100%; - box-sizing: border-box; - overflow: hidden; - - .main-cont { - - .table-item{ - border-radius: 8px; - background: #fff; - padding: 15px; - display: flex; - flex-direction: column; - justify-content: space-between; - box-sizing: border-box; - - .item-head{ - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - border-left: 4px solid #409eff; - padding-left: 10px; - span{ - color: #333; - font-weight: bolder; - } - div{ - cursor: pointer; - - &:hover{ - color: #409eff; - } - } - } - .riskFix{ - height: 300px; - } - .riskLevel{ - height: 300px - } - .deviceTable{ - height: 200px; - } - .deviceLevel{ - width: 100%; - height: 100px; - display: grid; - grid-gap: 10px; - grid-template-columns: repeat(4, 1fr); - align-items: center; - justify-content: space-between; - - .levelItem{ - display: flex; - height: 100%; - flex-direction: column; - justify-content: flex-start; - align-items: center; - padding: 15px; - box-sizing: border-box; - border-radius: 8px; - color: #fff; - - span{ - margin-bottom: 10px; - font-weight: bolder; - } - } - .red{ - background: #F56C6C; - } - .orange{ - background: #E6A23C; - } - .green{ - background: #67C23A; - } - .blue{ - background: #409EFF; - } - } - } - .table-item2{ - grid-column-start: 2; - grid-column-end: 4; - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - } - } - .el-input { - width: 100% !important; - } - .el-date-editor::v-deep { - width: 100%; - } - .el-select { - width: 100%; - } -</style> \ No newline at end of file diff --git a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/components/recordDialog.vue b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/components/recordDialog.vue deleted file mode 100644 index e22be03..0000000 --- a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/components/recordDialog.vue +++ /dev/null @@ -1,186 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowRecordDialog" append-to-body :close-on-click-modal="false" width="600px"> - <div class="record-form"> - <el-form :model="recordForm" ref="recordFormRef" size="default" label-width="100px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="检查内容" prop="checkContent"> - <el-input class="input-length" :disabled="true" type="textarea" :rows="3" v-model.trim="recordForm.checkContent" placeholder="检查内容"> </el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - </div> - </el-dialog> - <el-dialog :title="title" v-model="isShowSubmitDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="submitForm" ref="rectifyFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="处理结果" prop="checkResult"> - <el-select class="input-add" v-model="checkResults.checkResult" placeholder="请输入处理结果"> - <el-option v-for="item in resultList" :label="item.name" :key="item.id" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowSubmitDialog = !isShowSubmitDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitRecord" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { getUserByDepartment } from '/@/assets/methods'; - -interface stateType { - isShowRecordDialog: Boolean; - isShowSubmitDialog: Boolean; - recordForm: { - taskCode: string | null; - checkContent: string | null; - checkResult: string | null; - checkTaskId: number | null; - classify1: number | null; - classify2: number | null; - classify3: string | null; - controlMeasureCode: string | null; - controlMeasureId: number | null; - controlType: number | null; - measureDesc: string | null; - }; - title: string; - submitForm: { - execUserId: number | null; - id: number | null; - checkResults: Array<checkResults>; - }; - checkResults: { - id: number | null; - controlMeasureId: number | null; - checkResult: number | null; - }; - resultList: Array<result>; -} -interface result { - id: number; - name: string; -} -interface checkResults { - id: number | null; - controlMeasureId: number | null; - checkResult: number | null; -} -import { reactive, toRefs, ref } from 'vue'; -import { recordApi } from '/@/api/doublePreventSystem/record'; -import { ElMessage } from 'element-plus'; -export default { - name: 'recordDialog', - setup(props: any, context: any) { - const recordFormRef = ref(); - const state = reactive<stateType>({ - title: '查看', - isShowSubmitDialog: false, - isShowRecordDialog: false, - recordForm: { - taskCode: null, - checkContent: null, - checkResult: null, - checkTaskId: null, - classify1: null, - classify2: null, - classify3: null, - controlMeasureCode: null, - controlMeasureId: null, - controlType: null, - measureDesc: null - }, - submitForm: { - id: null, - execUserId: null, - checkResults: [] - }, - checkResults: { - id: null, - controlMeasureId: null, - checkResult: null - }, - resultList: [ - { id: 1, name: '正常' }, - { id: 2, name: '不正常' } - ] - }); - - //打开模态框 - const openRecordDialog = async (type: string, value: object) => { - if (type === '查看') { - state.title = '查看'; - state.isShowRecordDialog = true; - let recordFormValue = JSON.parse(JSON.stringify(value)); - state.recordForm.taskCode = recordFormValue.taskCode; - state.recordForm.checkContent = recordFormValue.checkContent; - } else { - state.title = '提交'; - state.isShowSubmitDialog = true; - state.submitForm.id = JSON.parse(JSON.stringify(value)).checkTaskId; - state.checkResults.id = JSON.parse(JSON.stringify(value)).id; - state.checkResults.controlMeasureId = JSON.parse(JSON.stringify(value)).controlMeasureId; - } - }; - - //新增修改提交 - const submitRecord = async () => { - if (state.checkResults.checkResult !== null) { - if (state.title === '提交') { - state.submitForm.checkResults.push(state.checkResults); - let res = await recordApi().submitRecord(state.submitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '排查记录新增成功', - duration: 2000 - }); - state.isShowRecordDialog = false; - context.emit('refreshRecord'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }; - - return { - ...toRefs(state), - recordFormRef, - submitRecord, - openRecordDialog - }; - } -}; -</script> - -<style scoped> -::v-deep.el-divider--horizontal { - margin-top: 0px !important; -} - -::v-deep.el-dialog__body { - padding-top: 10px !important; -} -.filter-container { - padding: 10px 0px; -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/index.vue b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/index.vue deleted file mode 100644 index f15e2ad..0000000 --- a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkTask/index.vue +++ /dev/null @@ -1,316 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>排查结果:</span> - <el-select class="input-box" v-model="recordData.params.result" placeholder="排查结果" filterable clearable> - <el-option v-for="item in resultList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>排查任务状态:</span> - <el-select class="input-box" v-model="recordData.params.taskStatus" placeholder="排查任务状态" filterable clearable> - <el-option v-for="item in taskStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>任务类型:</span> - <el-select class="input-box" v-model="recordData.params.taskType" placeholder="任务类型" filterable clearable> - <el-option v-for="item in taskTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table :data="recordData.data" style="width: 100%"> - <el-table-column type="expand"> - <template #default="scope"> - <el-table :data="scope.row.checkContent" style="width: 100%"> - <el-table-column label="序号" type="index" width="150" align="center"> </el-table-column> - <el-table-column label="检查内容" prop="checkContent" align="center"> </el-table-column> - <el-table-column label="检查结果" prop="checkResult" align="center"> - <template #default="scope"> - <el-tag :type="scope.row.checkResult === 1 ? 'success' : scope.row.checkResult === 2 ? 'danger' : 'info'"> - {{ parseNumber(scope.row.checkResult, '检查结果') }} - </el-tag> - </template> - </el-table-column> - <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Check" @click="onOpenDialogRef('整改', scope.row)">提交</el-button> - </template> - </el-table-column> - </el-table> - </template> - </el-table-column> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="taskCode" label="排查名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="execDepId" label="执行部门" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.execDepId, '执行部门') }} - </template> - </el-table-column> - <el-table-column prop="taskStatus" label="状态" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.taskStatus, '状态') }} - </template> - </el-table-column> - <el-table-column prop="taskBelong" label="是否认领" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.taskBelong, '认领状态') }} - </template> - </el-table-column> - <el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button size="small" text type="primary" v-show="(scope.row.taskStatus === 1 || scope.row.taskStatus === 4) && scope.row.taskBelong === 1" :icon="Check" @click="onHandleTask(scope.row)">任务认领</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="recordData.params.pageIndex" background v-model:page-size="recordData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="recordData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <recordDialog ref="recordDialogRef" @refreshrecord="initRecordTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import recordDialog from './components/recordDialog.vue'; -import { recordApi } from '/@/api/doublePreventSystem/record/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit'; -import { View, Check } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - recordData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - result: number | null; - taskStatus: number | null; - taskType: number | null; - }; - }; - taskUnitList: []; - departmentList: Array<DepartmentState>; - departmentRecursionList: Array<DepartmentState>; - resultList: Array<levelListState>; - checkResultList: Array<levelListState>; - taskStatusList: Array<levelListState>; - taskTypeList: Array<levelListState>; -} -interface levelListState { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; -} - -export default defineComponent({ - name: 'record', - components: { recordDialog, View, Check }, - setup() { - const recordDialogRef = ref(); - const state = reactive<TableDataState>({ - recordData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - result: null, - taskStatus: null, - taskType: null - } - }, - taskUnitList: [], - departmentList: [], - departmentRecursionList: [], - resultList: [ - { id: 1, name: '正常' }, - { id: 2, name: '存在隐患' }, - { id: 3, name: '未排查' }, - { id: 4, name: '其他' } - ], - checkResultList: [ - { id: 1, name: '正常' }, - { id: 2, name: '异常' }, - { id: 3, name: '未处理' } - ], - taskStatusList: [ - { id: 1, name: '待排查' }, - { id: 2, name: '已完成' }, - { id: 3, name: '超时未排查' }, - { id: 4, name: '排查中' } - ], - taskTypeList: [ - { id: 1, name: '周期任务' }, - { id: 2, name: '日常任务' } - ] - }); - // 初始化表格数据 - const initRecordTableData = async () => { - let res = await recordApi().getRecordList(state.recordData.params); - if (res.data.code === '200') { - state.recordData.data = res.data.data; - state.recordData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const getCheckUnitData = async () => { - let res = await checkUnitApi().getAllCheckUnitList(); - if (res.data.code === '200') { - state.taskUnitList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - recordDialogRef.value.openRecordDialog(type, value); - }; - // 删除角色 - const onHandleTask = (row: any) => { - ElMessageBox.confirm(`此操作将认领该任务:“${row.taskCode}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await recordApi().getTask({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '认领成功' - }); - await initRecordTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initRecordTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.recordData.params.pageSize = val; - initRecordTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.recordData.params.pageIndex = val; - initRecordTableData(); - }; - - const recursion = (value: any) => { - for (let i of value) { - if (i.children.length !== 0) { - state.departmentRecursionList.push(i); - recursion(i.children); - } else { - state.departmentRecursionList.push(i); - } - } - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '状态') { - return state.taskStatusList.find((item) => item.id === value)?.name; - } else if (type === '执行部门') { - return state.departmentRecursionList.find((item) => item.depId === value)?.depName; - } else if (type === '检查结果') { - return state.checkResultList.find((item) => item.id === value)?.name; - } else { - if (value === 1) { - return '未认领'; - } else { - return '已认领'; - } - } - }; - - // 页面加载时 - onMounted(() => { - initRecordTableData(); - getCheckUnitData(); - getDepartmentData(); - }); - - return { - View, - Check, - parseNumber, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onHandleTask, - onHandleCurrentChange, - recordDialog, - recordDialogRef, - initRecordTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/components/workDialog.vue b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/components/workDialog.vue deleted file mode 100644 index 63f6139..0000000 --- a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/components/workDialog.vue +++ /dev/null @@ -1,313 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowWorkDialog" append-to-body :close-on-click-modal="false" width="50%"> - <div class="work-form"> - <el-form :model="workForm" :rules="workFormRules" ref="workFormRef" size="default" label-width="150px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="排查类型" prop="checkWorkType"> - <el-select class="input-add" :disabled="!disabled" v-model="workForm.checkWorkType" placeholder="请输入排查类型" clearable> <el-option v-for="item in checkWorkTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option></el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="排查名称" prop="checkWorkName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="workForm.checkWorkName" placeholder="请输入排查名称" clearable></el-input> - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="排查周期" prop="checkCycle"> - <el-input class="input-add" :disabled="!disabled" type="number" v-model.trim="workForm.checkCycle" placeholder="请输入排查周期" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="时间单位" prop="checkCycleUnit"> - <el-select class="input-add" :disabled="!disabled" v-model="workForm.checkCycleUnit" placeholder="请输入时间单位" clearable> - <el-option v-for="item in timeType" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="有效时间" prop="validTime"> - <el-input class="input-add" :disabled="!disabled" type="number" v-model.trim="workForm.validTime" placeholder="请输入有效时间" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="时间单位" prop="validTimeUnit"> - <el-select class="input-add" :disabled="!disabled" v-model="workForm.validTimeUnit" placeholder="请输入时间单位" clearable> - <el-option v-for="item in timeType" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="提醒时间" prop="noticeTime"> - <el-input class="input-add" :disabled="!disabled" type="number" v-model.trim="workForm.noticeTime" placeholder="请输入提醒时间" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="时间单位" prop="noticeTimeUnit"> - <el-select class="input-add" :disabled="!disabled" v-model="workForm.noticeTimeUnit" placeholder="请输入时间单位" clearable> - <el-option v-for="item in timeType" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="执行部门" prop="execDepId"> - <el-cascader :disabled="!disabled" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="workForm.execDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="任务单元" prop="taskUnitId"> - <el-select class="input-add" :disabled="!disabled" v-model="workForm.taskUnitId" placeholder="请输入任务单元" clearable filterable> - <el-option v-for="item in taskUnitList" :key="item.id" :label="item.taskUnitName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="首次任务开始时间" prop="firstStartTime"> - <el-date-picker :disabled="!disabled" class="input-add" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" v-model="workForm.firstStartTime" placeholder="请选择首次任务开始时间" clearable></el-date-picker> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="workForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="workForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="workForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="workForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - </div> - - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowWorkDialog = !isShowWorkDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitWork" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { getUserByDepartment } from '/@/assets/methods'; - -interface stateType { - disabled: Boolean; - isShowWorkDialog: Boolean; - personTime: Boolean; - workForm: { - checkWorkType: number | null; - checkWorkName: string | null; - taskUnitId: number | null; - execDepId: number | null; - checkCycle: number | null; - checkCycleUnit: number | null; - validTime: number | null; - validTimeUnit: number | null; - noticeTime: number | null; - noticeTimeUnit: number | null; - firstStartTime: string | null; - }; - title: string; - activeName: string; - checkWorkTypeList: []; - departmentList: []; - taskUnitList: []; - userList: []; - timeType: Array<timeState>; - workFormRules: {}; -} -interface timeState { - id: number; - name: string; -} -import { reactive, toRefs, ref } from 'vue'; -import { workApi } from '/@/api/doublePreventSystem/work'; -import { ElMessage } from 'element-plus'; -export default { - name: 'workDialog', - setup(props: any, context: any) { - const workFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - activeName: 'inspectionPoint', - checkWorkTypeList: [], - departmentList: [], - taskUnitList: [], - userList: [], - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ], - isShowWorkDialog: false, - workForm: { - checkWorkType: null, - checkWorkName: null, - taskUnitId: null, - execDepId: null, - checkCycle: null, - checkCycleUnit: null, - validTime: null, - validTimeUnit: null, - noticeTime: null, - noticeTimeUnit: null, - firstStartTime: null - }, - workFormRules: { - checkWorkType: [{ required: true, message: '请填写排查作业类型', trigger: 'change' }], - checkWorkName: [{ required: true, message: '请选择排查作业名称', trigger: 'blur' }], - taskUnitId: [{ required: true, message: '请选择任务单元', trigger: 'change' }], - execUserId: [{ required: true, message: '请选择执行人', trigger: 'change' }], - checkCycle: [{ required: true, message: '请填写排查周期', trigger: 'blur' }], - checkCycleUnit: [{ required: true, message: '请选择时间单位', trigger: 'change' }], - validTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }], - validTimeUnit: [{ required: true, message: '请选择时间单位', trigger: 'change' }], - noticeTime: [{ required: true, message: '请填写提醒时间', trigger: 'blur' }], - noticeTimeUnit: [{ required: true, message: '请选择时间单位', trigger: 'change' }], - firstStartTime: [{ required: true, message: '请填写首次排查任务开始时间', trigger: 'blur' }], - depId: [{ required: true, message: '请选择部门', trigger: 'change' }] - } - }); - - //打开模态框 - const openWorkDialog = async (type: string, value: object, department: [], checkWorkTypeList: [], taskUnitList: []) => { - state.isShowWorkDialog = true; - state.departmentList = department; - state.taskUnitList = JSON.parse(JSON.stringify(taskUnitList)); - state.checkWorkTypeList = JSON.parse(JSON.stringify(checkWorkTypeList)); - setTimeout(() => { - workFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增排查任务'; - state.workForm = { - checkWorkType: null, - checkWorkName: null, - taskUnitId: null, - execDepId: null, - checkCycle: null, - checkCycleUnit: null, - validTime: null, - validTimeUnit: null, - noticeTime: null, - noticeTimeUnit: null, - firstStartTime: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看排查任务'; - state.workForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改排查任务'; - state.workForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitWork = async () => { - workFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增排查任务') { - let res = await workApi().addWork(state.workForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '排查任务新增成功', - duration: 2000 - }); - state.isShowWorkDialog = false; - context.emit('refreshWork'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await workApi().modWork(state.workForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '排查任务修改成功', - duration: 2000 - }); - state.isShowWorkDialog = false; - context.emit('refreshWork'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - // const achieveUserList = async () => { - // state.workForm.execUserId = null; - // const user: unknown = await getUserByDepartment(state.workForm.depId); - // state.userList = user as []; - // }; - - return { - ...toRefs(state), - workFormRef, - submitWork, - openWorkDialog - }; - } -}; -</script> - -<style scoped> -::v-deep.el-divider--horizontal { - margin-top: 0px !important; -} - -::v-deep.el-dialog__body { - padding-top: 10px !important; -} -.filter-container { - padding: 10px 0px; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue b/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue deleted file mode 100644 index 7e0ac2a..0000000 --- a/src/views/doublePrevent/riskCheckManage/checkTaskManage/checkWork/index.vue +++ /dev/null @@ -1,361 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>排查作业类型:</span> - <el-select class="input-box" v-model="workData.params.checkWorkType" placeholder="排查作业类型" filterable clearable> - <el-option v-for="item in checkWorkTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>排查作业状态:</span> - <el-select class="input-box" v-model="workData.params.checkWorkStatus" placeholder="排查作业状态" filterable clearable> - <el-option v-for="item in checkWorkStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>排查作业名称:</span> - <el-input class="input-box" v-model="workData.params.checkWorkName" placeholder="排查作业名称" clearable> </el-input> - </div> - - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增排查任务 - </el-button> - </div> - <el-table :data="workData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="checkWorkName" label="排查名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="checkWorkType" label="排查类型" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.checkWorkType, '排查类型') }} - </template> - </el-table-column> - <el-table-column prop="taskUnitName" label="任务单元" show-overflow-tooltip></el-table-column> - <el-table-column prop="execDepId" label="执行部门" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.execDepId, '执行部门') }} - </template> - </el-table-column> - <el-table-column prop="checkCycle" label="排查周期" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ scope.row.checkCycle }} - </span> - <span> - {{ parseNumber(scope.row.checkWorkType, '排查周期') }} - </span> - </template> - </el-table-column> - <el-table-column prop="validTime" label="有效时间" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ scope.row.validTime }} - </span> - <span> - {{ parseNumber(scope.row.validTimeUnit, '排查周期') }} - </span> - </template> - </el-table-column> - <el-table-column prop="validTime" label="提醒时间" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ scope.row.noticeTime }} - </span> - <span> - {{ parseNumber(scope.row.noticeTimeUnit, '排查周期') }} - </span> - </template> - </el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelWork(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="workData.params.pageIndex" background v-model:page-size="workData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="workData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <workDialog ref="workDialogRef" @refreshWork="initWorkTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import workDialog from './components/workDialog.vue'; -import { workApi } from '/@/api/doublePreventSystem/work/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - workData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - checkWorkType: number | null | ''; - checkWorkStatus: number | null | ''; - checkWorkName: string | null; - }; - }; - timeType: Array<levelListState>; - taskUnitList: Array<taskUnit>; - departmentList: Array<DepartmentState>; - departmentRecursionList: Array<DepartmentState>; - checkWorkTypeList: Array<levelListState>; - checkWorkStatusList: Array<levelListState>; -} -interface levelListState { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; - children: Array<DepartmentState>; -} -interface taskUnit { - id: number; - taskUnitName: string; -} - -export default defineComponent({ - name: 'work', - components: { workDialog, Edit, Delete, View }, - setup() { - const workDialogRef = ref(); - const state = reactive<TableDataState>({ - workData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - checkWorkType: null, - checkWorkStatus: null, - checkWorkName: null - } - }, - taskUnitList: [], - departmentList: [], - departmentRecursionList: [], - checkWorkTypeList: [ - { id: 1, name: '日常作业' }, - { id: 2, name: '周期作业' } - ], - checkWorkStatusList: [ - { id: 1, name: '开启' }, - { id: 2, name: '关闭' } - ], - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ] - }); - // 初始化表格数据 - 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; - let res = await workApi().getWorkList(state.workData.params); - if (res.data.code === '200') { - state.workData.data = res.data.data; - state.workData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const getCheckUnitData = async () => { - let res = await checkUnitApi().getAllCheckUnitList(); - if (res.data.code === '200') { - state.taskUnitList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - workDialogRef.value.openWorkDialog(type, value, state.departmentList, state.checkWorkTypeList, state.taskUnitList); - }; - // 删除角色 - const onDelWork = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条生产装置:“${row.produceDeviceName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await workApi().deleteWork({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initWorkTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const recursion = (value: any) => { - for (let i of value) { - if (i.children.length !== 0) { - state.departmentRecursionList.push(i); - recursion(i.children); - } else { - state.departmentRecursionList.push(i); - } - } - }; - - const parseNumber = (value: number, type: string) => { - if (type === '排查类型') { - return state.checkWorkTypeList.find((item) => item.id === value)?.name; - } else if (type === '排查周期') { - return state.timeType.find((item) => item.id == value)?.name; - } else if (type === '执行部门') { - return state.departmentRecursionList.find((item) => item.depId === value)?.depName; - // return state.departmentList.find((item: any) => { - // if (item.children.length !== 0) { - // if (item.depId === value) { - // return item; - // } else { - // return recursion(item.children, value); - // } - // } else { - // if (item.depId === value) { - // return item; - // } - // } - // })?.depName; - } - }; - - // const recursion = (children: any, value: number | string) => { - // return children.find((item: any) => { - // if (item.children.length !== 0) { - // if (item.depId === value) { - // return item; - // } else { - // return recursion(item.children, value); - // } - // } else { - // if (item.depId === value) { - // return item; - // } - // } - // }); - // }; - - const handleSearch = () => { - initWorkTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.workData.params.pageSize = val; - initWorkTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.workData.params.pageIndex = val; - initWorkTableData(); - }; - // 页面加载时 - onMounted(() => { - initWorkTableData(); - getCheckUnitData(); - getDepartmentData(); - }); - - return { - Edit, - Delete, - View, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelWork, - parseNumber, - onHandleCurrentChange, - workDialog, - workDialogRef, - initWorkTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/components/checkDialog.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/components/checkDialog.vue deleted file mode 100644 index e225a9d..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/components/checkDialog.vue +++ /dev/null @@ -1,201 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowCheckDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="checkForm" :rules="checkFormRules" ref="checkFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="验收意见" prop="checkInfo"> - <el-input class="input-add" type="textarea" :rows="2" v-model.trim="checkForm.checkAcceptDesc" placeholder="请输入验收意见" clearable></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowCheckDialog = !isShowCheckDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitCheck" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog :title="title" v-model="isShowCheckInfoDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="checkInfoForm" ref="checkFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="验收意见" prop="rectifyDesc"> - <el-input class="input-add" :disabled="true" type="textarea" :rows="2" v-model.trim="checkInfoForm.rectifyDesc" readonly></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="rectifyType"> - <el-select class="input-add" :disabled="true" v-model="checkInfoForm.rectifyType" readonly> - <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></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="rectifyDepId"> - <el-cascader :disabled="true" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="checkInfoForm.rectifyDepId" readonly> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="整改责任人" prop="liablePersonId"> - <el-select class="input-add" :disabled="true" v-model="checkInfoForm.liablePersonId" clearable filterable readonly> - <el-option v-for="item in userList" :key="item.uid" :label="item.username" :value="item.uid"></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="dangerResult"> - <el-input class="input-add" :disabled="true" type="number" v-model="checkInfoForm.cost" readonly> </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="checkAcceptPerson"> - <el-input class="input-add" :disabled="true" v-model="checkInfoForm.checkAcceptPerson" readonly /> - </el-form-item> - </el-col> - </el-row> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { getUserByDepartment } from '/@/assets/methods'; - -interface stateType { - isShowCheckDialog: Boolean; - isShowCheckInfoDialog: Boolean; - checkForm: { - id: number | null; - dangerManagerId: number | null; - checkAcceptDesc: string | null; - }; - departmentList: []; - userList: []; - rectifyTypeList: Array<rectifyType>; - checkInfoForm: { - rectifyDepId: number | null; - liablePersonId: number | null; - }; - title: string; - checkTypeList: Array<checkTypeState>; - checkFormRules: {}; -} -interface checkTypeState { - regionType: string; - id: number; -} - -interface rectifyType { - id: number; - name: string; -} - -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus'; -import { hiddenCheckApi } from '/@/api/doublePreventSystem/check'; -export default { - name: 'hiddenCheckDialog', - setup(props: any, context: any) { - const checkFormRef = ref(); - const state = reactive<stateType>({ - title: '', - checkTypeList: [], - rectifyTypeList: [ - { id: 1, name: '即查即改' }, - { id: 2, name: '限期整改' } - ], - departmentList: [], - userList: [], - isShowCheckDialog: false, - isShowCheckInfoDialog: false, - checkForm: { - id: null, - dangerManagerId: null, - checkAcceptDesc: null - }, - checkInfoForm: { - rectifyDepId: null, - liablePersonId: null - }, - checkFormRules: { - checkAcceptDesc: [{ required: true, message: '请填写整改说明', trigger: 'blur' }] - } - }); - - //打开模态框 - const openCheckDialog = async (type: string, value: object, departmentList: []) => { - state.departmentList = departmentList; - if (type === '验收') { - state.title = '验收'; - state.isShowCheckDialog = true; - const checkForm = JSON.parse(JSON.stringify(value)); - state.checkForm.id = checkForm.id; - state.checkForm.dangerManagerId = checkForm.dangerManagerId; - } else { - state.title = '查看'; - state.isShowCheckInfoDialog = true; - state.checkInfoForm.rectifyDepId = JSON.parse(JSON.stringify(value)).rectifyDepId; - await achieveUserList(); - state.checkInfoForm = JSON.parse(JSON.stringify(value)); - } - }; - - //提交整改 - const submitCheck = async () => { - checkFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - let res = await hiddenCheckApi().submitHiddenCheck(state.checkForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '整改提交成功', - duration: 2000 - }); - state.isShowCheckDialog = false; - context.emit('refreshCheck'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const achieveUserList = async () => { - state.checkInfoForm.liablePersonId = null; - const user: unknown = await getUserByDepartment(state.checkInfoForm.rectifyDepId); - state.userList = user as []; - }; - - return { - ...toRefs(state), - checkFormRef, - submitCheck, - openCheckDialog - }; - } -}; -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/index.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/index.vue deleted file mode 100644 index 3e4bea4..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenCheck/index.vue +++ /dev/null @@ -1,222 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>整改类型:</span> - <el-select class="input-box" v-model="checkData.params.rectifyType" placeholder="整改类型" filterable> - <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>整改部门:</span> - <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-box" v-model="checkData.params.rectifyDepId"> </el-cascader> - </div> - <div class="basic-line"> - <span>整改状态:</span> - <el-select class="input-box" v-model="checkData.params.dangerStatus" placeholder="整改状态" clearable filterable> - <el-option v-for="item in dangerStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table :data="checkData.data" style="width: 100%" fit highlight-current-row> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip width="170px"></el-table-column> - <el-table-column prop="dangerCode" label="隐患名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="rectifyDesc" label="整改内容说明" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="applyTime" label="整改时间" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="rectifyType" label=" 整改类型" show-overflow-tooltip min-width="150px"> - <template #default="scope"> - {{ parseNumber(scope.row.rectifyType, '整改类型') }} - </template> - </el-table-column> - <el-table-column prop="liablePerson" label="整改责任人" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="cost" label="整改资金" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="dangerStatus" label="验收状态" show-overflow-tooltip min-width="150px" align="center"> - <template #default="scope"> - <el-tag :type="scope.row.dangerStatus === 0 ? 'info' : scope.row.dangerStatus === 1 ? 'primary' : scope.row.dangerStatus === 2 ? 'warning' : scope.row.dangerStatus === 4 ? 'danger' : 'success'"> - {{ parseNumber(scope.row.dangerStatus, '隐患整改状态') }} - </el-tag> - </template> - </el-table-column> - <el-table-column prop="checkAcceptPerson" label="验收人" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column label="操作" width="250" fixed="right" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Check" v-show="scope.row.dangerStatus === 1" @click="onOpenDialogRef('验收', scope.row)">验收</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="checkData.params.pageIndex" background v-model:page-size="checkData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="checkData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <checkDialog ref="checkDialogRef" @refreshCheck="initCheckTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import checkDialog from './components/checkDialog.vue'; -import { Check, Delete, View } from '@element-plus/icons-vue'; -import { departmentApi } from '/@/api/systemManage/department'; -import { hiddenCheckApi } from '/@/api/doublePreventSystem/check'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - checkData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - rectifyType: number | null; - rectifyDepId: number | null; - dangerStatus: number | null; - }; - }; - rectifyTypeList: Array<enumType>; - dangerStatusList: Array<enumType>; - departmentList: []; -} -interface enumType { - id: number; - name: string; -} - -export default defineComponent({ - name: 'check', - components: { checkDialog, Check, Delete, View }, - setup() { - const checkDialogRef = ref(); - const state = reactive<TableDataState>({ - checkData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - rectifyType: null, - rectifyDepId: null, - dangerStatus: 1 - } - }, - departmentList: [], - rectifyTypeList: [ - { id: 1, name: '即查即改' }, - { id: 2, name: '限期整改' } - ], - dangerStatusList: [ - { id: 1, name: '待验收' }, - { id: 9, name: '已验收' } - ] - }); - - // 初始化表格数据 - const initCheckTableData = async () => { - let res = await hiddenCheckApi().getHiddenCheckList(state.checkData.params); - if (res.data.code === '200') { - state.checkData.data = res.data.data; - state.checkData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - checkDialogRef.value.openCheckDialog(type, value, state.departmentList); - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '整改类型') { - return state.rectifyTypeList.find((item) => item.id === value)?.name; - } else if (type === '隐患整改状态') { - return state.dangerStatusList.find((item) => item.id === value)?.name; - } - }; - - const handleSearch = () => { - initCheckTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.checkData.params.pageSize = val; - initCheckTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.checkData.params.pageIndex = val; - initCheckTableData(); - }; - // 页面加载时 - onMounted(() => { - initCheckTableData(); - getDepartmentData(); - }); - - return { - Check, - Delete, - View, - parseNumber, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onHandleCurrentChange, - checkDialog, - checkDialogRef, - initCheckTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/components/rectifyDialog.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/components/rectifyDialog.vue deleted file mode 100644 index 50802ef..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/components/rectifyDialog.vue +++ /dev/null @@ -1,303 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowRectifyDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="rectifyForm" :rules="rectifyFormRules" ref="rectifyFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="整改说明" prop="rectifyInfo"> - <el-input class="input-add" type="textarea" :rows="2" v-model.trim="rectifyForm.rectifyInfo" placeholder="请输入整改说明" clearable></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="applyTime"> - <el-date-picker type="datetime" :disabled-date="disabledDate" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" v-model="rectifyForm.applyTime" placeholder="请选择整改时间" clearable> </el-date-picker> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowRectifyDialog = !isShowRectifyDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitRectify" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog :title="title" v-model="isShowDelayDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="delayForm" :rules="delayFormRules" ref="rectifyFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="延期说明" prop="timeOutDesc"> - <el-input class="input-add" type="textarea" :rows="2" v-model.trim="delayForm.timeOutDesc" placeholder="请输入延期说明" clearable></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="rectifyTime"> - <el-date-picker type="datetime" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" v-model="delayForm.rectifyTime" placeholder="请选择整改期限" clearable> </el-date-picker> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowDelayDialog = !isShowDelayDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitDelay" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog :title="title" v-model="isShowCheckInfoDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="checkInfoForm" ref="checkFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="整改内容说明" prop="rectifyDesc"> - <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="2" v-model.trim="checkInfoForm.rectifyDesc" readonly></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="rectifyType"> - <el-select class="input-add" :disabled="!disabled" v-model="checkInfoForm.rectifyType" readonly> - <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></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="rectifyDepId"> - <el-cascader @change="achieveUserList" :disabled="!disabled" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="checkInfoForm.rectifyDepId" readonly> </el-cascader> - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="整改责任人" prop="liablePersonId"> - <el-select class="input-add" :disabled="!disabled" v-model="checkInfoForm.liablePersonId" clearable filterable readonly> - <el-option v-for="item in userList" :key="item.uid" :label="item.username" :value="item.uid"></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="dangerResult"> - <el-input class="input-add" :disabled="!disabled" type="number" v-model="checkInfoForm.cost" readonly> </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkInfoForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkInfoForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkInfoForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkInfoForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { getUserByDepartment } from '/@/assets/methods'; - -interface stateType { - disabled: Boolean; - personTime: Boolean; - isShowRectifyDialog: Boolean; - isShowDelayDialog: Boolean; - isShowCheckInfoDialog: Boolean; - rectifyForm: { - id: number | null; - dangerManagerId: number | null; - rectifyInfo: string | null; - applyTime: string | null; - }; - delayForm: { - id: number | null; - dangerManagerId: number | null; - rectifyTime: string | null; - timeOutDesc: string | null; - }; - disabledDate: any; - rangeTime: any; - title: string; - departmentList: []; - userList: []; - rectifyTypeList: Array<rectifyTypeState>; - rectifyFormRules: {}; - delayFormRules: {}; - checkInfoForm: { - rectifyDepId: number | null; - liablePersonId: number | null; - }; -} -interface rectifyTypeState { - regionType: string; - id: number; -} - -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus'; -import { hiddenRectifyApi } from '/@/api/doublePreventSystem/rectify'; -export default { - name: 'rectifyDialog', - setup(props: any, context: any) { - const rectifyFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - rectifyTypeList: [], - departmentList: [], - userList: [], - isShowCheckInfoDialog: false, - checkInfoForm: { - rectifyDepId: null, - liablePersonId: null - }, - isShowDelayDialog: false, - isShowRectifyDialog: false, - rectifyForm: { - id: null, - dangerManagerId: null, - rectifyInfo: null, - applyTime: null - }, - disabledDate: (time: any) => { - const r = new Date().getTime(); - return time.getTime() > new Date().getTime(); - }, - rangeTime: () => { - return '15:15:14'; - }, - delayForm: { - id: null, - dangerManagerId: null, - rectifyTime: null, - timeOutDesc: null - }, - rectifyFormRules: { - rectifyInfo: [{ required: true, message: '请填写整改说明', trigger: 'blur' }], - applyTime: [{ required: true, message: '请选择整改时间', trigger: 'change' }] - }, - delayFormRules: { - timeOutDesc: [{ required: true, message: '请填写延期说明', trigger: 'blur' }], - rectifyTime: [{ required: true, message: '请选择整改期限', trigger: 'change' }] - } - }); - - //打开模态框 - const openRectifyDialog = async (type: string, value: object, departmentList: []) => { - state.departmentList = departmentList; - if (type === '延期') { - state.title = '延期'; - state.disabled = true; - state.personTime = false; - state.isShowDelayDialog = true; - const delayForm = JSON.parse(JSON.stringify(value)); - state.delayForm.id = delayForm.id; - state.delayForm.dangerManagerId = delayForm.dangerManagerId; - state.delayForm.timeOutDesc = null; - state.delayForm.rectifyTime = null; - } else if (type === '查看') { - state.title = '查看'; - state.personTime = true; - state.isShowCheckInfoDialog = true; - state.checkInfoForm.rectifyDepId = JSON.parse(JSON.stringify(value)).rectifyDepId; - await achieveUserList(); - state.checkInfoForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '整改'; - state.isShowRectifyDialog = true; - const rectifyForm = JSON.parse(JSON.stringify(value)); - state.rectifyForm.id = rectifyForm.id; - state.rectifyForm.dangerManagerId = rectifyForm.dangerManagerId; - state.rectifyForm.rectifyInfo = null; - state.rectifyForm.applyTime = null; - } - }; - - //提交整改 - const submitRectify = async () => { - rectifyFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - let res = await hiddenRectifyApi().submitHiddenRectify(state.rectifyForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '整改提交成功', - duration: 2000 - }); - state.isShowRectifyDialog = false; - context.emit('refreshRectify'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - //提交延期 - const submitDelay = async () => { - rectifyFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - let res = await hiddenRectifyApi().delayHiddenRectifyTime(state.delayForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患延期成功', - duration: 2000 - }); - state.isShowDelayDialog = false; - context.emit('refreshRectify'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const achieveUserList = async () => { - state.checkInfoForm.liablePersonId = null; - const user: unknown = await getUserByDepartment(state.checkInfoForm.rectifyDepId); - state.userList = user as []; - }; - - return { - ...toRefs(state), - rectifyFormRef, - submitDelay, - achieveUserList, - submitRectify, - openRectifyDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/index.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/index.vue deleted file mode 100644 index 4ebf282..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenRectify/index.vue +++ /dev/null @@ -1,437 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <div style="display: inline-block">整改编号:</div> - - <div style="display: inline-block"> - <el-autocomplete :fetch-suggestions="querySearch" v-model="rectifyData.params.serialCode" v-on:input="checkDate($event)" placeholder="整改编号(前八位日期)"> </el-autocomplete> - <i class="el-icon-date"></i> - </div> - <!-- <div style="display: inline-block">--> - <!-- <el-button>--> - <!-- <el-date-picker value-format="YYYY-MM-DD" :disabled-date="disabledDate" v-model="dateTime" @change="getSerialCodeList" placeholder="选择日期"> </el-date-picker>--> - <!-- </el-button>--> - <!-- </div>--> - </div> - <div class="basic-line"> - <span>整改类型:</span> - <el-select class="input-box" v-model="rectifyData.params.rectifyType" placeholder="整改类型" filterable> - <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>整改部门:</span> - <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-box" v-model="rectifyData.params.rectifyDepId"> </el-cascader> - </div> - <div class="basic-line"> - <span>隐患状态:</span> - <el-select class="input-box" v-model="rectifyData.params.dangerStatus" placeholder="隐患状态" filterable clearable> - <el-option v-for="item in dangerStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>创建时间范围:</span> - <el-date-picker v-model="dateTimeRange" @change="giveTime" value-format="YYYY-MM-DD HH:mm:ss" type="datetimerange" range-separator="To" start-placeholder="开始时间" end-placeholder="结束时间" /> - </div> - <i class="el-icon-date"></i> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table :data="rectifyData.data" style="width: 100%" fit highlight-current-row> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip width="170px"></el-table-column> - <el-table-column prop="dangerCode" label="隐患名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="rectifyDesc" label="整改内容说明" show-overflow-tooltip></el-table-column> - <el-table-column prop="rectifyTime" label="整改期限" min-width="130px" show-overflow-tooltip> - <template #default="scope"> - <span>{{ scope.row.rectifyTime }}</span> - <span v-if="scope.row.dangerStatus === 4" class="overdue-img">逾期</span> - </template> - </el-table-column> - <el-table-column prop="rectifyType" label=" 整改类型" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.rectifyType, '整改类型') }} - </template> - </el-table-column> - <el-table-column prop="liablePerson" label="整改责任人" show-overflow-tooltip></el-table-column> - <el-table-column prop="cost" label="整改资金" show-overflow-tooltip></el-table-column> - <el-table-column prop="dangerStatus" label="隐患整改状态" show-overflow-tooltip align="center"> - <template #default="scope"> - <el-tag :type="scope.row.dangerStatus === 0 ? 'info' : scope.row.dangerStatus === 1 ? 'primary' : scope.row.dangerStatus === 2 ? 'warning' : scope.row.dangerStatus === 4 ? 'danger' : 'success'"> - {{ parseNumber(scope.row.dangerStatus, '隐患整改状态') }} - </el-tag> - </template> - </el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="250" fixed="right" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Check" v-show="scope.row.dangerStatus === 0 || scope.row.dangerStatus === 2" @click="onOpenDialogRef('整改', scope.row)">整改</el-button> - <el-button size="small" text type="primary" :icon="Edit" v-show="scope.row.dangerStatus === 0 || scope.row.dangerStatus === 2" @click="onOpenDialogRef('延期', scope.row)">延期</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelHiddenRectify(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="rectifyData.params.pageIndex" background v-model:page-size="rectifyData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="rectifyData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <rectifyDialog ref="rectifyDialogRef" @refreshRectify="initRectifyTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent, computed } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import rectifyDialog from './components/rectifyDialog.vue'; -import { Edit, Delete, Check, View } from '@element-plus/icons-vue'; -import { hiddenRectifyApi } from '/@/api/doublePreventSystem/rectify'; -import { departmentApi } from '/@/api/systemManage/department'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - rectifyData: { - data: Array<TableData>; - - total: number; - disabled: boolean; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - rectifyType: number | null; - rectifyDepId: number | null; - dangerStatus: number | null; - serialCode: string; - startTime: string; - endTime: string; - }; - }; - rectifyTypeList: Array<enumType>; - dangerStatusList: Array<enumType>; - departmentList: []; - disabledDate: any; - serialCodeList: Array<type>; - dateTime: string; - dateTimeRange: Array<string>; -} -interface enumType { - id: number; - name: string; -} -interface type { - id: number; - value: number; -} - -export default defineComponent({ - name: 'rectify', - components: { rectifyDialog, Edit, Delete, View }, - setup() { - const rectifyDialogRef = ref(); - const state = reactive<TableDataState>({ - rectifyData: { - data: [], - total: 0, - disabled: true, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - rectifyType: null, - rectifyDepId: null, - dangerStatus: null, - serialCode: '', - startTime: '', - endTime: '' - } - }, - dateTime: '', - dateTimeRange: [], - disabledDate: (time: any) => { - return time.getTime() > new Date().getTime(); - }, - departmentList: [], - serialCodeList: [], - rectifyTypeList: [ - { id: 1, name: '即查即改' }, - { id: 2, name: '限期整改' } - ], - dangerStatusList: [ - { id: 0, name: '整改中' }, - { id: 1, name: '待验收' }, - { id: 2, name: '延期整改' }, - { id: 4, name: '超期未整改' }, - { id: 9, name: '已验收' } - ] - }); - - const giveTime = () => { - if (state.dateTimeRange && state.dateTimeRange !== null) { - state.rectifyData.params.startTime = state.dateTimeRange[0]; - state.rectifyData.params.endTime = state.dateTimeRange[1]; - } else { - state.rectifyData.params.startTime = ''; - state.rectifyData.params.endTime = ''; - } - }; - - const querySearch = () => { - return state.serialCodeList.filter((item) => item.value.toString().indexOf(state.rectifyData.params.serialCode) !== -1); - }; - const handleChange = (value: string): Boolean => { - let year = value.substr(0, 4); - let month = value.substr(4, 2); - let day = value.substr(6, 2); - if (Number(year) < 1000 || Number(year) > new Date().getFullYear()) { - return false; - } - if (Number(month) > 12 || month === '00') { - return false; - } - let leapYearTab = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - let notLeapYearTab = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - if (isLeapYear(year)) { - const maxDay = leapYearTab[Number(month) - 1]; - if (Number(day) > maxDay) { - return false; - } - } else { - const maxDay = notLeapYearTab[Number(month) - 1]; - if (Number(day) > maxDay) { - return false; - } - } - return true; - }; - - const isLeapYear = (value: string) => { - return Number(value) % 4 === 0; - }; - - const checkDate = async (value: string) => { - if (value.length >= 8) { - if (handleChange(value.substr(0, 8))) { - let res = await hiddenRectifyApi().getCodeByTime(value.substr(0, 4) + '-' + value.substr(4, 2) + '-' + value.substr(6, 2)); - if (res.data.code === '200' && res.data.data > 0) { - state.serialCodeList = []; - let date = parseInt(value.substr(0, 8) + '0000'); - for (let i = 0; i < res.data.data; i++) { - state.serialCodeList.push({ value: date + 1 + i, id: i }); - } - } else if (res.data.code === '200' && res.data.data === 0) { - ElMessage({ - type: 'warning', - message: '当天无隐患上报' - }); - } - } else { - state.rectifyData.params.serialCode = ''; - ElMessage({ - type: 'warning', - message: '前八位请输入正确得日期格式' - }); - } - } else { - } - // if (state.dateTime === '' || state.dateTime === null) { - // state.serialCodeList = []; - // state.rectifyData.params.serialCode = ''; - // } else { - // state.serialCodeList = []; - // state.rectifyData.params.serialCode = ''; - // let res = await hiddenRectifyApi().getCodeByTime(state.dateTime); - // if (res.data.code === '200' && res.data.data > 0) { - // state.rectifyData.disabled = false; - // let date = parseInt(state.dateTime.replaceAll('-', '') + '0000'); - // for (let i = 0; i < res.data.data; i++) { - // state.serialCodeList.push({ value: date + 1 + i, id: i }); - // } - // state.rectifyData.params.serialCode = state.dateTime.replaceAll('-', ''); - // } else if (res.data.code === '200' && res.data.data === 0) { - // state.rectifyData.disabled = true; - // ElMessage({ - // type: 'warning', - // message: '当天无隐患上报' - // }); - // } - // } - }; - - // 初始化表格数据 - const initRectifyTableData = async () => { - if (state.rectifyData.params.serialCode.toString().length === 0) { - let res = await hiddenRectifyApi().getHiddenRectifyList(state.rectifyData.params); - if (res.data.code === '200') { - state.rectifyData.data = res.data.data; - state.rectifyData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else if (state.rectifyData.params.serialCode.toString().length !== 12) { - ElMessage({ - type: 'warning', - message: '请输入或选择正确的隐患编号' - }); - } else { - state.rectifyData.params.serialCode = state.rectifyData.params.serialCode.toString().substr(0, 8) + '-' + state.rectifyData.params.serialCode.toString().substr(8, 4); - let res = await hiddenRectifyApi().getHiddenRectifyList(state.rectifyData.params); - if (res.data.code === '200') { - state.rectifyData.params.serialCode = state.rectifyData.params.serialCode.replaceAll('-', ''); - state.rectifyData.data = res.data.data; - state.rectifyData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - rectifyDialogRef.value.openRectifyDialog(type, value, state.departmentList); - }; - // 删除 - const onDelHiddenRectify = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该隐患整改,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await hiddenRectifyApi().deleteHiddenRectify({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initRectifyTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '整改类型') { - return state.rectifyTypeList.find((item) => item.id === value)?.name; - } else if (type === '隐患整改状态') { - return state.dangerStatusList.find((item) => item.id === value)?.name; - } - }; - - const handleSearch = () => { - initRectifyTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.rectifyData.params.pageSize = val; - initRectifyTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.rectifyData.params.pageIndex = val; - initRectifyTableData(); - }; - // 页面加载时 - onMounted(() => { - initRectifyTableData(); - getDepartmentData(); - }); - - return { - Edit, - View, - Check, - Delete, - giveTime, - querySearch, - parseNumber, - handleSearch, - checkDate, - onOpenDialogRef, - onHandleSizeChange, - onDelHiddenRectify, - onHandleCurrentChange, - rectifyDialog, - rectifyDialogRef, - initRectifyTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -.overdue-img { - position: absolute; - background-color: #f56c6c; - border-radius: 4px; - color: #fff; - display: inline-block; - font-size: 12px; - height: 21px; - line-height: 18px; - text-align: center; - white-space: nowrap; - border: 1px solid #fff; - transform: scale(0.8); - padding: 1px 3px 0 3px; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -:deep(.el-input-group__prepend) { - padding: 0; -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/components/reportDialog.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/components/reportDialog.vue deleted file mode 100644 index 3cf8972..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/components/reportDialog.vue +++ /dev/null @@ -1,391 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowReportDialog" width="50%" :close-on-click-modal="false"> - <el-form :model="reportForm" :rules="reportFormRules" ref="reportFormRef" size="default" label-width="120px"> - <el-tabs class="active" v-model="activeNameOne"> - <el-tab-pane label="隐患信息" name="hiddenInfo"> - <el-row :gutter="25"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患名称" prop="dangerCode"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="reportForm.dangerCode" placeholder="请输入隐患名称" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患描述" prop="dangerDesc"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="reportForm.dangerDesc" placeholder="请输入隐患情况描述" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患所属部门" prop="depId"> - <el-cascader :disabled="!disabled" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.depId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="生产装置" prop="produceDeviceId"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.produceDeviceId" placeholder="请输入生产装置" clearable filterable @change="changeUnit"> - <el-option v-for="item in allProduceDeviceData" :key="item.id" :label="item.produceDeviceName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="风险分析单元" prop="riskUnitId"> - <el-select class="input-add" :disabled="!disabled" v-model.trim="reportForm.riskUnitId" placeholder="请输入风险分析单元" clearable filterable> - <el-option v-for="item in safetyRiskUnitData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患来源" prop="dangerSource"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerSource" placeholder="请选择隐患来源" clearable filterable> - <el-option v-for="item in dangerSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患等级" prop="dangerLevel"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerLevel" placeholder="请选择隐患等级" clearable filterable> - <el-option v-for="item in dangerLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患类型" prop="dangerType"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerType" placeholder="请选择隐患类型" clearable filterable> - <el-option v-for="item in dangerTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患可能后果" prop="dangerResult"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.dangerResult" placeholder="请选择隐患可能后果" clearable filterable> - <el-option v-for="item in dangerResultList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12"> - <el-form-item label="隐患产生原因" prop="dangerReason"> - <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.dangerReason" placeholder="请输入隐患产生原因"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-tab-pane> - </el-tabs> - - <el-divider></el-divider> - - <el-tabs class="active" v-model="activeNameTwo"> - <el-tab-pane label="整改信息" name="rectifyInfo"> - <el-row> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改类型" prop="rectifyType"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.rectifyType" placeholder="请选择整改类型" clearable filterable> - <el-option v-for="item in rectifyTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改期限" prop="rectifyTime"> - <el-date-picker type="datetime" :disabled="!disabled" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" v-model="reportForm.rectifyTime" placeholder="请选择整改期限" clearable> </el-date-picker> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改部门" prop="rectifyDepId"> - <el-cascader :disabled="!disabled" @change="achieveUserList" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.rectifyDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改责任人" prop="liablePersonId"> - <el-select class="input-add" :disabled="!disabled" v-model="reportForm.liablePersonId" placeholder="请选择整改责任人" clearable filterable> - <el-option v-for="item in userList" :key="item.uid" :label="item.username" :value="item.uid"></el-option> - </el-select> - </el-form-item> - </el-col> - - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改资金" prop="dangerResult"> - <el-input class="input-add" :disabled="!disabled" type="number" @input="onVerifyNumberPercentageFloat($event)" v-model="reportForm.cost" placeholder="请选择整改资金"> </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12"> - <el-form-item label="整改措施" prop="rectifyDesc"> - <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.rectifyDesc" placeholder="请输入整改措施"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-tab-pane> - </el-tabs> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowReportDialog = !isShowReportDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitReport" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowReportDialog: Boolean; - reportForm: { - dangerDesc: string | null; - dangerCode: string | null; - depId: number | null; - produceDeviceId: number | null; - riskUnitId: number | null; - dangerSource: number | null; - dangerLevel: number | null; - dangerType: number | null; - dangerReason: string | null; - dangerResult: number | null; - rectifyType: number | null; - rectifyDepId: number | null; - liablePersonId: number | null; - rectifyTime: string | null; - cost: number | null; - rectifyDesc: string | null; - }; - title: string; - disabled: boolean; - activeNameOne: string; - activeNameTwo: string; - reportFormRules: {}; - departmentList: []; - userList: []; - allProduceDeviceData: []; - allSafetyRiskUnitData: Array<safetyRiskUnit>; - safetyRiskUnitData: Array<safetyRiskUnit>; - dangerLevelList: Array<enumType>; - dangerSourceList: Array<enumType>; - dangerResultList: Array<enumType>; - dangerTypeList: Array<enumType>; - rectifyTypeList: Array<enumType>; -} -interface enumType { - id: number; - name: string; -} -interface safetyRiskUnit { - produceDeviceId: number; -} -interface T {} -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus'; -import { hiddenReportApi } from '/@/api/doublePreventSystem/report'; -import { getUserByDepartment } from '/@/assets/methods'; -import { verifyNumberIntegerAndFloat, verifyNumberPercentageFloat } from '../../../../../../utils/toolsValidate'; -export default { - name: 'reportDialog', - setup(props: any, context: any) { - const reportFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - activeNameOne: 'hiddenInfo', - activeNameTwo: 'rectifyInfo', - isShowReportDialog: false, - departmentList: [], - userList: [], - allProduceDeviceData: [], - allSafetyRiskUnitData: [], - safetyRiskUnitData: [], - dangerLevelList: [ - { id: 1, name: '一般隐患' }, - { id: 2, name: '重大隐患' } - ], - dangerSourceList: [ - { id: 1, name: '日常排查' }, - { id: 2, name: '综合性排查' }, - { id: 3, name: '专业性排查' }, - { id: 4, name: '季节性排查' }, - { id: 5, name: '重点时段及节假日前排查' }, - { id: 6, name: '事故类比排查' }, - { id: 7, name: '复产复工前排查' }, - { id: 8, name: '外聘专家诊断式排查' }, - { id: 9, name: '管控措施失效' }, - { id: 10, name: '其他' } - ], - dangerResultList: [ - { id: 1, name: '无' }, - { id: 2, name: '轻伤' }, - { id: 3, name: '重伤' }, - { id: 4, name: '死亡' } - ], - dangerTypeList: [ - { id: 1, name: '安全' }, - { id: 2, name: '工艺' }, - { id: 3, name: '电气' }, - { id: 4, name: '仪表' }, - { id: 5, name: '消防' }, - { id: 6, name: '总图' }, - { id: 7, name: '设备' }, - { id: 8, name: '其他' } - ], - rectifyTypeList: [ - { id: 1, name: '即查即改' }, - { id: 2, name: '限期整改' } - ], - reportForm: { - dangerDesc: null, - dangerCode: null, - depId: null, - produceDeviceId: null, - riskUnitId: null, - dangerSource: null, - dangerLevel: null, - dangerType: null, - dangerReason: null, - dangerResult: null, - rectifyType: null, - rectifyDepId: null, - liablePersonId: null, - rectifyTime: null, - cost: null, - rectifyDesc: null - }, - reportFormRules: { - dangerDesc: [{ required: true, message: '请填写隐患情况描述', trigger: 'blur' }], - dangerCode: [{ required: true, message: '请填写隐患名称', trigger: 'blur' }], - depId: [{ required: true, message: '请选择隐患所属部门', trigger: 'change' }], - produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }], - riskUnitId: [{ required: true, message: '请选择风险分析单元', trigger: 'change' }], - dangerSource: [{ required: true, message: '请选择隐患来源', trigger: 'change' }], - dangerLevel: [{ required: true, message: '请选择隐患等级', trigger: 'change' }], - dangerType: [{ required: true, message: '请选择隐患类型', trigger: 'change' }], - dangerReason: [{ required: true, message: '请填写隐患产生原因分析', trigger: 'blur' }], - dangerResult: [{ required: true, message: '请选择隐患可能后果', trigger: 'change' }], - rectifyType: [{ required: true, message: '请选择整改类型', trigger: 'change' }], - rectifyDepId: [{ required: true, message: '请选择整改单位', trigger: 'change' }], - liablePersonId: [{ required: true, message: '请选择整改责任人', trigger: 'change' }], - rectifyTime: [{ required: true, message: '请选择整改期限', trigger: 'change' }], - cost: [{ required: true, message: '请选择整改资金', trigger: 'blur' }], - rectifyDesc: [{ required: true, message: '请填写整改内容', trigger: 'blur' }] - } - }); - - //打开模态框 - const openReportDialog = (type: string, value: { id: number }, departmentList: [], allProduceDeviceData: [], allSafetyRiskUnitData: []) => { - state.isShowReportDialog = true; - state.departmentList = departmentList; - state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData)); - state.allSafetyRiskUnitData = allSafetyRiskUnitData; - setTimeout(() => { - reportFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.title = '新增隐患'; - state.reportForm = { - dangerDesc: null, - dangerCode: null, - depId: null, - produceDeviceId: null, - riskUnitId: null, - dangerSource: null, - dangerLevel: null, - dangerType: null, - dangerReason: null, - dangerResult: null, - rectifyType: null, - rectifyDepId: null, - liablePersonId: null, - rectifyTime: null, - cost: null, - rectifyDesc: null - }; - } else if (type === '查看') { - state.title = '修改隐患'; - state.disabled = false; - state.reportForm.rectifyDepId = JSON.parse(JSON.stringify(value)).rectifyDepId; - achieveUserList(); - state.reportForm = JSON.parse(JSON.stringify(value)); - } else { - state.title = '修改隐患'; - state.disabled = true; - state.reportForm.rectifyDepId = JSON.parse(JSON.stringify(value)).rectifyDepId; - achieveUserList(); - state.reportForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitReport = async () => { - reportFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增隐患') { - let res = await hiddenReportApi().addHiddenReport(state.reportForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患新增成功', - duration: 2000 - }); - state.isShowReportDialog = false; - context.emit('refreshReport'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await hiddenReportApi().modHiddenReport(state.reportForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患修改成功', - duration: 2000 - }); - state.isShowReportDialog = false; - context.emit('refreshReport'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const achieveUserList = async () => { - state.reportForm.liablePersonId = null; - const user: unknown = await getUserByDepartment(state.reportForm.rectifyDepId); - state.userList = user as []; - }; - - const changeUnit = () => { - state.reportForm.riskUnitId = null; - state.safetyRiskUnitData = state.allSafetyRiskUnitData.filter((item) => item.produceDeviceId === state.reportForm.produceDeviceId); - }; - - const onVerifyNumberPercentageFloat = (val: string) => { - state.reportForm.cost = JSON.parse(verifyNumberIntegerAndFloat(val)); - }; - - return { - ...toRefs(state), - changeUnit, - reportFormRef, - submitReport, - achieveUserList, - openReportDialog, - onVerifyNumberPercentageFloat - }; - } -}; -</script> - -<style scoped> -:deep(.el-dialog__header) { - padding-bottom: 0px !important; -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue b/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue deleted file mode 100644 index d958349..0000000 --- a/src/views/doublePrevent/riskCheckManage/hiddenManagement/hiddenReport/index.vue +++ /dev/null @@ -1,352 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>隐患等级:</span> - <el-select class="input-box" v-model="reportData.params.dangerLevel" placeholder="隐患等级" filterable clearable> - <el-option v-for="item in dangerLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>隐患来源:</span> - <el-select class="input-box" v-model="reportData.params.dangerSource" placeholder="隐患来源" filterable clearable> - <el-option v-for="item in dangerSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>隐患状态:</span> - <el-select class="input-box" v-model="reportData.params.dangerStatus" placeholder="隐患状态" filterable clearable> - <el-option v-for="item in dangerStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>隐患类型:</span> - <el-select class="input-box" v-model="reportData.params.dangerType" placeholder="隐患类型" filterable clearable> - <el-option v-for="item in dangerTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增隐患 - </el-button> - </div> - <el-table :data="reportData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="reportTime" label="上报时间" show-overflow-tooltip width="170px"></el-table-column> - <el-table-column prop="dangerCode" label="隐患名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="dangerDesc" label="隐患情况描述" show-overflow-tooltip></el-table-column> - <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskUnitName" label="风险分析单元名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="dangerSource" label="隐患来源" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.dangerSource, '隐患来源') }} - </template> - </el-table-column> - <el-table-column prop="dangerLevel" label="隐患等级" show-overflow-tooltip align="center"> - <template #default="scope"> - <el-tag :type="scope.row.dangerLevel === 1 ? 'warning' : 'danger'"> - {{ parseNumber(scope.row.dangerLevel, '隐患等级') }} - </el-tag> - </template> - </el-table-column> - <el-table-column prop="dangerType" label="隐患类型" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.dangerType, '隐患类型') }} - </template> - </el-table-column> - <el-table-column prop="dangerReason" label="隐患产生原因分析" show-overflow-tooltip></el-table-column> - <el-table-column prop="dangerResult" label="隐患可能导致后果" show-overflow-tooltip align="center"> - <template #default="scope"> - <el-tag :type="scope.row.dangerResult === 1 ? 'success' : scope.row.dangerResult === 2 ? 'info' : scope.row.dangerResult === 3 ? 'warning' : 'danger'"> {{ parseNumber(scope.row.dangerResult, '隐患可能导致后果') }}</el-tag> - </template> - </el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="250" fixed="right" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 15, 20, 30]" v-model:current-page="reportData.params.pageIndex" background v-model:page-size="reportData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="reportData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <reportDialog ref="reportDialogRef" @refreshReport="initReportTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import reportDialog from './components/reportDialog.vue'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; -import { hiddenReportApi } from '/@/api/doublePreventSystem/report'; -import { departmentApi } from '/@/api/systemManage/department'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice'; -import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - reportData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - dangerLevel: number | null; - dangerSource: number | null; - dangerStatus: string | null; - dangerType: number | null; - }; - }; - dangerLevelList: Array<enumType>; - dangerSourceList: Array<enumType>; - dangerStatusList: Array<enumType>; - dangerTypeList: Array<enumType>; - dangerResultList: Array<enumType>; - departmentList: []; - allProduceDeviceData: []; - allSafetyRiskUnitData: []; -} -interface enumType { - id: number; - name: string; -} - -export default defineComponent({ - name: 'report', - components: { reportDialog, Edit, Delete, View }, - setup() { - const reportDialogRef = ref(); - const state = reactive<TableDataState>({ - reportData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - dangerLevel: null, - dangerSource: null, - dangerStatus: null, - dangerType: null - } - }, - departmentList: [], - dangerLevelList: [ - { id: 1, name: '一般隐患' }, - { id: 2, name: '重大隐患' } - ], - dangerSourceList: [ - { id: 1, name: '日常排查' }, - { id: 2, name: '综合性排查' }, - { id: 3, name: '专业性排查' }, - { id: 4, name: '季节性排查' }, - { id: 5, name: '重点时段及节假日前排查' }, - { id: 6, name: '事故类比排查' }, - { id: 7, name: '复产复工前排查' }, - { id: 8, name: '外聘专家诊断式排查' }, - { id: 9, name: '管控措施失效' }, - { id: 10, name: '其他' } - ], - dangerStatusList: [ - { id: 0, name: '整改中' }, - { id: 1, name: '待验收' }, - { id: 2, name: '延期整改' }, - { id: 4, name: '超期未整改' }, - { id: 9, name: '已验收' } - ], - dangerTypeList: [ - { id: 1, name: '安全' }, - { id: 2, name: '工艺' }, - { id: 3, name: '电气' }, - { id: 4, name: '仪表' }, - { id: 5, name: '消防' }, - { id: 6, name: '总图' }, - { id: 7, name: '设备' }, - { id: 8, name: '其他' } - ], - dangerResultList: [ - { id: 1, name: '无' }, - { id: 2, name: '轻伤' }, - { id: 3, name: '重伤' }, - { id: 4, name: '死亡' } - ], - allProduceDeviceData: [], - allSafetyRiskUnitData: [] - }); - - // 初始化表格数据 - const initReportTableData = async () => { - let res = await hiddenReportApi().getHiddenReportList(state.reportData.params); - if (res.data.code === '200') { - state.reportData.data = res.data.data; - state.reportData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取生产装置列表 - const getAllProduceDeviceData = async () => { - let res = await productionDeviceApi().getAllProductionDeviceList(); - if (res.data.code === '200') { - state.allProduceDeviceData = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 获取安全风险分析单元数据 - const getAllSafetyRiskEventData = async () => { - let res = await safetyRiskAnalyseUnitApi().getAllSafetyRiskAnalyseUnitList(); - if (res.data.code === '200') { - state.allSafetyRiskUnitData = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - reportDialogRef.value.openReportDialog(type, value, state.departmentList, state.allProduceDeviceData, state.allSafetyRiskUnitData); - }; - // 删除 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久该条隐患,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await hiddenReportApi().deleteHiddenReport({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initReportTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initReportTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.reportData.params.pageSize = val; - initReportTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.reportData.params.pageIndex = val; - initReportTableData(); - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '隐患来源') { - return state.dangerSourceList.find((item) => item.id === value)?.name; - } else if (type === '隐患等级') { - return state.dangerLevelList.find((item) => item.id === value)?.name; - } else if (type === '隐患类型') { - return state.dangerTypeList.find((item) => item.id === value)?.name; - } else { - return state.dangerResultList.find((item) => item.id === value)?.name; - } - }; - - // 页面加载时 - onMounted(() => { - initReportTableData(); - getDepartmentData(); - getAllProduceDeviceData(); - getAllSafetyRiskEventData(); - }); - - return { - Edit, - View, - Delete, - parseNumber, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - reportDialog, - reportDialogRef, - initReportTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/checkUnitDialog.vue b/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/checkUnitDialog.vue deleted file mode 100644 index 81ab0c6..0000000 --- a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/checkUnitDialog.vue +++ /dev/null @@ -1,260 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowCheckUnitDialog" append-to-body :close-on-click-modal="false" width="50%"> - <el-divider></el-divider> - <div class="checkUnit-form"> - <el-form :model="checkUnitForm" :rules="checkUnitFormRules" ref="checkUnitFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="任务单元名称" prop="taskUnitName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.taskUnitName" placeholder="请输入任务单元名称" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="任务单元说明" prop="note"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.note" placeholder="请输入任务单元说明" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - </div> - - <div class="checkUnit-point"> - <el-tabs class="active" v-model="activeName"> - <el-tab-pane label="检查项信息" name="checkUnit"> - <div class="filter-container"> - <el-button size="default" :disabled="!disabled" type="success" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 选择风险管控措施 - </el-button> - </div> - - <el-table :data="measureData" border fit highlight-current-row style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip align="center"></el-table-column> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button size="small" text :disabled="!disabled" type="danger" @click="onDelCheckUnit(scope.$index, scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - </el-tab-pane> - </el-tabs> - </div> - - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowCheckUnitDialog = !isShowCheckUnitDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitCheckUnit" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog title="选择风险管控措施" v-model="isShowSelectMeasureControlDialog" append-to-body :close-on-click-modal="false" width="70%"> - <select-measure-control-dialog ref="SelectMeasureControlDialogRef" @receiveRiskControlId="receiveRiskControlId"></select-measure-control-dialog> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import SelectMeasureControlDialog from './selectMeasureControlDialog.vue'; -import { reactive, toRefs, ref } from 'vue'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit'; -import { ElMessage } from 'element-plus'; -interface stateType { - isShowCheckUnitDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - isShowSelectMeasureControlDialog: Boolean; - checkUnitForm: { - taskUnitName: string | null; - note: string | null; - measureList: []; - }; - title: string; - activeName: string; - measureData: []; - checkUnitData: []; - checkUnitFormRules: {}; -} - -export default { - name: 'checkUnitDialog', - components: { SelectMeasureControlDialog }, - setup(props: any, context: any) { - const checkUnitFormRef = ref(); - const riskControlMeasureDialogRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - activeName: 'checkUnit', - measureData: [], - checkUnitData: [], - isShowCheckUnitDialog: false, - isShowSelectMeasureControlDialog: false, - checkUnitForm: { - taskUnitName: null, - note: null, - measureList: [] - }, - checkUnitFormRules: { - taskUnitName: [{ required: true, message: '请填写任务单元名称', trigger: 'blur' }], - note: [{ required: true, message: '请填写任务单元说明', trigger: 'change' }] - } - }); - - //打开模态框 - const openCheckUnitDialog = (type: string, value: object) => { - state.isShowCheckUnitDialog = true; - setTimeout(() => { - checkUnitFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增隐患排查单元'; - state.measureData = []; - state.checkUnitForm = { - taskUnitName: null, - note: null, - measureList: [] - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看隐患排查单元'; - state.checkUnitForm = JSON.parse(JSON.stringify(value)); - state.measureData = state.checkUnitForm.measureList; - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改隐患排查单元'; - state.checkUnitForm = JSON.parse(JSON.stringify(value)); - state.measureData = state.checkUnitForm.measureList; - } - }; - - const onOpenDialogRef = () => { - state.isShowSelectMeasureControlDialog = true; - }; - - const onDelCheckUnit = (value: number, scope: object) => { - state.measureData.splice(value, 1); - }; - - const receiveRiskControlId = (value: []) => { - state.isShowSelectMeasureControlDialog = false; - state.measureData = value; - state.checkUnitForm.measureList = JSON.parse( - JSON.stringify( - value.map((item: { id: number }) => { - return item.id; - }) - ) - ); - }; - - //新增修改提交 - const submitCheckUnit = async () => { - checkUnitFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增隐患排查单元') { - let res = await checkUnitApi().addCheckUnit(state.checkUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患排查单元新增成功', - duration: 2000 - }); - state.isShowCheckUnitDialog = false; - context.emit('refreshCheckUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await checkUnitApi().modCheckUnit(state.checkUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患排查单元修改成功', - duration: 2000 - }); - state.isShowCheckUnitDialog = false; - context.emit('refreshCheckUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - checkUnitFormRef, - submitCheckUnit, - onDelCheckUnit, - onOpenDialogRef, - openCheckUnitDialog, - receiveRiskControlId, - riskControlMeasureDialogRef - }; - } -}; -</script> - -<style scoped> -::v-deep.el-divider--horizontal { - margin-top: 0px !important; -} - -::v-deep.el-dialog__body { - padding-top: 10px !important; -} -.filter-container { - padding: 10px 0px; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/selectMeasureControlDialog.vue b/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/selectMeasureControlDialog.vue deleted file mode 100644 index df01f4a..0000000 --- a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/components/selectMeasureControlDialog.vue +++ /dev/null @@ -1,219 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>管控方式:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable> - <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>安全风险事件:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table - @selection-change="handleSelectionChange" - ref="table" - :row-key="getRowKey" - :data="riskControlMeasureData.data" - style="width: 100%" - > - <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column> - <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.controlType, '管控方式') }} - </template> - </el-table-column> - <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column> - <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify1, '管控措施分类1') }} - </template> - </el-table-column> - <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify2, '管控措施分类2') }} - </template> - </el-table-column> - <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column> - <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column>> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button type="text" @click="giveValue(scope.row)">选择 </el-button> - </template> - </el-table-column> - </el-table> - </el-card> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts'; -import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - isShowSelectMeasureControlDialog: boolean; - riskControlMeasureIdList: Array<riskControlMeasure>; - riskControlMeasureData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - controlType: number | null; - riskEventId: number | null; - }; - }; - controlTypeList: Array<controlTypeType>; - classifyOneList: Array<classifyOneType>; - classifyTwoList: Array<classifyOneType>; -} -interface controlTypeType { - id: number; - name: string; -} -interface classifyOneType { - id: number; - riskMeasureName: string; -} - -interface riskControlMeasure {} -export default { - name: 'selectMeasureControlDialog', - components: {}, - setup(props: any, context: any) { - const riskControlMeasureDialogRef = ref(); - const state = reactive<TableDataState>({ - isShowSelectMeasureControlDialog: false, - riskControlMeasureIdList: [], - riskControlMeasureData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - controlType: null, - riskEventId: null - } - }, - controlTypeList: [ - { id: 1, name: '自动化监控' }, - { id: 2, name: '隐患排查' } - ], - classifyOneList: [], - classifyTwoList: [] - }); - - // 初始化表格数据 - const initRiskControlMeasureData = async () => { - let res = await riskControlMeasureApi().getAllRiskControlMeasureList(); - if (res.data.code === '200') { - state.riskControlMeasureData.data = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取管控措施分类 - const getClassify = async () => { - let res = await riskControlMeasureApi().getClassifyData(); - if (res.data.code === '200') { - state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null); - state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '管控方式') { - return state.controlTypeList.find((item) => item.id === value)?.name; - } else if (type === '管控措施分类1') { - return state.classifyOneList.find((item) => item.id === value)?.riskMeasureName; - } else { - return state.classifyTwoList.find((item) => item.id === value)?.riskMeasureName; - } - }; - - const handleSearch = () => { - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.riskControlMeasureData.params.pageSize = val; - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.riskControlMeasureData.params.pageIndex = val; - initRiskControlMeasureData(); - }; - - const handleSelectionChange = (val: []) => { - state.riskControlMeasureIdList = val; - }; - - const getRowKey = (value: { id: number }) => { - return value.id; - }; - - const giveValue = () => { - context.emit('receiveRiskControlId', state.riskControlMeasureIdList); - }; - - // 页面加载时 - onMounted(() => { - initRiskControlMeasureData(); - getClassify(); - }); - - return { - handleSearch, - parseNumber, - getRowKey, - giveValue, - handleSelectionChange, - onHandleSizeChange, - onHandleCurrentChange, - riskControlMeasureDialogRef, - initRiskControlMeasureData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/index.vue b/src/views/doublePrevent/riskCheckManage/riskCheckUnit/index.vue deleted file mode 100644 index ad9a72f..0000000 --- a/src/views/doublePrevent/riskCheckManage/riskCheckUnit/index.vue +++ /dev/null @@ -1,194 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <!-- <div class="basic-line">--> - <!-- <span>风险等级:</span>--> - <!-- <el-select v-model="checkUnitData.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>--> - <!-- </el-select>--> - <!-- </div>--> - <!-- <div class="basic-line">--> - <!-- <span>部门:</span>--> - <!-- <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-box" v-model="checkUnitData.params.depId"> </el-cascader>--> - <!-- </div>--> - <div class="basic-line"> - <span>任务单元名称:</span> - <el-input class="input-box" v-model="checkUnitData.params.taskUnitName" placeholder="任务单元名称" clearable> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增排查单元 - </el-button> - </div> - <el-table :data="checkUnitData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="taskUnitName" label="任务单元名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="note" label="任务单元说明" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelcheckUnit(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="checkUnitData.params.pageIndex" background v-model:page-size="checkUnitData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="checkUnitData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <checkUnitDialog ref="checkUnitDialogRef" @refreshCheckUnit="initCheckUnitTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import checkUnitDialog from './components/checkUnitDialog.vue'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit/index.ts'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - checkUnitData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - taskUnitName: number | null; - }; - }; -} - -export default defineComponent({ - name: 'index', - components: { checkUnitDialog, Edit, Delete, View }, - setup() { - const checkUnitDialogRef = ref(); - const state = reactive<TableDataState>({ - checkUnitData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - taskUnitId: null - } - } - }); - // 初始化表格数据 - const initCheckUnitTableData = async () => { - let res = await checkUnitApi().getCheckUnitList(state.checkUnitData.params); - if (res.data.code === '200') { - state.checkUnitData.data = res.data.data; - state.checkUnitData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - checkUnitDialogRef.value.openCheckUnitDialog(type, value); - }; - // 删除角色 - const onDelCheckUnit = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条生产装置:“${row.produceDeviceName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await checkUnitApi().deleteCheckUnit({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initCheckUnitTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initCheckUnitTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.checkUnitData.params.pageSize = val; - initCheckUnitTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.checkUnitData.params.pageIndex = val; - initCheckUnitTableData(); - }; - // 页面加载时 - onMounted(() => { - initCheckUnitTableData(); - }); - - return { - Edit, - Delete, - View, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelCheckUnit, - onHandleCurrentChange, - checkUnitDialog, - checkUnitDialogRef, - initCheckUnitTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue b/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue deleted file mode 100644 index 316d156..0000000 --- a/src/views/doublePrevent/riskLevel/action/components/riskControlMeasureDialog.vue +++ /dev/null @@ -1,265 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isRiskControlMeasureDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="riskControlMeasureForm" :rules="riskControlMeasureFormRules" ref="riskControlMeasureFormRef" size="default" label-width="160px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险事件名称" prop="riskEventId"> - <el-select class="input-add" :disabled="!disabled" v-model="riskControlMeasureForm.riskEventId" placeholder="请选择风险事件" clearable> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></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="controlMeasureCode"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.controlMeasureCode" 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="controlType"> - <el-select class="input-add" :disabled="!disabled" v-model="riskControlMeasureForm.controlType" placeholder="请选择管控方式" clearable> - <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></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="checkContent"> - <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="3" v-model.trim="riskControlMeasureForm.checkContent" placeholder="请输入管控内容" clearable> </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="管控措施分类1" prop="classify1"> - <el-select class="input-add" :disabled="!disabled" v-model="riskControlMeasureForm.classify1" @change="changeClassifyTwoList" placeholder="请选择管控措施分类1" clearable> - <el-option v-for="item in classifyOneList" :key="item.id" :label="item.riskMeasureName" :value="item.id"></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="管控措施分类2" prop="classify2"> - <el-select class="input-add" :disabled="!disabled" v-model="riskControlMeasureForm.classify2" placeholder="请选择管控措施分类2" clearable> - <el-option v-for="item in classifyTwoList" :key="item.id" :label="item.riskMeasureName" :value="item.id"></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="管控措施分类3" prop="classify3"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.classify3" placeholder="请填写管控措施分类3" clearable> </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="measureDesc"> - <el-input class="input-add" :disabled="!disabled" type="textarea" :rows="3" v-model.trim="riskControlMeasureForm.measureDesc" placeholder="请输入措施说明" clearable> </el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="riskControlMeasureForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isRiskControlMeasureDialog = !isRiskControlMeasureDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitRiskControlMeasureDialog" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isRiskControlMeasureDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - riskControlMeasureForm: { - riskEventId: number | null; - controlMeasureCode: string | null; - controlType: number | null; - checkContent: string | null; - classify1: number | null; - classify2: number | null; - classify3: string | null; - measureDesc: string | null; - }; - title: string; - controlTypeList: Array<controlTypeListType>; - classifyOneList: []; - classifyTwoList: Array<classifyTwoType>; - classifyTwoListAll: []; - allSafetyRiskEventData: []; - riskControlMeasureFormRules: {}; -} -interface classifyTwoType { - id: number; - riskMeasureName: string; -} -interface controlTypeListType {} - -import { reactive, toRefs, ref } from 'vue'; -import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure'; -import { ElMessage } from 'element-plus'; -export default { - name: 'riskControlMeasureDialog', - setup(props: any, context: any) { - const riskControlMeasureFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - controlTypeList: [ - { id: 1, name: '自动化监控' }, - { id: 2, name: '隐患排查' } - ], - classifyOneList: [], - classifyTwoList: [], - classifyTwoListAll: [], - allSafetyRiskEventData: [], - isRiskControlMeasureDialog: false, - riskControlMeasureForm: { - riskEventId: null, - controlMeasureCode: null, - controlType: null, - checkContent: null, - classify1: null, - classify2: null, - classify3: null, - measureDesc: null - }, - riskControlMeasureFormRules: { - 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' }] - } - }); - - //打开模态框 - const openSafetyRiskEventDialog = (type: string, value: object, allSafetyRiskEventData: [], classifyOneList: [], classifyTwoList: []) => { - state.isRiskControlMeasureDialog = true; - state.allSafetyRiskEventData = JSON.parse(JSON.stringify(allSafetyRiskEventData)); - state.classifyOneList = JSON.parse(JSON.stringify(classifyOneList)); - state.classifyTwoListAll = JSON.parse(JSON.stringify(classifyTwoList)); - state.classifyTwoList = []; - setTimeout(() => { - riskControlMeasureFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增风险管控措施'; - state.riskControlMeasureForm = { - riskEventId: null, - controlMeasureCode: null, - controlType: null, - checkContent: null, - classify1: null, - classify2: null, - classify3: null, - measureDesc: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '修改风险管控措施'; - state.riskControlMeasureForm.classify1 = JSON.parse(JSON.stringify(value)).classify1; - state.classifyTwoList = state.classifyTwoListAll.filter((item: any) => item.parentId === state.riskControlMeasureForm.classify1); - state.riskControlMeasureForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改风险管控措施'; - state.riskControlMeasureForm.classify1 = JSON.parse(JSON.stringify(value)).classify1; - state.classifyTwoList = state.classifyTwoListAll.filter((item: any) => item.parentId === state.riskControlMeasureForm.classify1); - state.riskControlMeasureForm = JSON.parse(JSON.stringify(value)); - } - }; - - const changeClassifyTwoList = () => { - state.riskControlMeasureForm.classify2 = null; - state.classifyTwoList = []; - state.classifyTwoList = state.classifyTwoListAll.filter((item: any) => item.parentId === state.riskControlMeasureForm.classify1); - }; - - //新增修改提交 - const submitRiskControlMeasureDialog = async () => { - riskControlMeasureFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增风险管控措施') { - let res = await riskControlMeasureApi().addRiskControlMeasure(state.riskControlMeasureForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险管控措施新增成功', - duration: 2000 - }); - state.isRiskControlMeasureDialog = false; - context.emit('refreshRiskControlMeasure'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await riskControlMeasureApi().modRiskControlMeasure(state.riskControlMeasureForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险管控措施修改成功', - duration: 2000 - }); - state.isRiskControlMeasureDialog = false; - context.emit('refreshRiskControlMeasure'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - riskControlMeasureFormRef, - changeClassifyTwoList, - submitRiskControlMeasureDialog, - openSafetyRiskEventDialog - }; - } -}; -</script> - -<style scoped> -.input-length { - width: 85%; -} -</style> diff --git a/src/views/doublePrevent/riskLevel/action/index.vue b/src/views/doublePrevent/riskLevel/action/index.vue deleted file mode 100644 index 0629615..0000000 --- a/src/views/doublePrevent/riskLevel/action/index.vue +++ /dev/null @@ -1,323 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>管控方式:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable> - <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>安全风险事件:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增措施 - </el-button> - </div> - <el-table :data="riskControlMeasureData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.controlType, '管控方式') }} - </template> - </el-table-column> - <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column> - <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify1, '管控措施分类1') }} - </template> - </el-table-column> - <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify2, '管控措施分类2') }} - </template> - </el-table-column> - <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column> - <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip> - <template #default="scope"> - <span>{{ dateFormat('YYYY-mm-dd HH:MM:SS', '2022-07-07T08:00:00') }}</span> - </template> - </el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelRiskControlMeasure(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="riskControlMeasureData.params.pageIndex" background v-model:page-size="riskControlMeasureData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="riskControlMeasureData.total"> </el-pagination> - <br /> - <br /> - </el-card> - <riskControlMeasureDialog ref="riskControlMeasureDialogRef" @refreshRiskControlMeasure="initRiskControlMeasureData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import riskControlMeasureDialog from './components/riskControlMeasureDialog.vue'; -import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts'; -import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - riskControlMeasureData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - controlType: number | null; - riskEventId: number | null; - }; - }; - controlTypeList: Array<controlTypeType>; - classifyOneList: Array<classifyOneType>; - classifyTwoList: Array<classifyOneType>; - allSafetyRiskEventData: Array<SafetyRiskEventDataState>; -} -interface controlTypeType { - id: number; - name: string; -} -interface classifyOneType { - id: number; - riskMeasureName: string; -} - -interface SafetyRiskEventDataState {} - -// interface controlTypeListType { -// id: number; -// riskMeasureName: string; -// } -// -// class myType implements controlTypeListType { -// id: number; -// riskMeasureName: string; -// constructor(id: number, riskMeasureName: string) { -// this.id = id; -// this.riskMeasureName = riskMeasureName; -// } -// bark() { -// console.log('1111'); -// } -// } -// -// class type extends myType { -// bark() { -// console.log('222'); -// } -// } -// class typeTwo extends myType { -// bark() { -// super.bark(); -// } -// } -// -// var test = new type(123, '23123'); -// var test2 = new typeTwo(222, '333'); - -export default { - name: 'riskControlMeasure', - components: { riskControlMeasureDialog, Edit, Delete, View }, - setup() { - const riskControlMeasureDialogRef = ref(); - const state = reactive<TableDataState>({ - riskControlMeasureData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - controlType: null, - riskEventId: null - } - }, - controlTypeList: [ - { id: 1, name: '自动化监控' }, - { id: 2, name: '隐患排查' } - ], - classifyOneList: [], - classifyTwoList: [], - allSafetyRiskEventData: [] - }); - - // 初始化表格数据 - const initRiskControlMeasureData = async () => { - // console.log(test.bark()); - // console.log(test2.bark()); - let res = await riskControlMeasureApi().getRiskControlMeasureList(state.riskControlMeasureData.params); - if (res.data.code === '200') { - state.riskControlMeasureData.data = res.data.data; - state.riskControlMeasureData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const dateFormat = (fmt: any, date: any) => { - date = new Date(date); - fmt = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours().toString() + ':' + (date.getMinutes().toString() === '0' ? '00' : date.getMinutes().toString()) + ':' + (date.getSeconds().toString() === '0' ? '00' : date.getMinutes().toString()); - return fmt; - }; - - //获取安全风险事件 - const getAllSafetyRiskEvent = async () => { - let res = await safetyRiskEventApi().getAllSafetyRiskEventList(); - if (res.data.code === '200') { - state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取管控措施分类 - const getClassify = async () => { - let res = await riskControlMeasureApi().getClassifyData(); - if (res.data.code === '200') { - state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null); - state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - riskControlMeasureDialogRef.value.openSafetyRiskEventDialog(type, value, state.allSafetyRiskEventData, state.classifyOneList, state.classifyTwoList); - }; - - // 删除角色 - const onDelRiskControlMeasure = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条风险管控措施:“${row.checkContent}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await riskControlMeasureApi().deleteRiskControlMeasure({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initRiskControlMeasureData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '管控方式') { - return state.controlTypeList.find((item) => item.id === value)?.name; - } else if (type === '管控措施分类1') { - return state.classifyOneList.find((item) => item.id === value)?.riskMeasureName; - } else { - return state.classifyTwoList.find((item) => item.id === value)?.riskMeasureName; - } - }; - - const handleSearch = () => { - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.riskControlMeasureData.params.pageSize = val; - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.riskControlMeasureData.params.pageIndex = val; - initRiskControlMeasureData(); - }; - - // 页面加载时 - onMounted(() => { - initRiskControlMeasureData(); - getAllSafetyRiskEvent(); - getClassify(); - }); - - return { - Edit, - Delete, - View, - dateFormat, - handleSearch, - parseNumber, - onOpenDialogRef, - onHandleSizeChange, - onDelRiskControlMeasure, - onHandleCurrentChange, - riskControlMeasureDialog, - riskControlMeasureDialogRef, - initRiskControlMeasureData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/device/components/productionDeviceDialog.vue b/src/views/doublePrevent/riskLevel/device/components/productionDeviceDialog.vue deleted file mode 100644 index 497363d..0000000 --- a/src/views/doublePrevent/riskLevel/device/components/productionDeviceDialog.vue +++ /dev/null @@ -1,197 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowProductionDeviceDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="productionDeviceForm" :rules="productionDeviceFormRules" ref="productionDeviceFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="生产装置名称" prop="produceDeviceName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.produceDeviceName" placeholder="请输入生产装置名称" clearable></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="depId"> - <el-cascader :options="departmentList" :disabled="!disabled" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable style="width: 90%" v-model="productionDeviceForm.depId"> </el-cascader> - <!-- <el-select class="input-length" v-model="productionDeviceForm.depName" placeholder="请选择所属部门" clearable filterable></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="riskLevel"> - <el-select class="input-add" :disabled="!disabled" v-model="productionDeviceForm.riskLevel" placeholder="请选择风险等级" clearable filterable> - <el-option v-for="item in levelList" :key="item.id" :label="item.name" :value="item.id"></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="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.location" 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" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="productionDeviceForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowProductionDeviceDialog = !isShowProductionDeviceDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitProductionDevice" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowProductionDeviceDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - productionDeviceForm: { - produceDeviceName: string; - depId: number | null; - riskLevel: number | null; - location: string; - }; - title: string; - departmentList: []; - levelList: Array<levelListState>; - productionDeviceFormRules: {}; -} -interface levelListState {} -import { reactive, toRefs, ref } from 'vue'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice'; -import { ElMessage } from 'element-plus'; -export default { - name: 'productionDeviceDialog', - setup(props: any, context: any) { - const productionDeviceFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - departmentList: [], - isShowProductionDeviceDialog: false, - levelList: [ - { id: 1, name: '低风险' }, - { id: 2, name: '一般风险' }, - { id: 3, name: '较大风险' }, - { id: 4, name: '重大风险' } - ], - productionDeviceForm: { - produceDeviceName: '', - depId: null, - riskLevel: null, - location: '' - }, - productionDeviceFormRules: { - produceDeviceName: [{ required: true, message: '请填写生产装置名称', trigger: 'blur' }], - depId: [{ required: true, message: '请选择部门', trigger: 'change' }], - riskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }], - location: [{ required: true, message: '请填写区域位置', trigger: 'blur' }] - } - }); - - //打开模态框 - const openProductionDeviceDialog = (type: string, value: object, department: []) => { - state.isShowProductionDeviceDialog = true; - state.departmentList = department; - setTimeout(() => { - productionDeviceFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增生产装置'; - state.productionDeviceForm = { - produceDeviceName: '', - depId: null, - riskLevel: null, - location: '' - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看生产装置'; - state.productionDeviceForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改生产装置'; - state.productionDeviceForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitProductionDevice = async () => { - productionDeviceFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增生产装置') { - let res = await productionDeviceApi().addProductionDevice(state.productionDeviceForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '生产装置新增成功', - duration: 2000 - }); - state.isShowProductionDeviceDialog = false; - context.emit('refreshProductionDevice'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await productionDeviceApi().modProductionDevice(state.productionDeviceForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '生产装置修改成功', - duration: 2000 - }); - state.isShowProductionDeviceDialog = false; - context.emit('refreshProductionDevice'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - productionDeviceFormRef, - submitProductionDevice, - openProductionDeviceDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskLevel/device/index.vue b/src/views/doublePrevent/riskLevel/device/index.vue deleted file mode 100644 index 048fbf5..0000000 --- a/src/views/doublePrevent/riskLevel/device/index.vue +++ /dev/null @@ -1,261 +0,0 @@ -<template> - <div class="system-role-container"> - <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> - </el-select> - </div> - <div class="basic-line"> - <span>部门: </span> - <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-box" v-model="productionDeviceData.params.depId"> </el-cascader> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增装置 - </el-button> - </div> - <el-table :data="productionDeviceData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="depName" label="所属部门" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskLevel" label="风险等级" show-overflow-tooltip> - <template #default="scope"> - <el-tag :type="scope.row.riskLevel === 1 ? 'success' : scope.row.riskLevel === 2 ? 'info' : scope.row.riskLevel === 3 ? 'warning' : 'danger'"> - {{ parseNumber(scope.row.riskLevel, '风险等级') }} - </el-tag> - </template> - </el-table-column> - <el-table-column prop="location" label="区域位置" show-overflow-tooltip></el-table-column> - <el-table-column prop="status" label="状态" show-overflow-tooltip> - <template #default="scope"> - <el-tag :type="scope.row.status === 1 ? 'primary' : 'warning'"> - {{ parseNumber(scope.row.status, '状态') }} - </el-tag> - </template> - </el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="productionDeviceData.params.pageIndex" background v-model:page-size="productionDeviceData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="productionDeviceData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <productionDeviceDialog ref="productionDeviceDialogRef" @refreshProductionDevice="initProductionDeviceTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import productionDeviceDialog from './components/productionDeviceDialog.vue'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - productionDeviceData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - riskLevel: number | null | ''; - status: number; - depId: number | null | ''; - location: string | null; - produceDeviceName: string | null; - }; - }; - departmentList: Array<DepartmentState>; - stateList: Array<levelListState>; - levelList: Array<levelListState>; -} -interface levelListState { - id: number; - name: string; -} -interface DepartmentState {} - -export default { - name: 'productionDevice', - components: { productionDeviceDialog, Edit, Delete, View }, - setup() { - const productionDeviceDialogRef = ref(); - const state = reactive<TableDataState>({ - productionDeviceData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - riskLevel: null, - status: 1, - depId: null, - location: null, - produceDeviceName: null - } - }, - departmentList: [], - levelList: [ - { id: 1, name: '低风险' }, - { id: 2, name: '一般风险' }, - { id: 3, name: '较大风险' }, - { id: 4, name: '重大风险' } - ], - stateList: [ - { id: 1, name: '使用中' }, - { id: 2, name: '已弃用' } - ] - }); - // 初始化表格数据 - const initProductionDeviceTableData = async () => { - state.productionDeviceData.params.riskLevel = state.productionDeviceData.params.riskLevel === '' ? null : state.productionDeviceData.params.riskLevel; - state.productionDeviceData.params.depId = state.productionDeviceData.params.depId === '' ? null : state.productionDeviceData.params.depId; - let res = await productionDeviceApi().getProductionDeviceList(state.productionDeviceData.params); - if (res.data.code === '200') { - state.productionDeviceData.data = res.data.data; - state.productionDeviceData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - productionDeviceDialogRef.value.openProductionDeviceDialog(type, value, state.departmentList); - }; - // 删除角色 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条生产装置:“${row.produceDeviceName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await productionDeviceApi().deleteProductionDevice({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initProductionDeviceTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initProductionDeviceTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.productionDeviceData.params.pageSize = val; - initProductionDeviceTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.productionDeviceData.params.pageIndex = val; - initProductionDeviceTableData(); - }; - // 页面加载时 - onMounted(() => { - initProductionDeviceTableData(); - getDepartmentData(); - }); - - const parseNumber = (value: string | number, type: string) => { - if (type === '风险等级') { - return state.levelList.find((item) => item.id === value)?.name; - } else if (type === '状态') { - return state.stateList.find((item) => item.id === value)?.name; - } - }; - - return { - Edit, - Delete, - View, - parseNumber, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - productionDeviceDialog, - productionDeviceDialogRef, - initProductionDeviceTableData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue b/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue deleted file mode 100644 index 48314ea..0000000 --- a/src/views/doublePrevent/riskLevel/event/components/safetyRiskEventDialog.vue +++ /dev/null @@ -1,184 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isSafetyRiskEventDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="safetyRiskEventForm" :rules="safetyRiskEventFormRules" ref="safetyRiskAnalyseUnitFormRef" size="default" label-width="180px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="安全风险分析单元名称" prop="riskUnitId"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyRiskEventForm.riskUnitId" placeholder="请输入安全风险分析单元名称"> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskUnitName" :value="item.id"></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="riskEventName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskEventForm.riskEventName" placeholder="请输入请输入安全风险事件名称" clearable></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="eventResult"> - <el-input class="input-add" type="textarea" :rows="2" :disabled="!disabled" v-model.trim="safetyRiskEventForm.eventResult" placeholder="请输入请输入安全风险事件名称" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskEventForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskEventForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskEventForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskEventForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isSafetyRiskEventDialog = !isSafetyRiskEventDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitSafetyRiskEventDialog" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isSafetyRiskEventDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - safetyRiskEventForm: { - riskEventName: string | null; - eventResult: string | null; - riskUnitId: number | null; - }; - title: string; - departmentList: []; - allSafetyRiskEventData: []; - safetyRiskEventFormRules: {}; -} -import { reactive, toRefs, ref } from 'vue'; -import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; -import { ElMessage } from 'element-plus'; -export default { - name: 'productionDeviceDialog', - setup(props: any, context: any) { - const safetyRiskAnalyseUnitFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - departmentList: [], - allSafetyRiskEventData: [], - isSafetyRiskEventDialog: false, - safetyRiskEventForm: { - riskEventName: null, - eventResult: null, - riskUnitId: null - }, - safetyRiskEventFormRules: { - riskEventName: [{ required: true, message: '请填写安全风险分析对象编码', trigger: 'blur' }], - eventResult: [{ required: true, message: '请填写可能造成的后果', trigger: 'blur' }], - riskUnitId: [{ required: true, message: '请选择安全风险分析单元名称', trigger: 'change' }] - } - }); - - //打开模态框 - const openSafetyRiskEventDialog = (type: string, value: object, allSafetyRiskEventData: []) => { - state.isSafetyRiskEventDialog = true; - state.allSafetyRiskEventData = JSON.parse(JSON.stringify(allSafetyRiskEventData)); - setTimeout(() => { - safetyRiskAnalyseUnitFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增风险事件'; - state.safetyRiskEventForm = { - riskEventName: null, - riskUnitId: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看风险事件'; - state.safetyRiskEventForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改风险事件'; - state.safetyRiskEventForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitSafetyRiskEventDialog = async () => { - safetyRiskAnalyseUnitFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增风险事件') { - let res = await safetyRiskEventApi().addSafetyRiskEvent(state.safetyRiskEventForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险事件新增成功', - duration: 2000 - }); - state.isSafetyRiskEventDialog = false; - context.emit('refreshSafetyRiskEvent'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await safetyRiskEventApi().modSafetyRiskEvent(state.safetyRiskEventForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险事件修改成功', - duration: 2000 - }); - state.isSafetyRiskEventDialog = false; - context.emit('refreshSafetyRiskEvent'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - safetyRiskAnalyseUnitFormRef, - submitSafetyRiskEventDialog, - openSafetyRiskEventDialog - }; - } -}; -</script> - -<style scoped> -.input-length { - width: 85%; -} -</style> diff --git a/src/views/doublePrevent/riskLevel/event/index.vue b/src/views/doublePrevent/riskLevel/event/index.vue deleted file mode 100644 index 65cf780..0000000 --- a/src/views/doublePrevent/riskLevel/event/index.vue +++ /dev/null @@ -1,212 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>安全风险单元名称:</span> - <el-select v-model="safetyRiskEventData.params.riskUnitId" class="input-box" placeholder="安全风险单元名称" clearable filterable> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>安全风险事件名称:</span> - <el-input v-model="safetyRiskEventData.params.riskEventName" class="input-box" placeholder="安全风险事件名称"> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon><ele-Search /> </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增事件 - </el-button> - </div> - <el-table :data="safetyRiskEventData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskEventName" label="安全风险事件名称" width="180" show-overflow-tooltip></el-table-column> - <el-table-column prop="eventResult" label="可能造成的后果" width="180" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelSafetyRiskEvent(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="safetyRiskEventData.params.pageIndex" background v-model:page-size="safetyRiskEventData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="safetyRiskEventData.total"> </el-pagination> - <br /> - <br /> - </el-card> - <safetyRiskEventDialog ref="safetyRiskEventDialogRef" @refreshSafetyRiskEvent="initSafetyRiskEventData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import safetyRiskEventDialog from './components/safetyRiskEventDialog.vue'; -import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - safetyRiskEventData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - riskEventName: string | null; - }; - }; - allSafetyRiskEventData: Array<safetyRiskEventState>; -} -interface safetyRiskEventState {} - -export default { - name: 'productionDevice', - components: { safetyRiskEventDialog, Edit, Delete, View }, - setup() { - const safetyRiskEventDialogRef = ref(); - const state = reactive<TableDataState>({ - safetyRiskEventData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - riskEventName: null - } - }, - allSafetyRiskEventData: [] - }); - // 初始化表格数据 - const initSafetyRiskEventData = async () => { - let res = await safetyRiskEventApi().getSafetyRiskEventList(state.safetyRiskEventData.params); - if (res.data.code === '200') { - state.safetyRiskEventData.data = res.data.data; - state.safetyRiskEventData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 获取安全风险分析单元数据 - const getAllSafetyRiskEventData = async () => { - let res = await safetyRiskAnalyseUnitApi().getAllSafetyRiskAnalyseUnitList(); - if (res.data.code === '200') { - state.allSafetyRiskEventData = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开安全风险事件 - const onOpenDialogRef = (type: string, value: any) => { - safetyRiskEventDialogRef.value.openSafetyRiskEventDialog(type, value, state.allSafetyRiskEventData); - }; - - // 删除角色 - const onDelSafetyRiskEvent = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条安全风险事件:“${row.riskEventName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await safetyRiskEventApi().deleteSafetyRiskEvent({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initSafetyRiskEventData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initSafetyRiskEventData(); - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.safetyRiskEventData.params.pageSize = val; - initSafetyRiskEventData(); - }; - - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.safetyRiskEventData.params.pageIndex = val; - initSafetyRiskEventData(); - }; - - // 页面加载时 - onMounted(() => { - getAllSafetyRiskEventData(); - initSafetyRiskEventData(); - }); - - return { - Edit, - Delete, - View, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelSafetyRiskEvent, - onHandleCurrentChange, - safetyRiskEventDialog, - safetyRiskEventDialogRef, - initSafetyRiskEventData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/map/components/rectifyDialog.vue b/src/views/doublePrevent/riskLevel/map/components/rectifyDialog.vue deleted file mode 100644 index 7f76331..0000000 --- a/src/views/doublePrevent/riskLevel/map/components/rectifyDialog.vue +++ /dev/null @@ -1,327 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowReportDialog" width="50%"> - <el-form :model="reportForm" :rules="reportFormRules" ref="reportFormRef" size="default" label-width="120px"> - <el-tabs class="active" v-model="activeNameOne"> - <el-tab-pane label="隐患信息" name="hiddenInfo"> - <el-row :gutter="25"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患描述" prop="dangerDesc"> - <el-input class="input-add" v-model.trim="reportForm.dangerDesc" placeholder="请输入隐患情况描述" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患所属部门" prop="depId"> - <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-add" v-model="reportForm.depId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="生产装置" prop="produceDeviceId"> - <el-select class="input-add" v-model="reportForm.produceDeviceId" placeholder="请输入生产装置" clearable filterable @change="changeUnit"> - <el-option v-for="item in allProduceDeviceData" :key="item.id" :label="item.produceDeviceName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="风险分析单元" prop="riskUnitId"> - <el-select class="input-add" v-model.trim="reportForm.riskUnitId" placeholder="请输入风险分析单元" clearable filterable> - <el-option v-for="item in safetyRiskUnitData" :key="item.id" :label="item.riskUnitName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患来源" prop="dangerSource"> - <el-select class="input-add" v-model="reportForm.dangerSource" placeholder="请选择隐患来源" clearable filterable> - <el-option v-for="item in dangerSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患等级" prop="dangerLevel"> - <el-select class="input-add" v-model="reportForm.dangerLevel" placeholder="请选择隐患等级" clearable filterable> - <el-option v-for="item in dangerLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患类型" prop="dangerType"> - <el-select class="input-add" v-model="reportForm.dangerType" placeholder="请选择隐患类型" clearable filterable> - <el-option v-for="item in dangerTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="隐患可能后果" prop="dangerResult"> - <el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择隐患可能后果" clearable filterable> - <el-option v-for="item in dangerResultList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12"> - <el-form-item label="隐患产生原因" prop="dangerReason"> - <el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.dangerReason" placeholder="请输入隐患产生原因"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-tab-pane> - </el-tabs> - - <el-divider></el-divider> - - <el-tabs class="active" v-model="activeNameTwo"> - <el-tab-pane label="整改信息" name="rectifyInfo"> - <el-row> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改类型" prop="dangerResult"> - <el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改类型" clearable filterable> <el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option> </el-select - ></el-form-item> </el-col - ><el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改责任人" prop="dangerResult"> - <el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改责任人" clearable filterable> - <el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改期限" prop="dangerResult"> - <el-select class="input-add" v-model="reportForm.dangerResult" placeholder="请选择整改期限" clearable filterable> - <el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="整改资金" prop="dangerResult"> - <el-select class="input-add" v-model="reportForm.cost" placeholder="请选择整改资金"> </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12"> - <el-form-item label="整改内容" prop="rectifyDesc"> - <el-input class="input-add" type="textarea" :rows="2" style="padding-bottom: 10px" v-model.trim="reportForm.rectifyDesc" placeholder="请输入整改内容"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-tab-pane> - </el-tabs> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowReportDialog = !isShowReportDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitReport" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; - -interface stateType { - isShowReportDialog: Boolean; - reportForm: { - dangerDesc: string | null; - depId: number | null; - produceDeviceId: number | null; - riskUnitId: number | null; - dangerSource: number | null; - dangerLevel: number | null; - dangerType: number | null; - dangerReason: string | null; - dangerResult: number | null; - rectifyType: number | null; - liablePersonId: number | null; - rectifyTime: string | null; - cost: number | null; - rectifyDesc: string | null; - }; - title: string; - activeNameOne: string; - activeNameTwo: string; - reportFormRules: {}; - departmentList: []; - allProduceDeviceData: []; - allSafetyRiskUnitData: Array<safetyRiskUnit>; - safetyRiskUnitData: Array<safetyRiskUnit>; - dangerLevelList: Array<enumType>; - dangerSourceList: Array<enumType>; - dangerResultList: Array<enumType>; - dangerTypeList: Array<enumType>; -} -interface enumType { - id: number; - name: string; -} -interface safetyRiskUnit { - produceDeviceId: number; -} -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus'; -import { hiddenReportApi } from '/@/api/doublePreventSystem/report'; -export default { - name: 'reportDialog', - setup(props: any, context: any) { - const reportFormRef = ref(); - const state = reactive<stateType>({ - title: '', - activeNameOne: 'hiddenInfo', - activeNameTwo: 'rectifyInfo', - isShowReportDialog: false, - departmentList: [], - allProduceDeviceData: [], - allSafetyRiskUnitData: [], - safetyRiskUnitData: [], - dangerLevelList: [ - { id: 1, name: '一般隐患' }, - { id: 2, name: '重大隐患' } - ], - dangerSourceList: [ - { id: 1, name: '日常排查' }, - { id: 2, name: '综合性排查' }, - { id: 3, name: '专业性排查' }, - { id: 4, name: '季节性排查' }, - { id: 5, name: '重点时段及节假日前排查' }, - { id: 6, name: '事故类比排查' }, - { id: 7, name: '复产复工前排查' }, - { id: 8, name: '外聘专家诊断式排查' }, - { id: 9, name: '管控措施失效' }, - { id: 10, name: '其他' } - ], - dangerResultList: [ - { id: 1, name: '无' }, - { id: 2, name: '轻伤' }, - { id: 3, name: '重伤' }, - { id: 4, name: '死亡' } - ], - dangerTypeList: [ - { id: 1, name: '安全' }, - { id: 2, name: '工艺' }, - { id: 3, name: '电气' }, - { id: 4, name: '仪表' }, - { id: 5, name: '消防' }, - { id: 6, name: '总图' }, - { id: 7, name: '设备' }, - { id: 8, name: '其他' } - ], - reportForm: { - dangerDesc: null, - depId: null, - produceDeviceId: null, - riskUnitId: null, - dangerSource: null, - dangerLevel: null, - dangerType: null, - dangerReason: null, - dangerResult: null, - rectifyType: null, - liablePersonId: null, - rectifyTime: null, - cost: null, - rectifyDesc: null - }, - reportFormRules: { - dangerDesc: [{ required: true, message: '请填写隐患情况描述', trigger: 'blur' }], - depId: [{ required: true, message: '请选择隐患所属部门', trigger: 'change' }], - produceDeviceId: [{ required: true, message: '请选择生产装置', trigger: 'change' }] - } - }); - - //打开模态框 - const openReportDialog = (type: string, value: { id: number }, departmentList: [], allProduceDeviceData: [], allSafetyRiskUnitData: []) => { - state.isShowReportDialog = true; - state.departmentList = departmentList; - state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData)); - state.allSafetyRiskUnitData = allSafetyRiskUnitData; - setTimeout(() => { - reportFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.title = '新增隐患'; - state.reportForm = { - dangerDesc: null, - depId: null, - produceDeviceId: null, - riskUnitId: null, - dangerSource: null, - dangerLevel: null, - dangerType: null, - dangerReason: null, - dangerResult: null, - rectifyType: null, - liablePersonId: null, - rectifyTime: null, - cost: null, - rectifyDesc: null - }; - } else { - state.title = '修改隐患'; - state.reportForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitReport = async () => { - reportFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增隐患') { - let res = await hiddenReportApi().addHiddenReport(state.reportForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患新增成功', - duration: 2000 - }); - state.isShowReportDialog = false; - context.emit('refreshReport'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await hiddenReportApi().modHiddenReport(state.reportForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患修改成功', - duration: 2000 - }); - state.isShowReportDialog = false; - context.emit('refreshReport'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const changeUnit = () => { - state.reportForm.riskUnitId = null; - state.safetyRiskUnitData = state.allSafetyRiskUnitData.filter((item) => item.produceDeviceId === state.reportForm.produceDeviceId); - }; - - return { - ...toRefs(state), - changeUnit, - reportFormRef, - submitReport, - openReportDialog - }; - } -}; -</script> - -<style scoped> -:deep(.el-dialog__header) { - padding-bottom: 0px !important; -} -</style> diff --git a/src/views/doublePrevent/riskLevel/map/index.vue b/src/views/doublePrevent/riskLevel/map/index.vue deleted file mode 100644 index 45cd6da..0000000 --- a/src/views/doublePrevent/riskLevel/map/index.vue +++ /dev/null @@ -1,261 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>整改类型:</span> - <el-select class="input-box" v-model="rectifyData.params.rectifyType" placeholder="整改类型" filterable> - <el-option v-for="item in dangerLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>整改单位:</span> - <el-select class="input-box" v-model="rectifyData.params.constructionUnit" placeholder="整改单位" filterable> - <el-option v-for="item in dangerSourceList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>隐患管理:</span> - <el-select class="input-box" v-model="rectifyData.params.dangerManagerId" placeholder="隐患管理" filterable> - <el-option v-for="item in dangerStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table :data="rectifyData.data" style="width: 100%" fit highlight-current-row> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="rectifyDesc" label="整改内容说明" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="rectifyTime" label="整改期限" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="rectifyType" label=" 整改类型" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="liablePerson" label="整改责任人" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="cost" label="整改资金" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip min-width="200px"></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip min-width="150px"></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip min-width="200px"></el-table-column> - <el-table-column label="操作" width="250" fixed="right" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="rectifyData.params.pageIndex" background v-model:page-size="rectifyData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="rectifyData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <rectifyDialog ref="rectifyDialogRef" @refreshrectify="initRectifyTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import rectifyDialog from './components/rectifyDialog.vue'; -import { Edit, Delete } from '@element-plus/icons-vue'; -import { hiddenRectifyApi } from '/@/api/doublePreventSystem/rectify'; -import { departmentApi } from '/@/api/systemManage/department'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - rectifyData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - rectifyType: number | null; - constructionUnit: string | null; - dangerManagerId: number | null; - }; - }; - dangerLevelList: Array<enumType>; - dangerSourceList: Array<enumType>; - dangerStatusList: Array<enumType>; - dangerTypeList: Array<enumType>; - departmentList: []; - allProduceDeviceData: []; -} -interface enumType { - id: number; - name: string; -} - -export default defineComponent({ - name: 'rectify', - components: { rectifyDialog, Edit, Delete }, - setup() { - const rectifyDialogRef = ref(); - const state = reactive<TableDataState>({ - rectifyData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - rectifyType: null, - constructionUnit: null, - dangerManagerId: null - } - }, - departmentList: [], - dangerLevelList: [ - { id: 1, name: '一般隐患' }, - { id: 2, name: '重大隐患' } - ], - dangerSourceList: [ - { id: 1, name: '日常排查' }, - { id: 2, name: '综合性排查' }, - { id: 3, name: '专业性排查' }, - { id: 4, name: '季节性排查' }, - { id: 5, name: '重点时段及节假日前排查' }, - { id: 6, name: '事故类比排查' }, - { id: 7, name: '复产复工前排查' }, - { id: 8, name: '外聘专家诊断式排查' }, - { id: 9, name: '管控措施失效' }, - { id: 10, name: '其他' } - ], - dangerStatusList: [ - { id: 1, name: '整改中' }, - { id: 2, name: '待验收' }, - { id: 3, name: '已验收' } - ], - dangerTypeList: [ - { id: 1, name: '安全' }, - { id: 2, name: '工艺' }, - { id: 3, name: '电气' }, - { id: 4, name: '仪表' }, - { id: 5, name: '消防' }, - { id: 6, name: '总图' }, - { id: 7, name: '设备' }, - { id: 8, name: '其他' } - ], - allProduceDeviceData: [] - }); - // 初始化表格数据 - const initRectifyTableData = async () => { - let res = await hiddenRectifyApi().getHiddenRectifyList(state.rectifyData.params); - if (res.data.code === '200') { - state.rectifyData.data = res.data.data; - state.rectifyData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取生产装置列表 - const getAllProduceDeviceData = async () => { - let res = await productionDeviceApi().getAllProductionDeviceList(); - if (res.data.code === '200') { - state.allProduceDeviceData = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - rectifyDialogRef.value.openrectifyDialog(type, value, state.departmentList, state.allProduceDeviceData); - }; - // 删除 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该巡检点:“${row.code}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await hiddenRectifyApi().deleteHiddenRectify({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initRectifyTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initRectifyTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.rectifyData.params.pageSize = val; - initRectifyTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.rectifyData.params.pageIndex = val; - initRectifyTableData(); - }; - // 页面加载时 - onMounted(() => { - initRectifyTableData(); - getDepartmentData(); - getAllProduceDeviceData(); - }); - - return { - Edit, - Delete, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - rectifyDialog, - rectifyDialogRef, - initRectifyTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskLevel/riskCheckUnit/components/checkUnitDialog.vue b/src/views/doublePrevent/riskLevel/riskCheckUnit/components/checkUnitDialog.vue deleted file mode 100644 index 81ab0c6..0000000 --- a/src/views/doublePrevent/riskLevel/riskCheckUnit/components/checkUnitDialog.vue +++ /dev/null @@ -1,260 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowCheckUnitDialog" append-to-body :close-on-click-modal="false" width="50%"> - <el-divider></el-divider> - <div class="checkUnit-form"> - <el-form :model="checkUnitForm" :rules="checkUnitFormRules" ref="checkUnitFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="任务单元名称" prop="taskUnitName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.taskUnitName" placeholder="请输入任务单元名称" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20"> - <el-form-item label="任务单元说明" prop="note"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.note" placeholder="请输入任务单元说明" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="12" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="checkUnitForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - </div> - - <div class="checkUnit-point"> - <el-tabs class="active" v-model="activeName"> - <el-tab-pane label="检查项信息" name="checkUnit"> - <div class="filter-container"> - <el-button size="default" :disabled="!disabled" type="success" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 选择风险管控措施 - </el-button> - </div> - - <el-table :data="measureData" border fit highlight-current-row style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip align="center"></el-table-column> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button size="small" text :disabled="!disabled" type="danger" @click="onDelCheckUnit(scope.$index, scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - </el-tab-pane> - </el-tabs> - </div> - - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowCheckUnitDialog = !isShowCheckUnitDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitCheckUnit" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog title="选择风险管控措施" v-model="isShowSelectMeasureControlDialog" append-to-body :close-on-click-modal="false" width="70%"> - <select-measure-control-dialog ref="SelectMeasureControlDialogRef" @receiveRiskControlId="receiveRiskControlId"></select-measure-control-dialog> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import SelectMeasureControlDialog from './selectMeasureControlDialog.vue'; -import { reactive, toRefs, ref } from 'vue'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit'; -import { ElMessage } from 'element-plus'; -interface stateType { - isShowCheckUnitDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - isShowSelectMeasureControlDialog: Boolean; - checkUnitForm: { - taskUnitName: string | null; - note: string | null; - measureList: []; - }; - title: string; - activeName: string; - measureData: []; - checkUnitData: []; - checkUnitFormRules: {}; -} - -export default { - name: 'checkUnitDialog', - components: { SelectMeasureControlDialog }, - setup(props: any, context: any) { - const checkUnitFormRef = ref(); - const riskControlMeasureDialogRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - activeName: 'checkUnit', - measureData: [], - checkUnitData: [], - isShowCheckUnitDialog: false, - isShowSelectMeasureControlDialog: false, - checkUnitForm: { - taskUnitName: null, - note: null, - measureList: [] - }, - checkUnitFormRules: { - taskUnitName: [{ required: true, message: '请填写任务单元名称', trigger: 'blur' }], - note: [{ required: true, message: '请填写任务单元说明', trigger: 'change' }] - } - }); - - //打开模态框 - const openCheckUnitDialog = (type: string, value: object) => { - state.isShowCheckUnitDialog = true; - setTimeout(() => { - checkUnitFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增隐患排查单元'; - state.measureData = []; - state.checkUnitForm = { - taskUnitName: null, - note: null, - measureList: [] - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看隐患排查单元'; - state.checkUnitForm = JSON.parse(JSON.stringify(value)); - state.measureData = state.checkUnitForm.measureList; - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改隐患排查单元'; - state.checkUnitForm = JSON.parse(JSON.stringify(value)); - state.measureData = state.checkUnitForm.measureList; - } - }; - - const onOpenDialogRef = () => { - state.isShowSelectMeasureControlDialog = true; - }; - - const onDelCheckUnit = (value: number, scope: object) => { - state.measureData.splice(value, 1); - }; - - const receiveRiskControlId = (value: []) => { - state.isShowSelectMeasureControlDialog = false; - state.measureData = value; - state.checkUnitForm.measureList = JSON.parse( - JSON.stringify( - value.map((item: { id: number }) => { - return item.id; - }) - ) - ); - }; - - //新增修改提交 - const submitCheckUnit = async () => { - checkUnitFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增隐患排查单元') { - let res = await checkUnitApi().addCheckUnit(state.checkUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患排查单元新增成功', - duration: 2000 - }); - state.isShowCheckUnitDialog = false; - context.emit('refreshCheckUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await checkUnitApi().modCheckUnit(state.checkUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '隐患排查单元修改成功', - duration: 2000 - }); - state.isShowCheckUnitDialog = false; - context.emit('refreshCheckUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - checkUnitFormRef, - submitCheckUnit, - onDelCheckUnit, - onOpenDialogRef, - openCheckUnitDialog, - receiveRiskControlId, - riskControlMeasureDialogRef - }; - } -}; -</script> - -<style scoped> -::v-deep.el-divider--horizontal { - margin-top: 0px !important; -} - -::v-deep.el-dialog__body { - padding-top: 10px !important; -} -.filter-container { - padding: 10px 0px; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/riskCheckUnit/components/selectMeasureControlDialog.vue b/src/views/doublePrevent/riskLevel/riskCheckUnit/components/selectMeasureControlDialog.vue deleted file mode 100644 index df01f4a..0000000 --- a/src/views/doublePrevent/riskLevel/riskCheckUnit/components/selectMeasureControlDialog.vue +++ /dev/null @@ -1,219 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>管控方式:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.controlType" placeholder="管控方式" clearable> - <el-option v-for="item in controlTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>安全风险事件:</span> - <el-select class="input-box" v-model="riskControlMeasureData.params.riskEventId" placeholder="安全风险事件" clearable> - <el-option v-for="item in allSafetyRiskEventData" :key="item.id" :label="item.riskEventName" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - <el-table - @selection-change="handleSelectionChange" - ref="table" - :row-key="getRowKey" - :data="riskControlMeasureData.data" - style="width: 100%" - > - <el-table-column type="selection" :reserve-selection="true" width="55"></el-table-column> - <el-table-column prop="riskEventName" label="安全风险事件名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlMeasureCode" label="风控措施编码" show-overflow-tooltip></el-table-column> - <el-table-column prop="controlType" label="管控方式" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.controlType, '管控方式') }} - </template> - </el-table-column> - <el-table-column prop="checkContent" label="管控内容" show-overflow-tooltip></el-table-column> - <el-table-column prop="classify1" label="管控措施分类1" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify1, '管控措施分类1') }} - </template> - </el-table-column> - <el-table-column prop="classify2" label="管控措施分类2" show-overflow-tooltip> - <template #default="scope"> - {{ parseNumber(scope.row.classify2, '管控措施分类2') }} - </template> - </el-table-column> - <el-table-column prop="classify3" label="管控措施分类3" show-overflow-tooltip></el-table-column> - <el-table-column prop="measureDesc" label="措施说明" show-overflow-tooltip></el-table-column>> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button type="text" @click="giveValue(scope.row)">选择 </el-button> - </template> - </el-table-column> - </el-table> - </el-card> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import { riskControlMeasureApi } from '/@/api/doublePreventSystem/riskControlMeasure/index.ts'; -import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - isShowSelectMeasureControlDialog: boolean; - riskControlMeasureIdList: Array<riskControlMeasure>; - riskControlMeasureData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - controlType: number | null; - riskEventId: number | null; - }; - }; - controlTypeList: Array<controlTypeType>; - classifyOneList: Array<classifyOneType>; - classifyTwoList: Array<classifyOneType>; -} -interface controlTypeType { - id: number; - name: string; -} -interface classifyOneType { - id: number; - riskMeasureName: string; -} - -interface riskControlMeasure {} -export default { - name: 'selectMeasureControlDialog', - components: {}, - setup(props: any, context: any) { - const riskControlMeasureDialogRef = ref(); - const state = reactive<TableDataState>({ - isShowSelectMeasureControlDialog: false, - riskControlMeasureIdList: [], - riskControlMeasureData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - controlType: null, - riskEventId: null - } - }, - controlTypeList: [ - { id: 1, name: '自动化监控' }, - { id: 2, name: '隐患排查' } - ], - classifyOneList: [], - classifyTwoList: [] - }); - - // 初始化表格数据 - const initRiskControlMeasureData = async () => { - let res = await riskControlMeasureApi().getAllRiskControlMeasureList(); - if (res.data.code === '200') { - state.riskControlMeasureData.data = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取管控措施分类 - const getClassify = async () => { - let res = await riskControlMeasureApi().getClassifyData(); - if (res.data.code === '200') { - state.classifyOneList = res.data.data.filter((item: any) => item.parentId === null); - state.classifyTwoList = res.data.data.filter((item: any) => item.parentId !== null); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const parseNumber = (value: string | number, type: string) => { - if (type === '管控方式') { - return state.controlTypeList.find((item) => item.id === value)?.name; - } else if (type === '管控措施分类1') { - return state.classifyOneList.find((item) => item.id === value)?.riskMeasureName; - } else { - return state.classifyTwoList.find((item) => item.id === value)?.riskMeasureName; - } - }; - - const handleSearch = () => { - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.riskControlMeasureData.params.pageSize = val; - initRiskControlMeasureData(); - }; - - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.riskControlMeasureData.params.pageIndex = val; - initRiskControlMeasureData(); - }; - - const handleSelectionChange = (val: []) => { - state.riskControlMeasureIdList = val; - }; - - const getRowKey = (value: { id: number }) => { - return value.id; - }; - - const giveValue = () => { - context.emit('receiveRiskControlId', state.riskControlMeasureIdList); - }; - - // 页面加载时 - onMounted(() => { - initRiskControlMeasureData(); - getClassify(); - }); - - return { - handleSearch, - parseNumber, - getRowKey, - giveValue, - handleSelectionChange, - onHandleSizeChange, - onHandleCurrentChange, - riskControlMeasureDialogRef, - initRiskControlMeasureData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskLevel/riskCheckUnit/index.vue b/src/views/doublePrevent/riskLevel/riskCheckUnit/index.vue deleted file mode 100644 index ad9a72f..0000000 --- a/src/views/doublePrevent/riskLevel/riskCheckUnit/index.vue +++ /dev/null @@ -1,194 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <!-- <div class="basic-line">--> - <!-- <span>风险等级:</span>--> - <!-- <el-select v-model="checkUnitData.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>--> - <!-- </el-select>--> - <!-- </div>--> - <!-- <div class="basic-line">--> - <!-- <span>部门:</span>--> - <!-- <el-cascader :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable class="input-box" v-model="checkUnitData.params.depId"> </el-cascader>--> - <!-- </div>--> - <div class="basic-line"> - <span>任务单元名称:</span> - <el-input class="input-box" v-model="checkUnitData.params.taskUnitName" placeholder="任务单元名称" clearable> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增排查单元 - </el-button> - </div> - <el-table :data="checkUnitData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="taskUnitName" label="任务单元名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="note" label="任务单元说明" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelcheckUnit(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="checkUnitData.params.pageIndex" background v-model:page-size="checkUnitData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="checkUnitData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <checkUnitDialog ref="checkUnitDialogRef" @refreshCheckUnit="initCheckUnitTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import checkUnitDialog from './components/checkUnitDialog.vue'; -import { checkUnitApi } from '/@/api/doublePreventSystem/checkUnit/index.ts'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - checkUnitData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - taskUnitName: number | null; - }; - }; -} - -export default defineComponent({ - name: 'index', - components: { checkUnitDialog, Edit, Delete, View }, - setup() { - const checkUnitDialogRef = ref(); - const state = reactive<TableDataState>({ - checkUnitData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - taskUnitId: null - } - } - }); - // 初始化表格数据 - const initCheckUnitTableData = async () => { - let res = await checkUnitApi().getCheckUnitList(state.checkUnitData.params); - if (res.data.code === '200') { - state.checkUnitData.data = res.data.data; - state.checkUnitData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - checkUnitDialogRef.value.openCheckUnitDialog(type, value); - }; - // 删除角色 - const onDelCheckUnit = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条生产装置:“${row.produceDeviceName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await checkUnitApi().deleteCheckUnit({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initCheckUnitTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initCheckUnitTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.checkUnitData.params.pageSize = val; - initCheckUnitTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.checkUnitData.params.pageIndex = val; - initCheckUnitTableData(); - }; - // 页面加载时 - onMounted(() => { - initCheckUnitTableData(); - }); - - return { - Edit, - Delete, - View, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelCheckUnit, - onHandleCurrentChange, - checkUnitDialog, - checkUnitDialogRef, - initCheckUnitTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/doublePrevent/riskLevel/unit/components/safetyRiskAnalyseUnitDialog.vue b/src/views/doublePrevent/riskLevel/unit/components/safetyRiskAnalyseUnitDialog.vue deleted file mode 100644 index 4723b27..0000000 --- a/src/views/doublePrevent/riskLevel/unit/components/safetyRiskAnalyseUnitDialog.vue +++ /dev/null @@ -1,227 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isSafetyRiskAnalyseUnitDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="safetyRiskAnalyseUnitForm" :rules="safetyRiskAnalyseUnitFormRules" ref="safetyRiskAnalyseUnitFormRef" size="default" label-width="180px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="安全风险分析单元名称" prop="riskUnitName"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.riskUnitName" 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="riskCode"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.riskCode" 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="produceDeviceId"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyRiskAnalyseUnitForm.produceDeviceId" placeholder="请输入生产装置名称" clearable> - <el-option v-for="item in allProduceDeviceData" :key="item.id" :label="item.produceDeviceName" :value="item.id"></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="liableDepId"> - <el-cascader class="input-add" @change="achieveUserList" :disabled="!disabled" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable filterable style="width: 85%" v-model="safetyRiskAnalyseUnitForm.liableDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="责任人" prop="liablePersonId"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyRiskAnalyseUnitForm.liablePersonId" placeholder="请选择责任人" clearable filterable> - <el-option v-for="item in userList" :key="item.uid" :label="item.realName" :value="item.uid"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.createByUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.gmtCreate" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.lastEditUserName" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyRiskAnalyseUnitForm.gmtModitify" placeholder="请输入区域位置"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isSafetyRiskAnalyseUnitDialog = !isSafetyRiskAnalyseUnitDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitSafetyRiskAnalyseUnitDialog" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isSafetyRiskAnalyseUnitDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - safetyRiskAnalyseUnitForm: { - riskCode: string | null; - riskUnitName: string | null; - liablePersonId: number | null; - liableDepId: number | null; - produceDeviceId: number | null; - }; - title: string; - userList: any[]; - departmentList: []; - allProduceDeviceData: []; - safetyRiskAnalyseUnitFormRules: {}; -} -import { reactive, toRefs, ref } from 'vue'; -import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit'; -import { ElMessage } from 'element-plus'; -import { userApi } from '/@/api/systemManage/user'; -import { getUserByDepartment } from '/@/assets/methods'; -export default { - name: 'productionDeviceDialog', - setup(props: any, context: any) { - const safetyRiskAnalyseUnitFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - userList: [], - departmentList: [], - allProduceDeviceData: [], - isSafetyRiskAnalyseUnitDialog: false, - safetyRiskAnalyseUnitForm: { - riskCode: null, - riskUnitName: null, - liablePersonId: null, - liableDepId: null, - produceDeviceId: null - }, - safetyRiskAnalyseUnitFormRules: { - 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' }] - } - }); - - //打开模态框 - const openSafetyRiskAnalyseUnitDialog = (type: string, value: object, department: [], allProduceDeviceData: []) => { - // console.log(jsonBig.stringify(123124124124214123131)) - state.isSafetyRiskAnalyseUnitDialog = true; - state.allProduceDeviceData = JSON.parse(JSON.stringify(allProduceDeviceData)); - state.departmentList = department; - setTimeout(() => { - safetyRiskAnalyseUnitFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增风险分析单元'; - state.safetyRiskAnalyseUnitForm = { - riskCode: null, - riskUnitName: null, - liablePersonId: null, - liableDepId: null, - produceDeviceId: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看风险分析单元'; - state.safetyRiskAnalyseUnitForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改风险分析单元'; - state.safetyRiskAnalyseUnitForm = JSON.parse(JSON.stringify(value)); - } - }; - - //新增修改提交 - const submitSafetyRiskAnalyseUnitDialog = async () => { - safetyRiskAnalyseUnitFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增风险分析单元') { - let res = await safetyRiskAnalyseUnitApi().addSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险分析单元新增成功', - duration: 2000 - }); - state.isSafetyRiskAnalyseUnitDialog = false; - context.emit('refreshSafetyRiskAnalyseUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await safetyRiskAnalyseUnitApi().modSafetyRiskAnalyseUnit(state.safetyRiskAnalyseUnitForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '风险分析单元修改成功', - duration: 2000 - }); - state.isSafetyRiskAnalyseUnitDialog = false; - context.emit('refreshSafetyRiskAnalyseUnit'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const achieveUserList = async () => { - state.safetyRiskAnalyseUnitForm.liablePersonId = null; - const userList: unknown = await getUserByDepartment(state.safetyRiskAnalyseUnitForm.liableDepId); - state.userList = userList as []; - }; - - // //获取用户列表 - // const getUserData = async () => { - // let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitForm.liableDepId); - // if (res.data.code === '200') { - // state.userList = res.data.data; - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - - return { - ...toRefs(state), - achieveUserList, - safetyRiskAnalyseUnitFormRef, - submitSafetyRiskAnalyseUnitDialog, - openSafetyRiskAnalyseUnitDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/doublePrevent/riskLevel/unit/index.vue b/src/views/doublePrevent/riskLevel/unit/index.vue deleted file mode 100644 index ec369c6..0000000 --- a/src/views/doublePrevent/riskLevel/unit/index.vue +++ /dev/null @@ -1,265 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>责任部门:</span> - <el-cascader @change="achieveUserList" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="责任部门" clearable filterable class="input-box" v-model="safetyRiskAnalyseUnitData.params.liableDepId"> </el-cascader> - </div> - <div class="basic-line"> - <span>责任人:</span> - <el-select v-model="safetyRiskAnalyseUnitData.params.liablePersonId" clearable filterable class="input-box" placeholder="责任人"> - <el-option v-for="item in userList" :key="item.uid" :label="item.realName" :value="item.uid"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>单元名称:</span> - <el-input v-model="safetyRiskAnalyseUnitData.params.riskUnitName" clearable filterable class="input-box" placeholder="单元名称"> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增单元 - </el-button> - </div> - <el-table :data="safetyRiskAnalyseUnitData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="produceDeviceName" label="生产装置名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskUnitName" label="安全风险分析单元名称" width="180" show-overflow-tooltip></el-table-column> - <el-table-column prop="riskCode" label="安全风险分析对象编码" width="180" show-overflow-tooltip></el-table-column> - <el-table-column prop="liableDep" label="责任部门" show-overflow-tooltip></el-table-column> - <el-table-column prop="liablePerson" label="责任人" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="200" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="View" @click="onOpenDialogRef('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelRiskUnit(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="page-position" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="safetyRiskAnalyseUnitData.params.pageIndex" background v-model:page-size="safetyRiskAnalyseUnitData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="safetyRiskAnalyseUnitData.total"> </el-pagination> - <br /> - <br /> - </el-card> - <safetyRiskAnalyseUnitDialog ref="safetyRiskAnalyseUnitDialogRef" @refreshSafetyRiskAnalyseUnit="initSafetyRiskAnalyseUnitData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import safetyRiskAnalyseUnitDialog from './components/safetyRiskAnalyseUnitDialog.vue'; -import { safetyRiskAnalyseUnitApi } from '/@/api/doublePreventSystem/safetyRiskAnalyseUnit/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import { userApi } from '/@/api/systemManage/user'; -import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice'; -import { Edit, Delete, View } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - roleName: string; - roleSign: string; - describe: string; - sort: number; - status: boolean; - createTime: string; -} -interface TableDataState { - safetyRiskAnalyseUnitData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - riskUnitName: string | null; - liableDepId: number | null; - liablePersonId: number | null; - }; - }; - userList: Array<UserState>; - departmentList: Array<DepartmentState>; - allProduceDeviceData: Array<produceDeviceState>; -} -interface produceDeviceState {} -interface DepartmentState {} -interface UserState {} - -export default { - name: 'productionDevice', - components: { safetyRiskAnalyseUnitDialog, Edit, Delete, View }, - setup() { - const safetyRiskAnalyseUnitDialogRef = ref(); - const state = reactive<TableDataState>({ - safetyRiskAnalyseUnitData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - riskUnitName: null, - liableDepId: null, - liablePersonId: null - } - }, - userList: [], - departmentList: [], - allProduceDeviceData: [] - }); - // 初始化表格数据 - const initSafetyRiskAnalyseUnitData = async () => { - let res = await safetyRiskAnalyseUnitApi().getSafetyRiskAnalyseUnitList(state.safetyRiskAnalyseUnitData.params); - if (res.data.code === '200') { - state.safetyRiskAnalyseUnitData.data = res.data.data; - state.safetyRiskAnalyseUnitData.total = res.data.count; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const achieveUserList = () => { - state.safetyRiskAnalyseUnitData.params.liablePersonId = null; - state.userList = []; - getUserData(); - }; - - //获取生产装置列表 - const getAllProduceDeviceData = async () => { - let res = await productionDeviceApi().getAllProductionDeviceList(); - if (res.data.code === '200') { - state.allProduceDeviceData = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门列表 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取用户列表 - const getUserData = async () => { - let res = await userApi().getUserLByDepartment(state.safetyRiskAnalyseUnitData.params.liableDepId); - if (res.data.code === '200') { - state.userList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - safetyRiskAnalyseUnitDialogRef.value.openSafetyRiskAnalyseUnitDialog(type, value, state.departmentList, state.allProduceDeviceData); - }; - - // 删除角色 - const onDelRiskUnit = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条安全风险分析单元:“${row.riskUnitName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await safetyRiskAnalyseUnitApi().deleteSafetyRiskAnalyseUnit({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initSafetyRiskAnalyseUnitData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initSafetyRiskAnalyseUnitData(); - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.safetyRiskAnalyseUnitData.params.pageSize = val; - initSafetyRiskAnalyseUnitData(); - }; - - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.safetyRiskAnalyseUnitData.params.pageIndex = val; - initSafetyRiskAnalyseUnitData(); - }; - - // 页面加载时 - onMounted(() => { - initSafetyRiskAnalyseUnitData(); - getAllProduceDeviceData(); - getDepartmentData(); - }); - - return { - Edit, - Delete, - View, - handleSearch, - achieveUserList, - onOpenDialogRef, - onHandleSizeChange, - onDelRiskUnit, - onHandleCurrentChange, - safetyRiskAnalyseUnitDialog, - safetyRiskAnalyseUnitDialogRef, - initSafetyRiskAnalyseUnitData, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/facilityManagement/EquipmentStatistics/index.vue b/src/views/facilityManagement/EquipmentStatistics/index.vue deleted file mode 100644 index 136eea1..0000000 --- a/src/views/facilityManagement/EquipmentStatistics/index.vue +++ /dev/null @@ -1,101 +0,0 @@ -<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++) { - if (arr[i].stopStatus == 1) { - date[0] = arr[i].count; - } else if (arr[i].stopStatus == 2) { - date[1] = arr[i].count; - }else if (arr[i].stopStatus == 3) { - date[2] = arr[i].count; - }else if (arr[i].stopStatus == 4) { - date[3] = arr[i].count; - }else if (arr[i].stopStatus == -1) { - date[4] = 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 deleted file mode 100644 index 9d64291..0000000 --- a/src/views/facilityManagement/InstrumentationInformation/index.vue +++ /dev/null @@ -1,391 +0,0 @@ -<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" - @click="openD('修改', deletAll[0])">修改</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="leadingPersonName" align="center" label="保养负责人" sortable /> - <el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable /> - <el-table-column property="leadingPersonDepartmentName" 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="leadingPersonName" 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="testPersonName" align="center" label="检测人" sortable /> - <el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable /> - <el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable /> - <el-table-column property="testMemo" align="center" label="检测内容" sortable /> - <el-table-column align="center" label="检测结果"> - <template #default="scope"> - <span v-if="scope.row.testResult == 1">成功</span> - <span v-if="scope.row.testResult == 2">失败</span> - </template> - </el-table-column> - <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 align="center" label="维修状态"> - <template #default="scope"> - <span v-if="scope.row.repairStatus == 1">维修中</span> - <span v-if="scope.row.repairStatus == 2">已修好</span> - </template> - </el-table-column> - <el-table-column property="repairMemo" align="center" label="维修情况" sortable /> - <el-table-column property="repairPersonName" align="center" label="维修负责人" sortable /> - <el-table-column property="repairPersonDepartmentName" align="center" label="维修负责人单位" sortable /> - <el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable /> - <el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable /> - </el-table> - </el-tab-pane> - </el-tabs> - </template> - </el-table-column> - <el-table-column property="qName" label="装置设施名称" align="center" sortable /> - <el-table-column property="positionNum" align="center" label="装置设施位号" sortable /> - <el-table-column property="qUsage" align="center" label="装置设施用途" sortable /> - <el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip /> - <el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip /> - <el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip /> - <el-table-column label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button> - <el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button> - <el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pages"> - <el-pagination - v-model:currentPage="currentPage4" - v-model:page-size="pageSize4" - :page-sizes="[10, 20, 30, 40]" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </el-col> - </el-row> - <!-- <updata ref="Show"></updata> --> - <Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog> - </div> -</template> -<script lang="ts"> -import { defineComponent, ref, reactive, watch, onMounted } from 'vue'; -import { timeDate } from '/@/assets/index.ts'; -import updata from '/@/components/updata/updata.vue'; -import Dailog from '/@/components/equipmentDailog/Dailog.vue'; -import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus'; -import { facilityManagementApi } from '/@/api/facilityManagement'; -import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue'; -interface Tree { - label: string; - children?: Tree[]; -} -export default defineComponent({ - components: { updata, Dailog }, - setup() { - // 搜索条件 - const ruleForm = reactive({ - pageSize: 10, - pageIndex: 1, - searchParams: { - qName: '', ////名称 - positionNum: '', ////位号 - equipmentTypeId: '', - infoType: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.qName = ''; - ruleForm.searchParams.positionNum = ''; - ruleForm.searchParams.equipmentTypeId = ''; - listApiTree() - 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.sortNum; - ruleForm.searchParams.equipmentTypeId = data.id; - listApi(); - }; - const data = ref([]); - onMounted(() => { - listApiTree(); - }); - const handleClicks = (tab: TabsPaneContext, event: Event) => { - console.log(tab, event); - }; - - const activeName = ref('first'); - // const Show=ref() - // const openUp=()=>{ - // Show.value.openDialog() - // } - return { - handleNodeClick, - ruleForm, - timeDate, - resetForm, - listApi, - onAddorUpdata, - tableData, - currentPage4, - pageSize4, - total, - handleSizeChange, - handleCurrentChange, - onDelete, - warning, - danger, - deletAll, - handleSelectionChange, - onDeleteAll, - listApiTree, - handleClicks, - filterText, - treeRef, - props, - filterNode, - data, - openAdd, - openD, - activeName, - Plus, - EditPen, - Delete, - Download, - Refresh, - View, - Upload, - }; - }, -}); -</script> -<style scoped> -.topTitle { - background-color: #fff; - padding: 20px 0px 20px 0px; - margin-bottom: 10px; -} -.tree { - height: 750px; - background-color: #fff; - overflow: hidden; - overflow-y: auto; -} -.btns { - padding: 10px 0px 10px 10px; - display: flex; - justify-content: space-between; - background-color: #fff; -} -</style> diff --git a/src/views/facilityManagement/ProductionEquipment/index.vue b/src/views/facilityManagement/ProductionEquipment/index.vue deleted file mode 100644 index 70edf54..0000000 --- a/src/views/facilityManagement/ProductionEquipment/index.vue +++ /dev/null @@ -1,390 +0,0 @@ -<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" - @click="openD('修改', deletAll[0])">修改</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="leadingPersonName" align="center" label="保养负责人" sortable /> - <el-table-column property="takecareDate" align="center" label="保养日期" sortable /> - <el-table-column property="leadingPersonDepartmentName" 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="leadingPersonName" 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="testPersonName" align="center" label="检测人" sortable /> - <el-table-column property="testDate" align="center" label="检测日期" sortable /> - <el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable /> - <el-table-column property="testMemo" align="center" label="检测内容" sortable /> - <el-table-column align="center" label="检测结果"> - <template #default="scope"> - <span v-if="scope.row.testResult == 1">成功</span> - <span v-if="scope.row.testResult == 2">失败</span> - </template> - </el-table-column> - <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 align="center" label="维修状态"> - <template #default="scope"> - <span v-if="scope.row.repairStatus == 1">维修中</span> - <span v-if="scope.row.repairStatus == 2">已修好</span> - </template> - </el-table-column> - <el-table-column property="repairMemo" align="center" label="维修情况" sortable /> - <el-table-column property="repairPersonName" align="center" label="维修负责人" sortable /> - <el-table-column property="repairPersonDepartmentName" 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: '', ////位号 - equipmentTypeId:"", - infoType: 1, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.qName = ''; - ruleForm.searchParams.positionNum = ''; - ruleForm.searchParams.equipmentTypeId = ''; - listApiTree() - 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.equipmentTypeId=data.id - ruleForm.searchParams.equipmentTypeId = 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/claimReturnRecords/components/invalidDealDialog.vue b/src/views/facilityManagement/claimReturnRecords/components/invalidDealDialog.vue deleted file mode 100644 index 7f0503e..0000000 --- a/src/views/facilityManagement/claimReturnRecords/components/invalidDealDialog.vue +++ /dev/null @@ -1,85 +0,0 @@ -<template> - <div> - <el-dialog :title="invalidDealState.title" :close-on-click-modal="false" v-model="invalidDealState.invalidDealDialogVisible" width="30%"> - <el-form - :model="invalidDealState.invalidDealForm" - ref="invalidDealFormRef" - size="default" - label-width="150px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="失效原因:" prop="reason"> - <el-select class="input-add" v-model="invalidDealState.invalidDealForm.reason" placeholder="失效原因"> - <el-option - v-for="item in invalidDealState.reasonList" - :key="item.id" - :value="item.id" - :label="item.name" - ></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="备注:" prop="remark"> - <el-input type="textarea" :rows="3" v-model="invalidDealState.invalidDealForm.remark" placeholder="备注" class="input-add"> - </el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="invalidDealState.invalidDealDialogVisible = !invalidDealState.invalidDealDialogVisible" size="default">取 消</el-button> - <el-button type="primary" @click="submitInvalidDeal" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> -import { reactive, ref } from 'vue' -import {InvalidDealStateType, materialType} from '..' - -const invalidDealFormRef = ref() - -const invalidDealState = reactive<InvalidDealStateType>({ - title: '', - invalidDealDialogVisible: false, - invalidDealForm: { - id: null, - reason: null, - remark: null, - }, - reasonList:[ - {id: 0, name:'完好'}, - {id: 1, name:'损坏'}, - {id: 2, name:'丢失'}, - {id: 3, name:'过期'}, - {id: 4, name:'其他'} - ] -}) - -const openInvalidDealDialog = (value: materialType) => { - invalidDealState.invalidDealDialogVisible = true - invalidDealState.invalidDealForm.id = value.id - invalidDealState.invalidDealForm.reason = value.materialStatus - invalidDealState.invalidDealForm.remark = value.remark -} - -const submitInvalidDeal = () => { - emit('refreshInvalidDeal',invalidDealState.invalidDealForm) - invalidDealState.invalidDealDialogVisible = false -} - -const emit = defineEmits(['refreshInvalidDeal']) - -defineExpose({ - openInvalidDealDialog -}) - -</script> - -<style scoped> - -</style> diff --git a/src/views/facilityManagement/claimReturnRecords/components/returnAndWatch.vue b/src/views/facilityManagement/claimReturnRecords/components/returnAndWatch.vue deleted file mode 100644 index 49f4fdd..0000000 --- a/src/views/facilityManagement/claimReturnRecords/components/returnAndWatch.vue +++ /dev/null @@ -1,239 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="returnAndWatchState.title" :close-on-click-modal="false" v-model="returnAndWatchState.showReturnAndWatchDialog" width="50%"> - <el-tabs class="active" v-model="returnAndWatchState.activeName"> - <el-tab-pane label="未归还" name="noReturn"> - <el-table - :data="returnAndWatchState.noReturnData" - border fit highlight-current-row lazy - :header-cell-style="{ background: '#fafafa' }" - style="width: 100%" - @selection-change="handleSelectionChange" - > - <el-table-column v-if="returnAndWatchState.ifShow === true" type="selection" width="55"/> - <el-table-column prop="materialName" label="物资名称" show-overflow-tooltip align="center"/> - <el-table-column prop="smdId" label="物资编号" show-overflow-tooltip align="center"/> - <el-table-column prop="materialStatus" label="物资状态" show-overflow-tooltip align="center"> - <template #default="scope"> - <span> - {{ filterMaterialStatus(scope.row.materialStatus) }} - </span> - </template> - </el-table-column> - <el-table-column prop="remark" label="备注" show-overflow-tooltip align="center"/> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button size="small" v-if="returnAndWatchState.ifShow === true" text type="danger" :icon="Delete" @click="invalidDeal(scope.row)">无效处理</el-button> - </template> - </el-table-column> - </el-table> - <div style="padding-top: 20px" align="center"> - <span> - <el-button type="primary" v-if="returnAndWatchState.ifShow === true" @click="returnConfirm" v-throttle size="default">归 还</el-button> - </span> - </div> - - </el-tab-pane> - <el-tab-pane label="已归还" name="return"> - <el-table - :data="returnAndWatchState.returnData" - border fit highlight-current-row lazy - :header-cell-style="{ background: '#fafafa' }" - style="width: 100%"> - <el-table-column prop="materialName" label="物资名称" show-overflow-tooltip align="center"/> - <el-table-column prop="smdId" label="物资编号" show-overflow-tooltip align="center"/> - <el-table-column prop="materialStatus" label="物资状态" show-overflow-tooltip align="center"> - <template #default="scope"> - <span> - {{ filterMaterialStatus(scope.row.materialStatus) }} - </span> - </template> - </el-table-column> - <el-table-column prop="remark" label="备注" show-overflow-tooltip align="center"/> - </el-table> - </el-tab-pane> - <el-tab-pane label="耗材" name="Invalid"> - <el-table - :data="returnAndWatchState.invalidData" - border fit highlight-current-row lazy - :header-cell-style="{ background: '#fafafa' }" - style="width: 100%"> - <el-table-column prop="materialName" label="物资名称" show-overflow-tooltip align="center"/> - <el-table-column prop="smdId" label="物资编号" show-overflow-tooltip align="center"/> - <el-table-column prop="materialStatus" label="物资状态" show-overflow-tooltip align="center"> - <template #default="scope"> - <span> - {{ filterMaterialStatus(scope.row.materialStatus) }} - </span> - </template> - </el-table-column> - <el-table-column prop="remark" label="备注" show-overflow-tooltip align="center"/> - </el-table> - </el-tab-pane> - </el-tabs> - </el-dialog> - <invalid-deal-dialog ref="invalidDealDialogRef" @refreshInvalidDeal="refreshInvalidDeal"></invalid-deal-dialog> - </div> -</template> - -<script setup lang="ts"> -import {computed, nextTick, onMounted, reactive, ref, toRefs, watch} from 'vue' -import { Edit, Delete, } from '@element-plus/icons-vue'; -import { - claimReturnDataType, InvalidDealFormType, - materialType, - ReturnAndWatchType -} from "/@/views/facilityManagement/claimReturnRecords/index"; -import {ElMessage, ElMessageBox} from "element-plus"; -import {claimReturnRecordsApi} from "/@/api/facilityManagement/claimReturnRecords"; -import InvalidDealDialog from './invalidDealDialog.vue' - -const invalidDealDialogRef = ref() - -const returnAndWatchState = reactive<ReturnAndWatchType>({ - title: '', - ifShow: false, - goodsClassifyTitle: '', - showReturnAndWatchDialog: false, - activeName: 'noReturn', - goodsClassifyForm: { - id: null, - materialClassifyName: '', - parentId: null, - }, - goodsClassifyRules: { - - }, - returnData: [], - noReturnData: [], - invalidData: [], - returnFormList: { - receiveBaseId: null, - materialList: [] - }, - reasonList:[ - {id: 0, name:'完好'}, - {id: 1, name:'损坏'}, - {id: 2, name:'丢失'}, - {id: 3, name:'过期'}, - {id: 4, name:'其他'} - ] -}); - -const openReturnAndWatchDialog = (title: string, value: claimReturnDataType ) => { - returnAndWatchState.showReturnAndWatchDialog = true; - returnAndWatchState.returnFormList.receiveBaseId = value.id; - if(title === '归还'){ - returnAndWatchState.ifShow = true; - returnAndWatchState.title = '归还记录'; - returnAndWatchState.returnData = value.materialList.filter(item => item.revertStatus === 0); - returnAndWatchState.noReturnData = JSON.parse(JSON.stringify(value.materialList.filter(item => item.revertStatus === 1))); - returnAndWatchState.invalidData = value.materialList.filter(item => item.revertStatus !== 0 && item.revertStatus !== 1); - }else { - returnAndWatchState.ifShow = false; - returnAndWatchState.title = '查看物资'; - returnAndWatchState.returnData = value.materialList.filter(item => item.revertStatus === 0); - returnAndWatchState.noReturnData = value.materialList.filter(item => item.revertStatus === 1); - returnAndWatchState.invalidData = value.materialList.filter(item => item.revertStatus !== 0 && item.revertStatus !== 1); - } -}; - -const returnConfirm = () => { - if(returnAndWatchState.returnFormList.materialList.length > 0){ - ElMessageBox.confirm(`此操作将把所选中物资全部归还,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await claimReturnRecordsApi().returnGoods(returnAndWatchState.returnFormList); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '物资归还成功' - }); - await refreshReturnTableData() - emit('refreshReturnData') - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }else{ - ElMessage({ - type:'warning', - message: '请选择要归还的物资' - }) - } -}; - -const refreshReturnTableData = async () => { - let res = await claimReturnRecordsApi().refreshReturnAndNoReturn({id: returnAndWatchState.returnFormList.receiveBaseId}) - if(res.data.code === '200'){ - returnAndWatchState.returnData = res.data.data.materialList.filter((item: materialType) => item.revertStatus === 0); - returnAndWatchState.noReturnData = res.data.data.materialList.filter((item: materialType) => item.revertStatus === 1); - returnAndWatchState.invalidData = res.data.data.materialList.filter((item: materialType) => item.revertStatus !== 0 && item.revertStatus !== 1); - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } -} - -const invalidDeal = (value: materialType) => { - invalidDealDialogRef.value.openInvalidDealDialog(value) -}; - -const refreshInvalidDeal = (value: InvalidDealFormType) => { - let returnDataNum = returnAndWatchState.noReturnData.findIndex(item => item.id == value.id) - returnAndWatchState.noReturnData[returnDataNum].materialStatus = value.reason as number - returnAndWatchState.noReturnData[returnDataNum].remark = value.remark as string - for(let i in returnAndWatchState.returnFormList.materialList){ - if(returnAndWatchState.returnFormList.materialList[i].receiveId === value.id){ - returnAndWatchState.returnFormList.materialList[i] = { - receiveId: value.id, - materialStatus: value.reason, - remark: value.remark, - } - } - } -}; - -const handleSelectionChange = (val: materialType []) => { - returnAndWatchState.returnFormList.materialList = val.map((item: materialType) => { - return { - receiveId: item.id, - materialStatus: item.materialStatus, - remark: item.remark, - } - }) -}; - -const filterMaterialStatus = (value: number) => { - return returnAndWatchState.reasonList.find(item => item.id === value)?.name -}; - -const emit = defineEmits(['refreshReturnData']); - -defineExpose({ - openReturnAndWatchDialog, -}); - - -</script> - -<style scoped> -/*:deep(.el-overlay .el-overlay-dialog .el-dialog .el-dialog__body) {*/ -/* padding-bottom: 20px !important;*/ -/*}*/ -:deep(.el-table .big-row) { - font-size: 16px !important; - font-weight: 700; -} - -</style> diff --git a/src/views/facilityManagement/claimReturnRecords/index.ts b/src/views/facilityManagement/claimReturnRecords/index.ts deleted file mode 100644 index bd9130c..0000000 --- a/src/views/facilityManagement/claimReturnRecords/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -export interface ClaimReturnRecordsType { - tableLoading: boolean, - total: number, - timeValue: Array<string>, - claimReturnData: Array<claimReturnDataType> , - listQuery: { - pageSize: number, - pageIndex: number, - searchParams: { - materialName: string| null, - receiveUname: string | null, - endTime: string | null, - startTime: string | null, - } - }, -} - -export interface ReturnAndWatchType { - title: string, - ifShow: Boolean, - goodsClassifyTitle: string, - showReturnAndWatchDialog: boolean, - activeName: string, - goodsClassifyForm: { - id: null, - materialClassifyName: '', - parentId: null, - }, - goodsClassifyRules: { - - }, - returnData: materialType [], - noReturnData: materialType [], - invalidData: materialType [], - returnFormList: { - receiveBaseId: null | number, - materialList: returnFormListType [] , - }, - reasonList: Type [] -} - -export interface claimReturnDataType { - id: number, - materialList: materialType [], -} - -export interface materialType { - id: number, - materialStatus: number, - revertStatus: number, - remark: string | null, -} - -export interface returnFormListType { - receiveId: number, - materialStatus: number | null, - remark: string | null, -} - -export interface InvalidDealStateType { - title: string, - invalidDealDialogVisible: boolean, - invalidDealForm: InvalidDealFormType, - reasonList: Type [] -} - -export interface InvalidDealFormType { - id: number | null, - reason: number | null, - remark: string | null, -} - -export interface Type { - id: number, - name: string, -} diff --git a/src/views/facilityManagement/claimReturnRecords/index.vue b/src/views/facilityManagement/claimReturnRecords/index.vue deleted file mode 100644 index e4cf148..0000000 --- a/src/views/facilityManagement/claimReturnRecords/index.vue +++ /dev/null @@ -1,258 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>领取时间:</span> - <el-date-picker - value-format="YYYY-MM-DD" - v-model="claimReturnRecordsState.timeValue" - type="daterange" - range-separator="To" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </div> -<!-- <div class="basic-line">--> -<!-- <span>领取人:</span>--> -<!-- <el-input class="input-box2" v-model="claimReturnRecordsState.listQuery.searchParams.materialName" placeholder="领取人" clearable> </el-input>--> -<!-- </div>--> - <div> - <el-button size="large" type="primary" class="ml10" v-throttle @click="initClaimReturnData"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-table element-loading-text="Loading..." v-loading="claimReturnRecordsState.tableLoading" :data="claimReturnRecordsState.claimReturnData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="createTime" label="物资领取时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="receiveUname" label="领取人" show-overflow-tooltip></el-table-column> - <el-table-column prop="materialName" label="物资" show-overflow-tooltip></el-table-column> - <el-table-column prop="receiveCount" label="领取数量" show-overflow-tooltip></el-table-column> - <el-table-column prop="revertCount" label="已归还数量" show-overflow-tooltip></el-table-column> - <el-table-column prop="statusName" label="归还情况" show-overflow-tooltip> - <template #default="scope"> - <el-tag :type="scope.row.status === 0 ? 'danger' : scope.row.status === 1 ? 'warning' : scope.row.status === 2 ? 'success' : ''"> - <span> - {{ scope.row.statusName }} - </span> - </el-tag> - </template> - </el-table-column> - <el-table-column label="操作" width="250" align="center"> - <template #default="scope"> - <el-button size="small" text type="success" @click="onOpenReturnGoodsDialog('归还', scope.row)">归还</el-button> - <el-button size="small" text type="primary" @click="onOpenReturnGoodsDialog('查看物资', scope.row)">查看物资</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="claimReturnRecordsState.listQuery.pageIndex" background v-model:page-size="claimReturnRecordsState.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="claimReturnRecordsState.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - <return-and-watch ref="returnAndWatchRef" @refreshReturnData="initClaimReturnData"></return-and-watch> - </div> -</template> - -<script setup lang="ts"> -import {onMounted, reactive, watch, ref} from "vue"; -import { - claimReturnDataType, - ClaimReturnRecordsType, - materialType -} from "/@/views/facilityManagement/claimReturnRecords/index"; -import {claimReturnRecordsApi} from "/@/api/facilityManagement/claimReturnRecords"; -import {ElMessage} from "element-plus"; -import ReturnAndWatch from "/@/views/facilityManagement/claimReturnRecords/components/returnAndWatch.vue"; - -const returnAndWatchRef = ref(); - -const claimReturnRecordsState = reactive<ClaimReturnRecordsType>({ - tableLoading: true, - total: 0, - timeValue: [], - claimReturnData: [], - listQuery: { - pageSize: 10, - pageIndex: 1, - searchParams: { - materialName: null, - receiveUname: null, - endTime: null, - startTime: null, - } - }, -}); - -watch(() => claimReturnRecordsState.timeValue, (newVal, oldVal) => { - claimReturnRecordsState.listQuery.searchParams.startTime = newVal?.[0] || null; - claimReturnRecordsState.listQuery.searchParams.endTime = newVal?.[1] || null; -}) - -const initClaimReturnData = async () => { - claimReturnRecordsState.tableLoading = true; - let res = await claimReturnRecordsApi().getClaimReturnRecords(claimReturnRecordsState.listQuery); - if(res.data.code === '200') { - claimReturnRecordsState.claimReturnData = res.data.data; - claimReturnRecordsState.total = res.data.total; - }else { - ElMessage({ - type:'warning', - message: res.data.msg - }); - } - claimReturnRecordsState.tableLoading = false; -}; - -const onOpenReturnGoodsDialog = (title: string, value: claimReturnDataType) => { - returnAndWatchRef.value.openReturnAndWatchDialog(title, value) -} - -const onHandleSizeChange = (val: number) => { - claimReturnRecordsState.listQuery.pageSize = val; - initClaimReturnData(); -}; - -const onHandleCurrentChange = (val: number) => { - claimReturnRecordsState.listQuery.pageIndex = val; - initClaimReturnData(); -}; - -onMounted(() => { - initClaimReturnData() -}) -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } -} -} -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; -&:first-of-type { - margin-top: 30px; - } -&:last-of-type { - margin-bottom: 0; - border-left: none; - } -.stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; -} -.stepCard { - width: 100%; - margin-top: -30px; - -.box-card { - width: 100%; -&:deep(.el-card__header) { - padding: 10px 15px; - } -.card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; -& > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } -} -} -} -&:hover .card-header { - color: #0098f5; - } -&:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -</style> diff --git a/src/views/facilityManagement/deviceType/component/Dailog.vue b/src/views/facilityManagement/deviceType/component/Dailog.vue deleted file mode 100644 index ce4d7af..0000000 --- a/src/views/facilityManagement/deviceType/component/Dailog.vue +++ /dev/null @@ -1,198 +0,0 @@ -<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 titleT = ref(); - const disabled = ref(false); - const openDailog = (title: string, id: number) => { - listApi(); - titleT.value = title; - 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) { - if (titleT.value == '新建') { - delete form.value.id; - } - 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); - } - }); - disabled.value=false - }; - const resetForm = (formEl: FormInstance | undefined) => { - if (!formEl) return; - formEl.resetFields(); - dialogVisible.value = false; - disabled.value=false - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - titleT, - 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 deleted file mode 100644 index 11958ec..0000000 --- a/src/views/facilityManagement/deviceType/index.vue +++ /dev/null @@ -1,130 +0,0 @@ -<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/goodsDetailManage/components/checkOut.vue b/src/views/facilityManagement/goodsDetailManage/components/checkOut.vue deleted file mode 100644 index f839bda..0000000 --- a/src/views/facilityManagement/goodsDetailManage/components/checkOut.vue +++ /dev/null @@ -1,136 +0,0 @@ -<template> - <div> - <el-dialog :title="checkOutState.title" :close-on-click-modal="false" v-model="checkOutState.checkOutDialogVisible" width="30%"> - <el-form - :model="checkOutState.checkOutForm" - ref="checkOutFormRef" - size="default" - v-loading="checkOutState.loading" - element-loading-text="Loading..." - label-width="150px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="当前所选物资:"> - <el-input v-model="checkOutState.materialName" :readonly="true" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="认领人:" prop="receiveUid"> - <el-select class="input-add" v-model="checkOutState.checkOutForm.receiveUid" placeholder="选择认领人"> - <el-option - v-for="item in checkOutState.userList" - :key="item.uid" - :value="item.uid" - :label="item.realName" - ></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button :disabled="checkOutState.loading" @click="checkOutState.batchOutStorageDialogVisible = !checkOutState.batchOutStorageDialogVisible" size="default">取 消</el-button> - <el-button :disabled="checkOutState.loading" type="primary" @click="submitCheckOutForm" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> - -import { reactive} from "vue"; -import {checkOutStateType, GoodsDetailDataType} from "/@/views/facilityManagement/goodsDetailManage/index"; -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; -import {ElMessage} from "element-plus/es"; -import {goodsDetailApi} from "/@/api/facilityManagement/goodsDetailManage"; -import {useUserInfo} from "/@/stores/userInfo"; - -const checkOutState = reactive<checkOutStateType>({ - title: '', - loading: false, - checkOutDialogVisible: false, - materialName: '', - checkOutForm: { - id: null, - receiveUid: null, - ids: [], - }, - userList: [], -}) - -const openCheckOutDialog = (title: string, value: GoodsDetailDataType, ids:Array<number>, checkOutName: null | string) => { - checkOutState.title = title; - checkOutState.checkOutDialogVisible = true; - checkOutState.checkOutForm.receiveUid = null; - getUserByDepartment(useUserInfo().userInfos.depId as number) - if(title === '单独出库'){ - checkOutState.materialName = value.name as string - checkOutState.checkOutForm.id = value.id; - delete checkOutState.checkOutForm.ids; - }else{ - checkOutState.materialName = checkOutName as string - checkOutState.checkOutForm.ids = ids - delete checkOutState.checkOutForm.id; - } - - -} - -const submitCheckOutForm = async () => { - if(checkOutState.checkOutForm.receiveUid === null){ - ElMessage({ - type: 'warning', - message: '请选择认领人' - }) - }else{ - checkOutState.loading = true - let res = await (checkOutState.title === '单独出库' ? goodsDetailApi().checkOutBySingle(checkOutState.checkOutForm) : goodsDetailApi().checkOutByMore(checkOutState.checkOutForm)) - if(res.data.code === '200'){ - checkOutState.checkOutDialogVisible = false - emit('refreshGoodsDetail') - ElMessage({ - type: 'success', - message:'认领成功' - }) - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg - }) - } - checkOutState.loading = false - } -} - -const getUserByDepartment = async (value: number) => { - let res = await teamManageApi().getAllMember(value); - if (res.data.code === '200') { - checkOutState.userList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } -} - -const emit = defineEmits(['refreshGoodsDetail']) - -defineExpose({ - openCheckOutDialog -}) - -</script> - -<style scoped> -:deep(.el-dialog__header) { - padding: var(--el-dialog-padding-primary); - padding-bottom: 10px; - margin-right: 16px; - word-break: break-all; - text-align: center !important; -} -</style> diff --git a/src/views/facilityManagement/goodsDetailManage/components/goodsDetailAdd.vue b/src/views/facilityManagement/goodsDetailManage/components/goodsDetailAdd.vue deleted file mode 100644 index b95f332..0000000 --- a/src/views/facilityManagement/goodsDetailManage/components/goodsDetailAdd.vue +++ /dev/null @@ -1,278 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="goodsDetailAddState.title" :close-on-click-modal="false" v-model="goodsDetailAddState.goodsDetailAddVisible" width="30%"> - <el-form - :model="goodsDetailAddState.goodsDetailForm" - :rules="goodsDetailAddState.goodsDetailRules" - ref="goodsDetailFormRef" - size="default" - v-loading="goodsDetailAddState.loading" - element-loading-text="Loading..." - label-width="120px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="选择物资" prop="smId"> - <el-row :gutter="6"> -<!-- <el-col :span="8">--> -<!-- <el-select--> -<!-- filterable--> -<!-- placeholder="请选择部门"--> -<!-- clearable--> -<!-- @change="changeDepartment"--> -<!-- v-model="goodsDetailAddState.depId">--> -<!-- <el-option--> -<!-- v-for="item in goodsDetailAddState.departmentList"--> -<!-- :key="item.depId"--> -<!-- :value="item.depId"--> -<!-- :label="item.depName"--> -<!-- ></el-option>--> -<!-- </el-select>--> -<!-- </el-col>--> - <el-col :span="12"> - <el-select v-model="goodsDetailAddState.classifyId" placeholder="选择分类" @change="changeClassify" filterable clearable> - <el-option - v-for="item in goodsDetailAddState.classifyList" - :key="item.materialClassifyId" - :value="item.materialClassifyId" - :label="item.materialClassifyName" - ></el-option> - </el-select> - </el-col> - <el-col :span="12"> - <el-select v-model="goodsDetailAddState.goodsDetailForm.smId" placeholder="选择物资" filterable clearable> - <el-option - v-for="item in goodsDetailAddState.goodsList" - :key="item.smId" - :value="item.smId" - :label="item.materialName" - ></el-option> - </el-select> - </el-col> - </el-row> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-row :gutter="6"> - <el-col :span="12"> - <el-form-item label="RFID起:" prop="startRfid"> - <el-input v-model="goodsDetailAddState.RFID" placeholder="选填"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-input v-model="goodsDetailAddState.startRfid" @blur="checkLength('start')" @input="onVerifiyNumberInteger($event, 'start')" placeholder="选填"> - </el-input> - </el-col> - </el-row> - </el-col> - <el-col :span="24" class="mb20"> - <el-row :gutter="6"> - <el-col :span="12"> - <el-form-item label="RFID止:" prop="endRfid"> - <el-input v-model="goodsDetailAddState.RFID" placeholder="选填"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-input @blur="checkLength('end')" @input="onVerifiyNumberInteger($event, 'end')" v-model="goodsDetailAddState.endRfid" placeholder="选填"> - </el-input> - </el-col> - </el-row> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="入库数量:" prop="wareHousingCount"> - <el-input @input="onVerifiyNumberInteger($event, 'wareHousingCount')" v-model="goodsDetailAddState.goodsDetailForm.wareHousingCount" placeholder="入库总数"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="有效期类型:" prop="validType"> - <el-radio-group v-model="goodsDetailAddState.goodsDetailForm.validType"> - <el-radio :label="0">长期</el-radio> - <el-radio :label="1">非长期</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="goodsDetailAddState.goodsDetailForm.validType === 1"> - <el-form-item label="有效期至:" prop="validTime"> - <el-date-picker - v-model="goodsDetailAddState.goodsDetailForm.validTime" - type="datetime" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="选择日期时间" - style="width: 100%" /> - </el-form-item> - </el-col> - - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="goodsDetailAddState.goodsDetailAddVisible = !goodsDetailAddState.goodsDetailAddVisible" size="default">取 消</el-button> - <el-button type="primary" @click="submitGoodsDetail" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts" setup> -import {reactive, ref, watch} from 'vue' -import { - BaseMaterialListType, - ClassificationListType, - DepartmentType, - GoodsDetailDataType, - GoodsDetailAddType -} from "/@/views/facilityManagement/goodsDetailManage/index"; -import {isValidKey} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {ElMessage} from "element-plus/es"; -import {goodsDetailApi} from "/@/api/facilityManagement/goodsDetailManage"; -import {verifiyNumberInteger, verifyString} from "/@/utils/toolsValidate"; -import {useUserInfo} from "/@/stores/userInfo"; - -const goodsDetailFormRef = ref() -const userInfo = useUserInfo() - -const goodsDetailAddState = reactive<GoodsDetailAddType>({ - title: '新增入库', - RFID: 'RFIDXXX', - startRfid: '', - endRfid: '', - depId: null, - loading: false, - classifyId: null, - goodsDetailAddVisible: false, - goodsDetailForm: { - id: null, - smId: null, - validType: null, - validTime: null, - startRfid: null, - endRfid: null , - wareHousingCount: null, - }, - goodsDetailRules: { - smId: [{ required: true, message: '请选择物资名称', trigger: 'change' }], - validType: [{ required: true, message: '请选择时间类型', trigger: 'change' }], - validTime: [{ required: true, message: '请选择有效时间', trigger: 'change' }], - wareHousingCount: [{ required: true, message: '请填写入库数量', trigger: 'blur' }], - }, - departmentList: [], - classifyList: [], - goodsList: [], -}) - -watch(() => [goodsDetailAddState.startRfid,goodsDetailAddState.endRfid],(newVal, oldVal) => { - if(goodsDetailAddState.startRfid.length === 8 && goodsDetailAddState.endRfid.length === 8){ - goodsDetailAddState.goodsDetailForm.wareHousingCount = Number(goodsDetailAddState.endRfid) - Number(goodsDetailAddState.startRfid) + 1 - } -},{immediate :false}); - -const openGoodsDetailAddDialog = async (title: string, value: GoodsDetailDataType, departmentList: DepartmentType []) => { - goodsDetailAddState.goodsDetailAddVisible = true; - goodsDetailAddState.departmentList = departmentList; - setTimeout(() => { - goodsDetailFormRef.value.clearValidate(); - }); - goodsDetailAddState.startRfid = ''; - goodsDetailAddState.endRfid = ''; - goodsDetailAddState.goodsDetailForm = { - id: null, - smId: null, - validType: null, - validTime: null, - startRfid: null, - endRfid: null , - wareHousingCount: null, - }; - goodsDetailAddState.classifyList = goodsDetailAddState.departmentList.find(item => item.depId === userInfo.userInfos.depId)?.classificationList as Array<ClassificationListType> -} - -// const changeDepartment = (value: number | null) => { -// goodsDetailAddState.classifyId = null -// goodsDetailAddState.goodsDetailForm.smId = null -// goodsDetailAddState.classifyList = goodsDetailAddState.departmentList.find(item => item.depId === value)?.classificationList as Array<ClassificationListType> -// } - -const changeClassify = (value: number | null) => { - goodsDetailAddState.goodsDetailForm.smId = null - goodsDetailAddState.goodsList = JSON.parse(JSON.stringify( - (goodsDetailAddState.classifyList.find(item => item.materialClassifyId === value) ?? {baseMaterialList:[]})?.baseMaterialList as Array<BaseMaterialListType> - )) -} - -const submitGoodsDetail = () => { - goodsDetailFormRef.value.validate(async (valid: boolean) => { - if(valid){ - goodsDetailAddState.goodsDetailForm.startRfid = `RFID${goodsDetailAddState.startRfid}` - goodsDetailAddState.goodsDetailForm.endRfid = `RFID${goodsDetailAddState.endRfid}` - goodsDetailAddState.loading = true - let res = await goodsDetailApi().addGoodsDetail(goodsDetailAddState.goodsDetailForm) - if(res.data.code === '200'){ - goodsDetailAddState.goodsDetailAddVisible = false - emit('refreshData') - ElMessage({ - type: 'success', - message: '物资新增成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - goodsDetailAddState.loading = false - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }) - } - }) -} - -const checkLength = (value: string) => { - if(value === 'start' && goodsDetailAddState.startRfid.length !== 8){ - ElMessage({ - type:'warning', - message: 'RFID起不符合规范,请重新填入' - }) - goodsDetailAddState.startRfid = '' - goodsDetailAddState.goodsDetailForm.wareHousingCount = null - }else if(value === 'end' && goodsDetailAddState.endRfid.length !== 8){ - ElMessage({ - type:'warning', - message: 'RFID止不符合规范,请重新填入' - }) - goodsDetailAddState.endRfid = '' - goodsDetailAddState.goodsDetailForm.wareHousingCount = null - }else{ - return - } -} - -const onVerifiyNumberInteger = (val: number, title: string) => { - if(title === 'wareHousingCount'){ - goodsDetailAddState.goodsDetailForm.wareHousingCount = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); - }else if(title === 'start'){ - goodsDetailAddState.startRfid = verifyString(val.toString()); - }else{ - goodsDetailAddState.endRfid = verifyString(val.toString()); - } - -}; - -const emit = defineEmits(['refreshData',]) - -defineExpose({ - openGoodsDetailAddDialog -}) - -</script> - -<style scoped> - -</style> diff --git a/src/views/facilityManagement/goodsDetailManage/components/goodsDetailEdit.vue b/src/views/facilityManagement/goodsDetailManage/components/goodsDetailEdit.vue deleted file mode 100644 index a89541d..0000000 --- a/src/views/facilityManagement/goodsDetailManage/components/goodsDetailEdit.vue +++ /dev/null @@ -1,227 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="goodsDetailEditState.title" :close-on-click-modal="false" v-model="goodsDetailEditState.goodsDetailEditVisible" width="30%"> - <el-form - :model="goodsDetailEditState.goodsDetailForm" - :rules="goodsDetailEditState.goodsDetailRules" - ref="goodsDetailFormRef" - size="default" - v-loading="goodsDetailEditState.loading" - element-loading-text="Loading..." - label-width="120px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="选择物资" prop="smId"> - <el-row :gutter="6"> -<!-- <el-col :span="8">--> -<!-- <el-select--> -<!-- filterable--> -<!-- placeholder="请选择部门"--> -<!-- clearable--> -<!-- @change="changeDepartment"--> -<!-- v-model="goodsDetailEditState.depId">--> -<!-- <el-option--> -<!-- v-for="item in goodsDetailEditState.departmentList"--> -<!-- :key="item.depId"--> -<!-- :value="item.depId"--> -<!-- :label="item.depName"--> -<!-- ></el-option>--> -<!-- </el-select>--> -<!-- </el-col>--> - <el-col :span="12"> - <el-select v-model="goodsDetailEditState.classifyId" placeholder="选择分类" @change="changeClassify" filterable clearable> - <el-option - v-for="item in goodsDetailEditState.classifyList" - :key="item.materialClassifyId" - :value="item.materialClassifyId" - :label="item.materialClassifyName" - ></el-option> - </el-select> - </el-col> - <el-col :span="12"> - <el-select v-model="goodsDetailEditState.goodsDetailForm.smId" placeholder="选择物资" filterable clearable> - <el-option - v-for="item in goodsDetailEditState.goodsList" - :key="item.smId" - :value="item.smId" - :label="item.materialName" - ></el-option> - </el-select> - </el-col> - </el-row> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="按RFID标记:" prop="rfid"> - <el-input v-model="goodsDetailEditState.goodsDetailForm.rfid" placeholder="选填"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="有效期类型:" prop="validType"> - <el-radio-group v-model="goodsDetailEditState.goodsDetailForm.validType"> - <el-radio :label="0">长期</el-radio> - <el-radio :label="1">非长期</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="goodsDetailEditState.goodsDetailForm.validType === 1"> - <el-form-item label="有效期至:" prop="validTime"> - <el-date-picker - v-model="goodsDetailEditState.goodsDetailForm.validTime" - type="datetime" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="选择日期时间" - style="width: 100%" /> - </el-form-item> - </el-col> - - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="goodsDetailEditState.goodsDetailEditVisible = !goodsDetailEditState.goodsDetailEditVisible" size="default">取 消</el-button> - <el-button type="primary" @click="submitGoodsDetail" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts" setup> -import {reactive, ref, watch} from 'vue' -import { - BaseMaterialListType, - ClassificationListType, - DepartmentType, - GoodsDetailDataType, - GoodsDetailEditType -} from "/@/views/facilityManagement/goodsDetailManage/index"; -import {isValidKey} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {ElMessage} from "element-plus/es"; -import {goodsDetailApi} from "/@/api/facilityManagement/goodsDetailManage"; -import {useUserInfo} from "/@/stores/userInfo"; - -const goodsDetailFormRef = ref() -const userInfo = useUserInfo() - -const goodsDetailEditState = reactive<GoodsDetailEditType>({ - title: '编辑', - depId: null, - loading: false, - classifyId: null, - goodsDetailEditVisible: false, - goodsDetailForm: { - id: null, - smId: null, - rfid: null, - validType: null, - validTime: null, - }, - goodsDetailRules: { - smId: [{ required: true, message: '请选择物资名称', trigger: 'change' }], - validType: [{ required: true, message: '请选择时间类型', trigger: 'change' }], - validTime: [{ required: true, message: '请选择有效时间', trigger: 'change' }], - }, - departmentList: [], - classifyList: [], - goodsList: [], -}) - -// watch(() => goodsDetailEditState.depId ,(newVal, oldVal) => { -// goodsDetailEditState.classify = null -// goodsDetailEditState.goodsDetailForm.smId = null -// goodsDetailEditState.classifyList = goodsDetailEditState.departmentList.find(item => item.depId === newVal)?.classificationList as Array<ClassificationListType> -// },{immediate :false}); - -const openGoodsDetailEditDialog = async (title: string, value: GoodsDetailDataType, departmentList: DepartmentType []) => { - goodsDetailEditState.goodsDetailEditVisible = true; - goodsDetailEditState.departmentList = departmentList; - setTimeout(() => { - goodsDetailFormRef.value.clearValidate(); - }); - await changeDepartment(userInfo.userInfos.depId) - await changeClassify(value.bigClassifyId) - goodsDetailEditState.depId = value.depId - goodsDetailEditState.classifyId = value.bigClassifyId - for(let i in goodsDetailEditState.goodsDetailForm){ - if(isValidKey(i, goodsDetailEditState.goodsDetailForm)) { - goodsDetailEditState.goodsDetailForm[i] = value[i]; - } - } - debugger - -} - -const changeDepartment = (value: number | null) => { - goodsDetailEditState.classifyId = null - goodsDetailEditState.goodsDetailForm.smId = null - goodsDetailEditState.classifyList = JSON.parse(JSON.stringify( - (goodsDetailEditState.departmentList.find(item => item.depId === value) ?? {classificationList:[]})?.classificationList as Array<ClassificationListType> - )) -} - -const changeClassify = (value: number | null) => { - goodsDetailEditState.goodsDetailForm.smId = null - goodsDetailEditState.goodsList = goodsDetailEditState.classifyList.find(item => item.materialClassifyId === value)?.baseMaterialList as Array<BaseMaterialListType> -} - -const submitGoodsDetail = () => { - goodsDetailFormRef.value.validate(async (valid: boolean) => { - if(valid){ - goodsDetailEditState.loading = true - if(goodsDetailEditState.title === '新增入库') { - let res = await goodsDetailApi().addGoodsDetail(goodsDetailEditState.goodsDetailForm) - if(res.data.code === '200'){ - goodsDetailEditState.goodsDetailEditVisible = false - emit('refreshData') - ElMessage({ - type: 'success', - message: '物资新增成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - }else{ - let res = await goodsDetailApi().updateGoodsDetail(goodsDetailEditState.goodsDetailForm) - if(res.data.code === '200'){ - goodsDetailEditState.goodsDetailEditVisible = false - emit('refreshData') - ElMessage({ - type: 'success', - message: '物资编辑成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - } - goodsDetailEditState.loading = false - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }) - } - }) -} - -const emit = defineEmits(['refreshData',]) - -defineExpose({ - openGoodsDetailEditDialog -}) - -</script> - -<style scoped> - -</style> diff --git a/src/views/facilityManagement/goodsDetailManage/index.ts b/src/views/facilityManagement/goodsDetailManage/index.ts deleted file mode 100644 index adde520..0000000 --- a/src/views/facilityManagement/goodsDetailManage/index.ts +++ /dev/null @@ -1,101 +0,0 @@ -export interface GoodsDetailStateType { - goodsDetailData: GoodsDetailDataType []; - departmentList: DepartmentType []; - irStatusList: Type []; - listQuery:{ - pageSize: number; - pageIndex: number; - searchParams: { - irStatus: number | null; - rfid: string | null; - smId: number | null; - } - }, - checkOutQuery: { - id: null | number; - claimantId: null | boolean; - }; - checkInQuery: { - id?: null | number; - ids?: Array<number>; - }; - checkOutNames: string; - total: number; -} - -export interface GoodsDetailEditType { - title: string; - depId: null | number; - loading: boolean; - classifyId: null | number; - goodsDetailEditVisible?: boolean; - goodsDetailForm: GoodsDetailEditFormType; - goodsDetailRules: {}; - departmentList: DepartmentType []; - classifyList: Array<ClassificationListType>; - goodsList: Array<BaseMaterialListType>; -} - -export interface GoodsDetailAddType extends GoodsDetailEditType{ - goodsDetailAddVisible: boolean; - RFID: string; - startRfid: string; - endRfid: string; -} - -export interface GoodsDetailEditFormType { - id: null | number; - rfid?: null | string; - startRfid?: null | string; - endRfid?: null | string; - wareHousingCount?: null | number; - smId: null | number; - validType: null | number; - validTime: null | string; -} - -export interface GoodsDetailDataType extends GoodsDetailEditFormType{ - name: string | null; - depId: null | number; - bigClassifyId: null | number; -} - -export interface Type { - id: number; - name: string; -} - -export interface DepartmentType { - depId: number; - depName: string; - classificationList: Array<ClassificationListType>; -} - -export interface ClassificationListType { - baseMaterialList: Array<BaseMaterialListType>; - materialClassifyId: number; - materialClassifyName: string; -} - -export interface BaseMaterialListType { - materialName: string; - smId: number; -} - - -export interface checkOutStateType { - title: string; - loading: boolean; - checkOutDialogVisible: boolean; - materialName: string; - checkOutForm: { - id?: null | number; - receiveUid: null | number; - ids?: Array<number>; - }; - // checkOutMoreForm: { - // ids: Array<number>; - // claimantId: null | boolean; - // } - userList: [] -} diff --git a/src/views/facilityManagement/goodsDetailManage/index.vue b/src/views/facilityManagement/goodsDetailManage/index.vue deleted file mode 100644 index 911bd66..0000000 --- a/src/views/facilityManagement/goodsDetailManage/index.vue +++ /dev/null @@ -1,444 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>在库状态:</span> - <el-select class="input-box" v-model="goodsDetailState.listQuery.searchParams.irStatus" placeholder="请选择在库状态" clearable filterable> - <el-option - v-for="item in goodsDetailState.irStatusList" - :key="item.id" - :value="item.id" - :label="item.name" - > - </el-option> - </el-select> - </div> - <div class="basic-line"> - <span>rfid:</span> - <el-input class="input-box" v-model="goodsDetailState.listQuery.searchParams.rfid" placeholder="rfid" clearable> </el-input> - </div> - - <div style="padding-bottom: 10px"> - <el-button size="large" type="primary" class="ml10" v-throttle @click="refreshGoodsDetailData"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - </div> - </el-row> - <div class="homeCard"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" size="default" @click="openGoodsDetailAdd('新增入库','')">新增入库</el-button> - <el-button type="danger" size="default" @click="deleteBatchGoodsDetail('批量删除','')">批量删除</el-button> - <el-button type="warning" size="default" @click="checkInAndOut('批量出库','')">批量出库</el-button> -<!-- <el-button type="success" size="default" @click="checkInAndOut('批量重新入库','')">批量重新入库</el-button>--> - </el-col> - </el-row> - <div class="main-card"> - <el-table - :data="goodsDetailState.goodsDetailData" - 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 prop="materialNo" label="物资编号" show-overflow-tooltip></el-table-column> - <el-table-column prop="bigClassifyName" label="分类" show-overflow-tooltip></el-table-column> - <el-table-column prop="depName" label="仓库/部门" show-overflow-tooltip></el-table-column> - <el-table-column prop="name" label="物资名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="rfid" label="绑定RFID" show-overflow-tooltip></el-table-column> - <el-table-column prop="consumableName" label="是否是耗材" show-overflow-tooltip></el-table-column> - <el-table-column prop="validTypeName" label="保质期" show-overflow-tooltip></el-table-column> - <el-table-column prop="irStatusName" label="当前状态" show-overflow-tooltip></el-table-column> - <el-table-column prop="wareHousingTime" label="入库时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="deliveryTime" label="出库时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="validStatusName" label="有效" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="250" align="center"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="openGoodsDetailEdit('编辑', scope.row)">编辑</el-button> - <el-button v-if="scope.row.irStatus === 1" size="small" text type="success" :icon="Edit" @click="checkInAndOut('重新入库', scope.row)">重新入库</el-button> - <el-button v-if="scope.row.irStatus === 0" size="small" text type="warning" :icon="Edit" @click="checkInAndOut('单独出库', scope.row)">单独出库</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="deleteSingleGoodsDetail(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="goodsDetailState.listQuery.pageIndex" background v-model:page-size="goodsDetailState.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="goodsDetailState.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - <goods-detail-edit ref="goodsDetailEditRef" @refreshData="initGoodsDetailData"></goods-detail-edit> - <goods-detail-add ref="goodsDetailAddRef" @refreshData="initGoodsDetailData"></goods-detail-add> - <check-out ref="checkOutRef" @refreshGoodsDetail="initGoodsDetailData"></check-out> - </div> -</template> - -<script setup lang="ts"> -import {onMounted, reactive, ref} from 'vue' -import { Edit, Delete, } from '@element-plus/icons-vue'; -import {ElMessage, ElMessageBox} from "element-plus"; -import { - GoodsDetailDataType, - GoodsDetailStateType -} from "/@/views/facilityManagement/goodsDetailManage/index"; -import {goodsDetailApi} from "/@/api/facilityManagement/goodsDetailManage"; -import { useRoute } from "vue-router"; -import GoodsDetailEdit from './components/goodsDetailEdit.vue' -import CheckOut from "/@/views/facilityManagement/goodsDetailManage/components/checkOut.vue"; -import GoodsDetailAdd from "/@/views/facilityManagement/goodsDetailManage/components/goodsDetailAdd.vue"; - -const route = useRoute() -const goodsDetailEditRef = ref() -const goodsDetailAddRef = ref() -const checkOutRef = ref() - -const goodsDetailState = reactive<GoodsDetailStateType>({ - goodsDetailData:[], - departmentList:[], - irStatusList:[{id: 0, name:'在库'}, {id: 1, name:'已出库'}], - listQuery:{ - pageSize: 10, - pageIndex: 1, - searchParams: { - irStatus: null, - rfid: null, - smId: null - } - }, - checkOutQuery: { - id: null, - claimantId: null, - }, - checkInQuery: { - ids: [], - }, - checkOutNames: '', - total:0, -}) - -const initGoodsDetailData = async () => { - let res = await goodsDetailApi().getGoodsDetailList(goodsDetailState.listQuery) - if(res.data.code === '200'){ - goodsDetailState.goodsDetailData = res.data.data; - goodsDetailState.total = res.data.total; - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } -}; - -const openGoodsDetailEdit = (title: string, value: GoodsDetailDataType) => { - goodsDetailEditRef.value.openGoodsDetailEditDialog(title, value, goodsDetailState.departmentList) -}; - -const openGoodsDetailAdd = (title: string, value: GoodsDetailDataType) => { - goodsDetailAddRef.value.openGoodsDetailAddDialog(title, value, goodsDetailState.departmentList) -}; - -const checkInAndOut = (title: string, value:GoodsDetailDataType) => { - if(title === '重新入库'){ - goodsDetailState.checkInQuery = {} - goodsDetailState.checkInQuery.id = value.id - ElMessageBox.confirm(`此操作将重新入库:“${value.name}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsDetailApi().checkInOne(goodsDetailState.checkInQuery); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '重新入库成功' - }); - await initGoodsDetailData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }else if(title === '批量重新入库'){ - if(goodsDetailState.checkInQuery.ids?.length){ - ElMessageBox.confirm(`此操作将把所选中全部重新入库,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsDetailApi().checkInMore(goodsDetailState.checkInQuery); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '批量重新入库成功' - }); - await initGoodsDetailData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }else{ - ElMessage({ - type:'warning', - message: '请选择要批量重新入库的物资' - }) - } - }else if(title ==='单独出库'){ - checkOutRef.value.openCheckOutDialog(title, value, [], null); - }else{ - if(goodsDetailState.checkInQuery.ids?.length){ - checkOutRef.value.openCheckOutDialog(title, null, goodsDetailState.checkInQuery.ids, goodsDetailState.checkOutNames); - }else{ - ElMessage({ - type:'warning', - message: '请选择要出库的物资' - }) - } - } -} - -const handleSelectionChange = (val: Array<GoodsDetailDataType>) => { - goodsDetailState.checkInQuery.ids = val.map((item) => { - return item.id; - }) as Array<number>; - goodsDetailState.checkOutNames = val.map((item) => { - return item.name - }).join(',') -}; - -const getGoodsByLevel = async () => { - let res = await goodsDetailApi().getGoodsListByLevel(); - if (res.data.code === '200') { - goodsDetailState.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } -}; - -const deleteSingleGoodsDetail = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该物资:“${row.name}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsDetailApi().deleteSingleGoods({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initGoodsDetailData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); -}; - -const deleteBatchGoodsDetail = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除这些物资,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsDetailApi().deleteBatchGoods({ ids: goodsDetailState.checkInQuery.ids }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initGoodsDetailData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); -}; - -const refreshGoodsDetailData = () => { - initGoodsDetailData(); -}; -// 分页改变 -const onHandleSizeChange = (val: number) => { - goodsDetailState.listQuery.pageSize = val; - initGoodsDetailData(); -}; -// 分页改变 -const onHandleCurrentChange = (val: number) => { - goodsDetailState.listQuery.pageIndex = val; - initGoodsDetailData(); -}; - -// const getDepartmentData = async () => { -// let res = await departmentApi().getDepartmentList(); -// if (res.data.code === '200') { -// goodsDetailState.departmentList = res.data.data; -// } else { -// ElMessage({ -// type: 'warning', -// message: res.data.msg -// }); -// } -// }; - -onMounted(() => { - goodsDetailState.listQuery.searchParams.smId = (Number(route.query.id) || null) - initGoodsDetailData(); - // getDepartmentData(); - getGoodsByLevel(); -}) -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -</style> diff --git a/src/views/facilityManagement/goodsTypeManage/index.vue b/src/views/facilityManagement/goodsTypeManage/index.vue deleted file mode 100644 index a994107..0000000 --- a/src/views/facilityManagement/goodsTypeManage/index.vue +++ /dev/null @@ -1,435 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - </div> - <div class="basic-line"> - </div> - <div style="padding-bottom: 10px"> - <el-button size="default" type="primary" @click="onOpenGoodsClassifyDialog('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增分类 - </el-button> - </div> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-table - :data="addGoodsState.goodsData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{ background: '#fafafa' }" - border - row-key="id" - :load="load" - :row-class-name="tableRowClassName" - :tree-props="{ children: 'childList', hasChildren: true }" - > - <el-table-column prop="materialClassifyName" label="分类名称" show-overflow-tooltip align="center"/> - <el-table-column prop="consumableName" label="是否耗材" show-overflow-tooltip align="center"/> - <el-table-column prop="materialClassifyName" label="类别" show-overflow-tooltip align="center"> - <template #default="scope"> - <div v-if="scope.row.parentId === 0">{{'分类名称'}}</div> - <div v-if="scope.row.parentId !== 0">{{'物资名称'}}</div> - </template> - </el-table-column> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button v-if="scope.row.parentId === 0" size="small" text type="primary" @click="onOpenGoodsClassifyDialog('新增物资', scope.row)"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增物资 - </el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenGoodsClassifyDialog('编辑', scope.row)">编辑</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="deleteGoodsClassify(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[5, 10, 20]" v-model:current-page="addGoodsState.listQuery.pageIndex" background v-model:page-size="addGoodsState.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="addGoodsState.total" class="page-position" style="padding-top: 20px;"> </el-pagination> - </div> - </div> - </div> - <el-dialog :title="addGoodsState.goodsClassifyTitle" :close-on-click-modal="false" v-model="addGoodsState.showAddGoodsClassifyDialog" width="30%"> - <el-form - :model="addGoodsState.goodsClassifyForm" - :rules="addGoodsState.goodsClassifyRules" - ref="goodsClassifyRef" - size="default" - label-width="120px"> - <el-row> - <el-col :span="24" class="mb20" v-if="!addGoodsState.goodsClassifyForm.parentId"> - <el-form-item label="分类名称" prop="materialClassifyName"> - <el-input v-model="addGoodsState.goodsClassifyForm.materialClassifyName" placeholder="输入分类名称" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="addGoodsState.goodsClassifyForm.parentId"> - <el-form-item label="物资名称" prop="materialClassifyName"> - <el-input v-model="addGoodsState.goodsClassifyForm.materialClassifyName" placeholder="输入物资名称" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="addGoodsState.goodsClassifyForm.parentId"> - <el-form-item label="是否耗材" prop="consumable"> - <el-select class="input-add" v-model="addGoodsState.goodsClassifyForm.consumable" placeholder="是否耗材" clearable filterable> - <el-option - v-for="item in addGoodsState.consumableList" - :key="item.id" - :value="item.id" - :label="item.name" - > - </el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="addGoodsState.showAddGoodsClassifyDialog = !addGoodsState.showAddGoodsClassifyDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitGoodsClassify" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> -import {computed, nextTick, onMounted, reactive, ref, watch} from 'vue' -import { Edit, Delete, } from '@element-plus/icons-vue'; -import {AddGoodsStateType, BigClassifyType} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {mount} from "sortablejs"; -import {goodsAndEquipmentApi} from "/@/api/facilityManagement/safetyGoodsAndEquipment"; -import {ElMessage, valueEquals} from "element-plus/es"; -import {ElMessageBox} from "element-plus"; -import {inspectTaskApi} from "/@/api/intellectInspectSystem/inspectTask"; - -const addGoodsState = reactive<AddGoodsStateType>({ - title:'', - goodsClassifyTitle:'', - showAddGoodsDialog: false, - showAddGoodsClassifyDialog: false, - activeName: 'goodsInformation', - goodsData: [], - goodsBigClassifyList: [], - consumableList: [ - {id: 0, name: '是'}, - {id: 1, name: '否'}, - ], - total:0, - listQuery:{ - pageSize: 10, - pageIndex: 1, - searchParams: { - classifyName:'' - } - }, - goodsClassifyForm: { - id: null, - materialClassifyName: '', - parentId: null, - consumable: null, - }, - goodsClassifyRules: { - - }, -}); - -const openAddGoodsDialog = (goodsBigClassifyList: BigClassifyType []) => { - addGoodsState.showAddGoodsDialog = true - addGoodsState.goodsBigClassifyList = goodsBigClassifyList - getGoodsClassifyDataByPage() -} - -const onOpenGoodsClassifyDialog = (title: string, value:BigClassifyType ) => { - addGoodsState.showAddGoodsClassifyDialog = true - addGoodsState.goodsClassifyForm = { - id: null, - materialClassifyName: '', - parentId: null, - } - if(title === '新增') { - addGoodsState.goodsClassifyTitle = '新增分类' - }else if(title === '新增物资'){ - addGoodsState.goodsClassifyTitle = `新增${value.materialClassifyName}` - addGoodsState.goodsClassifyForm.parentId = value.id - } else if(title === '编辑' && value.parentId === 0){ - addGoodsState.goodsClassifyTitle = '编辑分类' - addGoodsState.goodsClassifyForm = { - id: value.id, - materialClassifyName: value.materialClassifyName, - consumable: null, - parentId: null, - } - }else { - addGoodsState.goodsClassifyTitle = `编辑${addGoodsState.goodsBigClassifyList.find(item => item.id === value.parentId)?.materialClassifyName as string}` - addGoodsState.goodsClassifyForm.parentId = addGoodsState.goodsBigClassifyList.find(item => item.id === value.parentId)?.id as number - addGoodsState.goodsClassifyForm.materialClassifyName = value.materialClassifyName - addGoodsState.goodsClassifyForm.consumable = value.consumable - addGoodsState.goodsClassifyForm.id = value.id - } -} - -const submitGoodsClassify = async () => { - if(addGoodsState.goodsClassifyTitle.substring(0,2) === '新增'){ - let res = await goodsAndEquipmentApi().addGoodsClassify(addGoodsState.goodsClassifyForm); - if(res.data.code === '200'){ - addGoodsState.showAddGoodsClassifyDialog = false; - await getGoodsClassifyDataByPage(); - ElMessage({ - type: 'success', - message: '新增成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - }else{ - let res = await goodsAndEquipmentApi().updateGoodsClassify(addGoodsState.goodsClassifyForm); - if(res.data.code === '200'){ - addGoodsState.showAddGoodsClassifyDialog = false; - await getGoodsClassifyDataByPage(); - emit('refreshClassify') - ElMessage({ - type: 'success', - message: '编辑成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - } -}; - -const deleteGoodsClassify = (row: BigClassifyType) => { - ElMessageBox.confirm(`此操作将永久删除该:“${row.materialClassifyName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsAndEquipmentApi().deleteGoodsClassify({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getGoodsClassifyDataByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); -}; - -const getGoodsClassifyDataByPage = async () => { - let res = await goodsAndEquipmentApi().getAllSafetyEquipmentByPage(addGoodsState.listQuery); - if(res.data.code === '200'){ - addGoodsState.goodsData = res.data.data - addGoodsState.total = res.data.total - }else{ - ElMessage({ - message:res.data.msg, - type:'warning' - }) - } -} - -const getAllSafetyEquipmentList = async () => { - let res = await goodsAndEquipmentApi().getAllSafetyEquipment(); - if(res.data.code === '200'){ - addGoodsState.goodsBigClassifyList = JSON.parse(JSON.stringify(res.data.data)) - }else{ - ElMessage({ - message:res.data.msg, - type:'warning' - }) - } -} - -const tableRowClassName = ( row: {rowIndex: number, row: BigClassifyType } ) => { - if (row.row.parentId === 0) { - return 'big-row'; - } else{ - return 'small-row'; - } -} - -const onHandleSizeChange = (val: number) => { - addGoodsState.listQuery.pageSize = val - getGoodsClassifyDataByPage() -} - -const onHandleCurrentChange = (val: number) => { - addGoodsState.listQuery.pageIndex = val - getGoodsClassifyDataByPage() -} - -const load = ( - row: BigClassifyType, - treeNode: unknown, - resolve: (date: BigClassifyType[]) => void -) => { - setTimeout(() => { - resolve([]) - }, 1000) -} - -const emit = defineEmits(['refreshClassify']) - -defineExpose({ - openAddGoodsDialog, -}); - -onMounted( () => { - getGoodsClassifyDataByPage(); - getAllSafetyEquipmentList(); -}) -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-table .big-row) { - font-size: 16px !important; - font-weight: 700; -} -</style> diff --git a/src/views/facilityManagement/keyEquipment/index.vue b/src/views/facilityManagement/keyEquipment/index.vue deleted file mode 100644 index 36c634d..0000000 --- a/src/views/facilityManagement/keyEquipment/index.vue +++ /dev/null @@ -1,449 +0,0 @@ -<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.name" 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" - @click="openD('修改', deletAll[0])">修改</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="leadingPersonName" align="center" label="保养负责人" - sortable/> - <el-table-column property="takecareDate" align="center" - :formatter="timeDate" label="保养日期" sortable/> - <el-table-column property="leadingPersonDepartmentName" 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="testPersonName" align="center" label="检查人" - sortable/> - <el-table-column property="testDate" align="center" :formatter="timeDate" - label="检查日期" sortable/> - <el-table-column property="testPersonDepartmentName" align="center" label="检查人部门" sortable/> - <el-table-column property="testResult" align="center" label="检查结果" - sortable> - <template #default="scope"> - <span v-if="scope.row.testResult == 1">成功</span> - <span v-if="scope.row.testResult == 2">失败</span> - </template> - </el-table-column> - <el-table-column property="testStatus" 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="repairPersonName" align="center" label="检测人" - sortable/> - <el-table-column property="repairStarDate" align="center" :formatter="timeDate" - label="检测日期" sortable/> - <el-table-column property="repairPersonDepartmentName" 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> - <template #default="scope"> - <span v-if="scope.row.repairStatus == 1">维修中</span> - <span v-if="scope.row.repairStatus == 2">已维修</span> - </template> - - </el-table-column> - <el-table-column property="repairMemo" align="center" label="维修情况" - sortable/> - <el-table-column property="repairPersonName" align="center" label="维修负责人" - sortable/> - <el-table-column property="repairPersonDepartmentName" 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="equipmentTypeName" align="center" label="类型/类别外键" sortable/> - <el-table-column property="name" align="center" label="装置/部位名称" sortable/> - <el-table-column property="departmentName" 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="partType" label="装置部位分类" align="center" sortable - show-overflow-tooltip> - <template #default="scope"> - <span v-if="scope.row.partType == 1">关键装置</span> - <span v-if="scope.row.partType == 2">重点部位</span> - </template> - </el-table-column> - <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: '', ////类型/类别外键 - name: '', ////装置/部位名称 - // departmentId: '',////所属部门 - // position: '', ////具体位置 - // leadingPersonName: '', ////负责人姓名 - // connectPersonId: '',////装置部位分类 - // infoTpe: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 3:重点监管装置/设备 - equipmentTypeId: '' - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.equipmentTypeId = ''; - listApi(); - }; - const listApi = () => { - // delete ruleForm.qName - 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.equipmentTypeId = data.id; - - 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, - deletAll - }; - }, - }); -</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 deleted file mode 100644 index d7f3ac5..0000000 --- a/src/views/facilityManagement/safetyEquipment/index.vue +++ /dev/null @@ -1,391 +0,0 @@ -<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" - @click="openD('修改', deletAll[0])">修改</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="leadingPersonName" align="center" label="保养负责人" sortable /> - <el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable /> - <el-table-column property="leadingPersonDepartmentName" 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="leadingPersonName" 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="testPersonName" align="center" label="检测人" sortable /> - <el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable /> - <el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable /> - <el-table-column property="testMemo" align="center" label="检测内容" sortable /> - <el-table-column align="center" label="检测结果"> - <template #default="scope"> - <span v-if="scope.row.testResult == 1">成功</span> - <span v-if="scope.row.testResult == 2">失败</span> - </template> - </el-table-column> - <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 align="center" label="维修状态"> - <template #default="scope"> - <span v-if="scope.row.repairStatus == 1">维修中</span> - <span v-if="scope.row.repairStatus == 2">已修好</span> - </template> - </el-table-column> - <el-table-column property="repairMemo" align="center" label="维修情况" sortable /> - <el-table-column property="repairPersonName" align="center" label="维修负责人" sortable /> - <el-table-column property="repairPersonDepartmentName" 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: '', ////位号 - equipmentTypeId: '', - infoType: 2, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施 - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.qName = ''; - ruleForm.searchParams.positionNum = ''; - ruleForm.searchParams.equipmentTypeId = ''; - listApiTree() - 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.equipmentTypeId = data.id; - ruleForm.searchParams.equipmentTypeId = 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/facilityManagement/safetyGoodsAndEquipment/components/addGoodsDialog.vue b/src/views/facilityManagement/safetyGoodsAndEquipment/components/addGoodsDialog.vue deleted file mode 100644 index 55a5571..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/components/addGoodsDialog.vue +++ /dev/null @@ -1,270 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="addGoodsState.title" :close-on-click-modal="false" v-model="addGoodsState.showAddGoodsDialog" width="50%"> - <el-tabs class="active" v-model="addGoodsState.activeName"> - <el-tab-pane label="物资信息" name="goodsInformation"> - <div class="filter-container" style="padding-bottom: 20px"> - <el-button size="default" type="primary" @click="onOpenGoodsClassifyDialog('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增分类 - </el-button> - </div> - - <el-table - :data="addGoodsState.goodsData" - border fit highlight-current-row lazy - row-key="id" - :load="load" - :row-class-name="tableRowClassName" - :header-cell-style="{ background: '#fafafa' }" - :tree-props="{ children: 'childList', hasChildren: true }" - style="width: 100%"> - <el-table-column prop="materialClassifyName" label="分类名称" show-overflow-tooltip align="center"/> - <el-table-column prop="materialClassifyName" label="类别" show-overflow-tooltip align="center"> - <template #default="scope"> - <div v-if="scope.row.parentId === 0">{{'分类名称'}}</div> - <div v-if="scope.row.parentId !== 0">{{'物资名称'}}</div> - </template> - </el-table-column> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button v-if="scope.row.parentId === 0" size="small" text type="primary" @click="onOpenGoodsClassifyDialog('新增物资', scope.row)"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增物资 - </el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenGoodsClassifyDialog('编辑', scope.row)">编辑</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="deleteGoodsClassify(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[5, 10, 20]" v-model:current-page="addGoodsState.listQuery.pageIndex" background v-model:page-size="addGoodsState.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="addGoodsState.total" class="page-position" style="padding-top: 20px;"> </el-pagination> - </el-tab-pane> - </el-tabs> - </el-dialog> - <el-dialog :title="addGoodsState.goodsClassifyTitle" :close-on-click-modal="false" v-model="addGoodsState.showAddGoodsClassifyDialog" width="30%"> - <el-form - :model="addGoodsState.goodsClassifyForm" - :rules="addGoodsState.goodsClassifyRules" - ref="goodsClassifyRef" - size="default" - label-width="120px"> - <el-row> - <el-col :span="24" class="mb20" v-if="!addGoodsState.goodsClassifyForm.parentId"> - <el-form-item label="分类名称" prop="materialClassifyName"> - <el-input v-model="addGoodsState.goodsClassifyForm.materialClassifyName" placeholder="输入分类名称" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="addGoodsState.goodsClassifyForm.parentId"> - <el-form-item label="物资名称" prop="materialClassifyName"> - <el-input v-model="addGoodsState.goodsClassifyForm.materialClassifyName" placeholder="输入物资名称" class="input-add"> - </el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="addGoodsState.showAddGoodsClassifyDialog = !addGoodsState.showAddGoodsClassifyDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitGoodsClassify" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> -import {computed, nextTick, onMounted, reactive, ref, watch} from 'vue' -import { Edit, Delete, } from '@element-plus/icons-vue'; -import {AddGoodsStateType, BigClassifyType} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {mount} from "sortablejs"; -import {goodsAndEquipmentApi} from "/@/api/facilityManagement/safetyGoodsAndEquipment"; -import {ElMessage, valueEquals} from "element-plus/es"; -import {ElMessageBox} from "element-plus"; -import {inspectTaskApi} from "/@/api/intellectInspectSystem/inspectTask"; - -const addGoodsState = reactive<AddGoodsStateType>({ - title:'', - goodsClassifyTitle:'', - showAddGoodsDialog: false, - showAddGoodsClassifyDialog: false, - activeName: 'goodsInformation', - goodsData: [], - goodsBigClassifyList: [], - total:0, - listQuery:{ - pageSize: 5, - pageIndex: 1, - searchParams: { - classifyName:'' - } - }, - goodsClassifyForm: { - id: null, - materialClassifyName: '', - parentId: null, - }, - goodsClassifyRules: { - - }, -}); - -const openAddGoodsDialog = (goodsBigClassifyList: BigClassifyType []) => { - addGoodsState.showAddGoodsDialog = true - addGoodsState.goodsBigClassifyList = goodsBigClassifyList - getGoodsClassifyDataByPage() -} - -const onOpenGoodsClassifyDialog = (title: string, value:BigClassifyType ) => { - addGoodsState.showAddGoodsClassifyDialog = true - addGoodsState.goodsClassifyForm = { - id: null, - materialClassifyName: '', - parentId: null, - } - if(title === '新增') { - addGoodsState.goodsClassifyTitle = '新增分类' - }else if(title === '新增物资'){ - addGoodsState.goodsClassifyTitle = `新增${value.materialClassifyName}` - addGoodsState.goodsClassifyForm.parentId = value.id - } else if(title === '编辑' && value.parentId === 0){ - addGoodsState.goodsClassifyTitle = '编辑分类' - addGoodsState.goodsClassifyForm = { - id: value.id, - materialClassifyName: value.materialClassifyName, - parentId: null, - } - }else { - addGoodsState.goodsClassifyTitle = `编辑${addGoodsState.goodsBigClassifyList.find(item => item.id === value.parentId)?.materialClassifyName as string}` - addGoodsState.goodsClassifyForm.parentId = addGoodsState.goodsBigClassifyList.find(item => item.id === value.parentId)?.id as number - addGoodsState.goodsClassifyForm.materialClassifyName = value.materialClassifyName - addGoodsState.goodsClassifyForm.id = value.id - } -} - -const submitGoodsClassify = async () => { - if(addGoodsState.goodsClassifyTitle.substring(0,2) === '新增'){ - let res = await goodsAndEquipmentApi().addGoodsClassify(addGoodsState.goodsClassifyForm); - if(res.data.code === '200'){ - addGoodsState.showAddGoodsClassifyDialog = false; - await getGoodsClassifyDataByPage(); - ElMessage({ - type: 'success', - message: '新增成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - }else{ - let res = await goodsAndEquipmentApi().updateGoodsClassify(addGoodsState.goodsClassifyForm); - if(res.data.code === '200'){ - addGoodsState.showAddGoodsClassifyDialog = false; - await getGoodsClassifyDataByPage(); - emit('refreshClassify') - ElMessage({ - type: 'success', - message: '编辑成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - } -}; - -const deleteGoodsClassify = (row: BigClassifyType) => { - ElMessageBox.confirm(`此操作将永久删除该:“${row.materialClassifyName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsAndEquipmentApi().deleteGoodsClassify({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getGoodsClassifyDataByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); -}; - -const getGoodsClassifyDataByPage = async () => { - let res = await goodsAndEquipmentApi().getAllSafetyEquipmentByPage(addGoodsState.listQuery); - if(res.data.code === '200'){ - addGoodsState.goodsData = res.data.data - addGoodsState.total = res.data.total - }else{ - ElMessage({ - message:res.data.msg, - type:'warning' - }) - } -} - -const tableRowClassName = ( row: {rowIndex: number, row: BigClassifyType } ) => { - if (row.row.parentId === 0) { - return 'big-row'; - } else{ - return 'small-row'; - } -} - -const onHandleSizeChange = (val: number) => { - addGoodsState.listQuery.pageSize = val - getGoodsClassifyDataByPage() -} - -const onHandleCurrentChange = (val: number) => { - addGoodsState.listQuery.pageIndex = val - getGoodsClassifyDataByPage() -} - -const load = ( - row: BigClassifyType, - treeNode: unknown, - resolve: (date: BigClassifyType[]) => void -) => { - setTimeout(() => { - resolve([]) - }, 1000) -} - -const emit = defineEmits(['refreshClassify']) - -defineExpose({ - openAddGoodsDialog, -}); - - -</script> - -<style scoped> -/*:deep(.el-overlay .el-overlay-dialog .el-dialog .el-dialog__body) {*/ -/* padding-bottom: 20px !important;*/ -/*}*/ -:deep(.el-table .big-row) { - font-size: 16px !important; - font-weight: 700; -} - -</style> diff --git a/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchInStorage.vue b/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchInStorage.vue deleted file mode 100644 index a6d17da..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchInStorage.vue +++ /dev/null @@ -1,145 +0,0 @@ -<template> - <div> - <el-dialog :title="batchInStorageState.title" :close-on-click-modal="false" v-model="batchInStorageState.batchInStorageDialogVisible" width="30%"> - <el-form - :model="batchInStorageState.inStorageData" - :rules="batchInStorageState.inStorageDataRules" - ref="inStorageDataRef" - size="default" - v-loading="batchInStorageState.loading" - element-loading-text="Loading..." - label-width="150px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="当前所选物资/设备:"> - <el-input v-model="batchInStorageState.materialName" :readonly="true" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="按RFID标记:" prop="rfid"> - <el-input v-model="batchInStorageState.inStorageData.rfid" placeholder="选填" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="入库数量:" prop="wareHousingCount"> - <el-input @input="onVerifiyNumberInteger($event, 'noticeTime')" v-model="batchInStorageState.inStorageData.wareHousingCount" placeholder="输入入库数量" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="有效期类型:" prop="validType"> - <el-radio-group v-model="batchInStorageState.inStorageData.validType"> - <el-radio :label="0">长期</el-radio> - <el-radio :label="1">非长期</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20" v-if="batchInStorageState.inStorageData.validType === 1"> - <el-form-item label="有效期至:" prop="validTime"> - <el-date-picker - v-model="batchInStorageState.inStorageData.validTime" - type="datetime" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="选择日期时间" - style="width: 90%" /> - </el-form-item> - </el-col> - - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button :disabled="batchInStorageState.loading" @click="batchInStorageState.batchInStorageDialogVisible = !batchInStorageState.batchInStorageDialogVisible" size="default">取 消</el-button> - <el-button :disabled="batchInStorageState.loading" type="primary" @click="submitInStorageData" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> -import { reactive, ref} from 'vue' -import {BatchInStorageStateType, DataType} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {verifiyNumberInteger} from "/@/utils/toolsValidate"; -import {ElMessage} from "element-plus"; -import { goodsAndEquipmentApi } from '../../../../api/facilityManagement/safetyGoodsAndEquipment/index' - -const inStorageDataRef = ref() - -const batchInStorageState = reactive<BatchInStorageStateType>({ - title: '批量入库', - loading: false, - materialName: '', - batchInStorageDialogVisible: false, - inStorageData:{ - smId: null, - wareHousingCount: null, - validType: null, - validTime: null, - rfid: null, - }, - inStorageDataRules: { - wareHousingCount: [{ required: true, message: '请填写物资数量', trigger: 'blur' }], - validType: [{ required: true, message: '请选择有效期类型', trigger: 'change' }], - validTime: [{ required: true, message: '请选择有效期至', trigger: 'change' }], - }, -}) - -const openBatchInStorageDialog = (value: DataType) => { - batchInStorageState.batchInStorageDialogVisible = true - batchInStorageState.inStorageData.smId = value.id - batchInStorageState.materialName = value.materialName -} - -const submitInStorageData = () => { - batchInStorageState.loading = true; - inStorageDataRef.value.validate(async (valid: boolean) => { - if(valid){ - let res = await goodsAndEquipmentApi().batchInStorageGoods(batchInStorageState.inStorageData); - if(res.data.code === '200'){ - batchInStorageState.batchInStorageDialogVisible = false; - emit('refreshData') - ElMessage({ - type: 'success', - message: '入库成功', - duration: 2000 - }); - }else{ - ElMessage({ - type: 'warning', - message:res.data.msg - }); - } - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - batchInStorageState.loading = false; -}; - -const emit = defineEmits(['refreshData',]); - -defineExpose({ - openBatchInStorageDialog, -}) - -const onVerifiyNumberInteger = (val: number, title: string) => { - batchInStorageState.inStorageData.wareHousingCount = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); -}; -</script> - -<style scoped> -:deep(.el-dialog__header) { - padding: var(--el-dialog-padding-primary); - padding-bottom: 10px; - margin-right: 16px; - word-break: break-all; - text-align: center !important; -} -</style> diff --git a/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchOutStorage.vue b/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchOutStorage.vue deleted file mode 100644 index 235beb3..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/components/batchOutStorage.vue +++ /dev/null @@ -1,154 +0,0 @@ -<template> - <div> - <el-dialog :title="batchOutStorageState.title" :close-on-click-modal="false" v-model="batchOutStorageState.batchOutStorageDialogVisible" width="30%"> - <el-form - :model="batchOutStorageState.outStorageData" - :rules="batchOutStorageState.outStorageDataRules" - ref="outStorageDataRef" - size="default" - v-loading="batchOutStorageState.loading" - element-loading-text="Loading..." - label-width="150px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="当前所选物资/设备:"> - <el-input v-model="batchOutStorageState.materialName" :readonly="true" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="按RFID标记:" prop="rfid"> - <el-input v-model="batchOutStorageState.outStorageData.rfid" placeholder="选填" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="出库数量:" prop="count"> - <el-input @Output="onVerifiyNumberInteger($event, 'noticeTime')" v-model="batchOutStorageState.outStorageData.count" placeholder="输入出库数量" class="input-add"> - </el-input> - </el-form-item> - </el-col> - <el-col :span="24" class="mb20"> - <el-form-item label="认领人:" prop="receiveUid"> - <el-select class="input-add" v-model="batchOutStorageState.outStorageData.receiveUid" placeholder="选择认领人"> - <el-option - v-for="item in batchOutStorageState.userList" - :key="item.uid" - :value="item.uid" - :label="item.realName" - ></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button :disabled="batchOutStorageState.loading" @click="batchOutStorageState.batchOutStorageDialogVisible = !batchOutStorageState.batchOutStorageDialogVisible" size="default">取 消</el-button> - <el-button :disabled="batchOutStorageState.loading" type="primary" @click="submitOutStorageData" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script setup lang="ts"> -import {onMounted, reactive, ref} from 'vue' -import {BatchOutStorageStateType, DataType} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import {verifiyNumberInteger} from "/@/utils/toolsValidate"; -import {ElMessage} from "element-plus"; -import { goodsAndEquipmentApi } from '../../../../api/facilityManagement/safetyGoodsAndEquipment/index' -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; - -const outStorageDataRef = ref() - -const batchOutStorageState = reactive<BatchOutStorageStateType>({ - title: '批量出库', - loading: false, - materialName: '', - batchOutStorageDialogVisible: false, - outStorageData:{ - smId: null, - count: null, - receiveUid: null, - rfid: null, - }, - outStorageDataRules: { - count: [{ required: true, message: '请填写出库数量', trigger: 'blur' }], - receiveUid: [{ required: true, message: '请选择认领人', trigger: 'change' }], - }, - userList: [], -}) - -const openBatchOutStorageDialog = (value: DataType) => { - batchOutStorageState.batchOutStorageDialogVisible = true - batchOutStorageState.outStorageData.smId = value.id - batchOutStorageState.materialName = value.materialName -} - -const submitOutStorageData = () => { - batchOutStorageState.loading = true; - outStorageDataRef.value.validate(async (valid: boolean) => { - if(valid){ - let res = await goodsAndEquipmentApi().batchOutStorageGoods(batchOutStorageState.outStorageData); - if(res.data.code === '200'){ - batchOutStorageState.batchOutStorageDialogVisible = false; - emit('refreshData') - ElMessage({ - type: 'success', - message: '出库成功', - duration: 2000 - }); - }else{ - ElMessage({ - type: 'warning', - message:res.data.msg - }); - } - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - batchOutStorageState.loading = false -}; - -const emit = defineEmits(['refreshData',]); - -defineExpose({ - openBatchOutStorageDialog, -}) - -const onVerifiyNumberInteger = (val: number, title: string) => { - batchOutStorageState.outStorageData.count = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); - -}; - -const getUserByDepartment = async () => { - let res = await teamManageApi().getAllMember(1); - if (res.data.code === '200') { - batchOutStorageState.userList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } -} - -onMounted(() => { - getUserByDepartment() -}) -</script> - -<style scoped> -:deep(.el-dialog__header) { - paddOutg: var(--el-dialog-padding-primary); - paddOutg-bottom: 10px; - margOut-right: 16px; - word-break: break-all; - text-align: center !important; -} -</style> diff --git a/src/views/facilityManagement/safetyGoodsAndEquipment/components/safetyGoodsAndEquipmentDialog.vue b/src/views/facilityManagement/safetyGoodsAndEquipment/components/safetyGoodsAndEquipmentDialog.vue deleted file mode 100644 index 54fc08e..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/components/safetyGoodsAndEquipmentDialog.vue +++ /dev/null @@ -1,238 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="dialogState.title" :close-on-click-modal="false" v-model="dialogState.showSafetyGoodsAndEquipmentDialog" width="600px"> - <el-form - :model="dialogState.safetyGoodsAndEquipmentForm" - :rules="dialogState.safetyGoodsAndEquipmentRules" - ref="safetyGoodsAndEquipmentRef" - size="default" - v-loading="dialogState.loading" - element-loading-text="Loading..." - label-width="120px"> - <el-row> - <el-col :span="24" class="mb20"> - <el-form-item label="物资大类" prop="bigClassifyId"> - <el-select v-model="dialogState.safetyGoodsAndEquipmentForm.bigClassifyId" @change="changeSmallClassify(null)" placeholder="物资大类" class="input-add"> - <el-option - v-for="item in dialogState.goodsBigClassifyList" - :key="item.id" - :value="item.id" - :label="item.materialClassifyName" - ></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :span="5">--> -<!-- <el-button type="primary" @click="openAddGoods">添加物资</el-button>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="物资小类" prop="smallClassifyId"> - <el-select class="input-add" v-model="dialogState.safetyGoodsAndEquipmentForm.smallClassifyId" placeholder="请先选择物资大类"> - <el-option - v-for="item in dialogState.goodsSmallClassifyList" - :key="item.id" - :value="item.id" - :label="item.materialClassifyName" - ></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="depId"> - <el-cascader - :disabled="true" - :options="dialogState.departmentList" - :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" - placeholder="请选择部门" - clearable - class="input-add" - v-model="dialogState.safetyGoodsAndEquipmentForm.depId"> - </el-cascader> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="是否耗材" prop="consumable">--> -<!-- <el-select class="input-add" v-model="dialogState.safetyGoodsAndEquipmentForm.consumable" placeholder="是否耗材" clearable filterable>--> -<!-- <el-option--> -<!-- v-for="item in dialogState.consumableList"--> -<!-- :key="item.id"--> -<!-- :value="item.id"--> -<!-- :label="item.name"--> -<!-- >--> -<!-- </el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="dialogState.showSafetyGoodsAndEquipmentDialog = !dialogState.showSafetyGoodsAndEquipmentDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitSafetyGoodsAndEquipment" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <add-goods-dialog ref="addGoodsDialogRef" @refreshClassify="getAllSafetyEquipmentList"></add-goods-dialog> - </div> -</template> - -<script setup lang="ts"> -import {computed, nextTick, reactive, ref, watch} from 'vue' -import { - BigClassifyType, - DataType, DepartmentType, - isValidKey, - SafetyGoodsAndEquipmentDialogStateType, safetyGoodsAndEquipmentFormType -} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import { goodsAndEquipmentApi } from "/@/api/facilityManagement/safetyGoodsAndEquipment"; -import {ElMessage} from "element-plus"; -import AddGoodsDialog from "./addGoodsDialog.vue"; -import {useUserInfo} from "/@/stores/userInfo"; - -const safetyGoodsAndEquipmentRef = ref(); -const addGoodsDialogRef = ref(); -const userInfo = useUserInfo() - -const dialogState = reactive<SafetyGoodsAndEquipmentDialogStateType>({ - safetyGoodsAndEquipmentForm: { - id: null, - bigClassifyId: null, - smallClassifyId: null, - depId: null, - // consumable: null, - }, - safetyGoodsAndEquipmentRules: { - bigClassifyId: [{ required: true, message: '请选择物资大类', trigger: 'change' }], - smallClassifyId: [{ required: true, message: '请选择物资小类', trigger: 'change' }], - // depId: [{ required: true, message: '请选择部门', trigger: 'change' }], - // consumable: [{ required: true, message: '请选择是否耗材', trigger: 'change' }], - }, - showSafetyGoodsAndEquipmentDialog: false, - title: '', - loading: false, - depList: [], - goodsBigClassifyList: [], - goodsSmallClassifyList: [], - departmentList: [], - consumableList: [ - {id: 0, name: '是'}, - {id: 1, name: '否'}, - ], -}); - -watch(() => dialogState.safetyGoodsAndEquipmentForm.bigClassifyId ,(newVal, oldVal) => { - -},); - -// const openAddGoods = () => { -// addGoodsDialogRef.value.openAddGoodsDialog(dialogState.goodsBigClassifyList) -// } - -const openSafetyGoodsAndEquipmentDialog = - (title: string, value: safetyGoodsAndEquipmentFormType, goodsBigClassifyList: BigClassifyType [], departmentList : DepartmentType []) => { - dialogState.title = title; - dialogState.showSafetyGoodsAndEquipmentDialog = true; - dialogState.goodsBigClassifyList = goodsBigClassifyList; - dialogState.departmentList = departmentList; - dialogState.safetyGoodsAndEquipmentForm = { - id: null, - bigClassifyId: null, - smallClassifyId: null, - depId: userInfo.userInfos.depId, - // consumable: null, - }; - nextTick( () => { - safetyGoodsAndEquipmentRef.value.clearValidate(); - }) - if(title === '新增') { - dialogState.title = '新增' - }else { - dialogState.title = '编辑' - changeSmallClassify(value.bigClassifyId) - for(let key in dialogState.safetyGoodsAndEquipmentForm) { - if(isValidKey(key, dialogState.safetyGoodsAndEquipmentForm)){ - dialogState.safetyGoodsAndEquipmentForm[key] = value[key]; - } - } - } -}; - -const changeSmallClassify = (id: number | null) => { - dialogState.safetyGoodsAndEquipmentForm.smallClassifyId = null; - dialogState.goodsSmallClassifyList = dialogState.goodsBigClassifyList[dialogState.goodsBigClassifyList. - findIndex(item => item.id === (dialogState.safetyGoodsAndEquipmentForm.bigClassifyId || id))].childList as Array<BigClassifyType>; -} - -const submitSafetyGoodsAndEquipment = () => { - safetyGoodsAndEquipmentRef.value.validate(async (valid: boolean) => { - if(valid){ - dialogState.loading = true - if(dialogState.title === '新增') { - let res = await goodsAndEquipmentApi().addGoodsEquipment(dialogState.safetyGoodsAndEquipmentForm) - if(res.data.code === '200'){ - dialogState.showSafetyGoodsAndEquipmentDialog = false - emit('refreshData') - ElMessage({ - type: 'success', - message: '安全物资设备新增成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - }else{ - let res = await goodsAndEquipmentApi().updateGoodsEquipment(dialogState.safetyGoodsAndEquipmentForm) - if(res.data.code === '200'){ - dialogState.showSafetyGoodsAndEquipmentDialog = false - emit('refreshData') - ElMessage({ - type: 'success', - message: '安全物资设备编辑成功', - duration: 2000 - }); - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } - } - dialogState.loading = false - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }) - } - }) -}; - -const getAllSafetyEquipmentList = async () => { - let res = await goodsAndEquipmentApi().getAllSafetyEquipment(); - if(res.data.code === '200'){ - dialogState.goodsBigClassifyList = res.data.data - }else{ - ElMessage({ - message:res.data.msg, - type:'warning' - }) - } -}; - -const emit = defineEmits(['refreshData',]) - -defineExpose({ - openSafetyGoodsAndEquipmentDialog, -}); - -</script> - -<style scoped> -.input-length{ - width: 100% !important; -} -</style> diff --git a/src/views/facilityManagement/safetyGoodsAndEquipment/index.ts b/src/views/facilityManagement/safetyGoodsAndEquipment/index.ts deleted file mode 100644 index 63748a4..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/index.ts +++ /dev/null @@ -1,129 +0,0 @@ -export type TableDataType = { - goodsAndEquipmentData: DataType []; - goodsBigClassifyList: BigClassifyType []; - departmentList: DepartmentType []; - listQuery: { - pageSize: number; - pageIndex: number; - searchParams: { - bigClassifyId: number | null; - materialName: string; - } - }; - total: number; -} - -export type SafetyGoodsAndEquipmentDialogStateType = { - safetyGoodsAndEquipmentForm: safetyGoodsAndEquipmentFormType, - safetyGoodsAndEquipmentRules: { - - }, - showSafetyGoodsAndEquipmentDialog: Boolean, - title: string, - loading: Boolean, - depList: DepartmentType []; - consumableList: Type []; - departmentList: DepListType []; - goodsBigClassifyList: BigClassifyType []; - goodsSmallClassifyList: BigClassifyType []; -} - -export type AddGoodsStateType = { - title: string; - goodsClassifyTitle: string; - showAddGoodsDialog: boolean; - showAddGoodsClassifyDialog: boolean; - activeName: string; - goodsData: BigClassifyType []; - goodsBigClassifyList: BigClassifyType []; - consumableList?: Type []; - total: number; - listQuery: { - pageSize: number; - pageIndex: number; - searchParams: { - classifyName: string; - } - }; - goodsClassifyForm: { - id: null | number; - materialClassifyName: string; - parentId: number | null; - consumable?: number | null; - }; - goodsClassifyRules: { - - } -} - -export type BatchInStorageStateType = { - title: string; - loading: boolean; - materialName: string; - batchInStorageDialogVisible: boolean; - inStorageData: { - smId: null | number, - wareHousingCount: null | number, - validType: null | number, - validTime: null | string, - rfid: null | string, - }, - inStorageDataRules: { - }, -} - -export type BatchOutStorageStateType = { - title: string; - loading: boolean; - materialName: string; - batchOutStorageDialogVisible: boolean; - outStorageData: { - smId: null | number, - count: null | number, - receiveUid: null | number, - rfid: null | string, - }; - outStorageDataRules: { - }; - userList: []; -} - -export type Type = { - id: number; - name: string; -} - -export type safetyGoodsAndEquipmentFormType = { - id: null | number, - bigClassifyId: null | number, - smallClassifyId: null | number, - depId: null | number, - // consumable: null | number, -} - -export type DataType = { - id: number | null; - materialName: string; -} - -export type DepListType = { - -} - -export function isValidKey(key: string | number | symbol, object:object): key is keyof typeof object{ - return key in object; -} - -export type DepartmentType = { - -} - -export type BigClassifyType = { - id: number; - materialClassifyName: string; - consumable?: number | null; - parentId?: number; - childList?: BigClassifyType []; -} - - diff --git a/src/views/facilityManagement/safetyGoodsAndEquipment/index.vue b/src/views/facilityManagement/safetyGoodsAndEquipment/index.vue deleted file mode 100644 index 16b16e9..0000000 --- a/src/views/facilityManagement/safetyGoodsAndEquipment/index.vue +++ /dev/null @@ -1,343 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>分类名称:</span> - <el-select class="input-box" v-model="tableData.listQuery.searchParams.bigClassifyId" placeholder="分类名称" filterable clearable> - <el-option - v-for="item in tableData.goodsBigClassifyList" - :key="item.id" - :value="item.id" - :label="item.materialClassifyName" - ></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>物资名称:</span> - <el-input class="input-box" v-model="tableData.listQuery.searchParams.materialName" placeholder="物资名称" clearable> </el-input> - </div> - <div style="padding-bottom: 10px"> - <el-button size="large" type="primary" class="ml10" v-throttle @click="refreshGoodsAndEquipmentData"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="large" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增 - </el-button> -<!-- <el-button size="large" class="ml10" @click="openAddGoods()">--> -<!-- 管理分类--> -<!-- </el-button>--> - </div> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-table :data="tableData.goodsAndEquipmentData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="bigClassifyName" label="大类物资类型名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="materialName" label="物资名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="serialNum" label="序列号" show-overflow-tooltip></el-table-column> - <el-table-column prop="depName" label="部门名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="consumableName" label="是否是耗材" show-overflow-tooltip></el-table-column> - <el-table-column prop="stockCount" label="库存" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="250" align="center"> - <template #default="scope"> - <el-button size="small" text type="success" :icon="Edit" @click="openBatchInStorage('批量入库', scope.row)">批量入库</el-button> - <el-button size="small" text type="warning" :icon="Edit" @click="openBatchOutStorage('批量出库', scope.row)">批量出库</el-button> - <el-button size="small" text type="primary" :icon="Edit" @click="linkToGoodsDetail('查看明细', scope.row)">查看明细</el-button> -<!-- <el-button size="small" text :icon="Edit" @click="onOpenDialogRef('编辑', scope.row)">编辑</el-button>--> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelGoodsEquipment(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.listQuery.pageIndex" background v-model:page-size="tableData.listQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - <safety-goods-and-equipment-dialog ref="safetyGoodsAndEquipmentDialogRef" @refreshData="refreshGoodsAndEquipmentData"></safety-goods-and-equipment-dialog> - <batch-out-storage ref="batchOutStorageRef" @refreshData="refreshGoodsAndEquipmentData"></batch-out-storage> - <batch-in-storage ref="batchInStorageRef" @refreshData="refreshGoodsAndEquipmentData"></batch-in-storage> - <add-goods-dialog ref="addGoodsDialogRef" @refreshClassify="getAllSafetyEquipmentList"></add-goods-dialog> - </div> -</template> - -<script setup lang="ts"> -import {onMounted, reactive, ref} from 'vue' -import {BigClassifyType, DataType, TableDataType} from "/@/views/facilityManagement/safetyGoodsAndEquipment/index"; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import {goodsAndEquipmentApi} from "/@/api/facilityManagement/safetyGoodsAndEquipment"; -import {ElMessage, ElMessageBox} from "element-plus"; -import SafetyGoodsAndEquipmentDialog from './components/safetyGoodsAndEquipmentDialog.vue' -import {departmentApi} from "/@/api/systemManage/department"; -import router from "/@/router"; -import BatchInStorage from './components/batchInStorage.vue' -import BatchOutStorage from './components/batchOutStorage.vue' -import AddGoodsDialog from "./components/addGoodsDialog.vue"; - -const safetyGoodsAndEquipmentDialogRef = ref() -const batchInStorageRef = ref() -const batchOutStorageRef = ref() -const addGoodsDialogRef = ref() - -const tableData = reactive<TableDataType>({ - goodsAndEquipmentData:[], - goodsBigClassifyList:[], - departmentList:[], - listQuery:{ - pageSize: 10, - pageIndex: 1, - searchParams: { - bigClassifyId:null, - materialName:'' - } - }, - total:0, -}) - -const initGoodsAndEquipmentData = async () => { - let res = await goodsAndEquipmentApi().getGoodsEquipmentData(tableData.listQuery) - if(res.data.code === '200'){ - tableData.goodsAndEquipmentData = res.data.data; - tableData.total = res.data.total; - }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) - } -}; - -const onOpenDialogRef = (title: string, value: DataType) => { - safetyGoodsAndEquipmentDialogRef.value.openSafetyGoodsAndEquipmentDialog(title,value,tableData.goodsBigClassifyList, tableData.departmentList); -}; - -const openBatchInStorage = (title: string, value: DataType) => { - batchInStorageRef.value.openBatchInStorageDialog(value) -} - -const openBatchOutStorage = (title: string, value: DataType) => { - batchOutStorageRef.value.openBatchOutStorageDialog(value) -} - -// const openAddGoods = () => { -// addGoodsDialogRef.value.openAddGoodsDialog(tableData.goodsBigClassifyList) -// } - -const linkToGoodsDetail = (title: string, value: DataType) => { - router.push({ path: '/goodsDetailManage', query:{ id: value.id } }); -} - -const onDelGoodsEquipment = (value: DataType) => { - ElMessageBox.confirm(`此操作将永久删除该:“${value.materialName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await goodsAndEquipmentApi().deleteGoodsEquipment({ id: value.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initGoodsAndEquipmentData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); -}; - -const refreshGoodsAndEquipmentData = () => { - initGoodsAndEquipmentData(); -}; -// 分页改变 -const onHandleSizeChange = (val: number) => { - tableData.listQuery.pageSize = val; - initGoodsAndEquipmentData(); -}; -// 分页改变 -const onHandleCurrentChange = (val: number) => { - tableData.listQuery.pageIndex = val; - initGoodsAndEquipmentData(); -}; - -const getAllSafetyEquipmentList = async () => { - let res = await goodsAndEquipmentApi().getAllSafetyEquipment(); - if(res.data.code === '200'){ - tableData.goodsBigClassifyList = JSON.parse(JSON.stringify(res.data.data)) - }else{ - ElMessage({ - message:res.data.msg, - type:'warning' - }) - } -} - -const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - tableData.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } -}; - -onMounted(() => { - initGoodsAndEquipmentData(); - getAllSafetyEquipmentList(); - getDepartmentData(); -}) -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } -} -} -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; -&:first-of-type { - margin-top: 30px; - } -&:last-of-type { - margin-bottom: 0; - border-left: none; - } -.stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; -} -.stepCard { - width: 100%; - margin-top: -30px; - -.box-card { - width: 100%; -&:deep(.el-card__header) { - padding: 10px 15px; - } -.card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; -& > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } -} -} -} -&:hover .card-header { - color: #0098f5; - } -&:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} - -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/facilityManagement/securities/index.vue b/src/views/facilityManagement/securities/index.vue deleted file mode 100644 index 34c9f62..0000000 --- a/src/views/facilityManagement/securities/index.vue +++ /dev/null @@ -1,860 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">分类:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchType"> - <el-option - v-for="item in goodsType" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">名称:</span> - <div class="grid-content topInfo"> - <el-input v-model="searchName"/> - </div> - </el-col> - <el-button type="primary" style="margin-left: 20px" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button> - <el-button type="success" size="default" @click="dialogAddType = true">管理分类</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> - </el-row> - <el-table ref="multipleTableRef" :data="goodsData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="id" label="id" width="180" /> - <el-table-column property="type" label="分类" /> - <el-table-column property="depName" label="仓库/部门" /> - <el-table-column property="name" label="名称" /> - <el-table-column property="consumable" label="是否耗材" align="center"/> - <el-table-column property="stock" label="有效库存" align="center"/> - <el-table-column fixed="right" label="操作" align="center" width="400"> - <template #default="scope"> - <el-button link type="success" size="small" :icon="View" @click="incomeBtn(scope.row)">批量入库</el-button> - <el-button link type="success" size="small" :icon="View" @click="outcomeBtn(scope.row)">批量出库</el-button> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看明细</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" /> - </div> - </div> - </div> - </div> - -<!-- 查看详情--> - <el-dialog v-model="dialogDetails" title="物资明细" center> - - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false" - >确认</el-button - > - </span> - </template> - </el-dialog> - -<!-- 新增修改--> - <el-dialog v-model="dialogAddRecord" title="安全物资与设备编辑" @close="closeAdd" @open="openAdd" center> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="名称" prop="name"> - <el-input v-model="addRecord.name"> </el-input> - </el-form-item> - <div style="display: flex;margin-bottom: 22px;justify-content: space-between;align-items: center"> - <el-form-item label="选择分类" prop="type" style="display: flex"> - <el-select v-model="addRecord.type"> - <el-option v-for="(item, index) in goodsType" :label="item.name" :key="index" :value="item.id">{{ item.name }}</el-option> - </el-select> - </el-form-item> - <el-button style="margin-left: 20px" type="primary" :icon="Plus" size="default" @click="dialogAddType = true">添加分类</el-button> - </div> - <el-form-item label="所属部门/仓库" prop="depName"> - <el-cascader v-model="addRecord.depName" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - <el-form-item label="是否耗材" prop="consumable"> - <el-select v-model="addRecord.consumable"> - <el-option label="是" value="1">是</el-option> - <el-option label="否" value="0">否</el-option> - </el-select> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </el-dialog> - -<!-- 批量入库--> - <el-dialog v-model="dialogEnter" title="批量入库" center width="40%"> - <el-form :model="addRecord" label-width="150px" ref="addRef" :rules="addRules"> - <el-form-item label="当前所选物资/设备" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - <el-form-item label="按RFID标记(选填):" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - <el-form-item label="输入入库数量" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogEnter = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">提交</el-button> - </span> - </template> - </el-dialog> - -<!-- 批量出库--> - <el-dialog v-model="dialogOut" title="批量出库" center width="40%"> - <el-form :model="addRecord" label-width="150px" ref="addRef" :rules="addRules"> - <el-form-item label="当前所选物资/设备" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - <el-form-item label="按RFID标记(选填):" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - <el-form-item label="输入出库数量" prop="name"> - <el-input v-model="addRecord.name" readonly/> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogOut = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">提交</el-button> - </span> - </template> - </el-dialog> - -<!-- 分类管理--> - <el-dialog v-model="dialogAddType" center width="40%"> - <div style="margin-bottom: 20px"> - <el-button type="primary" :icon="Plus" size="default">新增</el-button> - </div> - <el-table :data="goodsData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="type" label="分类名称"/> - <el-table-column fixed="right" label="操作" align="center"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">编辑</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogAddType = false" size="default">确认</el-button> - </span> - </template> - </el-dialog> - -<!-- 删除--> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center> - <span>您确定要删除该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { useRouter } from 'vue-router'; -import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; -import type { TabsPaneContext } from 'element-plus'; -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; -import Cookies from 'js-cookie'; -import axios from 'axios'; -import {holidayGroupApi} from "/@/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup"; - -// 定义接口来定义对象的类型 -interface stateType { - goodsData: Array<any>; - multipleSelection: Array<any>; - goodsType: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - dialogEnter: boolean; - dialogOut: boolean; - deleteDialog: boolean; - dialogAddType: boolean; - pageIndex1: number; - pageSize1: number; - chosenIndex: null | number; - deleteId: null | number; - searchType: string; - searchName: string; - totalSize1: number; - addRecord: Object; - details: Object; - casProps: Object; - workType: Array<type>; - departmentList: Array<any>; - departmentRecursionList: Array<DepartmentState>; -} -interface type { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; -} -export default defineComponent({ - name: 'securities', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex1: 1, - pageSize1: 10, - totalSize1: 0, - departmentList: [], - departmentRecursionList: [], - chosenIndex: null, - searchType: '', - searchName: '', - goodsData: [ - { - id: '001', - type: '安全防护', - depName: '甲醛事业部', - name: '安全帽', - consumable: 0, - stock: 109 - }, - { - id: '002', - type: '消防', - depName: '甲醛事业部', - name: '干粉灭火器', - consumable: 1, - stock: 223 - } - ], - multipleSelection: [], - goodsType:[ - { - id: '001', - name: '安全防护' - }, - { - id: '002', - name: '消防' - } - ], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName', - checkStrictly: true - }, - dialogEnter: false, - dialogOut: false, - dialogAddRecord: false, - dialogDetails: false, - deleteDialog: false, - dialogAddType: false, - addRecord: {}, - details: {}, - deleteId: null, - workType: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - - const addRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - type: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - depName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - consumable: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - const editRecordBtn = (index: number, row: {}) => { - state.dialogAddRecord = true; - state.chosenIndex = index; - state.addRecord = JSON.parse(JSON.stringify(row)); - }; - // 添加方法 - const addRecordBtn = async (data: any) => { - // let res = await holidayGroupApi().addRecord(data); - // if (res.data.code === '200') { - // ElMessage({ - // type: 'success', - // message: '添加成功!' - // }); - // getListByPage(); - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - }; - - // 修改方法 - const editRecord = async (data: any) => { - // let res = await holidayGroupApi().updateRecord(data); - // if (res.data.code === '200') { - // ElMessage({ - // type: 'success', - // message: '修改成功!' - // }); - // getListByPage(); - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - }; - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - if (state.chosenIndex == null) { - // await addRecord(data); - } else { - // (data.id = state.addRecord.id), await editRecord(data); - } - state.dialogAddRecord = false; - } else { - console.log('error submit!', fields); - } - }); - }; - const closeAdd = () => { - state.addRecord = { - id: null, - name: '', - startTime: '', - endTime: '', - info: '' - }; - state.chosenIndex = null; - }; - - // 批量入库 - const incomeBtn =(row) =>{ - state.dialogEnter = true - }; - - // 批量出库 - const outcomeBtn =(row) =>{ - state.dialogOut = true - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - // recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // const recursion = (value: any) => { - // for (let i of value) { - // if (i.children.length !== 0) { - // state.departmentRecursionList.push(i); - // recursion(i.children); - // } else { - // state.departmentRecursionList.push(i); - // } - // } - // }; - - // 分页获取 - const getListByPage = async () => { - const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; - let res = await workApplyApi().getApplyListPage(data); - if (res.data.code === '200') { - // state.applyData = JSON.parse(JSON.stringify(res.data.data)); - // console.log(state.applyData,'applyData') - // state.applyData = state.applyData.map((item) => { - // if (item.operators == null || item.operators == []) { - // item.operators = []; - // } else { - // item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); - // } - // return item; - // }); - state.totalSize1 = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 表格数据格式化 - // const toNames = (row, column, cellValue, index) => { - // if (row.list == []) { - // return []; - // } else { - // const nameList = []; - // for (let i = 0; i < row.list.length; i++) { - // for (let t = 0; t < state.workTimeList.length; t++) { - // if (row.list[i] == state.workTimeList[t].id) { - // nameList.push(state.workTimeList[t].name); - // } - // } - // } - // return nameList.join(); - // } - // }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchType == '' && state.searchName == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - // 重置搜索 - const clearSearch = async () => { - state.searchType = ''; - state.searchName = ''; - getListByPage(); - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.workApplyId; - state.deleteDialog = true; - }; - - // 删除方法 - const deleteRecord = async (data: any) => { - let res = await workApplyApi().cancelApply(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '删除成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const conFirmDelete = () => { - deleteRecord({ workApplyId: state.deleteId }); - state.deleteDialog = false; - }; - - const handleSizeChange1 = (val: number) => { - state.pageSize1 = val; - getListByPage(); - }; - const handleCurrentChange1 = (val: number) => { - state.pageIndex1 = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row: any) => { - state.details = JSON.parse(JSON.stringify(row)); - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - getAllDepartment() - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - Finished, - Download, - addRef, - addRules, - addRecordBtn, - incomeBtn, - outcomeBtn, - editRecordBtn, - editRecord, - reLoadData, - searchRecord, - clearSearch, - viewRecord, - deleteRecordBtn, - confirmAddRecord, - closeAdd, - conFirmDelete, - getListByPage, - handleSizeChange1, - handleCurrentChange1, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .demo-tabs { - width: 100%; - height: 100%; - - &::v-deep(.el-tabs__content) { - height: calc(100% - 60px); - } - - .el-tab-pane { - height: 100%; - } - } - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn { - margin: 0; - } - } - .pageBtn { - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type { - height: calc(100% - 100px); - } - } - .stepItem { - display: flex; - align-items: flex-start; - margin-top: 30px; - margin-left: 30px; - padding-bottom: 30px; - padding-left: 40px; - border-left: 1px solid #a0cfff; - position: relative; - &:first-of-type { - margin-top: 30px; - } - &:first-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - position: absolute; - width: 40px; - height: 40px; - border-radius: 20px; - box-sizing: border-box; - font-size: 18px; - color: #333; - border: 1px solid #a0cfff; - line-height: 38px; - text-align: center; - left: -20px; - top: -30px; - background: #d9ecff; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - - .card-header { - display: flex; - justify-content: space-between; - align-items: center; - - span { - font-weight: bold; - margin-left: 10px; - } - } - - .text { - width: 100%; - font-size: 14px; - margin-bottom: 10px; - padding-left: 10px; - - span { - color: #409eff; - } - - .bold-text{ - font-weight: bolder; - } - - &:last-of-type { - margin-bottom: 0; - } - } - .approveUnit { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - border: 1px solid #fff; - background: #ecf8ff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - span { - width: 45%; - &:first-of-type { - width: 30%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - .approveItem { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - background: #ecf8ff; - border: 1px solid #fff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: flex-start; - margin-bottom: 10px; - span { - width: 50%; - &:first-of-type { - width: 25%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - - .topInfo { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } -} -.el-card { - border: 0; -} -.el-input{ - width: 100% !important; -} -::v-deep(.el-date-editor){ - width: 100%; -} -::v-deep(.el-select){ - width: 100%; -} -:deep(.el-cascader){ - width: 100% !important; -} -.el-form-item{ - width: 100% !important; -} -</style> diff --git a/src/views/goalManagement/Goalsummary/index.vue b/src/views/goalManagement/Goalsummary/index.vue deleted file mode 100644 index a345459..0000000 --- a/src/views/goalManagement/Goalsummary/index.vue +++ /dev/null @@ -1,227 +0,0 @@ -<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" @click="exportExcel('tab1', '会员明细.xlsx')">导出</el-button> - </div> - </div> - <el-table :data="tableData" style="width: 100%" id="tab1"> - <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'; - -import * as XLSX from 'xlsx'; - -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: [], - }, - ], - }, - ]; - - const exportExcel = (id:string,name:string) => { - let workbook = XLSX.utils.table_to_book(document.getElementById(id)); //需要在table上定义一个id - try { - XLSX.writeFile(workbook, name); - console.log('导出成功!'); - } catch (e) { - console.log('导出失败!'); - } - } - return { - ruleForm, - tableData, - currentPage4, - pageSize4, - total, - data, - resetForm, - listApi, - handleSizeChange, - handleCurrentChange, - Plus, - Delete, - Upload, - Download, - Refresh, - View, - exportExcel - }; - }, -}); -</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 deleted file mode 100644 index c0a5906..0000000 --- a/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue +++ /dev/null @@ -1,204 +0,0 @@ -<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.personName" placeholder="请选择"> - <template #append> <el-button :icon="Search" @click="daiInpts(0)" /> </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.rewardPunishmentStandardName" 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-select v-model="form.standardType" disabled size="default" style="width: 100%" placeholder="请选择"> - <el-option label="奖励" :value="1" /> - <el-option label="惩罚" :value="2" /> - </el-select> - </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.content" 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.reason" 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" :disabled="disabled">确定</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: '', //奖惩标准/外键 - rewardPunishmentStandardName: '', - memo: '', ////备注信息 - personId: '', ////员工(多个用逗号隔开) - personName: '', - }); - const titles = ref(); - const disabled = ref(false); - // 打开弹窗 - const openDailog = (title: string, value: any, data: any) => { - dialogVisible.value = true; - titles.value = `${title}奖惩标准设定`; - disabled.value = title == '查看' ? true : false; - if (title == '查看' || title == '修改') - goalManagementApi() - .getrewardPunishmentDetail(data.id) - .then((res) => { - if (res.data.code == 200) { - form.value = res.data.data; - form.value.standardType = data.standardType; - form.value.content = data.content; - form.value.reason = data.reason; - } else { - ElMessage.error(res.data.msg); - } - }); - }; - // 提交 - const submitForm = () => { - dialogVisible.value = false; - delete form.value.standardType; - delete form.value.content; - delete form.value.reason; - delete form.value.rewardPunishmentStandardName - 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: '', //奖惩标准/外键 - rewardPunishmentStandardName: '', - memo: '', ////备注信息 - personId: '', ////员工(多个用逗号隔开) - personName: '', - }; - }; - // 取消 - const resetForm = () => { - dialogVisible.value = false; - form.value = { - rewardPunishmentStandardId: '', //奖惩标准/外键 - rewardPunishmentStandardName: '', - memo: '', ////备注信息 - personId: '', ////员工(多个用逗号隔开) - personName: '', - }; - }; - - // 安全目标指标弹窗 - const Shows = ref(); - const daiInpt = () => { - Shows.value.openDailog(); - }; - const Show = ref(); - const daiInpts = (type: any) => { - Show.value.openDailog(type); - }; - const numberId = (val: any) => { - console.log(val); - form.value.rewardPunishmentStandardId = val.id; - form.value.rewardPunishmentStandardName = val.qname; - form.value.standardType = val.standardType; - form.value.content = val.content; - form.value.reason = val.reason; - }; - const UserId = (val: any) => { - let arr = []; - let arrId = []; - for (let i = 0; i < val.length; i++) { - arr.push(val[i].realName); - arrId.push(val[i].uid); - } - form.value.personName = arr.toString(); - form.value.personId = arrId.toString(); - }; - //全屏 - 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 deleted file mode 100644 index aabfa03..0000000 --- a/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue +++ /dev/null @@ -1,204 +0,0 @@ -<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"> - <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" 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 deleted file mode 100644 index 829190a..0000000 --- a/src/views/goalManagement/IncentiveRecording/index.vue +++ /dev/null @@ -1,302 +0,0 @@ -<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="personName" 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" - @click="openD('修改', editRow)">修改</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" 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="personName" 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)">查看 </el-button> - <el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row)">修改</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 personName=ref() - const resetForm = () => { - ruleForm.searchParams.personId = ''; - personName.value = ''; - 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 editRow = ref() - const handleSelectionChange = (val: any) => { - editRow.value = val[0] - 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; - personName.value = val.realName; - }; - return { - timeDate, - personName, - 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, - editRow - }; - }, -}); -</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 deleted file mode 100644 index e910cb5..0000000 --- a/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue +++ /dev/null @@ -1,147 +0,0 @@ -<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" :disabled="disabled">确定</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 deleted file mode 100644 index c0aadc8..0000000 --- a/src/views/goalManagement/Incentivestandard/index.vue +++ /dev/null @@ -1,283 +0,0 @@ -<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('修改', deletAll[0])">修改 </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 deleted file mode 100644 index fa0bc2a..0000000 --- a/src/views/goalManagement/TargetBook/component/DailogAdd.vue +++ /dev/null @@ -1,246 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm"> - <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.jobName" 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" value-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="责任书附件"> - <uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled" - @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile> - </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'; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - components: { DailogSearch,uploaderFile }, - setup(props, { emit }) { - const dialogVisible = ref<boolean>(false); - const form = ref({ - indexNum: '', //目标指标编号 - memo: '', ////备注信息 - signDate: '', //责任书签订日期 - extraFile: '', //责任书附件 - 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; - form.value.signDate=timeC(form.value.signDate) - - - if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){ - var extraFileList = res.data.data.extraFile.split(',') - for(var a = 0;a<extraFileList.length;a++){ - fileList.value.push( - { - name:extraFileList[a] - } - ) - } - }else { - fileList.value = [] - } - } else { - ElMessage.error(res.data.msg); - } - }); - }; - // 上传成功组装数据 - const successUploader = (list) =>{ - console.log('successUploader',list) - fileList.value = list - var formFileList = '' - for(var a = 0;a<fileList.value.length;a++){ - if(a==fileList.value.length-1){ - formFileList+=fileList.value[a].name - }else { - formFileList+=fileList.value[a].name+',' - } - } - form.value.extraFile = formFileList - } - const deleteFile = (list) =>{ - console.log('deleteFile',list) - fileList.value = list - const formFileList = '' - for(var a = 0;a<fileList.value.length;a++){ - if(a==fileList.value.length-1){ - formFileList.value+=fileList.value[a].name - }else { - formFileList.value+=fileList.value[a].name+',' - } - } - form.value.extraFile = formFileList - } - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m +`:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - // 提交 - const submitForm = () => { - dialogVisible.value = false; - delete form.value.jobName - 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: '', //岗位 - }; - fileList.value = [] - }; - // 安全目标指标弹窗 - const Shows = ref(); - const daiInpt = () => { - Shows.value.openDailog(); - }; - const IdNumber=(val:any)=>{ - form.value.jobId=val.id - form.value.jobName=val.date - } - // 点击上传 - const fileList = ref([ - ]); - - 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 { - timeC, - IdNumber, - dialogVisible, - form, - disabled, - titles, - openDailog, - daiInpt, - submitForm, - resetForm, - Shows, - Search, - fileList, - handleRemove, - handlePreview, - handleExceed, - beforeRemove, - full, - toggleFullscreen, - FullScreen, - successUploader, - deleteFile - }; - }, -}); -</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 deleted file mode 100644 index 54a6871..0000000 --- a/src/views/goalManagement/TargetBook/component/DailogSearch.vue +++ /dev/null @@ -1,175 +0,0 @@ -<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" width="70px"> - <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="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="1" - @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.date }} - </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: '岗位1', - name: 'Tom', - address: 'No. 189, Grove St, Los Angeles', - }, - { - id:2, - date: '岗位2', - name: 'Tom', - address: 'No. 189, Grove St, Los Angeles', - }, - { - id:3, - date: '岗位3', - name: 'Tom', - address: 'No. 189, Grove St, Los Angeles', - }, - { id:4, - date: '岗位4', - 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 deleted file mode 100644 index 593acf8..0000000 --- a/src/views/goalManagement/TargetBook/index.vue +++ /dev/null @@ -1,289 +0,0 @@ -<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="jobName" 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" - @click="openD('修改', deletAll[0])">修改</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" @backNum="IdNumber"></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 = ''; - jobName.value="" - 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 jobName=ref() - const IdNumber=(val:any)=>{ - ruleForm.jobId=val.id - jobName.value=val.date - } - // 表格 - 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 { - IdNumber, - 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 deleted file mode 100644 index 8d45119..0000000 --- a/src/views/goalManagement/index.vue +++ /dev/null @@ -1,14 +0,0 @@ -<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 deleted file mode 100644 index 1bf1044..0000000 --- a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue +++ /dev/null @@ -1,455 +0,0 @@ -<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" - value-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="附件"> - <uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled" - @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="考核模板" size="default" prop="examineTemplateName"> - <el-input 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="form.numberDetailJson" style="width: 100%"> - <el-table-column align="center" prop="itemDetail" label="考核项目" /> - <el-table-column align="center" prop="content" label="考核内容" /> - <el-table-column align="center" label="考核分数"> - <template #default="scope"> - <el-input @blur="numberC" v-model.number="scope.row.number"> </el-input> - </template> - </el-table-column> - <!-- <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" @typeDome="onType"></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'; -import uploaderFile from '/@/components/uploaderFile/index.vue'; -export default defineComponent({ - components: { DailogSearchUser, DailogSearch,uploaderFile }, - 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: '', ////绩效考核模板ID/外键 - examineTemplateName: '', - examineTotalNumber: '', ////总分 - acceptanceNumber: '', ///合格分数 - extraFile: '', //责任书附件 - itemDetail: '', ////考核项目 - memo: '', ////备注信息 - numberDetailJson: [], ////各个考核项目的具体得分,json格式。形式为:[{“id”:"123","number":"123"}] - title: '', ////考核标题 - }); - const titles = ref(); - const titleT = ref(); - const disabled = ref(false); - // 打开弹窗 - const openDailog = (title: string, value: any, id: number) => { - department(); - dialogVisible.value = true; - titles.value = `${title}安全考核管理`; - titleT.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; - form.value.examineDate = timeC(form.value.examineDate); - form.value.numberDetailJson = form.value.currentExamineDtoList; - - - if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){ - var extraFileList = res.data.data.extraFile.split(',') - for(var a = 0;a<extraFileList.length;a++){ - fileList.value.push( - { - name:extraFileList[a] - } - ) - } - }else { - fileList.value = [] - } - - // fileList.value = (res.data.data.fileList?res.data.data.fileList:[]) - } else { - ElMessage.error(res.data.msg); - } - }); - }; - // 上传成功组装数据 - const successUploader = (list) =>{ - console.log('successUploader',list) - fileList.value = list - var formFileList = '' - for(var a = 0;a<fileList.value.length;a++){ - if(a==fileList.value.length-1){ - formFileList+=fileList.value[a].name - }else { - formFileList+=fileList.value[a].name+',' - } - } - form.value.extraFile = formFileList - } - const deleteFile = (list) =>{ - console.log('deleteFile',list) - fileList.value = list - const formFileList = '' - for(var a = 0;a<fileList.value.length;a++){ - if(a==fileList.value.length-1){ - formFileList.value+=fileList.value[a].name - }else { - formFileList.value+=fileList.value[a].name+',' - } - } - form.value.extraFile = formFileList - } - - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m + `:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - // 验证 - 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 onType = (data: any, val: any) => { - form.value.examineTotalNumber = ''; - form.value.examineTemplateId = data.id; - form.value.examineTemplateName = data.title; - form.value.acceptanceNumber = data.acceptanceNumber; - form.value.numberDetailJson = val.examineItemList; - }; - const numberC = () => { - let arr = 0; - for (let i = 0; i < form.value.numberDetailJson.length; i++) { - if (form.value.numberDetailJson[i].number != undefined) { - arr = parseInt(arr) + parseInt(form.value.numberDetailJson[i].number); - } else { - arr = parseInt(arr) + 0; - } - } - form.value.examineTotalNumber = arr; - }; - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - if(titleT.value=='新建'){ - delete form.value.id - } - dialogVisible.value = false; - let arr = []; - for (let i = 0; i < form.value.numberDetailJson.length; i++) { - arr.push({ - id: form.value.numberDetailJson[i].id, - number: form.value.numberDetailJson[i].number, - }); - } - form.value.numberDetailJson = JSON.stringify(arr); - 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(); - fileList.value=[] - }; - 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[]>([]); - - 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 == 0) { - 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 { - titleT, - rules, - timeC, - numberC, - onType, - 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, - successUploader, - deleteFile - }; - }, -}); -</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 deleted file mode 100644 index 7d58a68..0000000 --- a/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue +++ /dev/null @@ -1,247 +0,0 @@ -<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="安全生产责任制考核1" value="1" /> - <el-option label="安全生产责任制考核2" 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 titleT = ref(); - const disabled = ref(false); - const clickType = ref(false); - // 打开弹窗 - const openDailog = (title: string, value: any, id: number) => { - dialogVisible.value = true; - titles.value = `${title}安全考核管理`; - titleT.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 = () => { - if(titleT.value=='新建'){ - delete form.value.id - } - 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 { - titleT, - 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 deleted file mode 100644 index f186ab3..0000000 --- a/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue +++ /dev/null @@ -1,133 +0,0 @@ -<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 deleted file mode 100644 index d50ea80..0000000 --- a/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue +++ /dev/null @@ -1,196 +0,0 @@ -<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="11" :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" > - <el-table-column align="center" width="70px"> - <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="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="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 { 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 = () => { - 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 submitForm=()=>{ - dialogVisible.value = false - emit("typeDome",dynamicTags.value[0],list.value) - clear() - } - // 右方点击添加后显示标签 - const dynamicTags = ref(['']); - const handleClose = (tag: string) => { - dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1); - radio1.value = ''; - }; - const radio1 = ref(''); - const list=ref([]) - const radio = (event: any) => { - - goalManagementApi() - .getexamineTemplateDetail(event.id) - .then((res) => { - if (res.data.code == 200) { - list.value = res.data.data; - } else { - ElMessage.error(res.data.msg); - } - }); - 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 { - submitForm, - list, - 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 deleted file mode 100644 index 53838f6..0000000 --- a/src/views/goalManagement/performanceAppraisal/index.vue +++ /dev/null @@ -1,526 +0,0 @@ -<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" - @click="openD('修改', deletAll[0])">修改</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="scope"> - <div class="tableC"> - <el-table :data="scope.row.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="examinePersonName" 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="scope"> - <div class="tableC"> - <el-table :data="scope.row.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="setPersonName" label="设定人" align="center" sortable show-overflow-tooltip /> - <el-table-column property="setPersonDepartmentName" 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, FormInstance } from 'element-plus'; -import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue'; -import type { TabsPaneContext } from 'element-plus' -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 = ''; - listApi() - }; - 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: TabsPaneContext) => { - console.log(val) - if (val.props.name == '1') { - listApi(); - }else{ - listApis(); - } - }; - // 搜索条件 考核标准设定 - const ruleForms = reactive({ - pageSize: 10, - pageIndex: 1, - searchParams: { - title: '', //标准标题 - }, - }); - // 重置 - const resetForms = () => { - ruleForms.searchParams.title = ''; - listApis() - }; - const listApis = () => { - goalManagementApi() - .getexamineTemplateList(ruleForms) - .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 deleted file mode 100644 index 5f34405..0000000 --- a/src/views/goalManagement/processForms/component/formInformationTop.vue +++ /dev/null @@ -1,144 +0,0 @@ -<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 deleted file mode 100644 index ba671e5..0000000 --- a/src/views/goalManagement/processForms/component/formInformationTops.vue +++ /dev/null @@ -1,162 +0,0 @@ -<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 deleted file mode 100644 index 3eea9f5..0000000 --- a/src/views/goalManagement/processForms/component/lowerPlate.vue +++ /dev/null @@ -1,120 +0,0 @@ -<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 deleted file mode 100644 index 331337a..0000000 --- a/src/views/goalManagement/processForms/processForms.vue +++ /dev/null @@ -1,124 +0,0 @@ -<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 deleted file mode 100644 index 21771af..0000000 --- a/src/views/goalManagement/safetyAssessment/component/Dailog.vue +++ /dev/null @@ -1,264 +0,0 @@ -<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="dutyDepartmentName" label="责任部门" width="180" /> - <el-table-column align="center" property="value" label="考核指标" width="180" /> - <el-table-column align="center" property="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" property="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" property="commitPersonName" label="上报人" /> - <el-table-column align="center" label="操作"> - <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> - </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'; -import { deepClone } from '/@/utils/other'; -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 numId=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; - for(let i=0;i<formUp.targetDivideDetailList.length;i++){ - formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate) - } - } else { - ElMessage.error(res.data.msg); - } - }); - } - numId.value=id - }; - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m +`:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - 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) => { - goalManagementApi() - .getTargetMngDetail(numId.value) - .then((res) => { - if (res.data.code == 200) { - form.value = res.data.data; - formUp.targetDivideDetailList = form.value.targetDivideDetailList; - for(let i=0;i<formUp.targetDivideDetailList.length;i++){ - formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate) - } - } else { - ElMessage.error(res.data.msg); - } - }); - - // let obj=JSON.parse(JSON.stringify(form.value)) - }; - // 新增 - const submitForm = () => { - formUp.delTargetDivideDetails = arr.value.toString(); - formUp.targetId = form.value.id; - dialogVisible.value = false; - for(let i=0;i<formUp.targetDivideDetailList.length;i++){ - delete formUp.targetDivideDetailList[i].dutyDepartmentName - delete formUp.targetDivideDetailList[i].makerDepartmentName - } - goalManagementApi() - .gettargetDivideDetail(formUp) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - message: res.data.msg, - type: 'success', - }); - 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 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 { - timeC, - index, - timeDate, - arr, - form, - dialogVisible, - openDailog, - activeName, - tableData, - Show, - daiAdd, - Shows, - daiInpt, - Search, - full, - toggleFullscreen, - FullScreen, - onNumber, - targetType, - disabled, - resetForm, - titles, - add, - formUp, - submitForm, - numId - }; - }, -}); -</script> -<style scoped> -.el-row { - padding: 0 0 20px 0; -} -</style> \ No newline at end of file diff --git a/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue b/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue deleted file mode 100644 index dc63830..0000000 --- a/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue +++ /dev/null @@ -1,281 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm(ruleFormRef)"> - <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" @current-change="dutyName" :data="data" class="w100" :props="propse" placeholder="请选择" /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="考核指标" prop="examineValue" size="default"> - <el-input v-model.number="form.examineValue" /> - </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" - @current-change="makerDepartmentName" 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" value-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="uploadValue" size="default"> - <el-input v-model="form.uploadValue"> - <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="上报时间" prop="uploadDate" size="default"> - <el-date-picker v-model="form.uploadDate" format="YYYY-MM-DD HH:mm:ss" value-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="examineResult" size="default"> - <el-select v-model="form.examineResult" 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="考核人" prop="examinePersonName" size="default"> - <el-input v-model="form.examinePersonName"> - <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="考核时间" prop="examineDate" size="default"> - <el-date-picker v-model="form.examineDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" /> - </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({ - targetDivideDetailId: "", //关联的目标分解/外键 - examinePersonId: "", - examinePersonName: '', - examineResult: "", //考核结果 1:合格 2:不合格 - id: "", //目标指标ID - }); - //部门 - // 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; - // form.value.id = data.targetId; - form.value.targetDivideDetailId=data.id - form.value.examinePersonName = data.examinePersonName; - form.value.examinePersonId=data.examinePersonId - form.value.examineResult=data.examineResult - } else if (title == '修改') { - console.log(data) - disabled.value = false; - // form.value.id = data.targetId; - form.value.targetDivideDetailId=data.id - form.value.examinePersonName = data.examinePersonName; - form.value.examinePersonId=data.examinePersonId - form.value.examineResult=data.examineResult - } else { - disabled.value = false; - } - dialogVisible.value = true; - }; - // 开启用户弹窗 - const Show = ref(); - const openUser = () => { - Show.value.openDailog(); - }; - const rules = reactive<FormRules>({ - // dutyDepartmentId: [ - // { - // required: true, - // message: '责任部门不能为空', - // trigger: 'blur', - // }, - // ], - // makerDepartmentId: [ - // { - // required: true, - // message: '制定人部门不能为空', - // trigger: 'blur', - // }, - // ], - // commitPersonId: [ - // { - // required: true, - // message: '上报人不能为空', - // trigger: 'blur', - // }, - // ], - // examineValue: [ - // { - // required: true, - // message: '考核指标值不能为空', - // trigger: 'blur', - // }, - // { - // type: 'number', - // message: '考核指标值只能为数字类型', - // trigger: 'blur', - // }, - // ], - // makeDate: [ - // { - // required: true, - // message: '制定日期不能为空', - // trigger: 'blur', - // }, - // ], - examinePersonName: [], - examineResult:[] - - }); - // const dutyName = (data: any) => { - // form.value.dutyDepartmentName = data.depName; - // }; - // const makerDepartmentName = (data: any) => { - // form.value.makerDepartmentName = data.depName; - // }; - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - console.log(form.value) - dialogVisible.value = false; - goalManagementApi().gettargetExamineAddOrUpdate(form.value).then(res=>{ - if(res.data.code==200){ - ElMessage({ - message: res.data.msg, - type: 'success', - }); - }else{ - ElMessage.error(res.data.msg); - } - }) - // handleClose(formEl) - } else { - console.log('error submit!', fields); - } - }); - emit('onAdd'); - }; - - const resetForm = (formEl: FormInstance | undefined) => { - // console.log(formEl); - if (!formEl) return; - // formEl.resetFields(); - dialogVisible.value = false; - form.value = {}; - }; - // 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.examinePersonId = e.uid; - form.value.examinePersonName = e.realName; - }; - return { - disabled, - titles, - // handleClose, - form, - // propse, - // department, - dialogVisible, - openDailog, - Show, - openUser, - Search, - full, - toggleFullscreen, - FullScreen, - // data, - onUser, - ruleFormRef, - rules, - submitForm, - resetForm, - // dutyName, - // makerDepartmentName, - }; - }, -}); -</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 deleted file mode 100644 index f52ba71..0000000 --- a/src/views/goalManagement/safetyAssessment/index.vue +++ /dev/null @@ -1,241 +0,0 @@ -<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"> - <el-tabs v-model="ruleForm.searchParams.targetType" class="demo-tabs" @tab-click="handleClick"> - <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-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-tab-pane label="目标定制(季度)" name="4"></el-tab-pane> - </el-tabs> - <el-table ref="multipleTableRef" :data="tableData" style="width: 100%"> - <el-table-column label="序号" align="center" type="index" width="70" /> - <el-table-column type="expand"> - <template #default="scope"> - <div class="tableC"> - <el-tabs v-model="activeNames"> - <el-tab-pane label="目标指标分解" name="1"> - <el-table :data="scope.row.targetDivideDetailList" style="width: 100%"> - <el-table-column align="center" prop="dutyDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" prop="commitPersonName" 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" 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 { timeDate } from '/@/assets/index.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, ////分解状态 1:已分解 2:未分解 - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.qName = ''; - ruleForm.searchParams.indexNum = ''; - }; - const listApi = () => { - goalManagementApi() - .gettargetExamineList(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); - }; - const activeNames=ref("1") - return { - timeDate, - activeNames, - 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; -} -.tableC { - margin: 0 10%; -} -</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetClassification/index.vue b/src/views/goalManagement/targetClassification/index.vue deleted file mode 100644 index 8c59970..0000000 --- a/src/views/goalManagement/targetClassification/index.vue +++ /dev/null @@ -1,261 +0,0 @@ -<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 @click="openD('修改', deletAll[0])">修改</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 label="名称" align="center" property="typeName" sortable /> - <el-table-column property="memo" 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> - <DailogClass ref="Show" @onAdd="add"></DailogClass> - </div> -</template> -<script lang="ts"> -import DailogClass from '/@/components/DailogClass/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 } from '@element-plus/icons-vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - components: { ElButton, ElInput,DailogClass }, - setup() { - // 搜索条件 - const ruleForm = reactive({ - pageSize: 10, - pageIndex: 1, - searchParams: { - typeName: '', ////分类名称 - }, - }); - // 下方导航与表格 - const tableData = ref([]); - const currentPage4 = ref(); - const pageSize4 = ref(); - const total = ref(); - // const resetForm = () => { - // ruleForm.searchParams.qName = ''; - // ruleForm.searchParams.indexNum = ''; - // listApi(); - // }; - const listApi = () => { - goalManagementApi() - .gettargetClassList(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() - .gettargetClassDelete(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() - .gettargetClassDelete(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: 20px 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/targetDecompositionHalfYear/index.vue b/src/views/goalManagement/targetDecompositionHalfYear/index.vue deleted file mode 100644 index 1ed6ed9..0000000 --- a/src/views/goalManagement/targetDecompositionHalfYear/index.vue +++ /dev/null @@ -1,286 +0,0 @@ -<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 - @click="openD('修改', deletAll[0])">修改</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="scope"> - <div class="tableC"> - <el-tabs v-model="activeNames"> - <el-tab-pane label="目标指标分解" name="1"> - <el-table :data="scope.row.targetDivideDetailList" style="width: 100%"> - <el-table-column align="center" prop="dutyDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" prop="commitPersonName" 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 { timeDate } from '/@/assets/index.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: '3', ////指标类型 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 = ''; - listApi() - }; - 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 { - timeDate, - 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> \ No newline at end of file diff --git a/src/views/goalManagement/targetDecompositionMonth/index.vue b/src/views/goalManagement/targetDecompositionMonth/index.vue deleted file mode 100644 index f0510a7..0000000 --- a/src/views/goalManagement/targetDecompositionMonth/index.vue +++ /dev/null @@ -1,286 +0,0 @@ -<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 - @click="openD('修改', deletAll[0])">修改</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="scope"> - <div class="tableC"> - <el-tabs v-model="activeNames"> - <el-tab-pane label="目标指标分解" name="1"> - <el-table :data="scope.row.targetDivideDetailList" style="width: 100%"> - <el-table-column align="center" prop="dutyDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" prop="commitPersonName" 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 { timeDate } from '/@/assets/index.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 = ''; - listApi() - }; - 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 { - timeDate, - 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/targetDecompositionQuarter/index.vue b/src/views/goalManagement/targetDecompositionQuarter/index.vue deleted file mode 100644 index 4f0f36d..0000000 --- a/src/views/goalManagement/targetDecompositionQuarter/index.vue +++ /dev/null @@ -1,286 +0,0 @@ -<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 - @click="openD('修改', deletAll[0])">修改</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="scope"> - <div class="tableC"> - <el-tabs v-model="activeNames"> - <el-tab-pane label="目标指标分解" name="1"> - <el-table :data="scope.row.targetDivideDetailList" style="width: 100%"> - <el-table-column align="center" prop="dutyDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" prop="commitPersonName" 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 { timeDate } from '/@/assets/index.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: '4', ////指标类型 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 = ''; - listApi() - }; - 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 { - timeDate, - 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 deleted file mode 100644 index c728ad6..0000000 --- a/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue +++ /dev/null @@ -1,262 +0,0 @@ -<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="dutyDepartmentName" label="责任部门" width="180" /> - <el-table-column align="center" property="value" label="考核指标" width="180" /> - <el-table-column align="center" property="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" property="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" property="commitPersonName" label="上报人" /> - <el-table-column align="center" label="操作"> - <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'; -import { deepClone } from '/@/utils/other'; -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; - for(let i=0;i<formUp.targetDivideDetailList.length;i++){ - formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate) - } - } else { - ElMessage.error(res.data.msg); - } - }); - } - }; - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m +`:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - 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) => { - const item = deepClone(val); - console.log(item) - if (index.value == -1) { - formUp.targetDivideDetailList.push(item); - } else { - formUp.targetDivideDetailList[index.value] = item; - } - - // let obj=JSON.parse(JSON.stringify(form.value)) - }; - // 新增 - const submitForm = () => { - formUp.delTargetDivideDetails = arr.value.toString(); - formUp.targetId = form.value.id; - dialogVisible.value = false; - for(let i=0;i<formUp.targetDivideDetailList.length;i++){ - delete formUp.targetDivideDetailList[i].dutyDepartmentName - delete formUp.targetDivideDetailList[i].makerDepartmentName - } - goalManagementApi() - .gettargetDivideDetail(formUp) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - message: res.data.msg, - type: 'success', - }); - 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 { - timeC, - 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 deleted file mode 100644 index 52680b0..0000000 --- a/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue +++ /dev/null @@ -1,308 +0,0 @@ -<template> - <el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm(ruleFormRef)"> - <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="targetTypeId" size="default"> - <el-select v-model="form.targetTypeId" class="m-2" placeholder="请选择" style="width:100%"> - <el-option v-for="item in options" :key="item.id" :label="item.typeName" :value="item.id" /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="责任人" prop="dutyPersonName" size="default"> - <el-input v-model="form.dutyPersonName"> - <template #append> <el-button :icon="Search" @click="openUser(1)" /> </template - ></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="责任部门" prop="dutyDepartmentId" size="default"> - <el-tree-select - v-model="form.dutyDepartmentId" - check-strictly="true" - @current-change="dutyName" - :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" - @current-change="makerName" - 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" - value-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(2)" /> </template - ></el-input> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="计划措施" prop="commitPersonName" size="default"> - <el-input v-model="form.planDesc"></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 type="primary" @click="submitForm(ruleFormRef)" :disabled="disabled" 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: '', ////制定日期 - targetTypeId: '', ///目标分类 - dutyPersonId: '', ///责任人id - dutyPersonName: '', ///责任人 - planDesc: '', ///计划措施 - }); - //部门 - 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(); - allList() - }); - 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; - }; - // 分类 All - const allList=()=>{ - goalManagementApi().gettargetClassAll({}).then(res=>{ - if(res.data.code==200){ - options.value=res.data.data - }else{ - ElMessage.error(res.data.msg); - } - }) - } - // 开启用户弹窗 - const Show = ref(); - const openUser = (type:any) => { - Show.value.openDailog(type); - }; - const rules = reactive<FormRules>({ - targetTypeId: [ - { - required: true, - message: '目标分类不能为空', - trigger: 'blur', - }, - ], - dutyPersonName: [ - { - required: true, - message: '责任人不能为空', - trigger: 'blur', - }, - ], - dutyDepartmentId: [ - { - required: true, - message: '责任部门不能为空', - trigger: 'blur', - }, - ], - makerDepartmentId: [ - { - required: true, - message: '制定人部门不能为空', - trigger: 'blur', - }, - ], - 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.clearValidate(); - dialogVisible.value = false; - form.value = {}; - }; - // 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, type: any) => { - console.log(e); - if (type == 1) { - form.value.dutyPersonId = e.uid; - form.value.dutyPersonName = e.realName; - } else if (type == 2) { - form.value.commitPersonId = e.uid; - form.value.commitPersonName = e.realName; - } - }; - const makerName = (data: any) => { - form.value.makerDepartmentName = data.depName; - }; - const dutyName = (data: any) => { - form.value.dutyDepartmentName = data.depName; - }; - const options = ref([]); - return { - options, - allList, - disabled, - makerName, - dutyName, - 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 deleted file mode 100644 index e840ca6..0000000 --- a/src/views/goalManagement/targetDecompositionYear/index.vue +++ /dev/null @@ -1,284 +0,0 @@ -<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 - @click="openD('修改', deletAll[0])">修改</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="scope"> - <div class="tableC"> - <el-tabs v-model="activeNames"> - <el-tab-pane label="目标指标分解" name="1"> - <el-table :data="scope.row.targetDivideDetailList" style="width: 100%"> - <el-table-column align="center" prop="dutyDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="makerDepartmentName" label="制定人部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" prop="commitPersonName" 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 { timeDate } from '/@/assets/index.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 = ''; - listApi() - }; - 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 { - timeDate, - 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 deleted file mode 100644 index bf223b6..0000000 --- a/src/views/goalManagement/targetEscalation/component/Dailog.vue +++ /dev/null @@ -1,65 +0,0 @@ -<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 property="workName" label="审批人" sortable></el-table-column> - <el-table-column property="title" label="审批标题" sortable></el-table-column> - <el-table-column property="approvePersonName" label="编写人" sortable></el-table-column> - <el-table-column property="approveMemo" label="审批意见" sortable></el-table-column> - </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'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - setup() { - const dialogVisible = ref(false); - const form = ref({ - pageSize: 10, - pageIndex: 1, - searchParams: { - relateId: '', ////检查记录ID - relateType:"", - gmtCreate:[], - }, - }); - const tableData = ref(); - const openDailog = (data: any,type:number) => { - dialogVisible.value = true; - form.value.searchParams.relateId=data - form.value.searchParams.relateType=type - goalManagementApi().getworkApproveListCode(form.value).then(res=>{ - if(res.data.code==200){ - tableData.value=res.data.data - } - }) - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - dialogVisible, - tableData, - openDailog, - full, - toggleFullscreen, - form, - FullScreen, - }; - }, -}); -</script> diff --git a/src/views/goalManagement/targetEscalation/component/TypeDailog.vue b/src/views/goalManagement/targetEscalation/component/TypeDailog.vue deleted file mode 100644 index 02c9afb..0000000 --- a/src/views/goalManagement/targetEscalation/component/TypeDailog.vue +++ /dev/null @@ -1,341 +0,0 @@ -<template> - <el-dialog :title="titleName" v-model="dialogVisible" @click="resetForm" width="70%" 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="form" size="default" :disabled="disabled" label-width="120px"> - <div v-if="titleName == '发起审批'"> - <el-row> - <el-col :span="11"> - <el-form-item label="审批名称" prop="workName" size="default"> - <el-input v-model="form.workName" :disabled="disabledT" placeholder="请填写名称"></el-input> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="审批标题" prop="title" size="default"> - <el-input v-model="form.title" :disabled="disabledT" placeholder="请填写标题"></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="审批人" prop="approvePersonId" size="default"> - <el-input v-model="form.approvePersonName" :disabled="disabledT" placeholder="请选择" class="input-with-select"> - <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> - </div> - <div v-if="titleName != '发起审批'"> - <el-row> - <el-col :span="11"> - <el-form-item label="审批名称" prop="workName" size="default"> - <el-input v-model="formUp.workName" :disabled="disabledT" placeholder="请填写名称"></el-input> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="审批标题" prop="title" size="default"> - <el-input v-model="formUp.title" :disabled="disabledT" placeholder="请填写标题"></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="审批人" prop="approvePersonId" size="default"> - <el-input v-model="formUp.approvePersonName" :disabled="disabledT" placeholder="请选择" class="input-with-select"> - <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> - </div> - <el-table :data="tableData" style="width: 90%;margin:20px auto"> - <el-table-column align="center" type="index" label="序号" width="80" /> - <el-table-column align="center" prop="makerDepartmentName" label="责任部门" /> - <el-table-column align="center" prop="value" label="考核指标" /> - <el-table-column align="center" prop="dutyDepartmentName" label="制定部门" /> - <el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" /> - <el-table-column align="center" label="检查值"> - <template #default="scope"> - <el-input v-model="scope.row.commitValue" :disabled="disabledType" /> - </template> - </el-table-column> - <el-table-column align="center" label="检查人"> - <template #default="scope"> - <el-input v-model="scope.row.personName" :disabled="disabledType"> - <template #append> <el-button :icon="Search" @click="openUsers(scope.row)" /> </template - ></el-input> - </template> - </el-table-column> - </el-table> - <div v-if="typeScope"> - <el-row> - <el-col> - <el-form-item label="审批结果" prop="authorUid"> - <el-radio-group :disabled="disabled" v-model="form.approveResult"> - <el-radio :label="0">不通过</el-radio> - <el-radio :label="1">通过</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="审批意见" prop="approveMemo"> - <el-input v-model="form.approveMemo" :disabled="disabled" type="textarea" placeholder="请填写审批意见"></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="是否完成" prop="complete"> - <el-radio-group v-model="form.approveStatus" :disabled="disabled"> - <el-radio :label="3">是</el-radio> - <el-radio :label="2">否</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - </el-row> - <div v-if="form.approveStatus == 2"> - <el-row> - <el-col :span="11"> - <el-form-item label="审批名称" prop="workName" size="default"> - <el-input v-model="form.workName" placeholder="请填写名称"></el-input> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="审批标题" prop="title" size="default"> - <el-input v-model="form.title" placeholder="请填写标题"></el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="审批人" prop="approvePersonId" size="default"> - <el-input v-model="form.approvePersonName" placeholder="请选择" class="input-with-select"> - <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> - </div> - </div> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="resetForm" size="default">关闭</el-button> - <el-button size="default" type="primary" :disabled="disabled" @click="submitForm">确定</el-button> - </span> - </template> - </el-dialog> - <DailogSearchUserManger ref="userRef" @SearchUser="onUser" /> - <DailogSearchUser ref="Show" @SearchUser="onUsers"></DailogSearchUser> -</template> -<script lang="ts"> -import { ref, defineComponent } from 'vue'; -import { timeDate } from '/@/assets/index.ts'; -import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue'; -import { ElMessage } from 'element-plus'; -import DailogSearchUser from '../../../../components/DailogSearchUser/index.vue'; -import { goalManagementApi } from '/@/api/goalManagement'; -import { Search, FullScreen } from '@element-plus/icons-vue'; -export default defineComponent({ - components: { DailogSearchUserManger, DailogSearchUser }, - setup(props, { emit }) { - const dialogVisible = ref(false); - const form = ref({ - workName: '', // 审批名称 - title: '', //审批标题 - approvePersonId: '', - approvePersonName: '', - approveStatus: "", - approveResult: '', - relateType: 1, - relateId: '', - relateDesc: '', - }); - // 提交 - const submitForm = () => { - if (titleName.value == '发起审批') { - let arr = []; - for (let i = 0; i < tableData.value.length; i++) { - arr.push({ - id: tableData.value[i].id, - value: tableData.value[i].commitValue, - personName: tableData.value[i].personName, - personId: tableData.value[i].personId, - }); - } - form.value.approveStatus=2 - form.value.relateDesc = JSON.stringify(arr); - goalManagementApi() - .getworkApproveAdd(form.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - emit('onType'); - } else { - ElMessage.error(res.data.msg); - } - }); - } else if (titleName.value == '审批') { - goalManagementApi() - .getworkApproveUpdata(form.value) - .then((res) => { - if (res.data.code == 200) { - ElMessage({ - showClose: true, - message: res.data.msg, - type: 'success', - }); - emit('onType'); - } else { - ElMessage.error(res.data.msg); - } - }); - } - dialogVisible.value = false; - disabled.value = false; - disabledT.value = false; - form.value = {}; - formUp.value = {}; - }; - // 关闭 - const resetForm = () => { - disabled.value = false; - disabledT.value = false; - form.value = {}; - formUp.value = {}; - tableData.value=[]; - dialogVisible.value = false; - }; - const titleName = ref(); - const typeScope = ref(); - const disabledT = ref(false); - const disabled = ref(false); - const formUp = ref({ - workName: '', - title: '', - approvePersonName: '', - }); - const tableData = ref([]); - const disabledType=ref() - // 打开弹窗 - const openDialog = (title: string, name: any, id: number, type: number,data:any) => { - dialogVisible.value = true; - titleName.value = title; - form.value.relateType = type; - if (title == '发起审批') { - form.value.relateId = id; - typeScope.value = false; - goalManagementApi() - .getTargetMngDetail(id) - .then((res) => { - if (res.data.code == 200) { - tableData.value = res.data.data.targetDivideDetailList; - } else { - ElMessage.error(res.data.msg); - } - }); - disabledType.value=false - } else if (title == '审批' || title == '查看审批') { - goalManagementApi() - .getworkApproveDetail(id) - .then((res) => { - if (res.data.code == 200) { - if (data.approveStatus==2&&data.checkApprove==true){ - disabled.value = false; - } else if(data.approveStatus==2&&data.checkApprove==false) { - disabled.value = true; - } - form.value = res.data.data; - form.value.approveStatus = ''; - formUp.value.workName = form.value.workName; - formUp.value.title = form.value.title; - formUp.value.approvePersonName = form.value.approvePersonName; - form.value.workName="" - form.value.title="" - form.value.approvePersonName="" - tableData.value=res.data.data.targetDivideDetailList - console.log(form.value.approvePersonName) - } - }); - disabledType.value=true - typeScope.value = true; - disabledT.value = true; - } - }; - // 打开用户选择弹窗 - const userRef = ref(); - const openUser = () => { - userRef.value.openDailog(); - }; - const index = ref(); - const Show = ref(); - const openUsers = (id: any) => { - index.value = tableData.value.indexOf(id); - Show.value.openDailog(); - }; - const onUser = (val: any) => { - form.value.approvePersonId = val[0].uid; - form.value.approvePersonName = val[0].realName; - }; - const onUsers = (val: any) => { - tableData.value[index.value].personName = val.realName; - tableData.value[index.value].personId = val.uid; - }; - //全屏 - const full = ref(false); - const toggleFullscreen = () => { - if (full.value == false) { - full.value = true; - } else { - full.value = false; - } - }; - return { - disabledType, - index, - Show, - onUsers, - openUsers, - formUp, - timeDate, - tableData, - onUser, - dialogVisible, - form, - disabledT, - submitForm, - resetForm, - titleName, - typeScope, - disabled, - openDialog, - userRef, - openUser, - full, - toggleFullscreen, - Search, - FullScreen, - }; - }, -}); -</script> -<style> -.el-row { - padding-bottom: 20px; -} -</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetEscalation/index.vue b/src/views/goalManagement/targetEscalation/index.vue deleted file mode 100644 index 22535be..0000000 --- a/src/views/goalManagement/targetEscalation/index.vue +++ /dev/null @@ -1,199 +0,0 @@ -<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-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" v-if="scope.row.approveStatus==null" @click="TypeDailog('发起审批','检查',scope.row.id,1)">发起审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==true" @click="TypeDailog('审批',scope.row.id,scope.row.approveId,1,scope.row)">审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==false" @click="TypeDailog('查看审批',scope.row.id,scope.row.approveId,1,scope.row)">查看审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==3" @click="openDai(scope.row.id,1)" >查看审批流程</el-button> - </template> - </el-table-column> - <el-table-column v-if="activeName == 2" label="操作" align="center" show-overflow-tooltip> - <template #default="scope"> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==null" @click="TypeDailog('发起审批','检查',scope.row.id,2)">发起审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==true" @click="TypeDailog('审批',scope.row.id,scope.row.approveId,2,scope.row)">审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==false" @click="TypeDailog('查看审批',scope.row.id,scope.row.approveId,2,scope.row)">查看审批</el-button> - <el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==3" @click="openDai(scope.row.id,2)" >查看审批流程</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> - <TypeDailog ref="TypeD" @onType="typeAlign" /> - </div> -</template> -<script lang="ts"> -import Dailog from './component/Dailog.vue'; -import TypeDailog from './component/TypeDailog.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,TypeDailog }, - setup() { - // 搜索条件 - const ruleForm = reactive({ - pageSize: 10, - pageIndex: 1, - searchParams: { - qName: '', ////安全目标指标 - indexNum: '', ////目标指标编号 - targetType: 1, ////指标类型 1:年指标 2:月指标 - divideStatus: 1, ////分解状态 1:已分解 2:未分解 - relateType: 1, ////关联业务类型 1:目标检查 2:目标上报 - }, - }); - // 重置 - const resetForm = () => { - ruleForm.searchParams.qName = ''; - ruleForm.searchParams.indexNum = ''; - }; - const listApi = () => { - goalManagementApi() - .getworkApproveList(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.relateType = 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,num:number) => { - Show.value.openDailog(data,num); - }; - // 发起审批弹窗 - const TypeD = ref(); - const TypeDailog = (title:string,name:string,id:number,type:number,data:any) => { - TypeD.value.openDialog(title,name,id,type,data); - }; - const typeAlign=()=>{ - listApi(); - } - return { - TypeD, - typeAlign, - TypeDailog, - activeName, - total, - handleClick, - ruleForm, - listApi, - onAddorUpdata, - tableData, - resetForm, - currentPage4, - pageSize4, - handleSizeChange, - handleCurrentChange, - Show, - openDai, - 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 deleted file mode 100644 index ee0c885..0000000 --- a/src/views/goalManagement/targetImprovements/component/Dailogprove.vue +++ /dev/null @@ -1,105 +0,0 @@ -<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 deleted file mode 100644 index b273902..0000000 --- a/src/views/goalManagement/targetImprovements/index.vue +++ /dev/null @@ -1,307 +0,0 @@ -<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 deleted file mode 100644 index 8ab66ca..0000000 --- a/src/views/goalManagement/targetSettings/component/dailogAdd.vue +++ /dev/null @@ -1,284 +0,0 @@ -<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.number="form.value" placeholder="请填写指标值"> - <template #prepend> - <el-select v-model="form.valueSign " placeholder="请选择" style="width: 115px"> - <el-option label="大于" :value="1" /> - <el-option label="等于" :value="2" /> - <el-option label="小于" :value="3" /> - </el-select> - </template> - </el-input> - </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" - value-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=""> - <el-tree-select - v-model="form.makerDepartmentId" - :data="data" - @current-change="makerName" - check-strictly="true" - class="w100" - :props="propse" - placeholder="请选择" - /> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> </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 { timeDate } from '/@/assets/index.ts'; -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: '', ////指标值 - makerDepartmentId: '', - valueSign:"" - }); - const titles = ref(); - const disabled = ref(false); - const titleT = ref(); - // 打开弹窗 - const openDialog = (title: string, value: any, id: number) => { - department(); - Shows.value = true; - titleT.value = title; - 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; - form.value.completeDate = timeC(form.value.completeDate); - } else { - ElMessage.error(res.data.msg); - } - }); - }; - const timeC = (timestamp: any) => { - let a = new Date(timestamp).getTime(); - const date = new Date(a); - const Y = date.getFullYear() + '-'; - const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; - const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; - const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; - const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(); - const s = date.getSeconds(); // 秒 - const dateString = Y + M + D + h + m + `:${s}`; - // console.log('dateString', dateString); // > dateString 2021-07-06 14:23 - return dateString; - }; - //全屏 - 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', - }, - { - type: 'number', - message: '指标值只能为数字类型', - trigger: 'change', - }, - ], - level: [], - completeDate: [], - memo: [], - }); - // 提交 - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate((valid, fields) => { - if (valid) { - if (titleT.value == '新建') { - delete form.value.id; - } - 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(); - }; - //部门 - 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 makerName = (data: any) => { - form.value.makerDepartmentName = data.depName; - }; - return { - department, - propse, - data, - makerName, - timeC, - openDialog, - handleClose, - titles, - titleT, - // timeDate, - 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 deleted file mode 100644 index 35b1a6a..0000000 --- a/src/views/goalManagement/targetSettings/component/search.vue +++ /dev/null @@ -1,52 +0,0 @@ -<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 deleted file mode 100644 index 0086c8e..0000000 --- a/src/views/goalManagement/targetSettings/index.vue +++ /dev/null @@ -1,300 +0,0 @@ -<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-tab-pane label="目标定制(半年)" name="3"></el-tab-pane> - <el-tab-pane label="目标定制(季度)" name="4"></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 = ''; - listApi() - }; - 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/goalManagement/targetStatistics/index.vue b/src/views/goalManagement/targetStatistics/index.vue deleted file mode 100644 index bffcc0e..0000000 --- a/src/views/goalManagement/targetStatistics/index.vue +++ /dev/null @@ -1,92 +0,0 @@ -<template> - <div style="background-color: #fff"> - <h2 style="line-height:40px;text-align: center;padding: 20px 0;">目标完成情况统计</h2> - <el-row style="padding:20px 0"> - <el-col :span="4" :offset="17"> - <el-select v-model="form.targetType" placeholder="" @change="listApi" 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-col> - </el-row> - <div ref="main" style="width: 100%; height: 450px;"></div> - </div> -</template> -<script lang="ts"> -import { defineComponent, onMounted, ref } from 'vue'; -import * as echarts from 'echarts'; -import { ElMessage } from 'element-plus'; -import { goalManagementApi } from '/@/api/goalManagement'; -export default defineComponent({ - setup() { - const form = ref({ - qName: '', - indexNum: '', - targetType: 1, - divideStatus: '', - }); - onMounted(() => { - listApi(); - }); - const listApi = () => { - goalManagementApi() - .gettargetstatistics(form.value.targetType) - .then((res) => { - let arr = []; - arr.push({ - value: res.data.data.noComplete, - name: `未完成 ${res.data.data.noComplete}`, - }); - arr.push({ - value: res.data.data.complete, - name: `已完成 ${res.data.data.complete}`, - }); - init(arr); - }); - }; - const main = ref(); - const init = (data: any) => { - var myChart = echarts.init(main.value); - var option = { - // title: { - // text: 'Referer of a Website', - // subtext: 'Fake Data', - // left: 'center', - // }, - tooltip: { - trigger: 'item', - }, - legend: { - orient: 'vertical', - left: '30%', - }, - series: [ - { - // name: 'Access From', - type: 'pie', - radius: '90%', - data: data, - emphasis: { - itemStyle: { - shadowBlur: 10, - shadowOffsetX: 0, - shadowColor: 'rgba(0, 0, 0, 0.5)', - }, - }, - }, - ], - }; - - myChart.setOption(option); - }; - return { - form, - main, - init, - listApi, - }; - }, -}); -</script> diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..0771f90 --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,15 @@ +<template> +<div> + 123 +</div> +</template> + +<script> +export default { + name: "index" +} +</script> + +<style scoped> + +</style> diff --git a/src/views/intellectInspect/inspectBasic/discriminate/components/RFIDDialog.vue b/src/views/intellectInspect/inspectBasic/discriminate/components/RFIDDialog.vue deleted file mode 100644 index a54d140..0000000 --- a/src/views/intellectInspect/inspectBasic/discriminate/components/RFIDDialog.vue +++ /dev/null @@ -1,248 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowRFIDDialog" width="600px"> - <el-form :model="RFIDForm" :rules="RFIDFormRules" ref="RFIDFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="RFID名称" prop="rfidName"> - <el-input class="input-add" v-model.trim="RFIDForm.rfidName" placeholder="请输入RFID名称" clearable></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="RFID编码" prop="rfid"> - <el-input class="input-add" v-model.trim="RFIDForm.rfid" placeholder="请输入RFID编码" clearable></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="rfidImage"> - <el-upload accept="image/*" :on-preview="handlePictureCardPreview" :limits="1" v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传 jpg/png 图片尺寸小于500KB</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowRFIDDialog = !isShowRFIDDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitRFID" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogVisible"> - <img w-full :src="dialogImageUrl" alt="Preview Image" /> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowRFIDDialog: Boolean; - RFIDForm: { - rfid: string; - rfidName: string; - rfidImage: string | null; - }; - title: string; - dialogVisible: Boolean; - dialogImageUrl: string | null; - RFIDFormRules: {}; - uploadUrl: string; - fileList: Array<file>; -} -interface file { - url: string; -} -import { reactive, toRefs, ref } from 'vue'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; -import { ElMessage, ElMessageBox } from 'element-plus'; -import type { UploadProps, UploadUserFile } from 'element-plus'; -import axios from 'axios'; -export default { - name: 'RFIDDialog', - setup(props: any, context: any) { - const RFIDFormRef = ref(); - const state = reactive<stateType>({ - title: '', - isShowRFIDDialog: false, - RFIDForm: { - rfid: '', - rfidName: '', - rfidImage: null - }, - uploadUrl: '', - dialogVisible: false, - dialogImageUrl: null, - RFIDFormRules: { - rfid: [{ required: true, message: '请填写RFID编码', trigger: 'blur' }], - rfidName: [{ required: true, message: '请填写RFID名称', trigger: 'change' }], - riskLevel: [{ required: true, message: '请选择风险等级', trigger: 'change' }], - location: [{ required: true, message: '请填写区域位置', trigger: 'blur' }] - }, - - fileList: [] - }); - //打开模态框 - const openRFIDDialog = (type: string, value: object) => { - state.fileList = []; - state.isShowRFIDDialog = true; - setTimeout(() => { - RFIDFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.title = '新增RFID'; - state.RFIDForm = { - rfid: '', - rfidName: '', - rfidImage: '' - }; - } else { - state.title = '修改RFID'; - state.RFIDForm = JSON.parse(JSON.stringify(value)); - if (state.RFIDForm.rfidImage === null) return; - state.fileList = [{ url: state.RFIDForm.rfidImage }]; - } - }; - - // // 图片上传 - // const fileList = ref<UploadUserFile[]>([]); - // - // const handleRemove = () => { - // ElMessageBox.confirm(`此操作将永久删除该图片,是否继续?`, '提示', { - // confirmButtonText: '确认', - // cancelButtonText: '取消', - // type: 'warning' - // }) - // .then(() => { - // state.RFIDForm.rfidImage = null; - // state.fileList = []; - // }) - // .catch(() => {}); - // }; - - const handlePreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile); - }; - - const getUploadUrl = async (rawFile: any) => { - const res = await RFIDApi().getUploadUrl(rawFile.name); - state.RFIDForm.rfidImage = res.data.rfidImage; - state.uploadUrl = res.data.uploadUrl; - }; - - const upload = async (params: any) => { - // const formData = new FormData(); - // formData.append('file', state.fileList[0].raw); - let reader = new FileReader(); - reader.readAsArrayBuffer(params.file); - reader.onload = async () => { - axios - .put(state.uploadUrl, reader.result, { - header: { 'Content-Type': 'multipart/form-data' } - }) - .then(() => { - if (state.fileList.length === 2) { - state.fileList.splice(0, 1); - } - }); - // let res = await RFIDApi().uploadFile(state.uploadUrl, reader.result); - // if (res.data.code === '200') { - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - }; - }; - - const beforeRemove = (file: {}, fileList: []) => { - const result = new Promise((resolve, reject) => { - ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => { - state.RFIDForm.rfidImage = null; - state.fileList = []; - // 请求删除接口 - }) - .catch(() => { - reject(false); - }); - }); - return result; - }; - - //新增修改提交 - const submitRFID = async () => { - RFIDFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增RFID') { - let res = await RFIDApi().addRFID(state.RFIDForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: 'RFID新增成功', - duration: 2000 - }); - state.isShowRFIDDialog = false; - context.emit('refreshRFID'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await RFIDApi().modRFID(state.RFIDForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: 'RFID修改成功', - duration: 2000 - }); - state.isShowRFIDDialog = false; - context.emit('refreshRFID'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const handlePictureCardPreview = (uploadFile: { url: string }) => { - state.dialogImageUrl = uploadFile.url!; - state.dialogVisible = true; - }; - - return { - ...toRefs(state), - RFIDFormRef, - // fileList, - upload, - getUploadUrl, - handlePreview, - beforeRemove, - submitRFID, - openRFIDDialog, - handlePictureCardPreview - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectBasic/discriminate/index.vue b/src/views/intellectInspect/inspectBasic/discriminate/index.vue deleted file mode 100644 index d857438..0000000 --- a/src/views/intellectInspect/inspectBasic/discriminate/index.vue +++ /dev/null @@ -1,190 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>RFID名称:</span> - <el-input class="input-box" v-model="RFIDData.params.rfidName" placeholder="RFID名称" clearable> </el-input> - </div> - <div class="basic-line"> - <span>RFID编码:</span> - <el-input class="input-box" v-model="RFIDData.params.rfid" placeholder="RFID编码" clearable> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增RFID - </el-button> - </div> - <el-table :data="RFIDData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="rfidName" label="RFID名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="rfid" label="RFID编码" show-overflow-tooltip></el-table-column> - <el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="RFIDData.params.pageIndex" background v-model:page-size="RFIDData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="RFIDData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <RFIDDialog ref="RFIDDialogRef" @refreshRFID="initRFIDTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import RFIDDialog from './components/RFIDDialog.vue'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import type { UploadProps, UploadUserFile } from 'element-plus' -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - RFIDData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - rfid: number | null; - rfidName: string | null; - }; - }; -} - -export default defineComponent({ - name: 'RFID', - components: { RFIDDialog, Edit, Delete }, - setup() { - const RFIDDialogRef = ref(); - const state = reactive<TableDataState>({ - RFIDData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - rfid: null, - rfidName: null - } - } - }); - - // 初始化表格数据 - const initRFIDTableData = async () => { - let res = await RFIDApi().getRFIDList(state.RFIDData.params); - if (res.data.code === '200') { - state.RFIDData.data = res.data.data.records; - state.RFIDData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - RFIDDialogRef.value.openRFIDDialog(type, value); - }; - // 删除 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该RFID:“${row.rfidName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await RFIDApi().deleteRFID({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initRFIDTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initRFIDTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.RFIDData.params.pageSize = val; - initRFIDTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.RFIDData.params.pageIndex = val; - initRFIDTableData(); - }; - // 页面加载时 - onMounted(() => { - initRFIDTableData(); - }); - - return { - Edit, - Delete, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - RFIDDialog, - RFIDDialogRef, - initRFIDTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped> -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/intellectInspect/inspectBasic/facility/components/facilityAreaDialog.vue b/src/views/intellectInspect/inspectBasic/facility/components/facilityAreaDialog.vue deleted file mode 100644 index 1e9ede6..0000000 --- a/src/views/intellectInspect/inspectBasic/facility/components/facilityAreaDialog.vue +++ /dev/null @@ -1,154 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowFacilityAreaDialog" width="600px"> - <el-form :model="facilityAreaForm" :rules="facilityAreaFormRules" ref="facilityAreaFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="设备区域名称" prop="region"> - <el-input class="input-length" v-model.trim="facilityAreaForm.region" placeholder="请输入设备区域名称" clearable></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="regionTypeId"> - <el-select class="input-length" v-model="facilityAreaForm.regionTypeId" placeholder="请选择设备区域类型" clearable filterable> - <el-option v-for="item in facilityAreaTypeList" :key="item.id" :label="item.regionType" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowFacilityAreaDialog = !isShowFacilityAreaDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitFacilityArea" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowFacilityAreaDialog: Boolean; - facilityAreaForm: { - region: string; - regionTypeId: number | null; - }; - title: string; - facilityAreaTypeList: Array<facilityAreaTypeState>; - facilityAreaFormRules: {}; -} -interface facilityAreaTypeState { - regionType: string; - id: number; -} - -import { reactive, toRefs, ref } from 'vue'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { ElMessage } from 'element-plus'; -export default { - name: 'facilityAreaDialog', - setup(props: any, context: any) { - const facilityAreaFormRef = ref(); - const state = reactive<stateType>({ - title: '', - facilityAreaTypeList: [], - isShowFacilityAreaDialog: false, - facilityAreaForm: { - region: '', - regionTypeId: null - }, - facilityAreaFormRules: { - region: [{ required: true, message: '请填写设备区域名称', trigger: 'blur' }], - regionTypeId: [{ required: true, message: '请选择设备区域类型', trigger: 'change' }] - } - }); - - //打开模态框 - const openFacilityAreaDialog = (type: string, value: { id: number; region: string; regionTypeId: number }, facilityAreaTypeList: Array<facilityAreaTypeState>) => { - state.isShowFacilityAreaDialog = true; - state.facilityAreaTypeList = facilityAreaTypeList.filter((item) => item.regionType !== '所有类型'); - setTimeout(() => { - facilityAreaFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.title = '新增设备区域'; - state.facilityAreaForm = { - region: '', - regionTypeId: null - }; - } else { - state.title = '修改设备区域'; - facilityAreaApi() - .getFacilityAreaById({ id: value.id }) - .then((res) => { - if (res.data.code === '200') { - state.facilityAreaForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - } - }) - .catch((error) => {}); - } - }; - - //新增修改提交 - const submitFacilityArea = async () => { - facilityAreaFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增设备区域') { - let res = await facilityAreaApi().addFacilityArea(state.facilityAreaForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '设备区域新增成功', - duration: 2000 - }); - state.isShowFacilityAreaDialog = false; - context.emit('refreshFacilityArea'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await facilityAreaApi().modFacilityArea(state.facilityAreaForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '设备区域修改成功', - duration: 2000 - }); - state.isShowFacilityAreaDialog = false; - context.emit('refreshFacilityArea'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - facilityAreaFormRef, - submitFacilityArea, - openFacilityAreaDialog - }; - } -}; -</script> - -<style scoped> -.input-length { - width: 85%; -} -</style> diff --git a/src/views/intellectInspect/inspectBasic/facility/index.vue b/src/views/intellectInspect/inspectBasic/facility/index.vue deleted file mode 100644 index 76c6efc..0000000 --- a/src/views/intellectInspect/inspectBasic/facility/index.vue +++ /dev/null @@ -1,201 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>设备区域名称:</span> - <el-input class="input-box" v-model="facilityAreaData.params.regionName" placeholder="设备区域名称" clearable> </el-input> - </div> - <div class="basic-line"> - <span>设备区域类型:</span> - <el-select class="input-box" v-model="facilityAreaData.params.regionTypeId" placeholder="设备区域类型" filterable> - <el-option v-for="item in facilityAreaTypeList" :key="item.id" :label="item.regionType" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增设备区域 - </el-button> - </div> - <el-table :data="facilityAreaData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="region" label="设备区域名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="regionType" label="设备区域类型" show-overflow-tooltip></el-table-column> - <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="facilityAreaData.params.pageIndex" background v-model:page-size="facilityAreaData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="facilityAreaData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <facilityAreaDialog ref="facilityAreaDialogRef" @refreshFacilityArea="initFacilityAreaTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import facilityAreaDialog from './components/facilityAreaDialog.vue'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - facilityAreaData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - regionTypeId: number; - regionName: string | null; - }; - }; - facilityAreaTypeList: Array<facilityAreaTypeState>; -} - -interface facilityAreaTypeState { - regionType: string; - id: number; -} - -export default defineComponent({ - name: 'facilityArea', - components: { facilityAreaDialog, Edit, Delete }, - setup() { - const facilityAreaDialogRef = ref(); - const state = reactive<TableDataState>({ - facilityAreaData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - regionTypeId: 1, - regionName: null - } - }, - facilityAreaTypeList: [] - }); - // 初始化表格数据 - const initFacilityAreaTableData = async () => { - let res = await facilityAreaApi().getFacilityAreaList(state.facilityAreaData.params); - if (res.data.code === '200') { - state.facilityAreaData.data = res.data.data.records; - state.facilityAreaData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有设施区域类型 - const initFacilityAreaType = async () => { - let res = await facilityAreaApi().getFacilityAreaType(); - if (res.data.code === '200') { - state.facilityAreaTypeList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - facilityAreaDialogRef.value.openFacilityAreaDialog(type, value, state.facilityAreaTypeList); - }; - // 删除 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条设备区域:“${row.region}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await facilityAreaApi().deleteFacilityArea({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initFacilityAreaTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initFacilityAreaTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.facilityAreaData.params.pageSize = val; - initFacilityAreaTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.facilityAreaData.params.pageIndex = val; - initFacilityAreaTableData(); - }; - // 页面加载时 - onMounted(() => { - initFacilityAreaTableData(); - initFacilityAreaType(); - }); - - return { - Edit, - Delete, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - facilityAreaDialog, - facilityAreaDialogRef, - initFacilityAreaTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectBasic/index.vue b/src/views/intellectInspect/inspectBasic/index.vue deleted file mode 100644 index ea0d797..0000000 --- a/src/views/intellectInspect/inspectBasic/index.vue +++ /dev/null @@ -1,9 +0,0 @@ -<template></template> - -<script> -export default { - name: 'index' -}; -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectBasic/inspectPoint/components/inspectPointDialog.vue b/src/views/intellectInspect/inspectBasic/inspectPoint/components/inspectPointDialog.vue deleted file mode 100644 index 1184f3c..0000000 --- a/src/views/intellectInspect/inspectBasic/inspectPoint/components/inspectPointDialog.vue +++ /dev/null @@ -1,166 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowInspectPointDialog" width="600px"> - <el-form :model="inspectPointForm" :rules="inspectPointFormRules" ref="inspectPointFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="巡检点名称" prop="code"> - <el-input class="input-length" v-model.trim="inspectPointForm.code" placeholder="请输入巡检点名称" clearable></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="regionId"> - <el-select class="input-length" v-model="inspectPointForm.regionId" placeholder="请选择所属设备区域" clearable filterable> - <el-option v-for="item in regionNameList" :key="item.id" :label="item.region" :value="item.id"></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="关联RFID" prop="rfidId"> - <el-select class="input-length" v-model="inspectPointForm.rfidId" placeholder="请选择关联RFID" clearable filterable> - <el-option v-for="item in RFIDList" :key="item.id" :label="item.rfidName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button @click="isShowInspectPointDialog = !isShowInspectPointDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitInspectPoint" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; - -interface stateType { - isShowInspectPointDialog: Boolean; - inspectPointForm: { - code: string; - regionId: number | null; - rfidId: number | null; - }; - title: string; - regionNameList: []; - RFIDList: Array<levelListState>; - inspectPointFormRules: {}; -} -interface levelListState {} -import { reactive, toRefs, ref } from 'vue'; -import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; -import { ElMessage } from 'element-plus'; -export default { - name: 'inspectPointDialog', - setup(props: any, context: any) { - const inspectPointFormRef = ref(); - const state = reactive<stateType>({ - title: '', - isShowInspectPointDialog: false, - inspectPointForm: { - code: '', - regionId: null, - rfidId: null - }, - regionNameList: [], - RFIDList: [], - inspectPointFormRules: { - code: [{ required: true, message: '请填写巡检点名称', trigger: 'blur' }], - regionId: [{ required: true, message: '请选择所属设施区域', trigger: 'change' }], - rfidId: [{ required: true, message: '请选择关联RFID', trigger: 'change' }] - } - }); - - //打开模态框 - const openInspectPointDialog = (type: string, value: { id: number }, regionNameList: [], RFIDList: []) => { - state.isShowInspectPointDialog = true; - state.regionNameList = regionNameList; - state.RFIDList = RFIDList; - setTimeout(() => { - inspectPointFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.title = '新增巡检点'; - state.inspectPointForm = { - code: '', - regionId: null, - rfidId: null - }; - } else { - state.title = '修改巡检点'; - inspectPointApi() - .getInspectPointById({ id: value.id }) - .then((res) => { - if (res.data.code === '200') { - state.inspectPointForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - } - }) - .catch((error) => {}); - } - }; - - //新增修改提交 - const submitInspectPoint = async () => { - inspectPointFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增巡检点') { - let res = await inspectPointApi().addInspectPoint(state.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点新增成功', - duration: 2000 - }); - state.isShowInspectPointDialog = false; - context.emit('refreshInspectPoint'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await inspectPointApi().modInspectPoint(state.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点修改成功', - duration: 2000 - }); - state.isShowInspectPointDialog = false; - context.emit('refreshInspectPoint'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - inspectPointFormRef, - submitInspectPoint, - openInspectPointDialog - }; - } -}; -</script> - -<style scoped> -.input-length { - width: 85%; -} -</style> diff --git a/src/views/intellectInspect/inspectBasic/inspectPoint/index.vue b/src/views/intellectInspect/inspectBasic/inspectPoint/index.vue deleted file mode 100644 index 62064e6..0000000 --- a/src/views/intellectInspect/inspectBasic/inspectPoint/index.vue +++ /dev/null @@ -1,217 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>巡检点名称:</span> - <el-input class="input-box" v-model="inspectPointData.params.code" placeholder="巡检点名称" clearable> </el-input> - </div> - <div class="basic-line"> - <span>所属区域名称:</span> - <el-select class="input-box" v-model="inspectPointData.params.regionId" placeholder="所属区域名称" filterable> - <el-option v-for="item in regionNameList" :key="item.id" :label="item.region" :value="item.id"></el-option> - </el-select> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增巡检点 - </el-button> - </div> - <el-table :data="inspectPointData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="code" label="巡检点名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="regionName" label="所属设备区域" show-overflow-tooltip></el-table-column> - <el-table-column prop="rfidName" label="关联RFID" show-overflow-tooltip></el-table-column> - <el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="inspectPointData.params.pageIndex" background v-model:page-size="inspectPointData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectPointData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <inspectPointDialog ref="inspectPointDialogRef" @refreshInspectPoint="initInspectPointTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import inspectPointDialog from './components/inspectPointDialog.vue'; -import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - inspectPointData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - code: string | null; - regionId: number; - }; - }; - regionNameList: Array<regionNameState>; - RFIDList: []; -} - -interface regionNameState {} - -export default defineComponent({ - name: 'productionDevice', - components: { inspectPointDialog, Edit, Delete }, - setup() { - const inspectPointDialogRef = ref(); - const state = reactive<TableDataState>({ - inspectPointData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - code: null, - regionId: 1 - } - }, - regionNameList: [], - RFIDList: [] - }); - // 初始化表格数据 - const initInspectPointTableData = async () => { - let res = await inspectPointApi().getInspectPointList(state.inspectPointData.params); - if (res.data.code === '200') { - state.inspectPointData.data = res.data.data.records; - state.inspectPointData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有设施区域名称 - const initFacilityAreaType = async () => { - let res = await facilityAreaApi().getAllFacilityAreaList(); - if (res.data.code === '200') { - state.regionNameList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有RFID名称 - const initRFIDList = async () => { - let res = await RFIDApi().getAllRFIDList(); - if (res.data.code === '200') { - state.RFIDList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开弹窗 - const onOpenDialogRef = (type: string, value: any) => { - inspectPointDialogRef.value.openInspectPointDialog(type, value, state.regionNameList, state.RFIDList); - }; - // 删除 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该巡检点:“${row.code}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await inspectPointApi().deleteInspectPoint({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initInspectPointTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initInspectPointTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.inspectPointData.params.pageSize = val; - initInspectPointTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.inspectPointData.params.pageIndex = val; - initInspectPointTableData(); - }; - // 页面加载时 - onMounted(() => { - initInspectPointTableData(); - initFacilityAreaType(); - initRFIDList(); - }); - - return { - Edit, - Delete, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - inspectPointDialog, - inspectPointDialogRef, - initInspectPointTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectBasic/inspectTarget/components/inspectTargetDialog.vue b/src/views/intellectInspect/inspectBasic/inspectTarget/components/inspectTargetDialog.vue deleted file mode 100644 index a15475d..0000000 --- a/src/views/intellectInspect/inspectBasic/inspectTarget/components/inspectTargetDialog.vue +++ /dev/null @@ -1,164 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowInspectTargetDialog" width="600px"> - <el-form :model="inspectTargetForm" :rules="inspectTargetFormRules" ref="inspectTargetFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="指标名称" prop="quota"> - <el-input class="input-add" v-model.trim="inspectTargetForm.quota" placeholder="请输入指标名称" clearable></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="quotaTypeId"> - <el-select class="input-add" v-model="inspectTargetForm.quotaTypeId" @change="changeQuotaUnit" placeholder="请选择指标类型" clearable filterable> - <el-option v-for="item in quotaTypeList" :key="item.id" :label="item.type" :value="item.id"></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="quotaUnit"> - <el-input class="input-add" v-model.trim="inspectTargetForm.quotaUnit" 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="isShowInspectTargetDialog = !isShowInspectTargetDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitInspectTarget" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowInspectTargetDialog: Boolean; - inspectTargetForm: { - quota: string; - quotaTypeId: number | null; - quotaUnit: string; - }; - title: string; - quotaTypeList: Array<quotaTypeState>; - inspectTargetFormRules: {}; -} -interface quotaTypeState { - id: number; - type: string; - unit: string; -} -import { reactive, toRefs, ref, computed } from 'vue'; -import { inspectTargetApi } from '/@/api/intellectInspectSystem/inspectTargetManage'; -import { ElMessage } from 'element-plus'; -export default { - name: 'inspectTargetDialog', - setup(props: any, context: any) { - const inspectTargetFormRef = ref(); - const state = reactive<stateType>({ - title: '', - quotaTypeList: [], - isShowInspectTargetDialog: false, - inspectTargetForm: { - quota: '', - quotaTypeId: null, - quotaUnit: '' - }, - inspectTargetFormRules: { - quota: [{ required: true, message: '请填写指标名称', trigger: 'blur' }], - quotaTypeId: [{ required: true, message: '请选择指标类型', trigger: 'change' }], - quotaUnit: [{ required: true, message: '请选择指标单位', trigger: 'blur' }] - } - }); - - //打开模态框 - const openInspectTargetDialog = (type: string, value: { id: number }, quotaTypeList: []) => { - state.isShowInspectTargetDialog = true; - state.quotaTypeList = quotaTypeList; - setTimeout(() => { - inspectTargetFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.title = '新增巡检指标'; - state.inspectTargetForm = { - quota: '', - quotaTypeId: null, - quotaUnit: '' - }; - } else { - state.title = '修改巡检指标'; - inspectTargetApi() - .getInspectTargetById(value.id) - .then((res) => { - if (res.data.code === '200') { - state.inspectTargetForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - } - }) - .catch((error) => {}); - } - }; - - const changeQuotaUnit = () => { - state.inspectTargetForm.quotaUnit = JSON.parse(JSON.stringify(state.quotaTypeList)).find((item: any) => item.id === state.inspectTargetForm.quotaTypeId).unit; - }; - - //新增修改提交 - const submitInspectTarget = async () => { - inspectTargetFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增巡检指标') { - let res = await inspectTargetApi().addInspectTarget(state.inspectTargetForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检指标新增成功', - duration: 2000 - }); - state.isShowInspectTargetDialog = false; - context.emit('refreshInspectTarget'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await inspectTargetApi().modInspectTarget(state.inspectTargetForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '生巡检指标修改成功', - duration: 2000 - }); - state.isShowInspectTargetDialog = false; - context.emit('refreshInspectTarget'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - changeQuotaUnit, - inspectTargetFormRef, - submitInspectTarget, - openInspectTargetDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectBasic/inspectTarget/index.vue b/src/views/intellectInspect/inspectBasic/inspectTarget/index.vue deleted file mode 100644 index 4308c50..0000000 --- a/src/views/intellectInspect/inspectBasic/inspectTarget/index.vue +++ /dev/null @@ -1,191 +0,0 @@ -<template> - <div class="system-role-container"> - <el-card shadow="hover"> - <div class="system-user-search mb15"> - <div class="basic-line"> - <span>巡检指标名称:</span> - <el-input class="input-box" v-model="inspectTargetData.params.quotaName" placeholder="巡检指标名称"> </el-input> - </div> - <el-button size="default" type="primary" class="ml10" v-throttle @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> - <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增巡检指标 - </el-button> - </div> - <el-table :data="inspectTargetData.data" style="width: 100%"> - <el-table-column type="index" label="序号" width="60" /> - <el-table-column prop="quota" label="指标名称" show-overflow-tooltip></el-table-column> - <el-table-column prop="quotaUnit" label="指标单位" show-overflow-tooltip></el-table-column> - <el-table-column prop="quotaType" label="指标类型" show-overflow-tooltip></el-table-column> - <el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column label="操作" width="150"> - <template #default="scope"> - <el-button size="small" text type="primary" :icon="Edit" @click="onOpenDialogRef('修改', scope.row)">修改</el-button> - <el-button size="small" text type="danger" :icon="Delete" @click="onDelProductionDevice(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="inspectTargetData.params.pageIndex" background v-model:page-size="inspectTargetData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectTargetData.total" class="page-position"> </el-pagination> - <br /> - <br /> - </el-card> - <inspectTargetDialog ref="inspectTargetDialogRef" @refreshInspectTarget="initInspectTargetTableData" /> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, onMounted, ref, defineComponent, computed } from 'vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import inspectTargetDialog from './components/inspectTargetDialog.vue'; -import { inspectTargetApi } from '/@/api/intellectInspectSystem/inspectTargetManage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; - -// 定义接口来定义对象的类型 -interface TableData { - quota: string; - quotaUnit: string; - quotaType: string; - createUserName: string; - gmtCreate: string; - lastEditUserName: string; - gmtModitify: string; -} -interface TableDataState { - inspectTargetData: { - data: Array<TableData>; - total: number; - loading: boolean; - params: { - pageIndex: number; - pageSize: number; - quotaName: string; - }; - }; - quotaTypeList: []; -} - -export default defineComponent({ - name: 'productionDevice', - components: { inspectTargetDialog, Edit, Delete }, - setup() { - const inspectTargetDialogRef = ref(); - const state = reactive<TableDataState>({ - inspectTargetData: { - data: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - quotaName: '' - } - }, - quotaTypeList: [] - }); - - // 初始化表格数据 - const initInspectTargetTableData = async () => { - let res = await inspectTargetApi().getInspectTargetList(state.inspectTargetData.params); - if (res.data.code === '200') { - state.inspectTargetData.data = res.data.data.records; - state.inspectTargetData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有指标类型及单位 - const initQuotaType = async () => { - let res = await inspectTargetApi().getQuotaTypeList(); - if (res.data.code === '200') { - state.quotaTypeList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 打开生产装置弹窗 - const onOpenDialogRef = (type: string, value: any) => { - inspectTargetDialogRef.value.openInspectTargetDialog(type, value, state.quotaTypeList); - }; - // 删除角色 - const onDelProductionDevice = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该条巡检指标:“${row.quota}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await inspectTargetApi().deleteInspectTarget({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initInspectTargetTableData(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSearch = () => { - initInspectTargetTableData(); - }; - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.inspectTargetData.params.pageSize = val; - initInspectTargetTableData(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.inspectTargetData.params.pageIndex = val; - initInspectTargetTableData(); - }; - // 页面加载时 - onMounted(() => { - initInspectTargetTableData(); - initQuotaType(); - }); - - return { - Edit, - Delete, - handleSearch, - onOpenDialogRef, - onHandleSizeChange, - onDelProductionDevice, - onHandleCurrentChange, - inspectTargetDialog, - inspectTargetDialogRef, - initInspectTargetTableData, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped></style> diff --git a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue b/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue deleted file mode 100644 index 02fdd0a..0000000 --- a/src/views/intellectInspect/inspectIndex/components/inspectRecordDialog.vue +++ /dev/null @@ -1,592 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog v-model="ifShowInspectTaskDialog" :title="title" width="60%"> - <el-form :model="inspectTaskForm" label-width="120px" ref="inspectTaskFormRef"> - <el-row> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务名称" prop="unitName"> - <el-input v-model="inspectTaskForm.taskName" :disabled="!inspectPointConfirm" class="input-add" placeholder="请填写任务名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务类型" prop="taskType"> - <el-select v-model="inspectTaskForm.taskType" :disabled="!inspectPointConfirm" class="input-add" placeholder="请选择任务类型"> - <el-option v-for="item in workTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检部门" prop="execDepId"> - <el-cascader @change="giveClassGroup" :disabled="!inspectPointConfirm" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" clearable filterable class="input-add" v-model="inspectTaskForm.execDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检班组" prop="execClassgroupId"> - <el-select v-model="inspectTaskForm.execClassgroupId" :disabled="!inspectPointConfirm" class="input-add"> - <el-option v-for="item in classGroup" :key="item.id" :value="item.id" :label="item.groupName"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检人" prop="execUserName"> - <el-input v-model="inspectTaskForm.execUserName" :disabled="!inspectPointConfirm" class="input-add"> </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务开始时间" prop="startTime"> - <el-date-picker v-model="inspectTaskForm.startTime" :disabled="!inspectPointConfirm" placeholder="请选择任务开始时间" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" /> - </el-form-item> - </el-col> - </el-row> - - <div class="checkUnit-point"> - <el-tabs class="active" v-model="activeName"> - <el-tab-pane label="巡检链" name="inspectChain"> - <el-table :data="inspectTaskForm.points" fit style="width: 100%"> - <el-table-column type="index" label="序号" /> - <el-table-column prop="point" label="巡检点" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="region" label="所属设备" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="rfid" label="RFID" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="quotaContent" label="指标作业" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="secondReferenceResult" label="记录值" show-overflow-tooltip align="center"> - <template #default="scope"> - <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }"> - {{ scope.row.dataReportType == 1 ? '无' : scope.row.secondReferenceResult }} - </div> - </template> - </el-table-column> - <el-table-column prop="quotaUnit" label="指标单位" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="reportResult" label="结果" show-overflow-tooltip align="center"> - <template #default="scope"> - <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }"> - {{ scope.row.reportResult == 0 ? '正常' : scope.row.reportResult == 1 ? '存在异常' : '无' }} - </div> - </template> - </el-table-column> - <!-- <el-table-column label="操作" width="150" align="center">--> - <!-- <template #default="scope">--> - <!-- <el-button size="small" text type="danger" @click="onDelCheckUnit(scope.$index, scope.row)">删除</el-button>--> - <!-- </template>--> - <!-- </el-table-column>--> - </el-table> - </el-tab-pane> - <el-tab-pane label="统计数据" name="allData"> - <sum-data :sumData="taskAndQuotas"></sum-data> - </el-tab-pane> - </el-tabs> - </div> - <div align="right" v-show="inspectPointConfirm"> - <el-button type="warning" @click="inspectPointDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitInspectTask()" size="default">确认</el-button> - </div> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent } from 'vue'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; -import { ElMessage } from 'element-plus/es'; -import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; -interface dataState { - title: string; - taskAndQuotas: []; - pointTitle: string; - activeName: string; - inspectPointConfirm: boolean; - inspectPointDialog: boolean; - ifShowInspectTaskDialog: boolean; - inspectPointForm: inspectPointForm; - inspectTaskForm: { - execClassgroupId: number | null; - execDepId: number | null; - id: number | null; - execUserName: string; - startTime: string | null; - taskName: string | null; - taskType: number | null; - validTime: string | null; - points: Array<inspectPointForm>; - }; - workTypeList: []; - departmentList: []; - timeList: []; - dataReportTypeList: Array<dataReport>; - firstReferenceValueList: Array<dataReport>; - secondReferenceSignList: Array<dataReport>; - thirdReferenceSignList: Array<dataReport>; - classGroupList: Array<classGroup>; - classGroup: Array<classGroup>; - quotaList: Array<quota>; - inspectPointAllList: Array<inspectPointAllState>; -} -interface inspectPointAllState { - id: number; - code: string; - regionId: number; - rfidId: number; -} -interface classGroup { - depId: number; -} -interface dataReport { - id: number; - name: string; -} -interface quota { - id: number; - type: string; - unit: string; -} -interface inspectPointForm { - id: number | null; - unitId: number | null; - unitUuid: string | null; - pointId: number | null; - pointUuid: string | null; - regionId: number | null; - regionUuid: string | null; - rfidId: number | null; - quotaId: number | null; - quotaUnit: string | null; - reportResult: number | null; - secondReferenceResult: number | null; - execSequence: number | null; - dataReportType: number | null; - firstReferenceValue: number | null; - secondReferenceSign: number | null; - secondReferenceValue: number | null; - thirdReferenceSign: number | null; - thirdReferenceValue: number | null; -} -export default defineComponent({ - name: 'inspectTaskDialog', - components: { - SumData: defineAsyncComponent(() => import('/@/views/intellectInspect/inspectIndex/components/sum.vue')) - }, - setup(props: any, context: any) { - const inspectTaskFormRef = ref(); - const data = reactive<dataState>({ - title: '', - taskAndQuotas: [], - pointTitle: '', - activeName: 'inspectChain', - inspectPointConfirm: false, - inspectPointDialog: false, - ifShowInspectTaskDialog: false, - inspectPointForm: { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - execSequence: null, - secondReferenceResult: null, - reportResult: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }, - inspectTaskForm: { - execClassgroupId: null, - execDepId: null, - id: null, - points: [], - execUserName: '', - startTime: null, - taskName: null, - taskType: null, - validTime: null - }, - workTypeList: [], - departmentList: [], - timeList: [], - classGroupList: [], - classGroup: [], - quotaList: [], - inspectPointAllList: [], - dataReportTypeList: [ - { id: 1, name: '选择' }, - { id: 2, name: '填空' }, - { id: 3, name: '选择并填空' } - ], - firstReferenceValueList: [ - { id: 0, name: '正常' }, - { id: 1, name: '存在异常' } - ], - secondReferenceSignList: [ - { id: 1, name: '>' }, - { id: 2, name: '>=' } - ], - thirdReferenceSignList: [ - { id: 3, name: '<' }, - { id: 4, name: '<=' } - ] - }); - - const openInspectPointDialog = (type: string, item: {}) => { - data.inspectPointDialog = true; - if (type === '新增') { - data.pointTitle = '新增巡检点'; - data.inspectPointForm = { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - reportResult: null, - execSequence: null, - secondReferenceResult: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }; - } else { - data.pointTitle = '修改巡检点'; - data.inspectPointForm = JSON.parse(JSON.stringify(item)); - } - }; - - const showInspectRecordDialog = (type: string, item: { id: number; uuid: string; execUserName: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: []) => { - data.quotaList = JSON.parse(JSON.stringify(quotaList)); - data.timeList = JSON.parse(JSON.stringify(timeType)); - data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList)); - data.workTypeList = JSON.parse(JSON.stringify(workTypeList)); - data.departmentList = JSON.parse(JSON.stringify(department)); - data.classGroupList = JSON.parse(JSON.stringify(classGroupList)); - data.ifShowInspectTaskDialog = true; - data.inspectPointConfirm = false; - data.title = '查看巡检记录'; - getSum(item.id); - inspectRecordApi() - .getInspectRecordById({ id: item.id, uuid: item.uuid }) - .then((res) => { - if (res.data.code === '200') { - data.inspectTaskForm.execDepId = res.data.data.execDepId; - giveClassGroup(); - data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data)); - data.inspectTaskForm.execUserName = item.execUserName; - } else { - } - }) - .catch((error) => {}); - }; - - // 格式化表格数据 - // const toRefer =(row, column, cellValue, index)=>{ - // return row.secondReferenceResult==0?'正常':(row.reportResult==1?'异常':'无') - // } - - const getSum = async (id: number) => { - let res = await inspectRecordApi().getInspectRecordSum({ id: id }); - if (res.data.code === '200') { - data.taskAndQuotas = JSON.parse(JSON.stringify(res.data.data.taskAndQuotas)); - console.log(data.taskAndQuotas, '666666666666'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const submitInspectPoint = async () => { - if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') { - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - data.inspectTaskForm.points.push(data.inspectPointForm); - data.inspectPointDialog = false; - } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') { - let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点新增成功', - duration: 2000 - }); - data.inspectPointDialog = false; - data.inspectTaskForm.points.push(data.inspectPointForm); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点修改成功', - duration: 2000 - }); - let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - const deleteFlow = async (index: number, item: { id: number }) => { - if (data.pointTitle === '新增巡检点') { - data.inspectTaskForm.points.splice(index, 1); - } else { - let res = await inspectTaskApi().deleteChainOfInspectTask({ id: item.id, unitId: data.inspectTaskForm.id }); - if (res.data.code === '200') { - data.inspectTaskForm.points.splice(index, 1); - ElMessage({ - type: 'success', - message: '巡检点删除成功' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - - const giveRegionAndRFID = () => { - data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number; - data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number; - }; - - const giveClassGroup = () => { - data.inspectTaskForm.execClassgroupId = null; - data.classGroup = data.classGroupList.filter((item) => item.depId === data.inspectTaskForm.execDepId); - }; - - const giveQuotaUnit = () => { - data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string; - }; - const submitInspectTask = () => { - inspectTaskFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (data.title === '新增巡检任务') { - let res = await inspectTaskApi().addInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检任务新增成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await inspectTaskApi().modInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检指标修改成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(data), - inspectTaskFormRef, - deleteFlow, - getSum, - // toRefer, - giveQuotaUnit, - giveClassGroup, - submitInspectTask, - submitInspectPoint, - giveRegionAndRFID, - showInspectRecordDialog, - openInspectPointDialog - }; - } -}); -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-date-editor) { - width: 100%; -} -</style> diff --git a/src/views/intellectInspect/inspectIndex/components/sum.vue b/src/views/intellectInspect/inspectIndex/components/sum.vue deleted file mode 100644 index b0071e0..0000000 --- a/src/views/intellectInspect/inspectIndex/components/sum.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div style="height: 100%"> - <div class="sum-info"> - <div v-for="item in sumData" class="region-card"> - <div class="region-tit">{{item[0][0].region}}</div> - <div class="unit-card"> - <div v-for="i in item"> - <div class="unit-tit">{{i[0].quotaContent}}({{i[0].quotaUnit}})</div> - <div class="points"> - <div v-for="t in i" > - <span class="point-tit">{{t.point}}</span> - <span>{{t.dataReportType == 1 ? '无' : t.secondReferenceResult}}</span> - </div> - </div> - </div> - </div> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - - } - export default defineComponent({ - name: 'SumData', - components: {}, - props:['sumData'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - - .sum-info{ - width: 100%; - border: 1px solid #ccc; - - .region-card{ - width: 100%; - border-bottom: 1px solid #ccc; - display: flex; - font-size: 16px; - align-items: center; - .region-tit{ - width: 25%; - text-align: center; - } - .unit-card{ - width: 75%; - height: 100%; - border-left: 1px solid #ccc; - - &>div{ - width: 100%; - display: flex; - align-items: center; - border-bottom: 1px solid #ccc; - - &:last-of-type{ - border-bottom: none; - } - - .unit-tit{ - width: 40%; - padding-left: 10px; - } - .points{ - width: 60%; - height: 100%; - border-left: 1px solid #ccc; - - &>div{ - width: 100%; - display: flex; - align-items: center; - span{ - text-align: center; - width: 50%; - } - .point-tit{ - border-right: 1px solid #ccc; - padding: 10px; - } - } - } - } - } - } - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/intellectInspect/inspectIndex/index.vue b/src/views/intellectInspect/inspectIndex/index.vue deleted file mode 100644 index 2e64240..0000000 --- a/src/views/intellectInspect/inspectIndex/index.vue +++ /dev/null @@ -1,587 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <div class="homeCard topCard"> - <div class="title">当前巡检任务</div> - <div class="top-info" v-if="unchecked != 0 || unusual != 0"> - <el-icon :size="18" color="#F3001E" style="margin-right: 4px"><BellFilled /></el-icon> - 预警消息: - <div v-if="unchecked != 0"> - 当日超期未巡检任务<el-tooltip - class="box-item" - effect="light" - content="查看相关记录" - placement="bottom-start" - ><span @click="toOverTime(4)">{{ unchecked }}</span></el-tooltip>个 - </div> - <span v-if="unchecked != 0 && unusual != 0">,</span> - <div v-if="unusual != 0"> - 存在异常任务<el-tooltip - class="box-item" - effect="light" - content="查看相关记录" - placement="bottom-start" - ><span @click="toOverTime(5)">{{ unusual }}</span - ></el-tooltip>个 - </div> - 。 - </div> - </div> - <div class="homeCard"> - <div class="main-card"> - <div class="list"> - <div class="cardTop" v-for="(item, index) in tableData" :key="index"> - <div class="left-info"> - <span class="num">{{ pageSize * (pageIndex - 1) + index + 1 }}、</span> - <span class="place">{{ item.taskName }},</span> - <p v-if="item.execUserName == null">该任务暂无人认领</p> - <p v-else> - <span class="time">{{ item.taskStatus == 2 ? item.startTime : item.endTime }}</span - >由<span class="name">{{ item.execUserName }}</span - >进行的巡检任务 - </p> - </div> - <div class="mid-info"> - 任务状态:<span :class="item.taskStatus == 1 ? 'grey' : item.taskStatus == 2 ? 'green' : item.taskStatus == 3 ? 'blue' : 'red'">{{ item.taskStatus == 1 ? '待巡检' : item.taskStatus == 2 ? '巡检中' : item.taskStatus == 3 ? '已巡检' : '超期未巡检' }}</span> - </div> - <div class="right-info"> - <div v-if="item.taskStatus == 2" @click="toLine(item)" class="checkBtn">查看实时巡检</div> - <div v-else class="reviewBtn" @click="toDetails('查看', item)">[查看巡检记录]</div> - </div> - </div> - </div> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> - </div> - </div> - </div> - </div> - <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; -import { useRouter } from 'vue-router'; -import inspectRecordDialog from './components/inspectRecordDialog.vue'; -import { departmentApi } from '/@/api/systemManage/department'; -// 定义接口来定义对象的类型 -interface stateType { - tableData: Array<string>; - unchecked: null | number; - unusual: null | number; - uncheckedList: []; - abnormalList: []; - pageIndex: number; - pageSize: number; - totalSize: number; - workTypeList: Array<type>; - departmentList: []; - timeType: Array<type>; - classGroupList: Array<classGroup>; - quotaList: []; - inspectPointAllList: []; -} -interface type { - id: number; - name: string; -} -interface classGroup { - id: number; - groupName: string; -} -export default { - name: 'workingHours', - components: { inspectRecordDialog }, - setup() { - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - tableData: [], - unchecked: null, - unusual: null, - uncheckedList: [], - abnormalList: [], - workTypeList: [ - { id: 1, name: '日常任务' }, - { id: 2, name: '周期任务' } - ], - departmentList: [], - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ], - classGroupList: [], - quotaList: [], - inspectPointAllList: [] - }); - const inspectRecordDialogRef = ref(); - interface User { - name: string; - startTime: string; - endTime: string; - info: string; - } - - // 页面载入时执行方法 - onMounted(() => { - getInspectRecord(); - getDayData(); - getDepartmentData(); - }); - - // 分页获取工作时段列表 - const getInspectRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex }; - let res = await inspectRecordApi().getInspectRecordByIndex(data); - if (res.data.code === '200') { - state.tableData = res.data.data.records; - state.totalSize = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - //获取部门 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取当日数据 - const getDayData = async () => { - let res = await inspectRecordApi().getDayRecord(); - if (res.data.code === '200') { - state.unchecked = res.data.data.noCheckTaskCount; - state.unusual = res.data.data.abnormalTaskCount; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getInspectRecord(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getInspectRecord(); - }; - - const toLine = (item) => { - console.log(item,'item') - let id = item.id; - console.log(id,'id') - router.push({ - path: 'intelligentLine', - query: { - id: id - } - }); - }; - - const toOverTime = (id) => { - console.log(state.uncheckedList, 'list'); - router.push({ - path: 'inspectRecord', - query: { - id: id, - } - }); - }; - const toDetails = (type: string, item) => { - inspectRecordDialogRef.value.showInspectRecordDialog(type, item, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList); - }; - return { - View, - Edit, - Delete, - Refresh, - Plus, - router, - inspectRecordDialogRef, - toLine, - toOverTime, - toDetails, - handleSizeChange, - handleCurrentChange, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -@media screen and (min-width: 1366px) { - .topCard { - display: flex; - align-items: center; - justify-content: space-between; - font-weight: bolder; - - .top-info { - display: flex; - font-size: 16px; - align-items: center; - padding: 10px 15px; - background: #ffeb87; - border-radius: 8px; - border: 1px solid #ffae00; - - & > div { - vertical-align: middle; - white-space: nowrap; - span { - font-size: 22px; - color: #f3001e; - margin: 0 4px; - cursor: pointer; - - &:hover{ - text-decoration: underline; - } - } - } - } - } - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 18px; - color: #333; - overflow-x: auto; - & > span { - white-space: nowrap; - } - p { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - & > span { - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 18px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 16px; - color: #fff; - - div { - white-space: nowrap; - } - } -} -@media screen and (min-width: 1200px) and (max-width: 1366px) { - .topCard { - display: flex; - align-items: center; - justify-content: space-between; - font-weight: bolder; - - .top-info { - display: flex; - font-size: 14px; - align-items: center; - padding: 6px 10px; - background: #ffeb87; - border-radius: 4px; - border: 1px solid #ffae00; - - & > div { - vertical-align: middle; - white-space: nowrap; - span { - font-size: 18px; - color: #f3001e; - margin: 0 2px; - cursor: pointer; - - &:hover{ - text-decoration: underline; - } - } - } - } - } - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 15px; - color: #333; - overflow-x: auto; - & > span { - white-space: nowrap; - } - p { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - & > span { - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 15px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 13px; - color: #fff; - div { - white-space: nowrap; - } - } -} -@media screen and (max-width: 1200px) { - .topCard { - display: flex; - align-items: center; - justify-content: space-between; - font-weight: bolder; - - .top-info { - display: flex; - font-size: 14px; - align-items: center; - padding: 2px 6px; - background: #ffeb87; - border-radius: 4px; - border: 1px solid #ffae00; - - & > div { - vertical-align: middle; - white-space: nowrap; - span { - font-size: 16px; - color: #f3001e; - margin: 0 1px; - cursor: pointer; - - &:hover{ - text-decoration: underline; - } - } - } - } - } - .left-info { - width: 70%; - display: flex; - align-items: center; - justify-content: left; - font-size: 12px; - color: #333; - overflow-x: auto; - & > span { - white-space: nowrap; - } - p { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - & > span { - white-space: nowrap; - } - } - } - .mid-info { - width: 20%; - font-size: 12px; - color: #333; - } - .right-info { - width: 10%; - display: flex; - justify-content: right; - align-items: center; - font-size: 12px; - color: #fff; - div { - white-space: nowrap; - } - } -} - -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .title { - font-size: 20px; - font-weight: bolder; - } - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 10px; - background: #daf3ff; - padding: 10px 15px; - border-radius: 8px; - - .left-info { - .num { - font-weight: bolder; - margin-right: 10px; - } - .place { - font-weight: bolder; - } - .time { - font-weight: bolder; - margin-right: 5px; - } - .name { - font-weight: bolder; - margin: 0 5px; - font-weight: bolder; - } - } - .mid-info { - span { - font-weight: bolder; - } - - .grey { - color: #999; - } - .green { - color: #44b100; - } - .blue { - color: #409eff; - } - .red { - color: red; - } - } - .right-info { - .checkBtn { - padding: 10px 15px; - background: #409eff; - border-radius: 4px; - cursor: pointer; - } - - .reviewBtn { - margin: 10px 15px; - cursor: pointer; - color: #44b100; - } - } - } - .list { - height: calc(100% - 60px); - overflow-y: auto; - } - .pageBtn { - position: absolute; - bottom: 15px; - right: 20px; - 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 { - position: relative; - padding-top: 0; - height: calc(100% - 60px); - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - } -} -.el-input { - width: 100% !important; -} -.el-date-editor::v-deep { - width: 100%; -} -.el-select { - width: 100%; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/inspectRecordDialog.vue b/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/inspectRecordDialog.vue deleted file mode 100644 index 4aec32f..0000000 --- a/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/inspectRecordDialog.vue +++ /dev/null @@ -1,560 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog v-model="ifShowInspectTaskDialog" :title="title" width="60%"> - <el-form :model="inspectTaskForm" label-width="120px" ref="inspectTaskFormRef"> - <el-row> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务名称" prop="unitName"> - <el-input v-model="inspectTaskForm.taskName" :disabled="!inspectPointConfirm" class="input-add" placeholder="请填写任务名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务类型" prop="taskType"> - <el-select v-model="inspectTaskForm.taskType" :disabled="!inspectPointConfirm" class="input-add" placeholder="请选择任务类型"> - <el-option v-for="item in workTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检部门" prop="execDepId"> - <el-cascader @change="giveClassGroup" :disabled="!inspectPointConfirm" placeholder="请选择巡检部门" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" clearable filterable class="input-add" v-model="inspectTaskForm.execDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检班组" prop="execClassgroupId"> - <el-select v-model="inspectTaskForm.execClassgroupId" :disabled="!inspectPointConfirm" placeholder="请选择巡检班组" class="input-add"> - <el-option v-for="item in classGroup" :key="item.id" :value="item.id" :label="item.groupName"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务开始时间" prop="startTime"> - <el-date-picker v-model="inspectTaskForm.startTime" :disabled="!inspectPointConfirm" placeholder="请选择任务开始时间" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" /> - </el-form-item> - </el-col> - </el-row> - - <div class="checkUnit-point"> - <el-tabs class="active" v-model="activeName"> - <el-tab-pane label="巡检链" name="inspectChain"> - <el-table :data="inspectTaskForm.points" fit style="width: 100%"> - <el-table-column type="index" label="序号" /> - <el-table-column prop="point" label="巡检点" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="region" label="所属设备" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="rfid" label="RFID" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="quotaContent" label="指标作业" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="secondReferenceResult" label="记录值" show-overflow-tooltip align="center"> - <template #default="scope"> - <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }"> - {{ scope.row.dataReportType == 1 ? '无' : scope.row.secondReferenceResult }} - </div> - </template> - </el-table-column> - <el-table-column prop="quotaUnit" label="指标单位" show-overflow-tooltip align="center"></el-table-column> - <el-table-column prop="reportResult" label="结果" show-overflow-tooltip align="center"> - <template #default="scope"> - <div :style="{ color: scope.row.reportResult == 1 ? '#ff0000' : '#409eff' }"> - {{ scope.row.reportResult == 0 ? '正常' : scope.row.reportResult == 1 ? '存在异常' : '无' }} - </div> - </template> - </el-table-column> - <!-- <el-table-column label="操作" width="150" align="center">--> - <!-- <template #default="scope">--> - <!-- <el-button size="small" text type="danger" @click="onDelCheckUnit(scope.$index, scope.row)">删除</el-button>--> - <!-- </template>--> - <!-- </el-table-column>--> - </el-table> - </el-tab-pane> - <el-tab-pane label="统计数据" name="allData"> - <sum-data :sumData="taskAndQuotas"></sum-data> - </el-tab-pane> - </el-tabs> - </div> - <div align="right" v-show="inspectPointConfirm"> - <el-button type="warning" @click="inspectPointDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitInspectTask()" size="default">确认</el-button> - </div> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { reactive, toRefs, ref, defineAsyncComponent } from 'vue'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; -import { ElMessage } from 'element-plus/es'; -import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; -interface dataState { - title: string; - pointTitle: string; - activeName: string; - inspectPointConfirm: boolean; - inspectPointDialog: boolean; - ifShowInspectTaskDialog: boolean; - inspectPointForm: inspectPointForm; - inspectTaskForm: { - execClassgroupId: number | null; - execDepId: number | null; - id: number | null; - startTime: string | null; - taskName: string | null; - taskType: number | null; - validTime: string | null; - points: Array<inspectPointForm>; - }; - workTypeList: []; - departmentList: []; - timeList: []; - dataReportTypeList: Array<dataReport>; - firstReferenceValueList: Array<dataReport>; - secondReferenceSignList: Array<dataReport>; - thirdReferenceSignList: Array<dataReport>; - classGroupList: Array<classGroup>; - classGroup: Array<classGroup>; - quotaList: Array<quota>; - inspectPointAllList: Array<inspectPointAllState>; -} -interface inspectPointAllState { - id: number; - code: string; - regionId: number; - rfidId: number; -} -interface classGroup { - depId: number; -} -interface dataReport { - id: number; - name: string; -} -interface quota { - id: number; - type: string; - unit: string; -} -interface inspectPointForm { - id: number | null; - unitId: number | null; - unitUuid: string | null; - pointId: number | null; - pointUuid: string | null; - regionId: number | null; - regionUuid: string | null; - rfidId: number | null; - quotaId: number | null; - quotaUnit: string | null; - execSequence: number | null; - dataReportType: number | null; - firstReferenceValue: number | null; - secondReferenceSign: number | null; - secondReferenceValue: number | null; - thirdReferenceSign: number | null; - thirdReferenceValue: number | null; -} -export default { - name: 'inspectTaskDialog', - components: { - SumData: defineAsyncComponent(() => import('/@/views/intellectInspect/inspectIndex/components/sum.vue')) - }, - setup(props: any, context: any) { - const inspectTaskFormRef = ref(); - const data = reactive<dataState>({ - title: '', - pointTitle: '', - activeName: 'inspectChain', - inspectPointConfirm: false, - inspectPointDialog: false, - ifShowInspectTaskDialog: false, - inspectPointForm: { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - execSequence: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }, - inspectTaskForm: { - execClassgroupId: null, - execDepId: null, - id: null, - points: [], - startTime: null, - taskName: null, - taskType: null, - validTime: null - }, - workTypeList: [], - departmentList: [], - timeList: [], - classGroupList: [], - classGroup: [], - quotaList: [], - inspectPointAllList: [], - dataReportTypeList: [ - { id: 1, name: '选择' }, - { id: 2, name: '填空' }, - { id: 3, name: '选择并填空' } - ], - firstReferenceValueList: [ - { id: 0, name: '正常' }, - { id: 1, name: '异常' } - ], - secondReferenceSignList: [ - { id: 1, name: '>' }, - { id: 2, name: '>=' } - ], - thirdReferenceSignList: [ - { id: 3, name: '<' }, - { id: 4, name: '<=' } - ] - }); - - const openInspectPointDialog = (type: string, value: {}) => { - data.inspectPointDialog = true; - if (type === '新增') { - data.pointTitle = '新增巡检点'; - data.inspectPointForm = { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - execSequence: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }; - } else { - data.pointTitle = '修改巡检点'; - data.inspectPointForm = JSON.parse(JSON.stringify(value)); - } - }; - - const showInspectRecordDialog = (type: string, value: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: []) => { - data.quotaList = JSON.parse(JSON.stringify(quotaList)); - data.timeList = JSON.parse(JSON.stringify(timeType)); - data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList)); - data.workTypeList = JSON.parse(JSON.stringify(workTypeList)); - data.departmentList = JSON.parse(JSON.stringify(department)); - data.classGroupList = JSON.parse(JSON.stringify(classGroupList)); - data.ifShowInspectTaskDialog = true; - data.inspectPointConfirm = false; - data.title = '查看巡检记录'; - inspectRecordApi() - .getInspectRecordById({ id: value.id, uuid: value.uuid }) - .then((res) => { - if (res.data.code === '200') { - data.inspectTaskForm.execDepId = res.data.data.execDepId; - giveClassGroup(); - data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch((error) => {}); - }; - - const submitInspectPoint = async () => { - if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') { - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - data.inspectTaskForm.points.push(data.inspectPointForm); - data.inspectPointDialog = false; - } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') { - let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点新增成功', - duration: 2000 - }); - data.inspectPointDialog = false; - data.inspectTaskForm.points.push(data.inspectPointForm); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点修改成功', - duration: 2000 - }); - let result = data.inspectTaskForm.points.findIndex((item) => item.id === data.inspectPointForm.id); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - const deleteFlow = async (index: number, item: { id: number }) => { - if (data.pointTitle === '新增巡检点') { - data.inspectTaskForm.points.splice(index, 1); - } else { - let res = await inspectTaskApi().deleteChainOfInspectTask({ id: item.id, unitId: data.inspectTaskForm.id }); - if (res.data.code === '200') { - data.inspectTaskForm.points.splice(index, 1); - ElMessage({ - type: 'success', - message: '巡检点删除成功' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - - const giveRegionAndRFID = () => { - data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number; - data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number; - }; - - const giveClassGroup = () => { - data.inspectTaskForm.execClassgroupId = null; - data.classGroup = data.classGroupList.filter((item) => item.depId === data.inspectTaskForm.execDepId); - }; - - const giveQuotaUnit = () => { - data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string; - }; - - const submitInspectTask = () => { - inspectTaskFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (data.title === '新增巡检任务') { - let res = await inspectTaskApi().addInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检任务新增成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await inspectTaskApi().modInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检指标修改成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(data), - inspectTaskFormRef, - deleteFlow, - giveQuotaUnit, - giveClassGroup, - submitInspectTask, - submitInspectPoint, - giveRegionAndRFID, - showInspectRecordDialog, - openInspectPointDialog - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-date-editor) { - width: 100%; -} -</style> diff --git a/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/sum.vue b/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/sum.vue deleted file mode 100644 index b0071e0..0000000 --- a/src/views/intellectInspect/inspectRecordManage/inspectRecord/components/sum.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div style="height: 100%"> - <div class="sum-info"> - <div v-for="item in sumData" class="region-card"> - <div class="region-tit">{{item[0][0].region}}</div> - <div class="unit-card"> - <div v-for="i in item"> - <div class="unit-tit">{{i[0].quotaContent}}({{i[0].quotaUnit}})</div> - <div class="points"> - <div v-for="t in i" > - <span class="point-tit">{{t.point}}</span> - <span>{{t.dataReportType == 1 ? '无' : t.secondReferenceResult}}</span> - </div> - </div> - </div> - </div> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - - } - export default defineComponent({ - name: 'SumData', - components: {}, - props:['sumData'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - - .sum-info{ - width: 100%; - border: 1px solid #ccc; - - .region-card{ - width: 100%; - border-bottom: 1px solid #ccc; - display: flex; - font-size: 16px; - align-items: center; - .region-tit{ - width: 25%; - text-align: center; - } - .unit-card{ - width: 75%; - height: 100%; - border-left: 1px solid #ccc; - - &>div{ - width: 100%; - display: flex; - align-items: center; - border-bottom: 1px solid #ccc; - - &:last-of-type{ - border-bottom: none; - } - - .unit-tit{ - width: 40%; - padding-left: 10px; - } - .points{ - width: 60%; - height: 100%; - border-left: 1px solid #ccc; - - &>div{ - width: 100%; - display: flex; - align-items: center; - span{ - text-align: center; - width: 50%; - } - .point-tit{ - border-right: 1px solid #ccc; - padding: 10px; - } - } - } - } - } - } - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue b/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue deleted file mode 100644 index 3ac0afc..0000000 --- a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue +++ /dev/null @@ -1,546 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>任务类型:</span> - <el-select v-model="tableData.params.taskType" clearable filterable class="input-box" placeholder="任务类型"> - <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>执行班组:</span> - <el-select v-model="tableData.params.execClassgroupId" clearable filterable class="input-box" placeholder="执行班组"> - <el-option v-for="item in classGroupList" :key="item.id" :label="item.groupName" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>任务状态:</span> - <el-select v-model="tableData.params.taskStatus" clearable filterable class="input-box" placeholder="执行班组"> - <el-option v-for="item in taskStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div style="padding-bottom: 10px"> - <el-button type="primary" @click="getInspectRecord">查询</el-button> - <el-button plain @click="reset">重置</el-button> - </div> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-button type="primary" :icon="Refresh" size="default" /> - </el-row> - <el-table ref="multipleTableRef" :data="tableData.inspectRecordData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="taskName" label="任务名称"> - <template #default="scope"> - <div :class="hasJump == true && scope.row.startTime.slice(0, 10) == date && (tableData.params.taskStatus == 4 || tableData.params.taskStatus == 5) ? 'redTit' : ''"> - {{ scope.row.taskName }} - </div> - </template> - </el-table-column> - <el-table-column property="taskType" label="任务类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.taskType, '任务类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="execClassgroupId" label="巡检班组"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.execClassgroupId, '巡检班组') }} - </span> - </template> - </el-table-column> - <el-table-column property="frequency" label="检查频次"> - <template #default="scope"> - <span> - {{ scope.row.checkCycle }} - </span> - <span> - {{ parseNumber(scope.row.checkCycleUnit, '检查频次') }} - </span> - </template> - </el-table-column> - <el-table-column property="startTime" label="任务开始时间" /> - <el-table-column prop="execUserName" label="执行人" show-overflow-tooltip></el-table-column> - <el-table-column property="taskStatus" label="任务状态" width="180"> - <template #default="scope"> - <el-tag :type="scope.row.resultStatus === 1 ? 'danger' : scope.row.taskStatus === 1 ? 'info' : scope.row.taskStatus === 2 ? '' : scope.row.taskStatus === 3 ? 'success' : 'danger'"> - <span> - {{ scope.row.resultStatus === 1 ? '已巡检存在异常' : parseNumber(scope.row.taskStatus, '任务状态') }} - </span> - </el-tag> - </template> - </el-table-column> - <el-table-column property="resultStatus" label="巡检结果"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.resultStatus, '巡检状态') }} - </span> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="openInspectRecordDialog('查看', scope.row)">查看</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - </div> - <inspect-record-dialog ref="inspectRecordDialogRef" @refreshInspectRecord="getInspectRecord"></inspect-record-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted, nextTick } from 'vue'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable, ElMessage } from 'element-plus'; -import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; -import inspectRecordDialog from '../../inspectIndex/components/inspectRecordDialog.vue'; -import { departmentApi } from '/@/api/systemManage/department'; -import { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage'; -import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; -import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import { useRoute } from 'vue-router'; -let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined] -}; - -interface stateType { - isRed: boolean; - hasJump: boolean; - date: string; - tableData: { - inspectRecordData: []; - total: number; - loading: boolean; - params: { - pageIndex: number | null; - pageSize: number | null; - taskName: string | null; - taskType: number | null; - taskStatus: number | null; - execUserId: number | null; - execClassgroupId: number | null; - execDepId: number | null; - startTime: string | null; - validTime: string | null; - createUserId: number | null; - reportTime: string | null; - resultStatus: number | null; - }; - }; - workTypeList: Array<type>; - taskStatusList: Array<type>; - quotaList: []; - departmentList: []; - classGroupList: Array<classGroup>; - inspectPointAllList: []; - timeType: Array<type>; - resultStatusList: Array<type>; -} -interface type { - id: number; - name: string; -} -interface classGroup { - id: number; - groupName: string; -} -interface timeType {} -export default { - name: 'index', - components: { inspectRecordDialog }, - setup() { - const inspectRecordDialogRef = ref(); - const route = useRoute(); - const state = reactive<stateType>({ - hasJump: false, - tableData: { - inspectRecordData: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - taskName: null, - taskType: null, - taskStatus: 2, - execUserId: null, - execClassgroupId: null, - execDepId: null, - startTime: null, - validTime: null, - createUserId: null, - reportTime: null, - resultStatus: null - } - }, - isRed: false, - date: '', - workTypeList: [ - { id: 1, name: '周期任务' }, - { id: 2, name: '单次任务' } - ], - resultStatusList: [ - { id: 0, name: '正常' }, - { id: 1, name: '存在异常' } - ], - taskStatusList: [ - { id: 1, name: '待巡检' }, - { id: 2, name: '巡检中' }, - { id: 3, name: '已巡检正常' }, - { id: 5, name: '已巡检存在异常' }, - { id: 4, name: '超时未完成巡检' } - ], - quotaList: [], - departmentList: [], - classGroupList: [], - inspectPointAllList: [], - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ] - }); - - //获取巡检记录数据 - const getInspectRecord = async () => { - const data = JSON.parse(JSON.stringify(state.tableData.params)); - if (state.tableData.params.taskStatus == 3) { - data.taskStatus = 3; - data.resultStatus = 0; - } - if (state.tableData.params.taskStatus == 5) { - data.taskStatus = 3; - data.resultStatus = 1; - } - console.log(state.tableData.params.taskStatus, data.taskStatus, 'data'); - let res = await inspectRecordApi().getInspectRecordList(data); - if (res.data.code === '200') { - state.tableData.inspectRecordData = JSON.parse(JSON.stringify(res.data.data.records)); - state.tableData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门 - const getQuotaList = async () => { - let res = await inspectTaskApi().getQuotaList(); - if (res.data.code === '200') { - state.quotaList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取巡检点 - const getInspectTaskPoint = async () => { - let res = await inspectPointApi().getInspectPointAll(); - if (res.data.code === '200') { - state.inspectPointAllList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取班组 - const getClassGroupData = async () => { - let res = await teamManageApi().getRecord({ depIp: null, groupName: null, containGroupMemberEnable: null }); - if (res.data.code === '200') { - state.classGroupList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // const turnRed =()=>{ - // date - // } - - const openInspectRecordDialog = (type: string, value: {}) => { - inspectRecordDialogRef.value.showInspectRecordDialog(type, value, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList); - }; - - const parseNumber = (value: number, type: string) => { - if (type === '任务类型') { - return state.workTypeList.find((item) => item.id === value)?.name; - } else if (type === '检查频次') { - return state.timeType.find((item) => item.id == value)?.name; - } else if (type === '巡检状态') { - return state.resultStatusList.find((item) => item.id == value)?.name; - } else if (type === '任务状态') { - return state.taskStatusList.find((item) => item.id == value)?.name; - } else { - return state.classGroupList.find((item) => item.id == value)?.groupName; - } - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.tableData.params.pageSize = val; - getInspectRecord(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.tableData.params.pageIndex = val; - getInspectRecord(); - state.isRed = false; - }; - // 时间格式化 - const timeForm: timeType = { - hour12: false, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit' - }; - const reset = () => { - state.tableData.params = { - pageIndex: 1, - pageSize: 10, - taskName: null, - taskType: null, - taskStatus: null, - execUserId: null, - execClassgroupId: null, - execDepId: null, - startTime: null, - validTime: null, - createUserId: null, - resultStatus: null, - reportTime: null - }; - }; - // 当前时间 - const getDateTime = () => { - const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-'); - state.date = curTime.slice(0, 10); - }; - // 页面加载时 - onMounted(() => { - getDateTime(); - if (route.query.id) { - state.hasJump = true; - state.tableData.params.taskStatus = Number(route.query.id); - state.isRed = true; - getInspectRecord(); - getQuotaList(); - getDepartmentData(); - getClassGroupData(); - getInspectTaskPoint(); - } else { - getInspectRecord(); - getQuotaList(); - getDepartmentData(); - getClassGroupData(); - getInspectTaskPoint(); - } - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - reset, - parseNumber, - getInspectRecord, - onHandleSizeChange, - onHandleCurrentChange, - inspectRecordDialogRef, - openInspectRecordDialog, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -.redTit { - color: red; -} -.el-input { - width: 100% !important; -} -:deep(.el-date-editor) { - width: 100%; -} -.el-select { - width: 100%; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue deleted file mode 100644 index 642567c..0000000 --- a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue +++ /dev/null @@ -1,782 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog v-model="ifShowInspectTaskDialog" :title="title" :close-on-click-modal="false"> - <el-form :model="inspectTaskForm" label-width="120px" ref="inspectTaskFormRef" :rules="inspectTaskFormRules"> - <el-row> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务名称" prop="unitName"> - <el-input v-model="inspectTaskForm.unitName" :disabled="!inspectPointConfirm" class="input-add" placeholder="请填写任务名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务类型" prop="workType"> - <el-select v-model="inspectTaskForm.workType" :disabled="!inspectPointConfirm" class="input-add" placeholder="请选择任务类型"> - <el-option v-for="item in workTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检部门" prop="execDepId"> - <el-cascader @change="giveClassGroup" :disabled="!inspectPointConfirm" v placeholder="请选择巡检部门" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" clearable filterable class="input-add" v-model="inspectTaskForm.execDepId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="巡检班组" prop="execClassgroupId"> - <el-select v-model="inspectTaskForm.execClassgroupId" :disabled="!inspectPointConfirm" placeholder="请选择巡检班组" class="input-add"> - <el-option v-for="item in classGroup" :key="item.id" :value="item.id" :label="item.groupName"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px" v-if="inspectTaskForm.workType === 1"> - <el-form-item label="巡检周期" prop="checkCycle"> - <el-input v-model="inspectTaskForm.checkCycle" @input="onVerifiyNumberInteger($event, 'checkCycle')" :disabled="!inspectPointConfirm" placeholder="请输入巡检周期" class="input-add"> - <template #append> - <el-form-item prop="checkCycleUnit"> - <el-select v-model="inspectTaskForm.checkCycleUnit" :disabled="!inspectPointConfirm" placeholder="选择单位"> - <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="提前通知时间" prop="noticeTime"> - <el-input @input="onVerifiyNumberInteger($event, 'noticeTime')" v-model="inspectTaskForm.noticeTime" :disabled="!inspectPointConfirm" placeholder="请输入提前通知时间" class="input-add"> - <template #append> - <el-form-item prop="noticeTimeUnit"> - <el-select v-model="inspectTaskForm.noticeTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位"> - <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="有效时间" prop="validTime"> - <el-input v-model="inspectTaskForm.validTime" @input="onVerifiyNumberInteger($event, 'validTime')" :disabled="!inspectPointConfirm" placeholder="请输入有效时间" class="input-add"> - <template #append> - <el-form-item prop="noticeTimeUnit"> - <el-select v-model="inspectTaskForm.validTimeUnit" :disabled="!inspectPointConfirm" placeholder="选择单位"> - <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </template> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务开始时间" prop="firstStartTime"> - <el-date-picker v-model="inspectTaskForm.firstStartTime" :disabled="!inspectPointConfirm" placeholder="请选择任务开始时间" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" class="input-add" /> - </el-form-item> - </el-col> - - <el-col :span="24"> - <el-form-item label="创建巡检链"> - <div style="width: 100%; margin-bottom: 20px" v-show="inspectPointConfirm"> - <el-button type="primary" :icon="Plus" size="default" @click="openInspectPointDialog('新增', '')">新增巡检点</el-button> - </div> - <div style="width: 100%; margin-left: -30px"> - <div v-for="(item, index) in inspectTaskForm.points" class="stepItem"> - <div class="stepNum">{{ index + 1 }}</div> - <div class="stepCard"> - <el-card class="box-card"> - <template #header> - <div class="card-header" v-for="i in inspectPointAllList"> - <div v-if="i.id == item.pointId"> - <span>{{ i.code }}</span> - </div> - </div> - </template> - <div class="text item" v-for="i in regionNameList"> - <div v-if="i.id == item.regionId"> - 所属设备区域:<span>{{ i.region }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 所属设备区域:<span>{{ item.regionId }}</span>--> - <!-- </div>--> - <div class="text item" v-for="i in RFIDList"> - <div v-if="i.id == item.rfidId"> - 所属设备区域:<span>{{ i.rfidName }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 关联RFID:<span>{{ item.rfidId }}</span>--> - <!-- </div>--> - <div class="text item" v-for="i in quotaList"> - <div v-if="i.id == item.quotaId"> - 所属设备区域:<span>{{ i.type }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 巡检指标:<span>{{ item.quotaId }}</span>--> - <!-- </div>--> - <div class="text item" v-for="i in dataReportTypeList"> - <div v-if="i.id == item.dataReportType"> - 所属设备区域:<span>{{ i.name }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 数据填报类型:<span>{{ item.dataReportType }}</span>--> - <!-- </div>--> - <div class="text item"> - 数据参考值:<span>{{ item.firstReferenceValue ? item.firstReferenceValue : item.secondReferenceValue ? item.secondReferenceValue : item.thirdReferenceValue }}</span> - </div> - </el-card> - </div> - <div v-show="inspectPointConfirm"> - <!-- <el-button type="primary" size="default" @click="addFlow(index)">新增下一区域</el-button>--> - <el-button type="primary" style="margin-left: 12px" size="default" @click="openInspectPointDialog('修改', item)">修改</el-button> - <el-button type="danger" size="default" @click="deleteFlow(index, item)">删除</el-button> - </div> - </div> - </div> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <div v-if="inspectPointConfirm" class="dialog-footer"> - <el-button type="warning" @click="ifShowInspectTaskDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitInspectTask()" size="default">确认</el-button> - </div> - </template> - </el-dialog> - <el-dialog v-model="inspectPointDialog" :title="pointTitle" :close-on-click-modal="false"> - <el-form :model="inspectPointForm" label-width="150px" ref="inspectPointFormRef" :rules="inspectPointFormRules"> - <el-form-item label="选择巡检点" prop="pointId"> - <el-select v-model="inspectPointForm.pointId" @change="giveRegionAndRFID" class="input-add"> - <el-option v-for="item in inspectPointAllList" :key="item.id" :value="item.id" :label="item.code"></el-option> - </el-select> - </el-form-item> - <el-form-item label="所属设备区域" prop="regionId"> - <el-input v-model="inspectPointForm.regionId" class="input-add" readonly /> - </el-form-item> - <el-form-item label="关联RFID" prop="rfidId"> - <el-input v-model="inspectPointForm.rfidId" class="input-add" readonly /> - </el-form-item> - <el-form-item label="选择巡检指标" prop="quotaId"> - <el-select v-model="inspectPointForm.quotaId" @change="giveQuotaUnit" placeholder="请选择巡检指标" class="input-add"> - <el-option v-for="item in quotaList" :key="item.id" :value="item.id" :label="item.type"> </el-option> - </el-select> - </el-form-item> - <el-form-item label="选择巡检指标单位" prop="quotaUnit"> - <el-input v-model="inspectPointForm.quotaUnit" placeholder="单位" class="input-add"> </el-input> - </el-form-item> - <el-form-item label="数据填报类型" prop="dataReportType"> - <el-select v-model="inspectPointForm.dataReportType" class="input-add"> - <el-option v-for="item in dataReportTypeList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </el-form-item> - <el-form-item v-if="inspectPointForm.dataReportType == '1' || inspectPointForm.dataReportType == '3'" label="数据参考值" prop="firstReferenceValue"> - <el-select v-model="inspectPointForm.firstReferenceValue" class="input-add"> - <el-option v-for="item in firstReferenceValueList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </el-form-item> - <el-form-item v-if="inspectPointForm.dataReportType == '2' || inspectPointForm.dataReportType == '3'" label="数据参考值"> - <el-input v-model="inspectPointForm.secondReferenceValue" type="number" class="input-add" placeholder="请根据需求选择前方符号后再填写参考值,非必填"> - <template #prepend> - <el-select v-model="inspectPointForm.secondReferenceSign" placeholder="Select" style="width: 115px"> - <el-option v-for="item in secondReferenceSignList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </template> - </el-input> - </el-form-item> - <el-form-item v-if="inspectPointForm.dataReportType == '2' || inspectPointForm.dataReportType == '3'" label=""> - <el-input v-model="inspectPointForm.thirdReferenceValue" type="number" class="input-add" placeholder="请根据需求选择前方符号后再填写参考值,非必填"> - <template #prepend> - <el-select v-model="inspectPointForm.thirdReferenceSign" placeholder="Select" style="width: 115px"> - <el-option v-for="item in thirdReferenceSignList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </template> - </el-input> - </el-form-item> - <div align="right"> - <el-button type="warning" @click="inspectPointDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitInspectPoint()" size="default">确认</el-button> - </div> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus/es'; -import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import { verifiyNumberInteger } from '/@/utils/toolsValidate'; - -interface dataState { - title: string; - pointTitle: string; - inspectPointConfirm: boolean; - inspectPointDialog: boolean; - ifShowInspectTaskDialog: boolean; - inspectPointForm: inspectPointForm; - inspectTaskForm: { - id: number | null; - uuid: number | null; - unitName: number | null; - taskUnitStatus: number | null; - workType: number | null; - execClassgroupId: number | null; - execDepId: number | null; - checkCycle: number | null; - checkCycleUnit: number | null; - noticeTime: number | null; - noticeTimeUnit: number | null; - validTime: number | null; - validTimeUnit: number | null; - firstStartTime: number | null; - points: Array<inspectPointForm>; - }; - inspectTaskFormRules: {}; - inspectPointFormRules: {}; - workTypeList: []; - departmentList: []; - timeList: []; - dataReportTypeList: Array<dataReport>; - firstReferenceValueList: Array<dataReport>; - secondReferenceSignList: Array<dataReport>; - thirdReferenceSignList: Array<dataReport>; - classGroupList: Array<classGroup>; - classGroup: Array<classGroup>; - quotaList: Array<quota>; - inspectPointAllList: Array<inspectPointAllState>; - regionNameList: Array<inspectPointAllState>; - RFIDList: Array<inspectPointAllState>; -} -interface inspectPointAllState { - id: number; - code: string; - regionId: number; - rfidId: number; - rfidName: string; - region: string; -} -interface classGroup { - depId: number; -} -interface dataReport { - id: number; - name: string; -} -interface quota { - id: number; - type: string; - unit: string; -} -interface inspectPointForm { - id: number | null; - unitId: number | null; - unitUuid: string | null; - pointId: number | null; - pointUuid: string | null; - regionId: number | null; - regionUuid: string | null; - rfidId: number | null; - quotaId: number | null; - quotaUnit: string | null; - execSequence: number | null; - dataReportType: number | null; - firstReferenceValue: number | null; - secondReferenceSign: number | null; - secondReferenceValue: number | null; - thirdReferenceSign: number | null; - thirdReferenceValue: number | null; -} -export default { - name: 'inspectTaskDialog', - setup(props: any, context: any) { - const inspectTaskFormRef = ref(); - const inspectPointFormRef = ref(); - const data = reactive<dataState>({ - title: '', - pointTitle: '', - inspectPointConfirm: false, - inspectPointDialog: false, - ifShowInspectTaskDialog: false, - inspectPointForm: { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - execSequence: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }, - inspectTaskForm: { - id: null, - uuid: null, - unitName: null, - taskUnitStatus: null, - workType: null, - execClassgroupId: null, - execDepId: null, - checkCycle: null, - checkCycleUnit: null, - noticeTime: null, - noticeTimeUnit: null, - validTime: null, - validTimeUnit: null, - firstStartTime: null, - points: [] - }, - inspectTaskFormRules: { - unitName: [{ required: true, message: '请填写巡检任务单元名称', trigger: 'blur' }], - workType: [{ required: true, message: '请选择巡检任务类型', trigger: 'change' }], - execClassgroupId: [{ required: true, message: '请选择巡检班组', trigger: 'change' }], - execDepId: [{ required: true, message: '请选择巡检部门', trigger: 'blur' }], - checkCycle: [{ required: true, message: '请填写巡检周期', trigger: 'blur' }], - checkCycleUnit: [{ required: true, message: '请选择巡检周期单位', trigger: 'change' }], - noticeTime: [{ required: true, message: '请填写提前通知时间', trigger: 'blur' }], - noticeTimeUnit: [{ required: true, message: '请选择提前通知时间单位', trigger: 'change' }], - validTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }], - validTimeUnit: [{ required: true, message: '请选择有效时间单位', trigger: 'change' }], - firstStartTime: [{ required: true, message: '请选择周期开始时间', trigger: 'change' }] - }, - inspectPointFormRules: { - pointId: [{ required: true, message: '请选择巡检点', trigger: 'change' }], - regionId: [{ required: true, message: '', trigger: 'change' }], - rfidId: [{ required: true, message: '', trigger: 'change' }], - quotaId: [{ required: true, message: '请选择巡检指标', trigger: 'change' }], - quotaUnit: [{ required: true, message: '请填写巡检指标单位', trigger: 'blur' }], - dataReportType: [{ required: true, message: '请选择巡检指标单位', trigger: 'change' }] - }, - workTypeList: [], - departmentList: [], - timeList: [], - classGroupList: [], - classGroup: [], - quotaList: [], - inspectPointAllList: [], - regionNameList: [], - RFIDList: [], - dataReportTypeList: [ - { id: 1, name: '选择' }, - { id: 2, name: '填空' }, - { id: 3, name: '选择并填空' } - ], - firstReferenceValueList: [ - { id: 0, name: '正常' }, - { id: 1, name: '异常' } - ], - secondReferenceSignList: [ - { id: 1, name: '>' }, - { id: 2, name: '>=' } - ], - thirdReferenceSignList: [ - { id: 3, name: '<' }, - { id: 4, name: '<=' } - ] - }); - - const openInspectPointDialog = (type: string, value: {}) => { - data.inspectPointDialog = true; - if (type === '新增') { - data.pointTitle = '新增巡检点'; - data.inspectPointForm = { - id: null, - unitId: null, - unitUuid: null, - pointId: null, - pointUuid: null, - regionId: null, - regionUuid: null, - rfidId: null, - quotaId: null, - quotaUnit: null, - execSequence: null, - dataReportType: null, - firstReferenceValue: null, - secondReferenceSign: null, - secondReferenceValue: null, - thirdReferenceSign: null, - thirdReferenceValue: null - }; - } else { - data.pointTitle = '修改巡检点'; - data.inspectPointForm = JSON.parse(JSON.stringify(value)); - } - }; - - const showInspectTaskDialog = (type: string, value: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: [], regionNameList: [], RFIDList: []) => { - data.regionNameList = regionNameList; - data.RFIDList = RFIDList; - data.quotaList = JSON.parse(JSON.stringify(quotaList)); - data.timeList = JSON.parse(JSON.stringify(timeType)); - data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList)); - data.workTypeList = JSON.parse(JSON.stringify(workTypeList)); - data.departmentList = JSON.parse(JSON.stringify(department)); - data.classGroupList = JSON.parse(JSON.stringify(classGroupList)); - data.ifShowInspectTaskDialog = true; - if (type === '新增') { - data.inspectPointConfirm = true; - data.title = '新增巡检任务'; - data.inspectTaskForm = { - id: null, - uuid: null, - unitName: null, - taskUnitStatus: null, - workType: null, - execClassgroupId: null, - execDepId: null, - checkCycle: null, - checkCycleUnit: null, - noticeTime: null, - noticeTimeUnit: null, - validTime: null, - validTimeUnit: null, - firstStartTime: null, - points: [] - }; - } else if (type === '修改') { - data.inspectPointConfirm = true; - data.title = '修改巡检任务'; - inspectTaskApi() - .getInspectTaskById({ id: value.id, uuid: value.uuid }) - .then((res) => { - if (res.data.code === '200') { - data.inspectTaskForm.execDepId = res.data.data.execDepId; - giveClassGroup(); - data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch((error) => {}); - } else { - data.inspectPointConfirm = false; - data.title = '查看巡检任务'; - inspectTaskApi() - .getInspectTaskById({ id: value.id, uuid: value.uuid }) - .then((res) => { - if (res.data.code === '200') { - data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch((error) => {}); - } - }; - - const submitInspectPoint = () => { - inspectPointFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') { - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - data.inspectTaskForm.points.push(data.inspectPointForm); - data.inspectPointDialog = false; - } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') { - let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - if (data.inspectTaskForm.points.length === 0) { - data.inspectPointForm.execSequence = 1; - } else { - data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1; - } - let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点新增成功', - duration: 2000 - }); - data.inspectPointDialog = false; - data.inspectTaskForm.points.push(data.inspectPointForm); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - data.inspectPointForm.unitId = data.inspectTaskForm.id; - let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检点修改成功', - duration: 2000 - }); - let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence); - data.inspectTaskForm.points[result] = data.inspectPointForm; - data.inspectPointDialog = false; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - const deleteFlow = async (index: number, item: { id: number }) => { - if (data.pointTitle === '新增巡检点') { - data.inspectTaskForm.points.splice(index, 1); - } else { - let res = await inspectTaskApi().deleteChainOfInspectTask({ id: item.id, unitId: data.inspectTaskForm.id }); - if (res.data.code === '200') { - data.inspectTaskForm.points.splice(index, 1); - ElMessage({ - type: 'success', - message: '巡检点删除成功' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - }; - - const giveRegionAndRFID = () => { - data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number; - data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number; - }; - - const giveClassGroup = () => { - data.inspectTaskForm.execClassgroupId = null; - data.classGroup = data.classGroupList.filter((item) => item.depId === data.inspectTaskForm.execDepId); - }; - - const giveQuotaUnit = () => { - data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string; - }; - - const submitInspectTask = () => { - inspectTaskFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (data.title === '新增巡检任务') { - let res = await inspectTaskApi().addInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检任务新增成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await inspectTaskApi().modInspectTask(data.inspectTaskForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '巡检指标修改成功', - duration: 2000 - }); - data.ifShowInspectTaskDialog = false; - context.emit('refreshInspectTask'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - const onVerifiyNumberInteger = (val: number, title: string) => { - if (title === 'noticeTime') { - data.inspectTaskForm.noticeTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); - } else if (title === 'checkCycle') { - data.inspectTaskForm.checkCycle = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); - } else { - data.inspectTaskForm.validTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString())); - } - }; - - return { - ...toRefs(data), - inspectTaskFormRef, - deleteFlow, - giveQuotaUnit, - giveClassGroup, - inspectPointFormRef, - onVerifiyNumberInteger, - submitInspectTask, - submitInspectPoint, - giveRegionAndRFID, - showInspectTaskDialog, - openInspectPointDialog - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-date-editor) { - width: 100%; -} -</style> diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue deleted file mode 100644 index d897b89..0000000 --- a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue +++ /dev/null @@ -1,595 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>任务类型:</span> - <el-select v-model="tableData.params.workType" clearable filterable class="input-box" placeholder="任务类型"> - <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>执行班组:</span> - <el-select v-model="tableData.params.execClassgroupId" clearable filterable class="input-box" placeholder="执行班组"> - <el-option v-for="item in classGroupList" :key="item.id" :label="item.groupName" :value="item.id"></el-option> - </el-select> - </div> - <div style="padding-bottom: 10px"> - <el-button type="primary" @click="getInspectionTask">查询</el-button> - <el-button plain @click="reset">重置</el-button> - </div> - </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="openInspectTaskDialog('新增', {})">新增</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.inspectTaskData" 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="unitName" label="任务名称" /> - <el-table-column property="workType" label="任务类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.workType, '任务类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="execClassgroupId" label="巡检班组"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.execClassgroupId, '巡检班组') }} - </span> - </template> - </el-table-column> - <el-table-column property="frequency" label="检查频次"> - <template #default="scope"> - <span> - {{ scope.row.checkCycle }} - </span> - <span> - {{ scope.row.checkCycleUnit }} - </span> - </template> - </el-table-column> - <!-- <el-table-column prop="validTime" label="有效时间" show-overflow-tooltip>--> - <!-- <template #default="scope">--> - <!-- <span>--> - <!-- {{ scope.row.validTime }}--> - <!-- </span>--> - <!-- <span>--> - <!-- {{ parseNumber(scope.row.validTimeUnit, '检查频次') }}--> - <!-- </span>--> - <!-- </template>--> - <!-- </el-table-column>--> - <!-- <el-table-column prop="validTime" label="提醒时间" show-overflow-tooltip>--> - <!-- <template #default="scope">--> - <!-- <span>--> - <!-- {{ scope.row.noticeTime }}--> - <!-- </span>--> - <!-- <span>--> - <!-- {{ parseNumber(scope.row.noticeTimeUnit, '检查频次') }}--> - <!-- </span>--> - <!-- </template>--> - <!-- </el-table-column>--> - <el-table-column property="firstStartTime" label="任务开始时间" /> - <el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="lastEditUserName" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModitify" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column property="taskUnitStatus" label="状态" width="60"> - <template #default="scope"> - <div> - <div v-if="scope.row.taskUnitStatus === 1"> - <el-tag :type="''"> - {{ '开启' }} - </el-tag> - </div> - <div v-if="scope.row.taskUnitStatus === 2"> - <el-tag :type="'danger'"> - {{ '关闭' }} - </el-tag> - </div> - </div> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="openInspectTaskDialog('查看', scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="openInspectTaskDialog('修改', scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" v-if="scope.row.taskUnitStatus === 2" @click="deleteInspectTask(scope.row)">删除</el-button> - <div @click="changeStatus(scope.row)"> - <el-switch v-model="scope.row.taskUnitStatus" inline-prompt active-text="开" inactive-text="关" :active-value="1" :inactive-value="2" style="margin: 0 10px" /> - </div> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - </div> - <inspect-task-dialog ref="inspectTaskDialogRef" @refreshInspectTask="getInspectionTask"></inspect-task-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable, ElMessage, ElMessageBox } from 'element-plus'; -import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import inspectTaskDialog from './components/inspectTaskDialog.vue'; -import { departmentApi } from '/@/api/systemManage/department'; -import { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage'; -import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; -import { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage'; -import { RFIDApi } from '/@/api/intellectInspectSystem/RFID'; -let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined] -}; - -interface stateType { - tableData: { - inspectTaskData: []; - total: number; - loading: boolean; - params: { - pageIndex: number | null; - pageSize: number | null; - unitName: string | null; - workType: number | null; - createUserId: number | null; - execClassgroupId: number | null; - checkCycle: number | null; - checkCycleUnit: number | null; - }; - }; - workTypeList: Array<type>; - quotaList: []; - departmentList: []; - classGroupList: Array<classGroup>; - inspectPointAllList: []; - regionNameList: []; - RFIDList: []; - timeType: Array<type>; -} -interface type { - id: number; - name: string; -} -interface classGroup { - id: number; - groupName: string; -} -export default { - name: 'index', - components: { inspectTaskDialog }, - setup() { - const inspectTaskDialogRef = ref(); - const state = reactive<stateType>({ - tableData: { - inspectTaskData: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - unitName: null, - workType: null, - createUserId: null, - execClassgroupId: null, - checkCycle: null, - checkCycleUnit: null - } - }, - workTypeList: [ - { id: 1, name: '周期任务' }, - { id: 2, name: '单次任务' } - ], - quotaList: [], - departmentList: [], - classGroupList: [], - inspectPointAllList: [], - regionNameList: [], - RFIDList: [], - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ] - }); - - //获取巡检任务数据 - const getInspectionTask = async () => { - let res = await inspectTaskApi().getInspectTaskList(state.tableData.params); - if (res.data.code === '200') { - state.tableData.inspectTaskData = res.data.data.records; - state.tableData.total = res.data.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门 - const getQuotaList = async () => { - let res = await inspectTaskApi().getQuotaList(); - if (res.data.code === '200') { - state.quotaList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取巡检点 - const getInspectTaskPoint = async () => { - let res = await inspectPointApi().getInspectPointAll(); - if (res.data.code === '200') { - state.inspectPointAllList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有设施区域名称 - const initFacilityAreaType = async () => { - let res = await facilityAreaApi().getAllFacilityAreaList(); - if (res.data.code === '200') { - state.regionNameList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取所有RFID名称 - const initRFIDList = async () => { - let res = await RFIDApi().getAllRFIDList(); - if (res.data.code === '200') { - state.RFIDList = JSON.parse(JSON.stringify(res.data.data)); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取班组 - const getClassGroupData = async () => { - let res = await teamManageApi().getRecord({ depIp: null, groupName: null, containGroupMemberEnable: null }); - if (res.data.code === '200') { - state.classGroupList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const changeStatus = async (value: { taskUnitStatus: number; id: number }) => { - if (value.taskUnitStatus === 2) { - ElMessageBox.confirm(`此操作将关闭该巡检任务”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await inspectTaskApi().openOrCloseInspectTask({ id: value.id, taskUnitStatus: 2 }); - if (res.data.code === '200') { - await getInspectionTask(); - ElMessage({ - type: 'success', - duration: 2000, - message: '关闭成功' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch((error) => {}); - } else { - ElMessageBox.confirm(`此操作将开启该巡检任务”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await inspectTaskApi().openOrCloseInspectTask({ id: value.id, taskUnitStatus: 1 }); - if (res.data.code === '200') { - await getInspectionTask(); - ElMessage({ - type: 'success', - duration: 2000, - message: '开启成功' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch((error) => {}); - } - await getInspectionTask(); - }; - - // 删除 - const deleteInspectTask = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该任务:“${row.unitName}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await inspectTaskApi().deleteInspectTask({ id: row.id }); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getInspectionTask(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const openInspectTaskDialog = (type: string, value: {}) => { - inspectTaskDialogRef.value.showInspectTaskDialog(type, value, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList, state.regionNameList, state.RFIDList); - }; - - const parseNumber = (value: number, type: string) => { - if (type === '任务类型') { - return state.workTypeList.find((item) => item.id === value)?.name; - } else if (type === '检查频次') { - return state.timeType.find((item) => item.id == value)?.name; - } else { - return state.classGroupList.find((item) => item.id == value)?.groupName; - } - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.tableData.params.pageSize = val; - getInspectionTask(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.tableData.params.pageIndex = val; - getInspectionTask(); - }; - - const reset = () => { - state.tableData.params = { - pageIndex: 1, - pageSize: 10, - unitName: null, - workType: null, - createUserId: null, - execClassgroupId: null, - checkCycle: null, - checkCycleUnit: null - }; - }; - - // 页面加载时 - onMounted(() => { - getInspectionTask(); - getQuotaList(); - getDepartmentData(); - getClassGroupData(); - getInspectTaskPoint(); - initFacilityAreaType(); - initRFIDList(); - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - reset, - changeStatus, - parseNumber, - deleteInspectTask, - getInspectionTask, - onHandleSizeChange, - onHandleCurrentChange, - inspectTaskDialogRef, - openInspectTaskDialog, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -.el-input { - width: 100% !important; -} -:deep(.el-date-editor) { - width: 100%; -} -.el-select { - width: 100%; -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/intellectInspect/intelligentLine/index.vue b/src/views/intellectInspect/intelligentLine/index.vue deleted file mode 100644 index c20d361..0000000 --- a/src/views/intellectInspect/intelligentLine/index.vue +++ /dev/null @@ -1,1412 +0,0 @@ -<template> - <div class="container" id="screenFull"> - <div class="big-title" @click="goBack()">国泰新华智能巡检系统</div> - <div style="height: 20px;font-size: 14px;line-height: 20px; color: #00ffff; margin-top: 4px">{{ present }}</div> - <div class="btns"> -<!-- <div class="fullbtn" @click="onScreenfullClick">--> -<!-- <div class="toFull">--> -<!-- <i class="iconfont" :title="全屏" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>--> -<!-- <el-icon>--> -<!-- <FullScreen v-if="isScreenfull"/>--> -<!-- <Close v-else/>--> -<!-- </el-icon>--> -<!-- </div>--> -<!-- <div>全屏</div>--> -<!-- </div>--> - <div class="backBtn" @click="goBack()"> - <img src="../../../assets/loginPage/back-icon.png"/> - <div>退出</div> - </div> - </div> - <div class="blocks"> - <div> - <div class="star-pic"> - <dv-decoration-12 scanDur="5" haloDur="4" class="scan"/> - <div class="star-bg"><img src="../../../assets/loginPage/star-bg.png" /></div> - <div class="star"><img src="../../../assets/loginPage/device-pic.png" /></div> - </div> - <div class="line-map" v-if="dataList && dataList.length > 0"> - <div class="line-item" v-for="(item, index) in dataList" :key="index"> - <div class="picbox"> - <div class="imgbox"> - <img :src="item.rfidImage==null?defaultImg:item.rfidImage"/> - </div> - <p> - RFID: <span>{{ item.rfid }}</span> - </p> - <p> - 位置: <span>{{ item.region.toString() }}</span> - </p> - </div> - <div class="area-head"> - <div class="indicator" :class="item.points.some((e) => e.reportResult == 1) ? 'somewarning' : (item.points.some((e) => e.reportResult == null) ? 'someUndone' : '')"> - <div class="indi-dot"></div> - <!-- <div class="indi-pulse"></div>--> - <!-- <div class="indi-pulse1"></div>--> - </div> - <div class="arrow" v-if="item.points.some((e) => e.reportResult != null)"></div> - <div class="top-line" :class="item.points.some((e) => e.reportResult !== null) ? '' : 'fadeLine'"></div> - </div> - <div class="more-info"> - <div class="item" v-for="(t, i) in item.points" :key="i" :class="t.reportResult == null ? 'undone' : t.reportResult == 1 ? 'warning' : ''"> - <section> - <div class="dot"></div> - <div class="pulse"></div> - <div class="pulse1"></div> - </section> - <div :class="t.reportResult == null ? 'noBorder' : t.reportResult == 1 ? 'redBorder' : ''"> - <div> - <span>巡检点:</span><span>{{ t.point }}</span> - </div> - <div> - <span>巡检状态:</span><span>{{ t.pointCheckStatus == 1 ? '未完成' : '已完成' }}</span> - </div> - <div v-if="t.reportResult != null"> - <span>巡检指标:</span><span>{{ t.quotaContent }}</span> - </div> - <div v-if="(t.dataReportType == 2 || t.dataReportType == 3) && t.secondReferenceResult"> - <span>参数:</span><span class="target">{{ t.secondReferenceResult + t.quotaUnit }}</span> - </div> - <div> - <span>巡检结果:</span><span class="target">{{ t.reportResult == null ? '--' : t.reportResult == 0 ? '正常' : '异常' }}</span> - </div> - </div> - </div> - </div> - </div> - <div class="line-item finish"> - <div class="picbox"></div> - <div class="area-head"> - <div class="finish-point"> - <div>完成巡检</div> - </div> - </div> - </div> - </div> - <div class="tip" v-else>抱歉,暂时查询不到巡检路线...</div> - </div> - </div> - </div> -</template> - -<script lang="ts"> -import screenfull from 'screenfull'; -import { lineApi } from '/@/api/intelligentLine'; -import {toRefs, reactive, ref, onMounted, onUnmounted, computed, nextTick, onActivated} from 'vue'; -import {useRoute} from 'vue-router'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { Session } from '/@/utils/storage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { useUserInfo } from '/@/stores/userInfo'; - -// 定义接口来定义对象的类型 -interface stateType { - present: string; - path: string; - socket: any; - socketData: string; - data: Array<any>; - id: string; - defaultImg: string -} -export default { - name: 'intelligentLine', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const route = useRoute(); - const state = reactive<stateType>({ - present: '', - path: '', - socketData: '', - socket: null, - data: [], - id: '', - defaultImg: new URL('../../../assets/default-img.jpg',import.meta.url).href - }); - - onMounted(() => { - setInterval(() => { - state.present = new Date().toLocaleString(); - }, 1000); - let curId = route.query.id - state.id = curId.toString() - getLine(state.id) - getUrl(state.id) - }); - onActivated(()=>{ - onScreenfullClick(); - }) - - const dataList = computed(() => { - return userInfos.value.dataList; - }); - - // 获取url - - const getUrl =async (id:string)=>{ - const res = await lineApi().getUrl(); - if (res.data.code === '200') { - state.path = 'http://' + res.data.data.ip + ':' + res.data.data.port + '/ws/test/' - if (typeof WebSocket === 'undefined') { - alert('您的浏览器不支持socket'); - } else { - // 实例化socket - let uid = userInfos.value.uid.toString() - var url = state.path + uid + '*' + id; - console.log(url,'url',uid,'uid') - url = url.replace('https', 'ws').replace('http', 'ws'); - console.log(url, '获取地址'); - state.socket = new WebSocket(url); - // 监听socket连接 - state.socket.onopen = () => { - console.log('socket连接成功'); - }; - // 监听socket错误信息 - state.socket.onerror = () => { - console.log('socket连接错误'); - }; - // 监听socket消息 - state.socket.onmessage = (msg) => { - if (msg.data === '连接成功') return; - console.log(msg.data,'data') - userInfos.value.dataList = JSON.parse(msg.data); - }; - } - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - - // const send = () => { - // state.socket.send(params); - // }; - - // 接口获取数据 - const getLine = async (id:string) => { - let res = await lineApi().getLine({ id: id }); - if (res.data.code === '200') { - userInfos.value.dataList = res.data.data - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 全屏 - const onScreenfullClick = () => { - const element = document.getElementById('screenFull') - if (!screenfull.isEnabled) { - ElMessage.warning('暂不不支持全屏'); - return false; - } - screenfull.toggle(element); - }; - - // 返回 - const goBack = () => { - window.history.go(-1); - }; - - // 页面关闭处理 - onUnmounted(() => { - // 销毁监听 - nextTick(()=>{ - state.socket.onclose = () => { - console.log('socket已经关闭'); - }; - }) - }); - return { - dataList, - goBack, - onScreenfullClick, - ...toRefs(state) - }; - } -}; -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - @media screen and (min-width: 1366px) { - .big-title { - font-size: 28px; - margin: 10px 0 20px; - } - .btns { - position: absolute; - z-index: 99999; - right: 60px; - top: 40px; - div { - font-size: 16px; - color: #00ffff; - } - } - .line-item { - width: calc((100vw - 40px) / 6); - padding-left: 20px; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-right: 20px; - flex-wrap: nowrap; - - .picbox { - width: 100%; - height: 200px; - padding: 10px; - margin-bottom: 20px; - box-sizing: border-box; - .imgbox{ - width: 100%; - height: 120px; - position: relative; - margin-bottom: 10px; - border-radius: 4px; - overflow: hidden; - img { - display: block; - width: 100%; - height: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin: auto; - } - } - - p { - font-size: 14px; - white-space: nowrap; - color: rgba(255, 255, 255, 0.8); - margin-bottom: 4px; - span { - color: #fff; - } - } - } - } - .item { - width: calc((100vw - 40px) / 6); - height: calc((100vh - 130px) / 5); - padding: 0 40px 20px 50px; - position: relative; - box-sizing: border-box; - border-left: 1px solid #36fcfc; - - &:last-of-type { - border: none; - } - - section { - width: 24px; - height: 24px; - border-radius: 50%; - position: absolute; - border: 1px solid rgba(0, 114, 255, 0.6); - top: -12px; - left: 10px; - - .dot { - position: absolute; - width: 12px; - height: 12px; - left: 5px; - top: 5px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #0072ff; - border-radius: 50%; - background-color: #0072ff; - z-index: 2; - } - .pulse { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072ff; - -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 #0072ff; - } - .pulse1 { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072ff; - -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 #0072ff; - } - } - & > div { - padding: 10px 0; - transform: translateY(-14px); - 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, 1); - display: flex; - flex-direction: column; - justify-content: center; - - div { - margin-bottom: 5px; - &:last-of-type { - margin-bottom: 0; - } - span { - display: inline-block; - white-space: nowrap; - width: 50%; - font-size: 13px; - color: #fff; - text-align: left; - - &:first-of-type { - text-align: right; - color: rgba(255, 255, 255, 0.8); - } - } - } - } - .noBorder{ - border: 1px solid rgba(54, 252, 252, 0.1); - } - .redBorder{ - border: 1px solid #ff0000; - } - 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); - } - } - .finish-point { - position: absolute; - width: 90px; - height: 90px; - border: 2px solid #0072ff; - left: -30px; - top: -45px; - border-radius: 50%; - - & > div { - width: 80px; - height: 80px; - position: absolute; - left: 3px; - top: 3px; - background: #0072ff; - border-radius: 50%; - color: #fff; - font-size: 16px; - line-height: 80px; - text-align: center; - font-weight: bolder; - } - } - } - - @media screen and (min-width: 1200px) and (max-width: 1366px){ - .big-title { - font-size: 28px; - margin: 10px 0 20px; - } - .btns { - position: absolute; - z-index: 99999; - right: 40px; - top: 40px; - div { - font-size: 14px; - color: #00ffff; - } - } - .line-item { - width: calc((100vw - 40px) / 5); - padding-left: 20px; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-right: 20px; - flex-wrap: nowrap; - .picbox { - width: 100%; - height: 180px; - padding: 10px; - margin-bottom: 40px; - box-sizing: border-box; - .imgbox{ - width: 100%; - height: 100px; - position: relative; - margin-bottom: 6px; - border-radius: 4px; - overflow: hidden; - img { - display: block; - width: 100%; - height: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin: auto; - } - } - p { - font-size: 14px; - white-space: nowrap; - color: rgba(255, 255, 255, 0.8); - margin-top: 10px; - span { - color: #fff; - } - } - } - } - .item { - width: calc((100vw - 40px) / 5); - height: calc((100vh - 130px) / 5); - padding: 0 20px 20px 40px; - position: relative; - box-sizing: border-box; - border-left: 1px solid #36fcfc; - - &:last-of-type { - border: none; - } - - section { - width: 24px; - height: 24px; - border-radius: 50%; - position: absolute; - border: 1px solid rgba(0, 114, 255, 0.6); - top: -12px; - left: 10px; - - .dot { - position: absolute; - width: 12px; - height: 12px; - left: 5px; - top: 5px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #0072FF; - border-radius: 50%; - background-color: #0072FF; - z-index: 2; - } - .pulse { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072FF; - -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 #0072FF; - } - .pulse1 { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072FF; - -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 #0072FF; - } - } - & > div { - width: 90%; - padding: 10px 0; - transform: translateY(-14px); - 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, 1); - display: flex; - flex-direction: column; - justify-content: center; - - div { - width: 100%; - margin-bottom: 5px; - &:last-of-type { - margin-bottom: 0; - } - span { - display: inline-block; - white-space: nowrap; - width: 50%; - font-size: 13px; - color: #fff; - text-align: left; - - &:first-of-type { - text-align: right; - color: rgba(255, 255, 255, 0.8); - } - } - } - } - .noBorder{ - border: 1px solid rgba(54, 252, 252, 0.1); - } - .redBorder{ - border: 1px solid #ff0000; - } - 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); - } - } - .finish-point { - position: absolute; - width: 80px; - height: 80px; - border: 1px solid #0072ff; - left: -20px; - top: -40px; - border-radius: 50%; - - & > div { - width: 70px; - height: 70px; - position: absolute; - left: 4px; - top: 4px; - background: #0072ff; - border-radius: 50%; - color: #fff; - font-size: 14px; - line-height: 70px; - text-align: center; - font-weight: bolder; - } - } - } - - @media screen and (max-width: 1200px){ - .big-title { - font-size: 20px; - margin: 5px 0 10px; - } - .btns { - position: absolute; - z-index: 99999; - right: 20px; - top: 40px; - div { - font-size: 12px; - color: #00ffff; - } - } - .line-item { - width: 20vw; - padding-left: 10px; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-right: 20px; - flex-wrap: nowrap; - .picbox { - width: 100%; - height: 160px; - padding: 10px; - margin-bottom: 30px; - box-sizing: border-box; - .imgbox{ - width: 100%; - height: 80px; - position: relative; - margin-bottom: 10px; - border-radius: 4px; - overflow: hidden; - img { - display: block; - width: 100%; - height: auto; - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - margin: auto; - } - } - p { - font-size: 12px; - color: rgba(255, 255, 255, 0.8); - margin-top: 6px; - span { - color: #fff; - } - } - } - } - .item { - width: 20vw; - height: calc((100vh - 130px) / 5); - padding: 0 0 20px 30px; - position: relative; - box-sizing: border-box; - border-left: 1px solid #36fcfc; - - &:last-of-type { - border: none; - } - - section { - width: 24px; - height: 24px; - border-radius: 50%; - position: absolute; - border: 1px solid rgba(0, 114, 255, 0.6); - top: -12px; - left: 2px; - - .dot { - position: absolute; - width: 12px; - height: 12px; - left: 5px; - top: 5px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #0072ff; - border-radius: 50%; - background-color: #0072ff; - z-index: 2; - } - .pulse { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072ff; - -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 #0072ff; - } - .pulse1 { - position: absolute; - width: 48px; - height: 48px; - left: -13px; - top: -13px; - border: 1px solid #0072ff; - -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 #0072ff; - } - } - & > div { - width: 80%; - padding: 4px 0; - transform: translateY(-14px); - 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, 1); - display: flex; - flex-direction: column; - justify-content: center; - - div { - width: 100%; - margin-bottom: 2px; - &:last-of-type { - margin-bottom: 0; - } - span { - width: 50%; - display: inline-block; - white-space: nowrap; - font-size: 12px; - color: #fff; - text-align: left; - - &:first-of-type { - text-align: right; - color: rgba(255, 255, 255, 0.8); - } - } - } - } - .noBorder{ - border: 1px solid rgba(54, 252, 252, 0.1); - } - .redBorder{ - border: 1px solid #ff0000; - } - 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); - } - } - .finish-point { - position: absolute; - width: 70px; - height: 70px; - border: 1px solid #0072ff; - left: -10px; - top: -35px; - border-radius: 50%; - - & > div { - width: 60px; - height: 60px; - position: absolute; - left: 4px; - top: 4px; - background: #0072ff; - border-radius: 50%; - color: #fff; - font-size: 12px; - line-height: 60px; - text-align: center; - font-weight: bolder; - } - } - } - - @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); - } - } - @keyframes run { - to { - transform: translateX(calc((100vw - 180px) / 6 - 80px)); - } - } - .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-weight: bold; - text-align: center; - color: #fff; - display: flex; - align-items: center; - justify-content: center; - } - .btns { - display: flex; - align-items: center; - .fullbtn { - cursor: pointer; - display: flex; - align-items: center; - margin-right: 20px; - .toFull { - font-weight: bolder; - color: #00ffff; - margin-right: 10px; - } - } - - .backBtn { - cursor: pointer; - display: flex; - align-items: center; - img { - width: 14px; - height: 14px; - margin-right: 10px; - } - } - } - .blocks { - width: 100%; - height: calc(100% - 90px); - padding: 10px 40px 35px; - box-sizing: border-box; - - &>div{ - width: 100%; - height: 100%; - display: flex; - justify-content: left; - align-items: flex-start; - overflow-y: hidden; - overflow-x: hidden; - overflow: auto; - } - - .line-map { - display: flex; - justify-content: center; - align-items: flex-start; - - .line-item { - - .area-head { - position: relative; - width: 100%; - height: 80px; - padding-left: 38px; - border-left: 1px solid #36fcfc; - - .indicator { - width: 36px; - height: 36px; - border-radius: 50%; - position: absolute; - border: 1px solid #00ff66; - top: -18px; - left: -18px; - - .indi-dot { - position: absolute; - width: 20px; - height: 20px; - left: 7px; - top: 7px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #00ff66; - border-radius: 50%; - background-color: #00ff66; - z-index: 2; - } - .indi-pulse { - position: absolute; - width: 56px; - height: 56px; - left: -11px; - top: -11px; - 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; - } - .indi-pulse1 { - position: absolute; - width: 56px; - height: 56px; - left: -11px; - top: -11px; - 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; - } - } - .someUndone { - width: 36px; - height: 36px; - border-radius: 50%; - position: absolute; - border: 1px solid #ccc; - top: -18px; - left: -18px; - - .indi-dot { - position: absolute; - width: 20px; - height: 20px; - left: 7px; - top: 7px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #ccc; - border-radius: 50%; - background-color: #ccc; - z-index: 2; - } - } - .somewarning { - width: 36px; - height: 36px; - border-radius: 50%; - position: absolute; - border: 1px solid #ff0000; - top: -18px; - left: -18px; - - .indi-dot { - position: absolute; - width: 20px; - height: 20px; - left: 7px; - top: 7px; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border: 1px solid #ff0000; - border-radius: 50%; - background-color: #ff0000; - z-index: 2; - } - } - .arrow { - position: absolute; - width: 58px; - height: 20px; - left: 38px; - top: -10px; - background: url('../../../assets/loginPage/arrow-r.png') 0 / cover no-repeat; - animation: run 2s steps(4) 0s infinite; - } - .top-line { - width: 100%; - border-top: 2px solid #36fcfc; - } - .fadeLine { - width: 100%; - border-top: 1px solid rgba(54,252,252,.6); - } - } - .fadeBorder { - border-left: 1px solid #ccc; - } - .more-info { - width: 100%; - - .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 { - span.target { - color: #ff2929; - font-weight: bolder; - } - } - } - } - .undone { - & > section { - border: 1px solid #ccc; - - .dot { - border: 1px solid #ccc; - background: #ccc; - } - .pulse { - display: none; - } - .pulse1 { - display: none; - } - } - } - } - } - .finish { - .area-head { - position: relative; - width: 100%; - height: 80px; - border-left: 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; - } - } - } - .tip { - width: 100%; - font-size: 30px; - text-align: center; - margin-top: 100px; - color: #fff; - font-weight: bolder; - } - .current-task { - position: absolute; - width: calc((500vw - 600px) / 7); - z-index: 999999; - top: 0; - right: 0; - padding: 0 60px; - display: flex; - align-items: center; - justify-content: space-between; - - .task-des { - padding: 10px 20px; - display: flex; - align-items: center; - border: 1px solid #36fcfc; - - .task-des-l { - display: flex; - flex-direction: column; - align-items: center; - font-size: 20px; - color: #36fcfc; - border-right: 1px solid #36fcfc; - padding-right: 20px; - img { - margin-bottom: 10px; - } - } - .task-des-r { - width: calc((200vw - 240px) / 7); - display: flex; - flex-direction: column; - align-items: center; - font-size: 20px; - line-height: 28px; - color: #fcfc36; - padding-left: 20px; - } - } - .current-data { - width: 267px; - height: 138px; - padding: 20px 30px; - box-sizing: border-box; - 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 #040c3b; - 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(4, 12, 59, 0.8); - - span { - color: #040c3b; - } - } - } - - .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(4, 12, 59, 0.8); - - p { - margin-top: 6px; - color: #040c3b; - } - - &:first-of-type { - border-right: 1px solid #040c3b; - } - } - } - } - } - .star-pic { - position: absolute; - width: calc((100vw - 120px) / 7); - height: calc((100vw - 120px) / 7); - z-index: 9999; - bottom: 40px; - right: 40px; - padding: 20px; - - .scan{ - position: inherit; - width: 65%; - height: 65%; - z-index: 99997; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - } - - .star-bg { - position: inherit; - width: 100%; - height: 100%; - z-index: 99998; - left: 0; - top: 0; - img { - width: 100%; - height: auto; - animation: circle 30s linear infinite; - } - } - .star { - position: inherit; - width: 100%; - height: 100%; - z-index: 99999; - left: 0; - top: 0; - img { - width: 100%; - height: auto; - } - } - } - } - } -</style> diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue index 167d6b1..96d52e9 100644 --- a/src/views/loginPage/component/accountLogin.vue +++ b/src/views/loginPage/component/accountLogin.vue @@ -1,14 +1,14 @@ <template> <el-form size="large" class="login-content-form"> <el-form-item class="login-animation1"> - <el-input type="text" :placeholder="$t('message.account.accountPlaceholder1')" v-model="ruleForm.username" clearable autocomplete="off" size="large"> + <el-input type="text" :placeholder="$t('message.account.accountPlaceholder1')" v-model="ruleForm.name" clearable autocomplete="off" size="large"> <template #prefix> <el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_user.png" style="width: 24px; height: 24px" /></el-icon> </template> </el-input> </el-form-item> <el-form-item class="login-animation2"> - <el-input :type="isShowPassword ? 'text' : 'password'" :placeholder="$t('message.account.accountPlaceholder2')" v-model="ruleForm.password" autocomplete="off" size="large" @keyup.enter.native="onSignIn"> + <el-input :type="isShowPassword ? 'text' : 'password'" :placeholder="$t('message.account.accountPlaceholder2')" v-model="ruleForm.pwd" autocomplete="off" size="large" @keyup.enter.native="onSignIn"> <template #prefix> <el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_password.png" style="width: 24px; height: 24px" /></el-icon> </template> @@ -100,8 +100,8 @@ showRePass: false, saveCode: false, ruleForm: { - username: '', - password: '' + name: '', + pwd: '' }, loading: { signIn: false @@ -125,7 +125,7 @@ const hasUserCodeOrPassword =()=> { if (localStorage.getItem('userCode') && localStorage.getItem('userPassword')) { - state.ruleForm.username = localStorage.getItem('userCode') as string + state.ruleForm.name = localStorage.getItem('userCode') as string state.ruleForm.password = Base64.decode(localStorage.getItem('userPassword'))//解密 state.saveCode = true } @@ -175,7 +175,7 @@ realName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], identify: [{ required: true, validator: checkCode, trigger: 'blur'}], phone: [{ required: true, validator: checkPhone, trigger: 'blur' }], - password: [{ required: true, validator: validatePass, trigger: 'blur' }], + pwd: [{ required: true, validator: validatePass, trigger: 'blur' }], rePassword: [{ required: true, validator: validatePass2, trigger: 'blur' }] }); @@ -188,17 +188,15 @@ state.loading.signIn = true; // 存储 token 到浏览器缓存 let res = await useLoginApi().signIn(state.ruleForm); - if (res.data.code === '200') { + if (res.data.code === 100) { await userInfo.setUserInfos(res.data.data); - Cookies.set('token', res.data.data.accessToken); - Cookies.set('projectId', ''); + Cookies.set('token', res.data.data.tk); Cookies.set('uid', res.data.data.uid); - Cookies.set('depId', res.data.data.depId); // Session.set('token', res.data.data.accessToken); // Session.set('projectId', ''); // Session.set('uid', res.data.data.uid); if (state.saveCode) { - localStorage.setItem('userCode', state.ruleForm.username) + localStorage.setItem('userCode', state.ruleForm.name) localStorage.setItem('userPassword', Base64.encode(state.ruleForm.password),) } else { localStorage.removeItem('userCode') @@ -215,7 +213,7 @@ state.loading.signIn = false; // Session.set('token', Math.random().toString(36).substr(0)); // // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据) - // Cookies.set('userName', state.ruleForm.username); + // Cookies.set('name', state.ruleForm.name); // if (!themeConfig.value.isRequestRoutes) { // // 前端控制路由,2、请注意执行顺序 // await initFrontEndControlRoutes(); @@ -234,11 +232,11 @@ let currentTimeInfo = currentTime.value; // 登录成功,跳到转首页 // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中 - // if (route.query?.redirect) { - router.push('/newMenu'); + // if (route.json.query?.redirect) { + router.push('/newHome'); // router.push({ - // path: <string>route.query?.redirect, - // query: Object.keys(<string>route.query?.params).length > 0 ? JSON.parse(<string>route.query?.params) : '', + // path: <string>route.json.query?.redirect, + // query: Object.keys(<string>route.json.query?.params).length > 0 ? JSON.parse(<string>route.json.query?.params) : '', // }); // } else { // router.push('/loginPage'); diff --git a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue b/src/views/riskWarningSys/warningBigScreen/components/SPI.vue deleted file mode 100644 index a52fdca..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/SPI.vue +++ /dev/null @@ -1,441 +0,0 @@ -<template> - <div class="charts-cont"> - <div :class="spiChart"> - <el-cascader - class="spiSe" - :teleported="false" - v-model="spiValue" - :options="departList" - :props="spiProps" - :show-all-levels="false" - @change="handleChange" - /> - </div> - - <div class="spi" :id="spi"> - - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, watchEffect} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme"; - import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; - - interface stateType { - spiValue: number; - departList: Array<any>; - spiChart: string; - spiProps: object - } - export default defineComponent({ - name: 'SPI', - components: {}, - props:{ - size: Number, - theme: Boolean - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const spi = ref("eChartSpi" + Date.now() + Math.random()) - const state = reactive<stateType>({ - spiValue: 1, - departList: [], - spiProps: { - expandTrigger: 'hover', - checkStrictly: true, - value: 'depId', - label: 'depName', - }, - spiChart: 'spi-dark' - }) - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departList = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initSpi =()=>{ - let dom = document.getElementById(spi.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - legend: { - data: ['注意线', '警告线', '危险线', 'SPI预警指数值'], - top: '2%', - right: '6%', - textStyle:{ - color: '#999', - fontSize: fontSize(14) - } - }, - color: ['rgba(216,55,55)','rgba(235,194,80)','rgba(147,208,81)'], - tooltip: { - trigger: 'axis' - }, - grid: { - left: '8%', - right: '8%', - bottom: '5%', - }, - xAxis: [ - { - type: 'category', - boundaryGap: false, - data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - splitLine:{ - show: true, - lineStyle:{ - type: 'dashed', - color: '#999' - } - }, - axisLabel:{ - color: '#999', - } - } - ], - yAxis: [ - { - type: 'value', - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#ccc' - }, - splitLine:{ - show: true, - lineStyle:{ - type: 'dashed', - color: 'rgba(255,255,255,.4)' - } - } - } - ], - series: [ - { - name: '危险线', - data: [1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000], - type: 'line', - lineStyle:{ - width: 0 - }, - areaStyle: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0.1, - color: "rgba(216,55,55)", // 线处的颜色 - }, - { - offset: 0.9, - color: "rgba(216,55,55,.1)", // 坐标轴处的颜色 - }, - ], - } - }, - showSymbol: false, - // stack: 'Total', - smooth: true - }, - { - name: '警告线', - data: [750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750, 750], - type: 'line', - lineStyle:{ - width: 0 - }, - areaStyle: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0.1, - color: "rgba(235,194,80)", // 线处的颜色 - }, - { - offset: 0.9, - color: "rgba(235,194,80,.1)", // 坐标轴处的颜色 - }, - ], - } - }, - showSymbol: false, - // stack: 'Total', - smooth: true - }, - { - name: '注意线', - data: [500, 500, 500, 500, 500, 500, 500,500, 500, 500, 500, 500], - type: 'line', - lineStyle:{ - width: 0 - }, - areaStyle: { - color: { - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [ - { - offset: 0.1, - color: "rgba(147,208,81)", // 线处的颜色 - }, - { - offset: 0.9, - color: "rgba(147,208,81,.2)", // 坐标轴处的颜色 - }, - ] - }, - }, - showSymbol: false, - // stack: 'Total', - smooth: true - }, - { - name: 'SPI预警指数值', - data: [450, 632, 501, 434, 390, 530, 520,750, 632, 401, 634, 590], - type: 'line', - triggerLineEvent: true, - label:{ - show: true, - color: '#23E5E5', - fontSize: fontSize(12) - }, - lineStyle:{ - width: 2, - color: '#23E5E5' - }, - itemStyle:{ - color: '#23E5E5', - borderColor: '#fff', - borderWidth: 4 - }, - smooth: true - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - state.spiChart = 'spi-dark' - }else{ - state.spiChart = 'spi-light' - } - } - - watchEffect(() => { - if(props.theme){ - state.spiChart = 'spi-dark' - }else{ - state.spiChart = 'spi-light' - } - }) - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - getAllDepartment(); - initSpi(); - getTheme(); - }); - - return { - spi, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 2%; - position: relative; - - .spi-dark{ - position: absolute; - width: 25% !important; - top: 0; - left: 2rem; - z-index: 99999; - - ::v-deep(.el-cascader){ - width: 100% !important; - } - ::v-deep(.el-popper){ - background-color: rgba(10,31,92,1); - border: 1px solid rgba(17,254,238,.4); - color: #11FEEE; - .el-cascader-node__label{ - color: #11FEEE; - } - .el-icon{ - color: #11FEEE; - } - .el-cascader-node{ - &:hover{ - background: #0049af; - } - } - } - ::v-deep(.el-popper__arrow){ - &::before{ - background-color: rgba(10,31,92,.6) !important; - border: 1px solid rgba(17,254,238,.4); - } - } - ::v-deep(.el-input__wrapper){ - width: 20%; - box-shadow: none; - border: 1px solid rgba(17,254,238,.2); - background: rgba(10,31,92,.6) !important; - height: 2.5rem; - color: #11FEEE; - - input{ - font-size: 1.25rem; - color: #11FEEE; - } - .el-icon{ - color: #11FEEE; - } - } - } - - .spi-light{ - position: absolute; - width: 25% !important; - top: 0; - left: 2rem; - z-index: 99999; - - ::v-deep(.el-cascader){ - width: 100% !important; - } - ::v-deep(.el-popper){ - background-color: #fff; - border: 1px solid #ccc; - color: #000; - .el-cascader-node__label{ - color: #000; - } - .el-icon{ - color: #000; - } - .el-cascader-node{ - &:hover{ - background: #ccc; - } - } - } - ::v-deep(.el-popper__arrow){ - &::before{ - background-color: #fff !important; - border: 1px solid #ccc; - } - } - ::v-deep(.el-input__wrapper){ - width: 20%; - box-shadow: none; - border: 1px solid #ccc; - background: #fff !important; - height: 2.5rem; - color: #000; - - input{ - font-size: 1.25rem; - color: #000; - } - .el-icon{ - color: #000; - } - } - } - .spi{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/accident.vue b/src/views/riskWarningSys/warningBigScreen/components/accident.vue deleted file mode 100644 index 2f15dfe..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/accident.vue +++ /dev/null @@ -1,328 +0,0 @@ -<template> - <div class="charts-cont"> - <div :class="choose" > - <div :class="cur===1?'act':''" @click="changeTab(1)">月度</div> - <div :class="cur===2?'act':''" @click="changeTab(2)">年度</div> - </div> - <div v-show="cur===1" class="month" :id="accidentMonth"></div> - <div v-show="cur===2" class="month" :id="accidentYear"></div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onUnmounted, watchEffect} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from "echarts"; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme" - - interface stateType { - cur: number, - curColor: string, - choose: string - } - export default defineComponent({ - name: 'accident', - components: {}, - props:{ - size: Number, - theme: Boolean - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const accidentMonth = ref("eChartFix" + Date.now() + Math.random()) - const accidentYear = ref("eChartFix" + Date.now() + Math.random()) - const state = reactive<stateType>({ - cur: 1, - curColor: '#fff', - choose: 'choose-dark' - }) - - const changeTab =(i)=>{ - state.cur = i - nextTick(()=>{ - initAccidentByYear(); - }) - } - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initAccidentByMonth =()=>{ - let dom = document.getElementById(accidentMonth.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - legend: { - top: '0', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(11) - } - }, - series: [ - { - name: '月度数据', - type: 'pie', - radius: ['50%', '80%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: fontSize(2) - }, - label: { - show: false, - position: 'outer', - fontSize: fontSize(10), - textBorderWidth: 0, - width: fontSize(40), - overflow: 'break' - }, - // labelLine: { - // show: true, - // length: fontSize(10), - // length2: fontSize(10) - // }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 1, name: '特别重大事故' }, - { value: 10, name: '重大事故' }, - { value: 20, name: '较大事故' }, - { value: 33, name: '一般事故' }, - { value: 50, name: '未遂事故' } - ], - center: ['50%','60%'] - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - // 隐患整改情况 - const initAccidentByYear =()=>{ - let dom = document.getElementById(accidentYear.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - legend: { - top: '0', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(11) - } - }, - series: [ - { - name: '年度数据', - type: 'pie', - radius: ['50%', '80%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: fontSize(2) - }, - label: { - show: false, - position: 'outer', - fontSize: fontSize(10), - textBorderWidth: 0, - width: fontSize(40), - overflow: 'break' - }, - // labelLine: { - // show: true, - // length: fontSize(10), - // length2: fontSize(10) - // }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 10, name: '特别重大事故' }, - { value: 20, name: '重大事故' }, - { value: 100, name: '较大事故' }, - { value: 130, name: '一般事故' }, - { value: 150, name: '未遂事故' } - ], - center: ['50%','60%'] - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - const getTheme =()=>{ - if(screenTheme.value.isDark){ - state.choose = 'choose-dark' - }else{ - state.choose = 'choose-light' - } - } - - watchEffect(() => { - if(props.theme){ - state.choose = 'choose-dark' - }else{ - state.choose = 'choose-light' - } - }) - - - // 页面载入时执行方法 - onMounted(() => { - initAccidentByMonth(); - getTheme() - // initAccidentByYear(); - }); - - onUnmounted(() =>{ - - }) - - return { - accidentMonth, - accidentYear, - Search, - changeTab, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 5%; - position: relative; - - .choose-dark{ - position: absolute; - right: 4%; - bottom: 4%; - z-index: 999; - display: flex; - align-items: center; - font-size: 0.75rem; - justify-content: space-between; - - div{ - padding: 2px 6px; - box-sizing: border-box; - color: rgba(17,254,238,.4); - border: 1px solid rgba(17,254,238,.4); - border-radius: 2px; - cursor: pointer; - } - div:hover{ - color: #11FEEE; - border: 1px solid #11FEEE; - } - .act{ - color: #11FEEE; - border: 1px solid #11FEEE; - } - } - .choose-light{ - position: absolute; - right: 4%; - bottom: 4%; - z-index: 999; - display: flex; - align-items: center; - font-size: 0.75rem; - justify-content: space-between; - - div{ - padding: 2px 6px; - box-sizing: border-box; - color: #ccc; - border: 1px solid #ccc; - border-radius: 2px; - cursor: pointer; - } - div:hover{ - color: #333; - border: 1px solid #333; - } - .act{ - color: #333; - border: 1px solid #333; - } - } - .month{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/danger.vue b/src/views/riskWarningSys/warningBigScreen/components/danger.vue deleted file mode 100644 index ccf8a14..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/danger.vue +++ /dev/null @@ -1,330 +0,0 @@ -<template> - <div class="charts-cont"> -<!-- <el-select v-model="selected" class="choose" size="small">--> -<!-- <el-option label="月度" value="1"/>--> -<!-- <el-option label="年度" value="2"/>--> -<!-- </el-select>--> - <div :class="choose"> - <div :class="cur===1?'act':''" @click="changeTab(1)">企业</div> - <div :class="cur===2?'act':''" @click="changeTab(2)">部门</div> - </div> - <div v-show="cur===1" class="month" :id="dangerMonth"></div> - <div v-show="cur===2" class="year" :id="dangerYear"></div> - </div> -</template> - -<script lang="ts"> - import { - toRefs, - reactive, - defineComponent, - ref, - computed, - defineAsyncComponent, - onMounted, - nextTick, - watchEffect - } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from "echarts"; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme"; - - - interface stateType { - cur: number, - choose: string - } - export default defineComponent({ - name: 'danger', - components: {}, - props:{ - size: Number, - theme: Boolean - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const dangerMonth = ref("eChartFix" + Date.now() + Math.random()) - const dangerYear = ref("eChartFix" + Date.now() + Math.random()) - const state = reactive<stateType>({ - cur: 1, - choose: 'choose-dark' - }) - - const changeTab =(i)=>{ - state.cur = i - nextTick(()=>{ - initdangerByYear() - }) - } - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initdangerByMonth =()=>{ - let dom = document.getElementById(dangerMonth.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - color: ['#FAC858','#EE6666'], - legend: { - top: '8%', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(11) - } - }, - series: [ - { - type: 'pie', - radius: '65%', - avoidLabelOverlap: true, - label: { - show: true, - position: 'inside', - fontSize: fontSize(12), - color: '#ffffff', - textBorderWidth: 0, - width: 30, - overflow: 'break' - }, - labelLine: { - show: true, - length: 10, - length2: 10 - }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 235, name: '一般隐患' }, - { value: 1048, name: '重大隐患' } - ], - center: ['50%','55%'] - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - // 隐患整改情况 - const initdangerByYear =()=>{ - let dom = document.getElementById(dangerYear.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - color: ['#FAC858','#EE6666'], - legend: { - top: '8%', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(11) - } - }, - series: [ - { - name: 'Access From', - type: 'pie', - radius: '65%', - avoidLabelOverlap: true, - label: { - show: true, - position: 'inside', - fontSize: fontSize(12), - color: '#ffffff', - textBorderWidth: 0, - width: 30, - overflow: 'break' - }, - labelLine: { - show: true, - length: 10, - length2: 10 - }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 35, name: '一般隐患' }, - { value: 1048, name: '重大隐患' } - ], - center: ['50%','55%'] - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - state.choose = 'choose-dark' - }else{ - state.choose = 'choose-light' - } - } - - watchEffect(() => { - if(props.theme){ - state.choose = 'choose-dark' - }else{ - state.choose = 'choose-light' - } - }) - - // 页面载入时执行方法 - onMounted(() => { - initdangerByMonth(); - getTheme() - }); - - return { - dangerMonth, - dangerYear, - Search, - fontSize, - changeTab, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 2% 2% 0; - position: relative; - - .choose-dark{ - position: absolute; - right: 4%; - bottom: 4%; - z-index: 999; - display: flex; - align-items: center; - font-size: 0.75rem; - justify-content: space-between; - - div{ - padding: 2px 6px; - box-sizing: border-box; - color: rgba(17,254,238,.4); - border: 1px solid rgba(17,254,238,.4); - border-radius: 2px; - cursor: pointer; - } - div:hover{ - color: #11FEEE; - border: 1px solid #11FEEE; - } - .act{ - color: #11FEEE; - border: 1px solid #11FEEE; - } - } - .choose-light{ - position: absolute; - right: 4%; - bottom: 4%; - z-index: 999; - display: flex; - align-items: center; - font-size: 0.75rem; - justify-content: space-between; - - div{ - padding: 2px 6px; - box-sizing: border-box; - color: #ccc; - border: 1px solid #ccc; - border-radius: 2px; - cursor: pointer; - } - div:hover{ - color: #333; - border: 1px solid #333; - } - .act{ - color: #333; - border: 1px solid #333; - } - } - .month{ - width: 100%; - height: 100%; - } - .year{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/educate.vue b/src/views/riskWarningSys/warningBigScreen/components/educate.vue deleted file mode 100644 index f327d7e..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/educate.vue +++ /dev/null @@ -1,180 +0,0 @@ -<template> - <div class="charts-cont"> - <div class="educate" :id="educate"> - - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - - - interface stateType { - } - export default defineComponent({ - name: 'educate', - components: {}, - props:{ - size: Number - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const educate = ref("eChartEdu" + Date.now() + Math.random()) - const state = reactive<stateType>({ - - }) - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initEducate =()=>{ - let dom = document.getElementById(educate.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - color: ['#67F9D8', '#FFE434', '#56A3F1', '#FF917C'], - legend: { - top: '8%', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(11) - } - }, - radar: [ - { - indicator: [ - { name: '设计培训次数' }, - { name: '培训时间(小时)' }, - { name: '完成比例(%)' } - ], - center: ['50%', '60%'], - radius: fontSize(65), - startAngle: 90, - splitNumber: 4, - shape: 'circle', - axisName: { - formatter: '{value}', - color: '#428BD4', - fontSize: fontSize(10), - width: 20, - overflow: 'break' - }, - splitArea: { - areaStyle: { - color: ['#77EADF', '#26C3BE', '#64AFE9', '#428BD4'], - shadowColor: 'rgba(0, 0, 0, 0.1)', - shadowBlur: 10 - } - }, - axisLine: { - lineStyle: { - color: 'rgba(211, 253, 250, 0.8)' - } - }, - splitLine: { - lineStyle: { - color: 'rgba(211, 253, 250, 0.8)' - } - } - } - ], - series: [ - { - type: 'radar', - emphasis: { - lineStyle: { - width: 4 - } - }, - data: [ - { - value: [100, 8, 0.4, -80, 2000], - name: '企业汇总' - }, - { - value: [60, 5, 0.3, -100, 1500], - name: '事业部A', - areaStyle: { - color: 'rgba(255, 228, 52, 0.6)' - } - } - ] - }, - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - initEducate(); - }); - - return { - educate, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - position: relative; - - .educate{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/message.vue b/src/views/riskWarningSys/warningBigScreen/components/message.vue deleted file mode 100644 index 5bcbabc..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/message.vue +++ /dev/null @@ -1,221 +0,0 @@ -<template> - <div class="charts-cont"> - <div class="message"> - <dv-scroll-board ref="scrollBoard" :config="config" style="width:100%;height:100%;cursor: pointer" @mouseover="mouseoverHandler" @click="clickHandler" /> - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, watchEffect} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import { useRouter } from 'vue-router' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme" - - interface stateType { - config: object - } - export default defineComponent({ - name: 'message', - components: {}, - props:{ - size: Number, - theme: Boolean - }, - setup(props) { - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const router = useRouter(); - const pro = ref("eChartPro" + Date.now() + Math.random()) - const state = reactive<stateType>({ - config:{ - header: ['消息列表', '同比'], - data: [ - ['一月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['二月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['三月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['四月预警消息SPI报告', '<span style="color:red;">↓ 43%</span>'], - ['五月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['六月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['七月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['八月预警消息SPI报告', '<span style="color:red;">↓ 65%</span>'], - ['九月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['十月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['十一月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'], - ['十二月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'] - ], - index: true, - columnWidth: [60], - align: ['center','center','center'], - headerBGC: '#0049af', - oddRowBGC: 'none', - evenRowBGC: 'rgba(57,122,206,.1)', - indexHeader: '序号', - rowNum: fontSize(5) - } - }) - - const mouseoverHandler = (e: any) => { - - } - - const clickHandler = (e: any) => { - console.log(e.row,'row') - router.push({ - path: 'msgDetail', - query: { - row: e.row - } - }) - } - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - watchEffect(() => { - if(props.theme){ - state.config.headerBGC = '#0049af' - state.config.oddRowBGC = 'none' - state.config.evenRowBGC = 'rgba(57,122,206,.1)' - }else{ - state.config.headerBGC = '#333' - state.config.oddRowBGC = '#888' - state.config.evenRowBGC = '#999' - } - }) - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - state.config.headerBGC = '#0049af' - state.config.oddRowBGC = 'none' - state.config.evenRowBGC = 'rgba(57,122,206,.1)' - }else{ - state.config.headerBGC = '#333' - state.config.oddRowBGC = '#888' - state.config.evenRowBGC = '#999' - } - } - - // 页面载入时执行方法 - onMounted(() => { - getTheme() - }); - - return { - pro, - Search, - mouseoverHandler, - clickHandler, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> -<style scoped lang="scss"> - - .charts-cont{ - width: 100%; - height: 100%; - padding: 5%; - position: relative; - - .message{ - width: 100%; - height: 100%; - border-radius: 4px; - overflow: hidden; - - .th{ - width: 100%; - display: flex; - height: 36px; - justify-content: space-between; - background: #1882d5; - font-size: 1rem; - line-height: 36px; - color: #ffffff; - .th-num{ - width: 15%; - text-align: center; - } - .th-info{ - width: 70%; - text-align: left; - color: #11FEEE - } - .th-sum{ - width: 15%; - text-align: center; - } - } - - .tm{ - height: calc(100% - 36px); - width: 100%; - overflow: hidden; - scroll-behavior: smooth; - - .ti{ - display: flex; - height: 40px; - line-height: 40px; - justify-content: space-between; - color: #ffffff; - - .num{ - width: 15%; - text-align: center; - } - .info{ - width: 70%; - text-align: left; - color: #11FEEE - } - .sum{ - width: 15%; - text-align: center; - } - } - .darkBg{ - background: rgba(57,122,206,.4); - } - } - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/monitor.vue b/src/views/riskWarningSys/warningBigScreen/components/monitor.vue deleted file mode 100644 index a979428..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/monitor.vue +++ /dev/null @@ -1,104 +0,0 @@ -<template> - <div class="charts-cont"> - <div class="monitor" :id="monitor"> - <div> - <img src="../../../../assets/warningScreen/video.png"> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - - - interface stateType { - } - export default defineComponent({ - name: 'monitor', - components: {}, - props:['allData'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const monitor = ref("eChartMon" + Date.now() + Math.random()) - const state = reactive<stateType>({ - - }) - - - - // 页面载入时执行方法 - onMounted(() => { - }); - - return { - monitor, - Search, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 5%; - position: relative; - - .monitor{ - width: 100%; - height: 100%; - position: relative; - border-radius: 8px; - overflow: hidden; - - img{ - display: block; - width: 100%; - height: auto; - position: absolute; - left: 0; - right: 0; - bottom: 0; - top: 0; - margin: auto; - } - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/profession.vue b/src/views/riskWarningSys/warningBigScreen/components/profession.vue deleted file mode 100644 index 215c675..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/profession.vue +++ /dev/null @@ -1,177 +0,0 @@ -<template> - <div class="charts-cont"> - <div class="pro" :id="pro"> - - </div> -<!-- <dv-active-ring-chart :config="config" style="width:100%;height:100%" />--> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - - - interface stateType { - } - export default defineComponent({ - name: 'profession', - components: {}, - props:{ - size: Number - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const pro = ref("eChartPro" + Date.now() + Math.random()) - const state = reactive<stateType>({ - config:{ - data: [ - { - name: '持证人员', - value: 55 - }, - { - name: '非持证人员', - value: 120 - } - ], - radius: '65%', - activeRadius: '60%', - color: ['#FAC858','#EE6666'], - lineWidth: fontSize(25), - digitalFlopStyle: { - fontSize: 16, - fill: '#999' - } - } - }) - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initPro =()=>{ - let dom = document.getElementById(pro.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'item' - }, - legend: { - top: '0', - left: 'center', - textStyle:{ - color: '#999', - fontSize: fontSize(11) - } - }, - series: [ - { - name: 'Access From', - type: 'pie', - radius: ['45%', '70%'], - avoidLabelOverlap: false, - itemStyle: { - borderRadius: 4 - }, - label: { - show: true, - position: 'outer', - fontSize: fontSize(12), - color: '#999', - textBorderWidth: 0, - width: 30, - overflow: 'break' - }, - labelLine: { - show: true, - length: 10, - length2: 10 - }, - emphasis: { - label: { - show: true, - fontSize: fontSize(22), - fontWeight: 'bold' - } - }, - data: [ - { value: 1048, name: '持证人员' }, - { value: 735, name: '非持证人员' } - ], - center: ['50%','55%'] - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - initPro() - }); - - return { - pro, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 4% 4% 0; - position: relative; - - .pro{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/risk.vue b/src/views/riskWarningSys/warningBigScreen/components/risk.vue deleted file mode 100644 index 038699b..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/risk.vue +++ /dev/null @@ -1,505 +0,0 @@ -<template> - <div class="charts-cont"> - <el-select :class="selector" v-model="month" placeholder="Select" :teleported="false" size="default"> - <el-option - v-for="item in optionList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - <div v-show="curValue===true" class="risk" :id="risk1"></div> - <div v-show="curValue===false" class="risk" :id="risk2"></div> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onBeforeUnmount, watchEffect } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme"; - - - interface stateType { - curValue: boolean, - month: number, - optionList: Array<any>, - selector: string - } - export default defineComponent({ - name: 'risk', - components: {}, - props:{ - size: Number, - theme: Boolean - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const risk1 = ref("eChartRisk1" + Date.now() + Math.random()) - const risk2 = ref("eChartRisk2" + Date.now() + Math.random()) - const state = reactive<stateType>({ - curValue: true, - month: 0, - optionList: [ - { - label: '年度', - value: 0 - }, - { - label: '一月', - value: 1 - }, - { - label: '二月', - value: 2 - }, - { - label: '三月', - value: 3 - }, - { - label: '四月', - value: 4 - }, - { - label: '五月', - value: 5 - }, - { - label: '六月', - value: 6 - }, - { - label: '七月', - value: 7 - }, - { - label: '八月', - value: 8 - }, - { - label: '九月', - value: 9 - }, - { - label: '十月', - value: 10 - } - ], - selector: 'select-dark' - }) - - const swi = setInterval(()=>{ - state.curValue = !state.curValue - if(state.curValue == true){ - nextTick(()=>{ - initRisk1() - }) - }else{ - nextTick(()=>{ - initRisk2() - }) - } - - },5000) - - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initRisk1 =()=>{ - let dom = document.getElementById(risk1.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - // Use axis to trigger tooltip - type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow' - } - }, - legend: { - top: '1%', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(12) - } - }, - grid: { - left: '2%', - right: '4%', - bottom: '0', - containLabel: true - }, - xAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['企业总', 'A部门', 'B部门', 'C部门', 'D部门', 'E部门'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - yAxis: { - type: 'value', - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - series: [ - { - name: '可能造成死亡的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [320, 302, 301, 334, 390, 330, 320, 301, 334, 390, 330, 320] - data: [320, 302, 301, 334, 390, 330], - barCategoryGap: '50%' - }, - { - name: '可能造成重伤的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [120, 132, 101, 134, 90, 230, 210, 132, 101, 134, 90, 230] - data: [120, 132, 101, 134, 90, 230], - barCategoryGap: '50%' - }, - { - name: '可能造成轻伤的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [220, 182, 191, 234, 290, 330, 310, 191, 234, 290, 330, 310] - data: [220, 182, 191, 234, 290, 330], - barCategoryGap: '50%' - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(risk2.value)).dispose() - } - - const initRisk2 =()=>{ - let dom = document.getElementById(risk2.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - // Use axis to trigger tooltip - type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow' - } - }, - legend: { - top: '1%', - left: 'center', - itemWidth: fontSize(10), - itemHeight: fontSize(8), - textStyle:{ - color: 'auto', - fontSize: fontSize(12) - } - }, - grid: { - left: '2%', - right: '4%', - bottom: '0', - containLabel: true - }, - xAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['F部门', 'G部门', 'H部门', 'I部门', 'J部门', 'K部门'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - yAxis: { - type: 'value', - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - series: [ - { - name: '可能造成死亡的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [320, 302, 301, 334, 390, 330, 320, 301, 334, 390, 330, 320] - data: [320, 301, 334, 390, 330, 320], - barCategoryGap: '50%' - }, - { - name: '可能造成重伤的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [120, 132, 101, 134, 90, 230, 210, 132, 101, 134, 90, 230] - data: [90, 230, 210, 132, 101, 134], - barCategoryGap: '50%' - }, - { - name: '可能造成轻伤的', - type: 'bar', - stack: 'total', - label: { - show: false - }, - emphasis: { - focus: 'series' - }, - // data: [220, 182, 191, 234, 290, 330, 310, 191, 234, 290, 330, 310] - data: [290, 330, 310, 191, 234, 290], - barCategoryGap: '50%' - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(risk1.value)).dispose() - } - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - state.selector = 'select-dark' - }else{ - state.selector = 'select-light' - } - } - - watchEffect(() => { - if(props.theme){ - state.selector = 'select-dark' - }else{ - state.selector = 'select-light' - } - }) - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - initRisk1(); - getTheme(); - }); - - onBeforeUnmount(() =>{ - clearInterval(swi) - }) - - return { - risk1, - risk2, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 5% 5% 2%; - position: relative; - .select-dark{ - position: absolute; - z-index: 999; - top: -20px; - right: 1.6rem; - width: 30%; - height: 20px; - margin-right: 0.8rem; - - ::v-deep(.el-popper){ - background-color: rgba(10,31,92,1); - border: 1px solid rgba(17,254,238,.4); - color: #11FEEE; - .el-select-dropdown__item{ - color: #11FEEE; - } - .el-select-dropdown__item.hover{ - background: #0049af; - } - } - ::v-deep(.el-popper__arrow){ - &::before{ - background-color: rgba(10,31,92,.6) !important; - border: 1px solid rgba(17,254,238,.4); - } - } - ::v-deep(.el-input__wrapper){ - box-shadow: none; - border: 1px solid rgba(17,254,238,.2); - background: rgba(10,31,92,.6) !important; - height: 1.5rem; - color: #11FEEE; - - input{ - font-size: 0.8rem; - color: #11FEEE; - } - .el-icon{ - color: #11FEEE; - } - } - } - - .select-light{ - position: absolute; - z-index: 999; - top: -20px; - right: 1.6rem; - width: 30%; - height: 20px; - margin-right: 0.8rem; - - ::v-deep(.el-popper){ - background-color: rgba(255,255,255,1); - border: 1px solid #ccc; - color: #fff; - .el-select-dropdown__item{ - color: #000; - } - .el-select-dropdown__item.hover{ - background: #ccc; - } - } - ::v-deep(.el-popper__arrow){ - &::before{ - background-color: rgba(255,255,255,.6) !important; - border: 1px solid #ccc; - } - } - ::v-deep(.el-input__wrapper){ - box-shadow: none; - border: 1px solid #ccc; - background: #fff !important; - height: 1.5rem; - color: #fff; - - input{ - font-size: 0.8rem; - color: #000; - } - .el-icon{ - color: #000; - } - } - } - - .risk{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/stock.vue b/src/views/riskWarningSys/warningBigScreen/components/stock.vue deleted file mode 100644 index 1feb3db..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/stock.vue +++ /dev/null @@ -1,681 +0,0 @@ -<template> - <div class="charts-cont"> - <div v-show="curValue===true" class="stock" :id="stock1"> - - </div> - <div v-show="curValue===false" class="stock" :id="stock2"></div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onBeforeUnmount} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - - interface stateType { - curValue: boolean - } - export default defineComponent({ - name: 'stock', - components: {}, - props:{ - size: Number - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const stock1 = ref("eChartStock1" + Date.now() + Math.random()) - const stock2 = ref("eChartStock2" + Date.now() + Math.random()) - const state = reactive<stateType>({ - curValue: true - }) - - const swit = setInterval(()=>{ - state.curValue = !state.curValue - if(state.curValue == true){ - nextTick(()=>{ - initStock1() - }) - }else{ - nextTick(()=>{ - initStock2() - }) - } - },5000) - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initStock1 =()=>{ - let dom = document.getElementById(stock1.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - series: [ - { - name: '消防耗材', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 2103, name: '消防耗材'}, - { value: 2310, name: '消防耗材未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|2103}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#2D74C0" // 0% 处的颜色 - }, { - offset: 1, color: "#21D9DC" // 100% 处的颜色 - }] - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }] - } - ], - center: ['20%','25%'] - }, - { - name: '安全帽', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 23509, name: '安全帽'}, - { value: 34312, name: '安全帽未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|23509}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#0DAA2E" // 0% 处的颜色 - }, { - offset: 1, color: "#4CF475" // 100% 处的颜色 - }] - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }] - } - ], - center: ['50%','25%'] - }, - { - name: '防护服', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 12830, name: '防护服'}, - { value: 22140, name: '防护服未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|12830}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#E8B21D" // 0% 处的颜色 - }, { - offset: 1, color: "#E5DC44" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['80%','25%'] - }, - { - name: '劳保鞋', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 5492, name: '劳保鞋'}, - { value: 10842, name: '劳保鞋未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|5492}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#D65146" // 0% 处的颜色 - }, { - offset: 1, color: "#F58C28" // 100% 处的颜色 - }] - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }] - } - ], - center: ['33.33%','75%'] - }, - { - name: '动火护具', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 44043, name: '动火护具'}, - { value: 68102, name: '动火护具未使用' } - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|44043}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#4449D1" // 0% 处的颜色 - }, { - offset: 1, color: "#A86DE5" // 100% 处的颜色 - }] - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }] - } - ], - center: ['66.66%','75%'] - } - ], - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(stock2.value)).dispose() - } - - const initStock2 =()=>{ - let dom = document.getElementById(stock2.value); - let myChart = echarts.init(dom); - - let option: EChartsOption; - - option = { - series: [ - { - name: '急救包', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 8603, name: '急救包'}, - { value: 12032, name: '急救包未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|8603}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#2D74C0" // 0% 处的颜色 - }, { - offset: 1, color: "#21D9DC" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['20%','25%'] - }, - { - name: '人员培训资料', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 8960, name: '人员培训资料'}, - { value: 9890, name: '人员培训资料未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|8960}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#0DAA2E" // 0% 处的颜色 - }, { - offset: 1, color: "#4CF475" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['50%','25%'] - }, - { - name: '安全护具', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 12302, name: '安全护具'}, - { value: 20130, name: '安全护具未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|12302}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#E8B21D" // 0% 处的颜色 - }, { - offset: 1, color: "#E5DC44" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['80%','25%'] - }, - { - name: '高空护具', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 42948, name: '高空护具'}, - { value: 89342, name: '高空护具未使用'} - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|42948}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#D65146" // 0% 处的颜色 - }, { - offset: 1, color: "#F58C28" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['33.33%','75%'] - }, - { - name: '防尘护具', - type: 'pie', - radius: [fontSize(40), fontSize(50)], - data: [ - { value: 1220, name: '防尘护具'}, - { value: 5034, name: '防尘护具未使用' } - ], - label: { - show: true, - position: 'center', - formatter: '{total|{a}}' + '\n\r' + '{active|1220}', - rich: { - total:{ - fontSize: fontSize(12), - color:'#999', - lineHeight: fontSize(16) - }, - active: { - fontSize: fontSize(16), - color:'#999', - }, - } - }, - color: [ - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#4449D1" // 0% 处的颜色 - }, { - offset: 1, color: "#A86DE5" // 100% 处的颜色 - }], - global: false // 缺省为 false - }, - { - type: 'linear', - x: 0, - y: 0, - x2: 0, - y2: 1, - colorStops: [{ - offset: 0, color: "#333" // 0% 处的颜色 - }, { - offset: 1, color: "#333" // 100% 处的颜色 - }], - global: false // 缺省为 false - } - ], - center: ['66.66%','75%'] - } - ], - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(stock1.value)).dispose() - } - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - initStock1(); - }); - onBeforeUnmount(() =>{ - clearInterval(swit) - }) - return { - stock1, - stock2, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 2%; - position: relative; - - .stock{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/components/training.vue b/src/views/riskWarningSys/warningBigScreen/components/training.vue deleted file mode 100644 index 68eab0b..0000000 --- a/src/views/riskWarningSys/warningBigScreen/components/training.vue +++ /dev/null @@ -1,423 +0,0 @@ -<template> - <div class="charts-cont"> - <div v-show="curTab === 1" class="train" :id="train1"></div> - <div v-show="curTab === 2" class="train" :id="train2"></div> - <div v-show="curTab === 3" class="train" :id="train3"></div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted, nextTick, onBeforeUnmount} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import * as echarts from 'echarts'; - import '/@/theme/bigScreen.css' - - interface stateType { - curTab: number - } - export default defineComponent({ - name: 'accident', - components: {}, - props:{ - size: Number - }, - setup(props) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const train1 = ref("eChartTrain1" + Date.now() + Math.random()) - const train2 = ref("eChartTrain2" + Date.now() + Math.random()) - const train3 = ref("eChartTrain3" + Date.now() + Math.random()) - const state = reactive<stateType>({ - curTab: 1 - }) - - // const changeTab=()=>{ - // setInterval(()=>{ - // if(state.curTab<3){ - // state.curTab = state.curTab + 1 - // if(state.curTab == 2){ - // nextTick(()=>{ - // initTrain2() - // }) - // }else{ - // nextTick(()=>{ - // initTrain3() - // }) - // } - // - // }else{ - // state.curTab = 1 - // nextTick(()=>{ - // initTrain1() - // }) - // } - // },5000) - // } - const changeTab = setInterval(()=>{ - if(state.curTab<3){ - state.curTab = state.curTab + 1 - if(state.curTab == 2){ - nextTick(()=>{ - initTrain2() - }) - }else{ - nextTick(()=>{ - initTrain3() - }) - } - - }else{ - state.curTab = 1 - nextTick(()=>{ - initTrain1() - }) - } - },5000) - type EChartsOption = echarts.EChartsOption - // 隐患整改情况 - const initTrain1 =()=>{ - let dom = document.getElementById(train1.value); - let myChart = echarts.init(dom); - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - top: '1%', - left: '2%', - right: '2%', - bottom: '2%', - containLabel: true - }, - xAxis: { - type: 'value', - boundaryGap: [0, 0.01], - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - yAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['一月', '二月', '三月', '四月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - series: [ - { - name: '2011', - type: 'bar', - // data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230] - data: [18203, 23489, 29034, 104970], - itemStyle:{ - color: { - x: 0, - y: 0, - x2: 1, - y2: 0, - colorStops: [ - { - offset: 0.1, - color: "#2D74C0", // 线处的颜色 - }, - { - offset: 0.9, - color: "#21D9DC", // 坐标轴处的颜色 - }, - ] - }, - borderRadius: [0,99,99,0] - }, - barCategoryGap: '50%', - label:{ - show: true, - position: 'outside', - color: '#999', - fontSize: fontSize(11) - } - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(train2.value)).dispose() - echarts.init(document.getElementById(train3.value)).dispose() - } - - const initTrain2 =()=>{ - let dom = document.getElementById(train2.value); - let myChart = echarts.init(dom); - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - top: '1%', - left: '2%', - right: '2%', - bottom: '2%', - containLabel: true - }, - xAxis: { - type: 'value', - boundaryGap: [0, 0.01], - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - yAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['五月', '六月','七月', '八月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - series: [ - { - name: '2011', - type: 'bar', - // data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230] - data: [131744, 630230, 18203, 23489], - barCategoryGap: '50%', - itemStyle:{ - color: { - x: 0, - y: 0, - x2: 1, - y2: 0, - colorStops: [ - { - offset: 0.1, - color: "#2D74C0", // 线处的颜色 - }, - { - offset: 0.9, - color: "#21D9DC", // 坐标轴处的颜色 - }, - ] - }, - borderRadius: [0,99,99,0] - }, - label:{ - show: true, - position: 'outside', - color: '#999', - fontSize: fontSize(11) - } - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(train1.value)).dispose() - echarts.init(document.getElementById(train3.value)).dispose() - } - - const initTrain3 =()=>{ - let dom = document.getElementById(train3.value); - let myChart = echarts.init(dom); - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - axisPointer: { - type: 'shadow' - } - }, - grid: { - top: '1%', - left: '2%', - right: '2%', - bottom: '2%', - containLabel: true - }, - xAxis: { - type: 'value', - boundaryGap: [0, 0.01], - axisLine:{ - show: true, - lineStyle:{ - type: 'dotted' - } - }, - axisLabel:{ - color: '#999' - }, - splitLine:{ - show: false - } - }, - yAxis: { - type: 'category', - // data: ['一月', '二月', '三月', '四月', '五月', '六月','七月', '八月', '九月', '十月', '十一月', '十二月'], - data: ['九月', '十月', '十一月', '十二月'], - axisLine:{ - show: true, - lineStyle:{ - color: '#999' - } - }, - axisLabel:{ - color: '#999' - } - }, - series: [ - { - name: '2011', - type: 'bar', - // data: [18203, 23489, 29034, 104970, 131744, 630230, 18203, 23489, 29034, 104970, 131744, 630230] - data: [29034, 104970, 131744, 630230], - barCategoryGap: '50%', - itemStyle:{ - color: { - x: 0, - y: 0, - x2: 1, - y2: 0, - colorStops: [ - { - offset: 0.1, - color: "#2D74C0", // 线处的颜色 - }, - { - offset: 0.9, - color: "#21D9DC", // 坐标轴处的颜色 - }, - ] - }, - borderRadius: [0,99,99,0] - }, - label:{ - show: true, - position: 'outside', - color: '#999', - fontSize: fontSize(11) - } - } - ] - }; - - option && myChart.setOption(option); - window.addEventListener("resize",function (){ - myChart.resize(); - }); - echarts.init(document.getElementById(train1.value)).dispose() - echarts.init(document.getElementById(train2.value)).dispose() - } - - function fontSize(val){ - let nowClientWidth = document.documentElement.clientWidth; - return val * (nowClientWidth/1920) * Number(props.size); - } - - // 页面载入时执行方法 - onMounted(() => { - initTrain1(); - }); - onBeforeUnmount(() =>{ - clearInterval(changeTab) - }) - return { - train1, - train2, - train3, - Search, - fontSize, - ...toRefs(state) - }; - }, - }); -</script> - -<style scoped lang="scss"> - .charts-cont{ - width: 100%; - height: 100%; - padding: 1% 5% 5%; - position: relative; - - .train{ - width: 100%; - height: 100%; - } - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/riskWarningSys/warningBigScreen/index.vue b/src/views/riskWarningSys/warningBigScreen/index.vue deleted file mode 100644 index 25941cb..0000000 --- a/src/views/riskWarningSys/warningBigScreen/index.vue +++ /dev/null @@ -1,1043 +0,0 @@ -<template> - <div id="container" class="dark"> - <div class="warn-dialog" :class="dialogShow"> - <div>预警消息</div> - <p>企业8月份总体安全生产预警指数SPI风险值高于预警阈值,可能存在未处理隐患,请注意查阅相关风险因素,采取风险防控措施。</p> - <span @click="dialogShow = 'hide'">关闭</span> - </div> - <div class="info-panel" :class="dialogHide" @click="openDialog"> - <div class="info-tit"> - <div> - <el-icon><Bell /></el-icon> - <div style="margin-left: 10px">消息预警</div> - </div> - <div @click.stop="dialogHide = 'hide'">X</div> - </div> - <div class="info-desc"> - 企业8月份总体安全生产预警指数SPI风险值高于预警阈值。 - </div> - <div class="info-num"> - 1 - </div> - </div> - <div class="header-content"> - <div class="logo"> - <img v-if="screenTheme.isDark" src="../../../assets/warningScreen/logo_dark.png" alt="" /> - <img v-else="!screenTheme.isDark" src="../../../assets/warningScreen/logo_light.png" alt="" /> - </div> - <div class="title">风险预警预报平台</div> - <div class="title-right"> -<!-- <img src="themeStyle.skinIcon" class="qiehuan" @click="changeTheme" />--> - <span class="datetime">{{currentTime}}</span> - <div class="btns"> - <div class="themeBtn" @click="changeTheme()"> - <img v-if="screenTheme.isDark" src="../../../assets/warningScreen/skin.png"/> - <img v-else src="../../../assets/warningScreen/skin-light.png"/> - </div> - <div class="fullBtn" @click="onScreenfullClick"> - <div class="toFull"> - <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i> - </div> - <div>全屏</div> - </div> - <div class="backBtn" @click="goBack()"> -<!-- <img src="../../../assets/loginPage/back-icon.png"/>--> - <el-icon><SwitchButton /></el-icon> - <div>退出</div> - </div> - </div> - </div> - </div> - <div class="main-content"> - <div class="main-left"> - <div class="left-top"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 事故等级分布</span> -<!-- <img @click="jumpPage(1)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(1)"/> - </div> - <div class="chart-box"> - <accident :size="1" :theme="screenTheme.isDark"></accident> - </div> - </div> - <div class="left-mid"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 应急演练次数</span> -<!-- <img @click="jumpPage(2)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(2)"/> - </div> - <div class="chart-box"> - <span class="train-tip">距上次演练结束 5 天</span> - <training class="train-chart" :size="1"></training> - </div> - </div> - <div class="left-bottom"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 隐患等级数量分布</span> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(3)"/> - </div> - <div class="chart-box"> - <risk :size="1" :theme="screenTheme.isDark"></risk> - </div> - </div> - </div> - <div class="main-middle"> - <div class="mid-top"> - <dv-border-box-11 title="SPI数据分析" :backgroundColor="boxBg" :color="boxBigColor" class="box-bg"></dv-border-box-11> - <div class="part-tit" style="position: absolute;top: 8%;padding: 0 4%"> - <div></div> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(4)"/> - </div> - <div class="chart-box" style="top: 60px;height: calc(100% - 70px)"> - <spi :size="1" :theme="screenTheme.isDark"></spi> - </div> - </div> - <div class="mid-bottom"> - <div class="mid-bot-l"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 教育培训分析</span> -<!-- <img @click="jumpPage(5)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(5)"/> - </div> - <div class="chart-box"> - <educate :size="1"></educate> - </div> - </div> - <div class="mid-bot-m"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 隐患等级</span> -<!-- <img @click="jumpPage(6)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(6)"/> - </div> - <div class="chart-box"> - <danger :size="1" :theme="screenTheme.isDark"></danger> - </div> - </div> - <div class="mid-bot-r"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 人员专业度分布</span> -<!-- <img @click="jumpPage(7)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(7)"/> - </div> - <div class="chart-box"> - <profession :size="1"></profession> - </div> - </div> - </div> - </div> - <div class="main-right"> - <div class="right-top"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 预警消息报告</span> -<!-- <img @click="jumpPage(8)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(8)"/> - </div> - <div class="chart-box"> - <message :size="1" :theme="screenTheme.isDark"></message> - </div> - </div> - <div class="right-mid"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 特殊作业实时监控</span> -<!-- <img @click="jumpPage(9)" src="../../../assets/warningScreen/small-full.png">--> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(9)"/> - </div> - <div class="chart-box"> - <monitor></monitor> - </div> - </div> - <div class="right-bottom"> - <dv-border-box-13 :backgroundColor="boxBg" :color="boxColor" class="box-bg"></dv-border-box-13> - <div class="part-tit"> - <span>| 风险应急物资储备</span> - <Switch style="width: 1.2rem;height: 1.2rem;cursor: pointer" @click="jumpPage(10)"/> - </div> - <div class="chart-box"> - <stock :size="1"></stock> - </div> - </div> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import screenfull from 'screenfull'; - import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; - import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; - import { useRouter } from 'vue-router'; - import {hiddenReportApi} from "/@/api/doublePreventSystem/report"; - import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme" - import {storeToRefs} from "pinia"; - - // 定义接口来定义对象的类型 - interface stateType { - boxBg: string; - boxColor: Array<string>; - boxBigColor: Array<string>; - isScreenfull: boolean; - currentTime: string; - spiValue: number; - spiOptions: Array<any>; - dialogShow: string; - dialogHide: string - } - export default defineComponent({ - name: 'warningScreen', - components: { - accident: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/accident.vue')), - training: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/training.vue')), - spi: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/SPI.vue')), - risk: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/risk.vue')), - educate: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/educate.vue')), - danger: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/danger.vue')), - profession: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/profession.vue')), - message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')), - monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')), - stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue')) - }, - setup() { - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const router = useRouter(); - const props = { - expandTrigger: 'hover', - checkStrictly: true - } - const state = reactive<stateType>({ - boxBg: 'rgba(8, 109, 209, 0.2)', - boxColor: [], - boxBigColor: [], - isScreenfull: false, - currentTime: '', - spiValue: 0, - dialogShow: 'hide', - dialogHide: 'showup', - spiOptions: [ - { - value: 0, - label: '公司级别SPI' - }, - { - value: 1, - label: 'A事业部SPI', - children: [ - { - value: 11, - label: 'A车间SPI' - }, - { - value: 12, - label: 'B车间SPI' - }, - { - value: 13, - label: 'C车间SPI' - } - ] - }, - { - value: 2, - label: 'B事业部SPI', - children: [ - { - value: 21, - label: 'D车间SPI' - }, - { - value: 22, - label: 'E车间SPI' - }, - { - value: 23, - label: 'F车间SPI' - } - ] - } - ] - }); - - // 页面载入时执行方法 - onMounted(() => { - getTime() - getTheme() - }); - - const getTime =()=>{ - setInterval(() => { - state.currentTime = new Date().toLocaleString(); - }, 1000); - } - - const changeTheme = () =>{ - screenTheme.value.isDark = !screenTheme.value.isDark - screenThemes.setScreenTheme(screenTheme.value.isDark) - if(screenTheme.value.isDark){ - document.getElementById('container').setAttribute( "class", 'dark' ) - state.boxBg = 'rgba(8, 109, 209, 0.2)' - state.boxColor = [] - state.boxBigColor = [] - }else{ - document.getElementById('container').setAttribute( "class", 'light' ) - state.boxBg = '#fff' - state.boxColor = ['#fff','#ccc'] - state.boxBigColor = ['#999','#fff'] - } - } - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - window.document.getElementById('container').setAttribute( "class", 'dark' ); - state.boxBg = 'rgba(8, 109, 209, 0.2)' - state.boxColor = [] - state.boxBigColor = [] - }else{ - window.document.getElementById('container').setAttribute( "class", 'light' ); - state.boxBg = '#fff' - state.boxColor = ['#fff','#ccc'] - state.boxBigColor = ['#999','#fff'] - } - } - - // 全屏 - const onScreenfullClick = () => { - if (!screenfull.isEnabled) { - ElMessage.warning('暂不不支持全屏'); - return false; - } - screenfull.toggle(); - screenfull.on('change', () => { - if (screenfull.isFullscreen) { - state.isScreenfull = true; - } else { - state.isScreenfull = false; - } - }); - }; - - const openDialog = () => { - if(state.dialogShow == 'hide'){ - state.dialogShow = 'showup' - }else{ - state.dialogShow = 'hide' - } - }; - - const closeInfo = ()=>{ - state.dialogHide = 'hide' - }; - - const jumpPage = (num) =>{ - router.push({ - path: 'screenPage', - query: { - num: num - } - }); - } - - // 返回上一页 - const goBack = () => { - window.history.go(-1); - }; - - // 隐患状态列表 - // const getDeviceRecord = async () => { - // const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; - // let res = await productionDeviceApi().getProductionDeviceList(data) - // if (res.data.code === '200'){ - // state.deviceData = res.data.data - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - - return { - router, - props, - screenTheme, - openDialog, - closeInfo, - changeTheme, - onScreenfullClick, - jumpPage, - goBack, - ...toRefs(state) - }; - } - }); -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .hide{ - display: none; - } - - .showup{ - display: block; - } - .dark { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - background: url('../../../assets/warningScreen/riskprocast.jpg') no-repeat center; - background-size: 100% 100%; - color: #11FEEE; - - .warn-dialog{ - position: absolute; - z-index: 999999; - top: 25%; - left: 50%; - width: 50%; - height: 50%; - transform: translateX(-50%); - border-radius: 8px; - transition: .3s; - box-shadow: 0 15px 30px rgba(0,0,0,.2); - border: 1px solid rgba(17,254,238,.4); - padding: 1.5rem; - background: rgba(0,16,32,.8); - - div{ - font-size: 1.5rem; - text-align: center; - } - - p{ - margin-top: 20px; - font-size: 1.125rem; - line-height: 28px; - text-align: left - } - - span{ - position: inherit; - right: 20px; - top: 20px; - font-size: 1rem; - cursor: pointer; - } - } - - .info-panel{ - position: absolute; - width: 20%; - right: 50px; - bottom: 50px; - z-index: 9999999; - font-size: 1rem; - padding: 0 10px; - border-radius: 4px; - cursor: pointer; - box-shadow: 0 15px 30px rgba(0,0,0,.2); - border: 1px solid rgba(17,254,238,.4); - background: rgba(0,16,32,.8); - - .info-tit{ - display: flex; - align-items: center; - padding: 10px; - border-bottom: 1px solid rgba(17,254,238,.4); - justify-content: space-between; - - &>div{ - display: flex; - align-items: center; - - img{ - width: 18px; - height: 18px; - margin-right: 10px; - } - } - } - - .info-desc{ - padding: 15px 10px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .info-num{ - position: inherit; - width: 24px; - height: 24px; - line-height: 24px; - text-align: center; - left: -12px; - top: -12px; - color: #fff; - z-index: 999999999; - border-radius: 50%; - border: 1px solid #ff0000; - background: #ff0000; - } - } - - .header-content { - width: 100%; - height: 7.8%; - padding: 0 20px; - font-size: 1.25rem; - display: flex; - align-items: center; - justify-content: space-around; - z-index: 9; - - .logo { - width: 27%; - display: flex; - align-items: center; - justify-content: center; - img { - width: 10rem; - height: auto; - } - } - .title { - width: 46%; - font-size: 2rem; - font-weight: bolder; - line-height: 7.8%; - text-align: center; - letter-spacing: 2px; - } - - .title-right { - width: 27%; - height: 90px; - display: flex; - align-items: center; - justify-content: space-around; - font-size: 1rem; - padding-left: 30px; - - .datetime { - color: #11FEEE; - font-size: 0.9rem; - } - .btns{ - display: flex; - align-items: center; - - &>div{ - display: flex; - align-items: center; - font-size: 1rem; - margin-right: 20px; - - img{ - width: 1rem; - height: 1rem; - } - div{ - margin-left: 0.4rem; - font-size: 0.9rem; - } - } - .themeBtn{ - img{ - width: 1.25rem; - height: 1.25rem; - } - cursor: pointer; - } - .fullBtn{ - cursor: pointer; - } - .backBtn{ - cursor: pointer; - } - } - } - } - .main-content{ - width: 100%; - height: calc(100vh - 7.8%); - padding: 0.4rem 1.5rem 2rem; - display: flex; - align-items: center; - justify-content: space-between; - - &>div{ - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-start; - &>div{ - padding: 20px 15px 10px; - box-sizing: border-box; - position: relative; - .box-bg{ - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - color: #11feee; - font-weight: bolder; - } - - .dv-border-box-11{ - ::v-deep(.dv-border-svg-container){ - .dv-border-box-11-title{ - font-size: 1.5rem; - fill: #11feee !important; - } - } - } - .part-tit{ - position: absolute; - top: 20px; - left: 0; - height: 20px; - width: 100%; - padding: 0 15px; - display: flex; - justify-content: space-between; - align-items: center; - z-index: 9999; - - span{ - font-size: 1.25rem; - font-weight: bolder; - color: #11feee; - } - - img{ - width: 1.2rem; - height: 1.2rem; - cursor: pointer; - } - } - .chart-box{ - position: absolute; - top: 40px; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: calc(100% - 50px); - z-index: 99999; - .train-tip{ - display: block; - font-size: 0.8rem; - margin-top: 2%; - margin-left: 5%; - color: #fff; - height: 1rem; - } - - .train-chart{ - width: 100%; - height: calc(100% - 1rem); - } - } - } - } - - .main-left{ - width: calc(25% - 5px); - &>div{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - } - .main-middle{ - width: calc(50% - 10px); - - .mid-top{ - width: 100%; - height: calc((200% - 40px)/3 + 10px); - } - - .mid-bottom{ - display: flex; - width: 100%; - height: calc((100%/3) - (20px/3)); - justify-content: space-between; - padding: 0; - background: none; - border-radius: 0; - - &>div { - position: relative; - width: calc((100% - 20px)/3); - border-radius: 8px; - overflow: hidden; - padding: 10px 15px; - box-sizing: border-box; - } - } - } - .main-right{ - width: calc(25% - 5px); - &>div{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - } - } - } - .light { - width: 100%; - height: 100%; - display: flex; - flex-direction: column; - align-items: center; - background: url('../../../assets/warningScreen/riskprocast-light.jpg') no-repeat center; - background-size: 100% 100%; - color: #000; - - .warn-dialog{ - position: absolute; - z-index: 999999; - top: 25%; - left: 50%; - width: 50%; - height: 50%; - transform: translateX(-50%); - border-radius: 8px; - transition: .3s; - box-shadow: 0 15px 30px rgba(0,0,0,.2); - border: 1px solid #ccc; - padding: 1.5rem; - background: #fff; - - div{ - font-size: 1.5rem; - text-align: center; - } - - p{ - margin-top: 20px; - font-size: 1.125rem; - line-height: 28px; - text-align: left - } - - span{ - position: inherit; - right: 20px; - top: 20px; - font-size: 1rem; - cursor: pointer; - } - } - - .info-panel{ - position: absolute; - width: 20%; - right: 50px; - bottom: 50px; - z-index: 9999999; - font-size: 1rem; - color: #333; - padding: 0 10px; - border-radius: 4px; - cursor: pointer; - box-shadow: 0 15px 30px rgba(0,0,0,.2); - border: 1px solid #ccc; - background: #fff; - - .info-tit{ - display: flex; - align-items: center; - padding: 10px; - border-bottom: 1px solid #ccc; - justify-content: space-between; - - &>div{ - display: flex; - align-items: center; - - img{ - width: 18px; - height: 18px; - margin-right: 10px; - } - } - } - - .info-desc{ - padding: 15px 10px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - .info-num{ - position: inherit; - width: 24px; - height: 24px; - line-height: 24px; - text-align: center; - left: -12px; - top: -12px; - color: #fff; - z-index: 999999999; - border-radius: 50%; - border: 1px solid #ff0000; - background: #ff0000; - } - } - - .header-content { - width: 100%; - height: 7.8%; - padding: 0 20px; - font-size: 1.25rem; - display: flex; - align-items: center; - justify-content: space-around; - z-index: 9; - - .logo { - width: 27%; - display: flex; - align-items: center; - justify-content: center; - img { - width: 10rem; - height: auto; - } - } - .title { - width: 46%; - font-size: 2rem; - font-weight: bolder; - line-height: 7.8%; - text-align: center; - letter-spacing: 2px; - } - - .title-right { - width: 27%; - height: 90px; - display: flex; - align-items: center; - justify-content: space-around; - font-size: 1rem; - padding-left: 30px; - - .datetime { - color: #000; - font-size: 0.9rem; - } - .btns{ - display: flex; - align-items: center; - - &>div{ - display: flex; - align-items: center; - font-size: 1rem; - margin-right: 20px; - - img{ - width: 1rem; - height: 1rem; - } - div{ - margin-left: 0.4rem; - font-size: 0.9rem; - } - } - .themeBtn{ - img{ - width: 1.25rem; - height: 1.25rem; - } - cursor: pointer; - } - .fullBtn{ - cursor: pointer; - } - .backBtn{ - cursor: pointer; - } - } - } - } - .main-content{ - width: 100%; - height: calc(100vh - 7.8%); - padding: 0.4rem 1.5rem 2rem; - display: flex; - align-items: center; - justify-content: space-between; - - &>div{ - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-start; - &>div{ - padding: 20px 15px 10px; - box-sizing: border-box; - position: relative; - .box-bg{ - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; - right: 0; - bottom: 0; - margin: auto; - color: #000; - font-weight: bolder; - } - - .dv-border-box-11{ - :deep(.dv-border-svg-container){ - .dv-border-box-11-title{ - font-size: 1.5rem; - fill: #000 !important; - } - } - } - .part-tit{ - position: absolute; - top: 20px; - left: 0; - height: 20px; - width: 100%; - padding: 0 15px; - display: flex; - justify-content: space-between; - align-items: center; - z-index: 9999; - span{ - font-size: 1.25rem; - font-weight: bolder; - color: #000; - } - - img{ - width: 1.20rem; - height: 1.20rem; - cursor: pointer; - } - } - .chart-box{ - position: absolute; - top: 40px; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: calc(100% - 50px); - z-index: 99999; - .train-tip{ - display: block; - font-size: 0.8rem; - margin-top: 2%; - margin-left: 5%; - color: #333; - height: 1rem; - } - - .train-chart{ - width: 100%; - height: calc(100% - 1rem); - } - } - } - } - - .main-left{ - width: calc(25% - 5px); - - .left-top{ - width: 100%; - height: calc((100%/3) - (20px/3)); - - } - .left-mid{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - .left-bottom{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - } - .main-middle{ - width: calc(50% - 10px); - - .mid-top{ - width: 100%; - height: calc((200% - 40px)/3 + 10px); - } - - .mid-bottom{ - display: flex; - width: 100%; - height: calc((100%/3) - (20px/3)); - justify-content: space-between; - padding: 0; - background: none; - border-radius: 0; - - &>div { - position: relative; - width: calc((100% - 20px)/3); - border-radius: 8px; - overflow: hidden; - padding: 10px 15px; - box-sizing: border-box; - } - } - } - .main-right{ - width: calc(25% - 5px); - - .right-top{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - .right-mid{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - .right-bottom{ - width: 100%; - height: calc((100%/3) - (20px/3)); - } - } - } - } - .el-input { - width: 100% !important; - } - .el-date-editor::v-deep { - width: 100%; - } - .el-select { - width: 100%; - } -</style> \ No newline at end of file diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue deleted file mode 100644 index c037e1c..0000000 --- a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue +++ /dev/null @@ -1,470 +0,0 @@ -<template> - <div id="pageCont" class="dark-page"> - <div class="btns"> - <dv-decoration-11 :color="lineColor" @click="goBack()"> - <div color-green font-600 bg="~ dark/0"> - 返回 - </div> - </dv-decoration-11> - </div> - - <div class="tit"> - <div class="title">{{curChart===1?'事故等级分布':curChart===2?'应急演练次数':curChart===3?'隐患等级数量分布':curChart===4?'SPI数据分析':curChart===5?'教育培训分析':curChart===6?'隐患等级':curChart===7?'人员专业度分布':curChart===8?'预警消息报告':curChart===9?'特殊作业实时监控':'风险应急物资储备'}}</div> - </div> - <div class="chart-cont"> - <div class="chart"> - <div v-show="curChart===2" class="selector-2">距上次演练结束5天</div> - <accident v-if="curChart===1" :size="2.5"></accident> - <training v-else-if="curChart===2" :size="2.5"></training> - <risk v-else-if="curChart===3" :month="month" :size="2.5"></risk> - <spi v-else-if="curChart===4" :size="2"></spi> - <educate v-else-if="curChart===5" :size="2.5"></educate> - <danger v-else-if="curChart===6" :size="2.5"></danger> - <profession v-else-if="curChart===7" :size="2.5"></profession> - <message v-else-if="curChart===8" :size="2"></message> - <monitor v-else-if="curChart===9" :size="2.5"></monitor> - <stock v-else class="main-chart" :size="2"></stock> - </div> - <div class="chart-right"> - <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" /> - <div class="charts-des"> - <div class="des-tit"> - <div v-if="curChart===1">2022年度事故等级分布与影响一览</div> - <div v-else-if="curChart===2">应急演练概况</div> - <div v-else-if="curChart===3">隐患影响等级分布详情</div> - <div v-else-if="curChart===4">2022年度事企业SPI趋势</div> - <div v-else-if="curChart===5">教育培训情况汇总</div> - <div v-else-if="curChart===6">隐患等级分布与隐患整改率</div> - <div v-else-if="curChart===7">人员持证上岗情况</div> - <div v-else-if="curChart===8">预警消息SPI报告-2022年8月</div> - <div v-else-if="curChart===9">监控列表</div> - <div v-else>当前应急物资储备情况(总)</div> - <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" /> - </div> - <div v-if="curChart===2" class="des-main"> - <div> - <h4>距上次【<span>{{trainDesc.title}}</span>】应急演练结束<span>{{trainDesc.total}}</span>天</h4> - <h4> - 应急演练分月情况汇总: - </h4> - <p v-for="(item,index) in trainDesc.list" :key="index">{{item.month}}应急演练次数:{{item.num}}次</p> - </div> - </div> - <div v-else class="des-main"> - <div v-for="(item,index) in accidentDesc" :key="index"> - <h4><span>{{item.title}}</span>共计:<span>{{item.total}}</span>起</h4> - <h4> - 事故影响 - </h4> - <p>{{item.desc}}</p> - </div> - </div> - </div> - <dv-decoration-10 :color="lineColor" style="width:100%;height:5%;" /> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import screenfull from 'screenfull'; - import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; - import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; - import { useRoute } from 'vue-router'; - import {hiddenReportApi} from "/@/api/doublePreventSystem/report"; - import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme" - import {storeToRefs} from "pinia"; - - // 定义接口来定义对象的类型 - interface stateType { - isScreenfull: boolean; - curChart: number | null; - lineColor: Array<string>; - accidentDesc: Array<any>; - trainDesc: Object; - } - export default defineComponent({ - name: 'warningPage', - components: { - accident: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/accident.vue')), - training: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/training.vue')), - spi: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/SPI.vue')), - risk: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/risk.vue')), - educate: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/educate.vue')), - danger: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/danger.vue')), - profession: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/profession.vue')), - message: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/message.vue')), - monitor: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/monitor.vue')), - stock: defineAsyncComponent(() => import('/@/views/riskWarningSys/warningBigScreen/components/stock.vue')) - }, - setup() { - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const route = useRoute(); - const state = reactive<stateType>({ - isScreenfull: false, - curChart: null, - lineColor: ['#11FEEE'], - accidentDesc:[ - { - title: '特别重大事故', - total: 10, - desc: '死亡人数:0人; 重伤人数:2人; 轻伤人数:3人; 直接经济损失:180.61万元' - }, - { - title: '重大事故', - total: 20, - desc: '死亡人数:1人; 重伤人数:6人; 轻伤人数:0人; 直接经济损失:160.61万元' - }, - { - title: '较大事故', - total: 100, - desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:3人; 直接经济损失:190.61万元' - }, - { - title: '一般事故', - total: 130, - desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:0人; 直接经济损失:180.61万元' - }, - { - title: '未遂事故', - total: 150, - desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:0人; 直接经济损失:9万元' - } - ], - trainDesc:{ - title: '公司级', - total: 5, - list: [ - { - month: '一月份', - num: 23 - }, - { - month: '二月份', - num: 76 - }, - { - month: '三月份', - num: 152 - }, - { - month: '四月份', - num: 200 - }, - { - month: '五月份', - num: 49 - }, - { - month: '六月份', - num: 83 - }, - { - month: '七月份', - num: 102 - }, - { - month: '八月份', - num: 99 - } - ] - } - }); - - // 页面载入时执行方法 - onMounted(() => { - if (route.query.num) { - state.curChart = Number(route.query.num) - } - getTheme() - }); - - - // 全屏 - const onScreenfullClick = () => { - if (!screenfull.isEnabled) { - ElMessage.warning('暂不不支持全屏'); - return false; - } - screenfull.toggle(); - screenfull.on('change', () => { - if (screenfull.isFullscreen) { - state.isScreenfull = true; - } else { - state.isScreenfull = false; - } - }); - }; - const getTheme =()=>{ - if(screenTheme.value.isDark){ - window.document.getElementById('pageCont').setAttribute( "class", 'dark-page' ); - state.lineColor = ['#11FEEE'] - }else{ - window.document.getElementById('pageCont').setAttribute( "class", 'light-page' ); - state.lineColor = ['#333','#ccc'] - } - } - // 返回上一页 - const goBack = () => { - window.history.go(-1); - }; - - - return { - route, - onScreenfullClick, - goBack, - ...toRefs(state) - }; - } - }); -</script> - -<style scoped lang="scss"> - .dark-page{ - width: 100%; - height: 100%; - border:1px #5a5959 solid; - background: url('../../../../assets/warningScreen/body-bg.jpg'); - padding: 4%; - .btns{ - position: fixed; - width: 8%; - height: 6%; - right: 5%; - top: 1.25rem; - font-size: 1.125rem; - color: rgb(17, 254, 238); - cursor: pointer; - } - .tit{ - width: 100%; - height: 122px; - background: url("../../../../assets/warningScreen/pagebg-t.png") no-repeat center; - background-size: 100% 100%; - - - .title{ - width: 100%; - height: 122px; - line-height: 112px; - border-radius: 8px; - margin-bottom: 20px; - font-size: 2.8rem; - color: #11feee; - font-weight: bolder; - text-align: center; - letter-spacing: 5px; - } - } - - .chart-cont{ - width: 100%; - padding: 20px; - height: calc(100% - 122px); - display: flex; - align-items: flex-start; - justify-content: space-between; - - .chart{ - width: calc((100% - 20px) * 0.63); - height: 100%; - padding: 3%; - background: url("../../../../assets/warningScreen/pagebg-l.png") no-repeat center; - background-size: 100% 100%; - position: relative; - .selector-2{ - position: absolute; - top: 5%; - right: 10%; - width: 20%; - font-size: 1.25rem; - color: #fff; - } - .main-chart{ - width: 100%; - height: 100%; - } - } - .chart-right{ - width: calc((100% - 20px) * 0.37); - height: 100%; - .charts-des{ - height: 90%; - background: url("../../../../assets/warningScreen/pagebg-r.png") no-repeat center; - background-size: 100% 100%; - padding: 4%; - - .des-tit{ - width: 100%; - &>div{ - font-size: 1.5rem; - height: 2.2rem; - line-height: 2.2rem; - text-align: center; - font-weight: bolder; - color: #11FEEE; - } - } - .des-main{ - width: 100%; - height: calc(96% - 2.2rem); - padding: 0 2%; - overflow: auto; - color: #11FEEE; - - &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } - &::scrollbar { width: 0; height: 0; color: transparent; } - - &>div{ - margin-bottom: 2rem; - &>h4{ - font-size: 1.25rem; - display: flex; - align-items: center; - - span{ - margin-right: 10px; - } - &:first-of-type{ - margin-bottom: 10px; - } - } - - &>p{ - font-size: 1rem; - margin-top: 10px; - } - } - } - } - } - - } - } - .light-page{ - width: 100%; - height: 100%; - border:1px #5a5959 solid; - background: #F0F0F0; - padding: 4%; - .btns{ - position: fixed; - width: 8%; - height: 6%; - right: 5%; - top: 1.25rem; - font-size: 1.125rem; - color: #333; - cursor: pointer; - } - .tit{ - width: 100%; - height: 122px; - background: url("../../../../assets/warningScreen/pagebg-t-light.png") no-repeat center; - background-size: 100% 100%; - - - .title{ - width: 100%; - height: 122px; - line-height: 112px; - border-radius: 8px; - margin-bottom: 20px; - font-size: 2.8rem; - color: #333; - font-weight: bolder; - text-align: center; - letter-spacing: 5px; - } - } - - .chart-cont{ - width: 100%; - padding: 20px; - height: calc(100% - 122px); - display: flex; - align-items: flex-start; - justify-content: space-between; - - .chart{ - width: calc((100% - 20px) * 0.63); - height: 100%; - padding: 3%; - background: url("../../../../assets/warningScreen/pagebg-l-light.png") no-repeat center; - background-size: 100% 100%; - position: relative; - .selector-2{ - position: absolute; - top: 5%; - right: 10%; - width: 20%; - font-size: 1.25rem; - color: #fff; - } - .main-chart{ - width: 100%; - height: 100%; - } - } - .chart-right{ - width: calc((100% - 20px) * 0.37); - height: 100%; - .charts-des{ - height: 90%; - background: url("../../../../assets/warningScreen/pagebg-r-light.png") no-repeat center; - background-size: 100% 100%; - padding: 4%; - - .des-tit{ - width: 100%; - &>div{ - font-size: 1.5rem; - height: 2.2rem; - line-height: 2.2rem; - text-align: center; - font-weight: bolder; - color: #333; - } - } - .des-main{ - width: 100%; - height: calc(96% - 2.2rem); - padding: 0 2%; - overflow: auto; - color: #333; - - &::-webkit-scrollbar { width: 0; height: 0; color: transparent; } - - &>div{ - margin-bottom: 2rem; - &>h4{ - font-size: 1.25rem; - display: flex; - align-items: center; - - span{ - margin-right: 10px; - } - &:first-of-type{ - margin-bottom: 10px; - } - } - - &>p{ - font-size: 1rem; - margin-top: 10px; - } - } - } - } - } - - } - } -</style> \ No newline at end of file diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/msgDetail.vue b/src/views/riskWarningSys/warningBigScreen/indexs/msgDetail.vue deleted file mode 100644 index c30b03e..0000000 --- a/src/views/riskWarningSys/warningBigScreen/indexs/msgDetail.vue +++ /dev/null @@ -1,137 +0,0 @@ -<template> - <div id="pageCont" class="dark-page"> - <div class="btns"> - <dv-decoration-11 :color="lineColor" @click="goBack()"> - <div color-green font-600 bg="~ dark/0"> - 返回 - </div> - </dv-decoration-11> - </div> - <dv-decoration7 :color="lineColor" style="width:100%;height:6%;margin-bottom: 20px"> - <div class="msgTit"> - {{title}} - </div> - </dv-decoration7> - <dv-border-box1 :color="lineColor" style="width: 100%;height: calc(100% - 20px)"> - - </dv-border-box1> - </div> -</template> - -<script lang="ts"> - import screenfull from 'screenfull'; - import { toRefs, reactive, ref, onMounted, defineComponent, defineAsyncComponent, nextTick, onUnmounted } from 'vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; - import { safetyRiskEventApi } from '/@/api/doublePreventSystem/safetyRiskEvent/index.ts'; - import { useRoute } from 'vue-router'; - import {hiddenReportApi} from "/@/api/doublePreventSystem/report"; - import { productionDeviceApi } from '/@/api/doublePreventSystem/productionDevice/index.ts'; - import '/@/theme/bigScreen.css' - import {useScreenTheme} from "/@/stores/screenTheme" - import {storeToRefs} from "pinia"; - - // 定义接口来定义对象的类型 - interface stateType { - lineColor: Array<string>, - title: string | null - } - export default defineComponent({ - name: 'msgDetail', - components: { - - }, - setup() { - const screenThemes = useScreenTheme() - const { screenTheme } = storeToRefs(screenThemes); - const route = useRoute(); - const state = reactive<stateType>({ - lineColor: ['#11FEEE'], - title: '' - }); - - // 页面载入时执行方法 - onMounted(() => { - if (route.query.row) { - state.title = route.query.row[1] - } - getTheme() - }); - - - - const getTheme =()=>{ - if(screenTheme.value.isDark){ - window.document.getElementById('pageCont').setAttribute( "class", 'dark-page' ); - state.lineColor = ['#11FEEE'] - }else{ - window.document.getElementById('pageCont').setAttribute( "class", 'light-page' ); - state.lineColor = ['#333','#ccc'] - } - } - - // 返回上一页 - const goBack = () => { - window.history.go(-1); - }; - - - return { - route, - goBack, - ...toRefs(state) - }; - } - }); -</script> - -<style scoped lang="scss"> - .dark-page{ - width: 100%; - height: 100%; - border:1px #5a5959 solid; - background: url('../../../../assets/warningScreen/body-bg.jpg'); - padding: 1.25rem 4% 4%; - .btns{ - position: fixed; - width: 8%; - height: 6%; - right: 5%; - top: 1.25rem; - display: flex; - align-items: center; - font-size: 1.125rem; - color: rgb(17, 254, 238); - cursor: pointer; - } - .msgTit{ - font-size: 2rem; - color: rgb(17, 254, 238); - margin: 0 4rem; - } - } - .light-page{ - width: 100%; - height: 100%; - border:1px #5a5959 solid; - background: #F0F0F0; - padding: 1.25rem 4% 4%; - .btns{ - position: fixed; - width: 8%; - height: 6%; - right: 5%; - top: 1.25rem; - display: flex; - align-items: center; - font-size: 1.125rem; - color: #333; - cursor: pointer; - } - .msgTit{ - font-size: 2rem; - color: #333; - margin: 0 4rem; - } - } -</style> \ No newline at end of file diff --git a/src/views/safeKnowledge/bmgz/index.vue b/src/views/safeKnowledge/bmgz/index.vue deleted file mode 100644 index 39c6175..0000000 --- a/src/views/safeKnowledge/bmgz/index.vue +++ /dev/null @@ -1,31 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/bmgz"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: {}, - data() { - return {}; - }, - created() {}, - methods: {} -}; -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - iframe { - width: 100%; - height: 100%; - border: none; - } -} -</style> diff --git a/src/views/safeKnowledge/df/index.vue b/src/views/safeKnowledge/df/index.vue deleted file mode 100644 index 3bfefee..0000000 --- a/src/views/safeKnowledge/df/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/df"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/index.vue b/src/views/safeKnowledge/index.vue deleted file mode 100644 index c90267a..0000000 --- a/src/views/safeKnowledge/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/inner/index.vue b/src/views/safeKnowledge/inner/index.vue deleted file mode 100644 index bef7f39..0000000 --- a/src/views/safeKnowledge/inner/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/inner"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/internationalRules/index.vue b/src/views/safeKnowledge/internationalRules/index.vue deleted file mode 100644 index 083cfbb..0000000 --- a/src/views/safeKnowledge/internationalRules/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/law"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/law/index.vue b/src/views/safeKnowledge/law/index.vue deleted file mode 100644 index 84b233c..0000000 --- a/src/views/safeKnowledge/law/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/gong"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/sfjs/index.vue b/src/views/safeKnowledge/sfjs/index.vue deleted file mode 100644 index 21348b6..0000000 --- a/src/views/safeKnowledge/sfjs/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/laws"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/safeKnowledge/xzfg/index.vue b/src/views/safeKnowledge/xzfg/index.vue deleted file mode 100644 index 263ec2d..0000000 --- a/src/views/safeKnowledge/xzfg/index.vue +++ /dev/null @@ -1,40 +0,0 @@ -<template> - <div class="home-container"> - <iframe src="http://39.104.85.193/xzfg"></iframe> - </div> -</template> - -<script> -export default { - name: 'safeKnowledgeSys', - props: { - - }, - data(){ - return{ - - } - }, - created() { - - }, - methods:{ - - } -} -</script> - -<!-- Add "scoped" attribute to limit CSS to this components only --> -<style scoped lang="scss"> - .home-container{ - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - - iframe{ - width: 100%; - height: 100%; - border: none; - } - } -</style> diff --git a/src/views/specialWorkSystem/alarm/zyyjjl/index.vue b/src/views/specialWorkSystem/alarm/zyyjjl/index.vue deleted file mode 100644 index 0505b81..0000000 --- a/src/views/specialWorkSystem/alarm/zyyjjl/index.vue +++ /dev/null @@ -1,364 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业证编号:</span> - <div class="grid-content topInfo"> - <el-input v-model="searchWord"></el-input> - </div> - </el-col> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchType" placeholder="请选择作业类型"> - <el-option - v-for="item in workTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">预警类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="warningType" placeholder="请选择预警类型"> - <el-option - v-for="item in alertTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> -<!-- <el-row class="cardTop">--> -<!-- <el-col :span="12" class="mainCardBtn">--> -<!-- <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>--> -<!-- </el-col>--> -<!-- <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/>--> -<!-- </el-row>--> - <el-table - ref="multipleTableRef" - :data="tableData" - style="width: 100%" - height="calc(100% - 48px)" - :header-cell-style="{background: '#fafafa'}" - > - <el-table-column type="index" label="序号" width="80"/> - <el-table-column property="workPermitNo" label="作业证编号"/> - <el-table-column property="workTypeDesc" label="作业类型"/> - <el-table-column property="warningContent" show-overflow-tooltip label="预警信息"/> - <el-table-column property="warningTypeDesc" label="预警类型"/> - <el-table-column property="warningInfo" show-overflow-tooltip label="描述" width="200"/> - <el-table-column property="operatorUname" label="上报人"/> - <el-table-column property="operationTime" label="上报时间" width="180"/> - <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> - </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="totalSize" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业预警记录"> - <el-form :model="details" label-width="120px"> - <el-form-item label="作业证编号"> - <el-input v-model="details.workPermitNo" readonly/> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly/> - </el-form-item> - <el-form-item label="预警信息"> - <el-input v-model="details.warningContent" readonly/> - </el-form-item> - <el-form-item label="预警类型"> - <el-input v-model="details.warningTypeDesc" readonly/> - </el-form-item> - <el-form-item label="图片" v-if="details.imagePaths && details.imagePaths.length>0"> - <el-image v-for="item in details.imagePaths" :preview-src-list="details.imagePaths" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="描述"> - <el-input v-model="details.warningInfo" type="textarea" readonly/> - </el-form-item> - <el-form-item label="上报人"> - <el-input v-model="details.operatorUname" readonly/> - </el-form-item> - <el-form-item label="上报时间"> - <el-input v-model="details.operationTime" 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> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, ref, onMounted } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable } from 'element-plus'; - import { FormInstance, FormRules, ElMessage } from 'element-plus'; - import { workProcessApi } from '/@/api/specialWorkSystem/workProcess'; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: Array<any>; - departmentList: Array<any>; - department:string; - workerList: Array<string>; - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - searchWord: string; - searchType: string; - warningType: string; - totalSize: number; - details: { - - }; - workTypeList: Array<any>; - alertTypeList: Array<any> - } - - export default { - name: 'alerts', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - chosenIndex: null, - searchWord: '', - searchType: '', - warningType: '', - tableData: [], - departmentList: [], - department: '', - workerList: [], - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - deleteDialog: false, - deleteSetDialog: false, - details: {}, - deleteId: null, - deleteArr: [], - workTypeList: [ - { id: '1', name: '动火作业' }, - { id: '2', name: '受限空间作业' }, - { id: '3', name: '吊装作业' }, - { id: '4', name: '动土作业' }, - { id: '5', name: '断路作业' }, - { id: '6', name: '高处作业' }, - { id: '7', name: '临时用电作业' }, - { id: '8', name: '盲板抽堵作业' } - ], - alertTypeList: [ - { id: '1', name: '检查' }, - { id: '2', name: '检测' } - ] - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - }); - - // 分页获取班组管理列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.searchType, workPermitNo: state.searchWord,warningType: state.warningType } }; - let res = await workProcessApi().postAlertList(data); - if (res.data.code === '200') { - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 关键词查询记录 - const searchRecord = () => { - if (state.searchWord == ''&& state.searchType == ''&& state.warningType == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = () => { - state.searchWord = '' - state.searchType = '' - state.warningType = '' - getListByPage() - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.dialogDetails = true; - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - - return { - View, - Edit, - Delete, - Refresh, - Plus, - searchRecord, - clearSearch, - viewRecord, - getListByPage, - reLoadData, - handleSizeChange, - handleCurrentChange, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> diff --git a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue b/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue deleted file mode 100644 index 9cd39ee..0000000 --- a/src/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue +++ /dev/null @@ -1,254 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowApproveBasicDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="approveBasicForm" :rules="approveBasicFormRules" ref="approveBasicFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="标题" prop="title"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.title" placeholder="请输入标题名称" clearable></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="ruleStandType"> - <el-select class="input-add" :disabled="!disabled" v-model="approveBasicForm.ruleStandType" placeholder="请选择标准类型" clearable filterable> - <el-option v-for="item in ruleStandTypeList" :key="item.id" :label="item.name" :value="item.id"></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="maxVal"> - <el-input :disabled="!disabled" v-model="approveBasicForm.maxVal" type="number" class="input-add" placeholder="请根据需求选择"> - <template #prepend> - <el-select :disabled="!disabled" v-model="approveBasicForm.maxValMatchPattern" placeholder="请根据需求选择" style="width: 115px"> - <el-option v-for="item in typeTwoList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </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="minVal"> - <el-input :disabled="!disabled" v-model="approveBasicForm.minVal" type="number" class="input-add" placeholder="请根据需求选择"> - <template #prepend> - <el-select :disabled="!disabled" v-model="approveBasicForm.minValMatchPattern" placeholder="请根据需求选择" style="width: 115px"> - <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"> </el-option> - </el-select> - </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="info"> - <el-input class="input-add" :rows="3" :disabled="!disabled" v-model.trim="approveBasicForm.info" type="textarea" placeholder="请输入描述"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="createUname"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.createUname"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="gmtCreate"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.gmtCreate"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="modifiedUname"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.modifiedUname"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="gmtModified"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="approveBasicForm.gmtModified"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowApproveBasicDialog = !isShowApproveBasicDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitApproveBasic" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowApproveBasicDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - approveBasicForm: { - ruleStandId: null | number; - ruleStandType: null | number; - minVal: null | number; - minValMatchPattern: null; - maxVal: null | number; - maxValMatchPattern: null | number; - title: null | string; - info: null | string; - }; - title: string; - departmentList: []; - ruleStandTypeList: Array<levelListState>; - typeList: Array<levelListState>; - typeTwoList: Array<levelListState>; - approveBasicFormRules: {}; -} -interface levelListState { - id: number; - name: string; -} -interface approveBasicForm { - ruleStandId: null | number; - ruleStandType: null | number; - minVal: null | number; - minValMatchPattern: null; - maxVal: null | number; - maxValMatchPattern: null | number; - title: null | string; - info: null | string; -} - -import { reactive, toRefs, ref } from 'vue'; -import { approveBasicApi } from '/@/api/specialWorkSystem/approveBasic'; -import { ElMessage } from 'element-plus'; -export default { - name: 'approveBasicDialog', - setup(props: any, context: any) { - const approveBasicFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - departmentList: [], - isShowApproveBasicDialog: false, - ruleStandTypeList: [ - { id: 1, name: '可燃气体' }, - { id: 3, name: '有毒有害气体' }, - { id: 2, name: '氧气' }, - ], - typeList: [ - { id: 1, name: '大于' }, - { id: 2, name: '等于' }, - { id: 4, name: '大于等于' } - ], - typeTwoList: [ - { id: 3, name: '小于' }, - { id: 2, name: '等于' }, - { id: 5, name: '小于等于' } - ], - approveBasicForm: { - ruleStandId: null, - ruleStandType: null, - minVal: null, - minValMatchPattern: null, - maxVal: null, - maxValMatchPattern: null, - title: null, - info: null - }, - approveBasicFormRules: { - ruleStandType: [{ required: true, message: '请选择标准类型', trigger: 'change' }], - minVal: [{ required: true, message: '请填写标最低值', trigger: 'blur' }], - maxVal: [{ required: true, message: '请填写标最高值', trigger: 'blur' }], - title: [{ required: true, message: '请选择风险等级', trigger: 'blur' }], - info: [{ required: true, message: '请填写描述信息', trigger: 'blur' }] - } - }); - - //打开模态框 - const showApproveBasicDialog = (type: string, value: object, department: []) => { - state.isShowApproveBasicDialog = true; - state.departmentList = department; - setTimeout(() => { - approveBasicFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增审批标准'; - state.approveBasicForm = { - ruleStandId: null, - ruleStandType: null, - minVal: null, - minValMatchPattern: null, - maxVal: null, - maxValMatchPattern: null, - title: null, - info: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看审批标准'; - state.approveBasicForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改审批标准'; - state.approveBasicForm = JSON.parse(JSON.stringify(value)); - // for (let i in state.approveBasicForm) { - // state.approveBasicForm[i] = approveBasicForm[i]; - // } - } - }; - - //新增修改提交 - const submitApproveBasic = async () => { - approveBasicFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增审批标准') { - let res = await approveBasicApi().addApproveBasic(state.approveBasicForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '审批标准新增成功', - duration: 2000 - }); - state.isShowApproveBasicDialog = false; - context.emit('refreshApproveBasic'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await approveBasicApi().modApproveBasic(state.approveBasicForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '审批标准修改成功', - duration: 2000 - }); - state.isShowApproveBasicDialog = false; - context.emit('refreshApproveBasic'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - approveBasicFormRef, - submitApproveBasic, - showApproveBasicDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/specialWorkSystem/flow/basicApprove/index.vue b/src/views/specialWorkSystem/flow/basicApprove/index.vue deleted file mode 100644 index 87af29a..0000000 --- a/src/views/specialWorkSystem/flow/basicApprove/index.vue +++ /dev/null @@ -1,448 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>标准类型:</span> - <el-select v-model="tableData.params.searchParams.ruleStandType" clearable filterable class="input-box" placeholder="标准类型"> - <el-option v-for="item in ruleStandTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>标题:</span> - <el-input v-model.trim="tableData.params.searchParams.title" clearable filterable class="input-box" placeholder="标题"> </el-input> - </div> - <div style="padding-bottom: 10px"> - <el-button type="primary" @click="getInspectionTask">查询</el-button> - <el-button plain @click="reset">重置</el-button> - </div> - </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="openApproveBasicDialog('新增', {})">新增</el-button> - <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveBasic" plain>批量删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" /> - </el-row> - <el-table ref="multipleTableRef" :data="tableData.approveBasicData" 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="title" label="标题" /> - <el-table-column property="ruleStandType" label="标准类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.ruleStandType, '标准类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="minVal" label="最低值"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.minValMatchPattern, '最低值') }} - </span> - <span> - {{ scope.row.minVal }} - </span> - </template> - </el-table-column> - <el-table-column property="maxVal" label="最高值"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.maxValMatchPattern, '最高值') }} - </span> - <span> - {{ scope.row.maxVal }} - </span> - </template> - </el-table-column> - <el-table-column property="info" label="描述" /> - <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column> -<!-- <el-table-column property="status" label="状态" width="60" />--> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="openApproveBasicDialog('查看', scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="openApproveBasicDialog('修改', scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteApproveBasic(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - <approve-basic-dialog ref="approveBasicDialogRef" @refreshApproveBasic="getInspectionTask"></approve-basic-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable, ElMessage, ElMessageBox } from 'element-plus'; -import { approveBasicApi } from '/@/api/specialWorkSystem/approveBasic'; -import { departmentApi } from '/@/api/systemManage/department'; -import approveBasicDialog from '/@/views/specialWorkSystem/flow/basicApprove/components/approveBasicDialog.vue'; -let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined] -}; - -interface stateType { - tableData: { - approveBasicData: []; - total: number; - loading: boolean; - params: { - pageIndex: number | null; - pageSize: number | null; - searchParams: { - ruleStandType: number | null; - title: string | null; - }; - }; - }; - ruleStandTypeList: Array<type>; - typeList: Array<type>; - typeTwoList: Array<type>; - deleteList: { - ids: Array<number>; - }; -} -interface type { - id: number; - name: string; -} -interface ruleType { - ruleStandId: number; -} -export default { - name: 'index', - components: { approveBasicDialog }, - setup() { - const approveBasicDialogRef = ref(); - const state = reactive<stateType>({ - tableData: { - approveBasicData: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - searchParams: { - ruleStandType: null, - title: null - } - } - }, - ruleStandTypeList: [ - { id: 1, name: '可燃气体' }, - { id: 3, name: '有毒有害气体' }, - { id: 2, name: '氧气' }, - ], - typeList: [ - { id: 1, name: '大于' }, - { id: 2, name: '等于' }, - { id: 4, name: '大于等于' } - ], - typeTwoList: [ - { id: 3, name: '小于' }, - { id: 2, name: '等于' }, - { id: 5, name: '小于等于' } - ], - deleteList: { - ids: [] - } - }); - - //获取巡检任务数据 - const getInspectionTask = async () => { - let res = await approveBasicApi().getApproveBasicList(state.tableData.params); - if (res.data.code === '200') { - state.tableData.approveBasicData = res.data.data; - state.tableData.total = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // //获取部门 - // const getDepartmentData = async () => { - // let res = await departmentApi().getDepartmentList(); - // if (res.data.code === '200') { - // state.departmentList = res.data.data; - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - - // 删除 - const deleteApproveBasic = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该任务:“${row.title}”,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await approveBasicApi().deleteApproveBasic({ ids: [row.ruleStandId] }); - if (res.data.code === '200') { - state.deleteList.ids = []; - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getInspectionTask(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - // 批量删除 - const deleteMoreApproveBasic = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除这些标准项,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await approveBasicApi().deleteApproveBasic(state.deleteList); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getInspectionTask(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSelectionChange = (val: Array<ruleType>) => { - state.deleteList.ids = val.map((item) => { - return item.ruleStandId; - }); - }; - - const openApproveBasicDialog = (type: string, value: {}) => { - approveBasicDialogRef.value.showApproveBasicDialog(type, value); - }; - - const parseNumber = (value: number, type: string) => { - if (type === '标准类型') { - return state.ruleStandTypeList.find((item) => item.id === value)?.name; - } else if (type === '最高值') { - return state.typeTwoList.find((item) => item.id == value)?.name; - } else { - return state.typeList.find((item) => item.id == value)?.name; - } - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.tableData.params.pageSize = val; - getInspectionTask(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.tableData.params.pageIndex = val; - getInspectionTask(); - }; - - const reset = () => { - state.tableData.params = { - pageIndex: 1, - pageSize: 10, - searchParams: { - ruleStandType: null, - title: null - } - }; - }; - - // 页面加载时 - onMounted(() => { - getInspectionTask(); - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - reset, - parseNumber, - handleSelectionChange, - deleteApproveBasic, - deleteMoreApproveBasic, - getInspectionTask, - onHandleSizeChange, - onHandleCurrentChange, - approveBasicDialogRef, - openApproveBasicDialog, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/specialWorkSystem/flow/ruleofApp/components/approveItemDialog.vue b/src/views/specialWorkSystem/flow/ruleofApp/components/approveItemDialog.vue deleted file mode 100644 index 355aef7..0000000 --- a/src/views/specialWorkSystem/flow/ruleofApp/components/approveItemDialog.vue +++ /dev/null @@ -1,183 +0,0 @@ -<template> - <el-dialog v-model="approveItemDialog" :title="title" :close-on-click-modal="false"> - <el-form :model="approveItemForm" label-width="150px" ref="approveItemFormRef" :rules="approveItemFormRule"> - <el-col :span="24" style="margin-bottom: 24px"> - <el-form-item label="审批项名称" prop="itemName"> - <el-input v-model="approveItemForm.itemName" class="input-add" placeholder="请填写审批项名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="24" style="margin-bottom: 24px"> - <el-form-item label="审批项类型" prop="type"> - <el-select v-model="approveItemForm.type" @change="clearValue" placeholder="请选择审批项类型" class="input-add" clearable filterable> - <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <!-- <el-col :span="24" style="margin-bottom: 24px">--> - <!-- <el-form-item label="措施或标准" prop="smType">--> - <!-- <el-select v-model="approveItemForm.smType" @change="clearValue" placeholder="请选择措施或标准" class="input-add" clearable filterable>--> - <!-- <el-option v-for="item in smTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option>--> - <!-- </el-select>--> - <!-- </el-form-item>--> - <!-- </el-col>--> - <el-col v-if="(approveItemForm.type === 2 || approveItemForm.type === 3) && personType !== 3" :span="24" style="margin-bottom: 24px"> - <el-form-item label="措施名称" prop="measureId"> - <el-select v-model="approveItemForm.measureId" placeholder="请选择措施" class="input-add" clearable filterable> - <el-option v-for="item in approveTypeList" :key="item.id" :value="item.id" :label="item.context"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col v-if="approveItemForm.type === 1" :span="24" style="margin-bottom: 20px"> - <el-form-item label="标准名称" prop="standId"> - <el-select v-model="approveItemForm.standId" class="input-add" placeholder="选择标准" clearable filterable> - <el-option v-for="item in standardList" :key="item.ruleStandId" :value="item.ruleStandId" :label="item.title"></el-option> - </el-select> - </el-form-item> - </el-col> - - <div align="right"> - <el-button type="warning" @click="approveItemDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitApproveItem()" size="default">确认</el-button> - </div> - </el-form> - </el-dialog> -</template> - -<script lang="ts"> -import { reactive, toRefs, ref, nextTick } from 'vue'; -import { ElMessage } from 'element-plus/es'; -interface dataState { - title: string; - activeName: string; - approveItemDialog: boolean; - approveItemForm: step; - approveItemFormRule: {}; - actionList: Array<type>; - typeList: Array<type>; - approveTypeList: Array<type>; - smTypeList: Array<type>; - standardList: []; - order: number | null; - personType: number | null; -} -interface step { - itemName: string | null; - type: null; - measureId: number | null; - standId: number | null; - smType: number | null; -} -interface type { - id: number; - name: string; - type?:number; -} -export default { - name: 'approveItemDialog', - setup(props: any, context: any) { - const approveItemFormRef = ref(); - const data = reactive<dataState>({ - title: '', - activeName: 'ApproveAction', - approveItemDialog: false, - approveItemForm: { - itemName: null, - type: null, - measureId: null, - smType: 1, - standId: null - }, - approveItemFormRule: { - itemName: [{ required: true, message: '请填写审批项名称', trigger: 'blur' }], - type: [{ required: true, message: '请选择审批项类型', trigger: 'change' }], - measureId: [{ required: true, message: '请选择措施', trigger: 'change' }], - smType: [{ required: true, message: '请选择措施或标准', trigger: 'change' }], - standId: [{ required: true, message: '请选择标准', trigger: 'change' }] - }, - actionList: [], - typeList: [], - approveTypeList: [], - smTypeList: [ - { id: 1, name: '标准' }, - { id: 2, name: '措施' } - ], - standardList: [], - order: null, - personType: null, - }); - - const showApproveItemDialog = (type: string, value: {}, index: number, approveLevelForm: { type: number }, standardList: [], actionList: []) => { - data.approveItemDialog = true; - data.standardList = standardList; - data.actionList = actionList; - data.order = index; - if (approveLevelForm.type === 3) { - data.personType = 3 - data.typeList = [ - { id: 1, name: '数值' }, - { id: 3, name: '填空' } - ]; - } else { - data.personType = 2 - data.typeList = [ - { id: 2, name: '选项' }, - { id: 3, name: '填空' } - ]; - } - nextTick(() => { - approveItemFormRef.value.clearValidate(); - }); - if (type === '新增') { - data.title = '新增审批项'; - data.approveItemForm = { - itemName: null, - type: null, - measureId: null, - standId: null, - smType: 1 - }; - } else { - data.title = '修改审批项'; - data.approveItemForm = JSON.parse(JSON.stringify(value)); - } - }; - - const submitApproveItem = async () => { - approveItemFormRef.value.validate((valid: Boolean) => { - if (valid) { - data.approveItemForm.smType = 1; - context.emit('addApprovalItem', data.approveItemForm, data.title, data.order); - data.approveItemDialog = false; - } else { - ElMessage({ - type: 'warning', - message: '请完善审批项基本信息' - }); - } - }); - }; - - const clearValue = () => { - if (data.approveItemForm.type === 1) { - data.approveItemForm.measureId = null; - }else if(data.approveItemForm.type === 2){ - data.approveItemForm.standId = null; - data.approveTypeList = data.actionList.filter(item => item.type === 1) - } else { - data.approveItemForm.standId = null; - data.approveTypeList = data.actionList.filter(item => item.type === 2) - } - }; - - return { - ...toRefs(data), - clearValue, - approveItemFormRef, - submitApproveItem, - showApproveItemDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/specialWorkSystem/flow/ruleofApp/components/approveLevelDialog.vue b/src/views/specialWorkSystem/flow/ruleofApp/components/approveLevelDialog.vue deleted file mode 100644 index cf46a25..0000000 --- a/src/views/specialWorkSystem/flow/ruleofApp/components/approveLevelDialog.vue +++ /dev/null @@ -1,327 +0,0 @@ -<template> - <div> - <el-dialog v-model="approveLevelDialog" :title="title" :close-on-click-modal="false"> - <el-form :model="approveLevelForm" label-width="150px" ref="approveLevelFormRef" :rules="approveLevelFormRule"> - <el-col :span="24" style="margin-bottom: 24px"> - <el-form-item label="层级名称" prop="stepName"> - <el-input v-model="approveLevelForm.stepName" class="input-add" placeholder="请填写层级名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="24" style="margin-bottom: 24px"> - <el-form-item label="审批层级" prop="type"> - <el-select v-model="approveLevelForm.type" placeholder="请选择审批层级" class="input-add"> - <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="24" style="margin-bottom: 24px" v-if="approveLevelForm.type === 2"> - <el-form-item label="审批类型" prop="auditType"> - <el-select v-model="approveLevelForm.auditType" placeholder="请选择审批类型" class="input-add"> - <el-option v-for="item in auditTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="24" style="margin-bottom: 24px"> - <el-form-item label="审批人" prop="unitList"> - <el-select v-model="approveLevelForm.unitList" multiple placeholder="请选择审批人" class="input-add"> - <el-option v-for="item in userList" :key="item.uid" :value="item.uid" :label="item.realName"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="24" style="margin-bottom: 20px"> - <el-form-item label="审批有效时间" prop="continueTime"> - <el-input type="number" v-model="approveLevelForm.continueTime" placeholder="请输入审批有效时间" class="input-add"> - <template #prepend> - <el-select v-model="approveLevelForm.continueTimeUnit" placeholder="选择单位"> - <el-option v-for="item in timeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </template> - </el-input> - </el-form-item> - </el-col> - <div class="checkUnit-point"> - <el-tabs class="active" v-model="activeName"> - <el-tab-pane label="审批流程" name="ApproveAction"> - <div class="filter-container"> - <el-button size="default" type="primary" @click="openApproveActionDialog('新增', '', 0)"> - <el-icon> - <ele-FolderAdd /> - </el-icon> - 新增审批项 - </el-button> - </div> - - <el-table ref="table" :data="approveLevelForm.itemList" style="width: 100%"> - <el-table-column property="itemName" label="审批项名称" show-overflow-tooltip> </el-table-column> - <el-table-column property="type" label="审批项类型" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.type, '审批项类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="measureId" label="措施名称" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.measureId, '措施名称') }} - </span> - </template> - </el-table-column> - <el-table-column property="standId" label="标准名称" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.standId, '标准名称') }} - </span> - </template> - </el-table-column> - <el-table-column label="操作" width="150" align="center"> - <template #default="scope"> - <el-button type="text" size="small" @click="openApproveActionDialog('修改', scope.row, scope.$index)">修改</el-button> - <el-button type="text" size="small" style="color: red" @click="deleteApproveItem(scope.$index)">删除</el-button> - </template> - </el-table-column> - </el-table> - </el-tab-pane> - </el-tabs> - </div> - - <div align="right" style="padding-top: 10px"> - <el-button type="warning" @click="approveLevelDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitApproveLevel()" size="default">确认</el-button> - </div> - </el-form> - </el-dialog> - <approve-item-dialog ref="approveItemDialogRef" @addApprovalItem="achieveApprovalItem"></approve-item-dialog> - </div> -</template> - -<script lang="ts"> -import { reactive, toRefs, ref, nextTick, onMounted } from 'vue'; -import approveItemDialog from '/@/views/specialWorkSystem/flow/ruleofApp/components/approveItemDialog.vue'; -import { ElMessage } from 'element-plus/es'; -import { safetyActionApi } from '/@/api/specialWorkSystem/safetyAction'; -import { approveBasicApi } from '/@/api/specialWorkSystem/approveBasic'; -interface dataState { - title: string; - activeName: string; - approveLevelDialog: boolean; - approveLevelForm: step; - approveLevelFormRule: {}; - departmentList: []; - userList: []; - timeList: Array<type>; - typeList: Array<type>; - auditTypeList: Array<type>; - approveTypeList: Array<type>; - workLevelList: []; - standardList: Array<stand>; - actionList: Array<action>; -} -interface action { - id: number; - context: string; -} -interface stand { - ruleStandId: number; - title: string; -} -interface step { - id: number | null; - stepName: null; - stepSerial: number | null; - type: number | null; - auditType: number | null; - continueTime: number | null; - continueTimeUnit: number | null; - unitList: Array<personType>; - itemList: Array<item>; -} -interface personType { - bindUid: number | {}; -} -interface item {} -interface type { - id: number; - name: string; -} -export default { - name: 'approveLevelDialog', - components: { approveItemDialog }, - setup(props: any, context: any) { - const approveLevelFormRef = ref(); - const approveItemDialogRef = ref(); - const data = reactive<dataState>({ - title: '', - activeName: 'ApproveAction', - approveLevelDialog: false, - approveLevelForm: { - id: null, - stepName: null, - stepSerial: null, - type: null, - auditType: null, - continueTime: null, - continueTimeUnit: null, - unitList: [], - itemList: [] - }, - approveLevelFormRule: { - stepName: [{ required: true, message: '请填写层次名称', trigger: 'blur' }], - type: [{ required: true, message: '请选择审批层级', trigger: 'change' }], - auditType: [{ required: true, message: '请选择审批类型', trigger: 'change' }], - unitList: [{ required: true, message: '请选择审批人', trigger: 'change' }], - continueTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }] - }, - departmentList: [], - userList: [], - timeList: [ - { id: 1, name: '日' }, - { id: 2, name: '时' }, - { id: 3, name: '分' } - ], - typeList: [ - { id: 1, name: '单人' }, - { id: 2, name: '多人' }, - { id: 3, name: '分析人' } - ], - auditTypeList: [ - { id: 1, name: '单审' }, - { id: 2, name: '会审' }, - ], - approveTypeList: [ - { id: 1, name: '数值' }, - { id: 2, name: '选项' }, - { id: 3, name: '填空' } - ], - workLevelList: [], - actionList: [], - standardList: [] - }); - - const showApproveLevelDialog = (type: string, value: {}, userList: []) => { - data.approveLevelDialog = true; - data.userList = userList; - nextTick(() => { - approveLevelFormRef.value.clearValidate(); - }); - if (type === '新增') { - data.title = '新增审批层级'; - data.approveLevelForm = { - id: null, - stepName: null, - stepSerial: null, - type: null, - auditType: null, - continueTime: null, - continueTimeUnit: null, - unitList: [], - itemList: [] - }; - } else { - data.title = '修改审批层级'; - data.approveLevelForm = JSON.parse(JSON.stringify(value)); - data.approveLevelForm.unitList = data.approveLevelForm.unitList.map((item) => { - return item.bindUid; - }) as []; - } - }; - - const openApproveActionDialog = (type: string, value: {}, index: number) => { - approveLevelFormRef.value.validate((valid: Boolean) => { - if (valid) { - approveItemDialogRef.value.showApproveItemDialog(type, value, index, data.approveLevelForm, data.standardList, data.actionList); - } else { - ElMessage({ - type: 'warning', - message: '请先完善审批层级信息,才能选择审批项' - }); - } - }); - }; - - const submitApproveLevel = async () => { - approveLevelFormRef.value.validate((valid: Boolean) => { - if (valid) { - data.approveLevelForm.unitList = data.approveLevelForm.unitList.map((item) => { - return { bindUid: item }; - }); - context.emit('addApprovalLevel', data.approveLevelForm, data.title); - data.approveLevelDialog = false; - } else { - ElMessage({ - type: 'warning', - message: '请完善审批层级基本信息' - }); - } - }); - }; - - const achieveApprovalItem = (value: {}, title: string, index: number) => { - if (title === '新增审批项') { - data.approveLevelForm.itemList.push(value); - } else { - data.approveLevelForm.itemList[index] = JSON.parse(JSON.stringify(value)); - } - }; - - const deleteApproveItem = async (index: number) => { - data.approveLevelForm.itemList.splice(index, 1); - }; - - //获取措施项 - const getActionData = async () => { - let res = await safetyActionApi().getAllSafetyActionList({ workType: null, type: null, context: null }); - if (res.data.code === '200') { - data.actionList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取标准 - const getStandardData = async () => { - let res = await approveBasicApi().getAllApproveBasicList({ ruleStandType: null, title: null }); - if (res.data.code === '200') { - data.standardList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const parseNumber = (value: number, type: string) => { - if (type === '审批项类型') { - return data.approveTypeList.find((item) => item.id === value)?.name; - } else if (type === '措施名称') { - return data.actionList.find((item) => item.id === value)?.context; - } else { - return data.standardList.find((item) => item.ruleStandId === value)?.title; - } - }; - - onMounted(() => { - getActionData(); - getStandardData(); - }); - - return { - ...toRefs(data), - parseNumber, - approveLevelFormRef, - approveItemDialogRef, - deleteApproveItem, - submitApproveLevel, - achieveApprovalItem, - showApproveLevelDialog, - openApproveActionDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/specialWorkSystem/flow/ruleofApp/components/approveRuleDialog.vue b/src/views/specialWorkSystem/flow/ruleofApp/components/approveRuleDialog.vue deleted file mode 100644 index 7880a01..0000000 --- a/src/views/specialWorkSystem/flow/ruleofApp/components/approveRuleDialog.vue +++ /dev/null @@ -1,526 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog v-model="ifShowApproveRuleDialog" :title="title" :close-on-click-modal="false"> - <el-form :model="approveRuleForm" label-width="120px" ref="approveRuleFormRef" :rules="approveRuleFormRules"> - <el-row> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="任务名称" prop="ruleName"> - <el-input v-model="approveRuleForm.ruleName" :disabled="!disabled" class="input-add" placeholder="请填写任务名称"> </el-input> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="部门名称" prop="depId"> - <el-cascader :disabled="!disabled" placeholder="请选择部门名称" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" clearable filterable class="input-add" v-model="approveRuleForm.depId"> </el-cascader> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px"> - <el-form-item label="作业类型" prop="workType"> - <el-select v-model="approveRuleForm.workType" @change="clearValue" :disabled="!disabled" placeholder="请选择作业类型" class="input-add"> - <el-option v-for="item in workTypeList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12" style="margin-bottom: 20px" v-if="approveRuleForm.workType === 3 || approveRuleForm.workType === 6 || approveRuleForm.workType === 8 || approveRuleForm.workType === 1"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="approveRuleForm.workLevel" :disabled="!disabled" placeholder="请选择作业等级" class="input-add"> - <el-option v-for="item in workLevelList" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> - </el-form-item> - </el-col> - - <el-col :span="24"> - <el-form-item label="创建审批链"> - <div style="width: 100%; margin-bottom: 20px" v-show="disabled"> - <el-button type="primary" :icon="Plus" size="default" @click="openApproveLevelDialog('新增', '')">新增审批层级</el-button> - </div> - <div style="width: 100%; margin-left: -30px"> - <div v-for="(item, index) in approveRuleForm.stepList" class="stepItem"> - <div class="stepNum">{{ index + 1 }}</div> - <div class="stepCard"> - <el-card class="box-card"> - <div class="text item"> - 层级名称:<span>{{ item.stepName }}</span> - </div> - <!-- <div class="text item">--> - <!-- 所属设备区域:<span>{{ item.regionId }}</span>--> - <!-- </div>--> - <div class="text item" v-for="i in typeList"> - <div v-if="i.id === item.type"> - 审批层级:<span>{{ i.name }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 关联RFID:<span>{{ item.rfidId }}</span>--> - <!-- </div>--> - <div class="text item"> - 审批人:<span>{{ - item.unitList - .map((item) => { - return userList.find((i) => i.uid === item.bindUid)?.realName; - }) - .join('、') - }}</span> - </div> - <!-- <div class="text item">--> - <!-- 巡检指标:<span>{{ item.quotaId }}</span>--> - <!-- </div>--> - <div class="text item" v-for="i in timeList"> - <div v-if="i.id === item.continueTimeUnit"> - 审批有效时长:<span>{{ item.continueTime }}</span> - <span>{{ i.name }}</span> - </div> - </div> - <!-- <div class="text item">--> - <!-- 数据填报类型:<span>{{ item.dataReportType }}</span>--> - <!-- </div>--> - <div class="text item"> - 审批项:<span>{{ - item.itemList - .map((item) => { - return item.itemName; - }) - .join('、') - }}</span> - </div> - </el-card> - </div> - <div v-show="disabled"> - <el-button type="primary" style="margin-left: 12px" size="default" @click="openApproveLevelDialog('修改', item)">修改</el-button> - <el-button type="danger" size="default" @click="deleteApproveLevel(index, item)">删除</el-button> - </div> - </div> - </div> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <div v-show="disabled" class="dialog-footer"> - <el-button type="warning" @click="ifShowApproveRuleDialog = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="submitApproveRule()" size="default">确认</el-button> - </div> - </template> - </el-dialog> - <approve-level-dialog ref="approveLevelDialogRef" @addApprovalLevel="achieveApprovalLevel"></approve-level-dialog> - </div> -</template> - -<script lang="ts"> -import { reactive, toRefs, ref } from 'vue'; -import { ElMessage } from 'element-plus/es'; -import { approveRuleApi } from '/@/api/specialWorkSystem/approveRule'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import approveLevelDialog from '/@/views/specialWorkSystem/flow/ruleofApp/components/approveLevelDialog.vue'; -interface dataState { - title: string; - pointTitle: string; - disabled: boolean; - ifShowApproveRuleDialog: boolean; - inspectPointForm: step; - approveRuleForm: { - id: number | null; - ruleName: number | null; - depId: number | null; - workType: number | null; - workLevel: number | null; - stepList: Array<step>; - }; - approveRuleFormRules: {}; - departmentList: []; - userList: []; - workTypeList: Array<type>; - timeList: Array<type>; - typeList: Array<type>; - workLevelList: Array<type>; -} - -interface type { - id: number; - name: string; -} -interface step { - id: number | null; - stepName: null; - stepSerial: number | null; - type: number | null; - continueTime: number | null; - continueTimeUnit: number | null; - unitList: []; - itemList: []; -} -export default { - name: 'approveRuleDialog', - components: { approveLevelDialog,Plus }, - setup(props: any, context: any) { - const approveRuleFormRef = ref(); - const approveLevelDialogRef = ref(); - const data = reactive<dataState>({ - title: '', - pointTitle: '', - disabled: true, - ifShowApproveRuleDialog: false, - inspectPointForm: { - id: null, - stepName: null, - stepSerial: null, - type: null, - continueTime: null, - continueTimeUnit: null, - unitList: [], - itemList: [] - }, - approveRuleForm: { - id: null, - ruleName: null, - depId: null, - workType: null, - workLevel: null, - stepList: [] - }, - approveRuleFormRules: { - ruleName: [{ required: true, message: '请填写规则名称', trigger: 'blur' }], - depId: [{ required: true, message: '请选择部门', trigger: 'change' }], - workLevel: [{ required: true, message: '请选择作业等级', trigger: 'change' }], - workType: [{ required: true, message: '请选择作业类型', trigger: 'cahnge' }] - }, - departmentList: [], - userList: [], - typeList: [ - { id: 1, name: '单人' }, - { id: 2, name: '多人' }, - { id: 3, name: '分析人' } - ], - timeList: [ - { id: 1, name: '日' }, - { id: 2, name: '时' }, - { id: 3, name: '分' } - ], - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ], - workLevelList: [] - }); - - const openApproveLevelDialog = (type: string, value: {}) => { - approveLevelDialogRef.value.showApproveLevelDialog(type, value, data.userList); - }; - - const achieveApprovalLevel = (value: step, title: string) => { - if (title === '新增审批层级') { - if (data.approveRuleForm.stepList.length === 0) { - value.stepSerial = 1; - data.approveRuleForm.stepList.push(value); - } else { - value.stepSerial = (data.approveRuleForm.stepList[data.approveRuleForm.stepList.length - 1]?.stepSerial as number) + 1; - data.approveRuleForm.stepList.push(value); - } - } else { - let result = data.approveRuleForm.stepList.findIndex((item) => item.stepSerial === value.stepSerial); - data.approveRuleForm.stepList[result] = JSON.parse(JSON.stringify(value)); - } - }; - - const showApproveRuleDialog = (type: string, value: { workType: number }, departmentList: [], userList: [], workTypeList: []) => { - data.ifShowApproveRuleDialog = true; - data.userList = userList; - data.workTypeList = workTypeList; - data.departmentList = departmentList; - if (type === '新增') { - data.disabled = true; - data.title = '新增审批规则'; - data.approveRuleForm = { - id: null, - ruleName: null, - depId: null, - workType: null, - workLevel: null, - stepList: [] - }; - } else if (type === '修改') { - data.disabled = true; - data.title = '修改审批规则'; - data.approveRuleForm = JSON.parse(JSON.stringify(value)); - setValue(value.workType); - } else { - data.disabled = false; - data.title = '查看审批规则'; - setValue(value.workType); - data.approveRuleForm = JSON.parse(JSON.stringify(value)); - } - }; - - const deleteApproveLevel = (index: number, item: any) => { - data.approveRuleForm.stepList.splice(index, 1); - }; - - const clearValue = () => { - if (data.approveRuleForm.workType === 1) { - data.approveRuleForm.workLevel = null; - data.workLevelList = [ - { id: 3, name: '特级动火作业' }, - { id: 1, name: '一级动火作业' }, - { id: 2, name: '二级动火作业' } - ]; - } else if (data.approveRuleForm.workType === 3) { - data.approveRuleForm.workLevel = null; - data.workLevelList = [ - { id: 8, name: '一级吊装作业' }, - { id: 9, name: '二级吊装作业' }, - { id: 10, name: '三级吊装作业' } - ]; - } else if (data.approveRuleForm.workType === 6) { - data.approveRuleForm.workLevel = null; - data.workLevelList = [ - { id: 7, name: '特级高处作业' }, - { id: 4, name: '一级高处作业' }, - { id: 5, name: '二级高处作业' }, - { id: 6, name: '三级高处作业' }, - ]; - } else if (data.approveRuleForm.workType === 8) { - data.approveRuleForm.workLevel = null; - data.workLevelList = [ - { id: 11, name: '抽盲板作业' }, - { id: 12, name: '堵盲板作业' } - ]; - } else { - data.approveRuleForm.workLevel = null; - data.workLevelList = []; - } - }; - - const setValue = (workType: number) => { - if (workType === 1) { - data.workLevelList = [ - { id: 3, name: '特级动火作业' }, - { id: 1, name: '一级动火作业' }, - { id: 2, name: '二级动火作业' }, - ]; - } else if (workType === 3) { - data.workLevelList = [ - { id: 8, name: '一级吊装作业' }, - { id: 9, name: '二级吊装作业' }, - { id: 10, name: '三级吊装作业' } - ]; - } else if (workType === 6) { - data.workLevelList = [ - { id: 7, name: '四级高处作业' }, - { id: 4, name: '一级高处作业' }, - { id: 5, name: '二级高处作业' }, - { id: 6, name: '三级高处作业' } - ]; - } else if (workType === 8) { - data.workLevelList = [ - { id: 11, name: '抽盲板作业' }, - { id: 12, name: '堵盲板作业' } - ]; - } else { - data.workLevelList = []; - } - }; - - const parseNumber = (type: string, value: number) => { - if (type === '时间单位') { - return data.timeList.find((item) => item.id === value)?.name; - } - }; - - const submitApproveRule = () => { - approveRuleFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (data.title === '新增审批规则') { - let res = await approveRuleApi().addApproveRule(data.approveRuleForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '审批规则新增成功', - duration: 2000 - }); - data.ifShowApproveRuleDialog = false; - context.emit('refreshApproveRule'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await approveRuleApi().modApproveRule(data.approveRuleForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '审批规则修改成功', - duration: 2000 - }); - data.ifShowApproveRuleDialog = false; - context.emit('refreshApproveRule'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(data), - Plus, - clearValue, - parseNumber, - approveLevelDialog, - approveRuleFormRef, - approveLevelDialogRef, - submitApproveRule, - achieveApprovalLevel, - openApproveLevelDialog, - showApproveRuleDialog, - deleteApproveLevel - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-date-editor) { - width: 100%; -} -</style> diff --git a/src/views/specialWorkSystem/flow/ruleofApp/index.vue b/src/views/specialWorkSystem/flow/ruleofApp/index.vue deleted file mode 100644 index 09bb87a..0000000 --- a/src/views/specialWorkSystem/flow/ruleofApp/index.vue +++ /dev/null @@ -1,477 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>规则名称:</span> - <el-input v-model="tableData.params.searchParams.ruleName" class="input-box" placeholder="规则名称"> </el-input> - </div> - <div class="basic-line"> - <span>部门:</span> - <el-cascader placeholder="部门名称" :options="departmentList" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" clearable filterable class="input-box" v-model="tableData.params.searchParams.depId"> </el-cascader> - </div> - <div class="basic-line"> - <span>作业类型:</span> - <el-select v-model="tableData.params.searchParams.workType" clearable filterable class="input-box" placeholder="作业类型"> - <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>作业等级:</span> - <el-select v-model="tableData.params.searchParams.workLevel" clearable filterable class="input-box" placeholder="作业等级"> - <el-option v-for="item in workLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div style="padding-bottom: 10px"> - <el-button type="primary" @click="getApproveRule">查询</el-button> - <el-button plain @click="reset">重置</el-button> - </div> - </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="openApproveRuleDialog('新增', {})">新增</el-button> - <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveRule" plain>批量删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" /> - </el-row> - <el-table ref="multipleTableRef" :data="tableData.approveRuleData" 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="ruleName" label="任务名称" /> - <el-table-column property="workType" label="作业类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.workType, '作业类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="workLevel" label="作业等级"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.workLevel, '作业等级') }} - </span> - </template> - </el-table-column> - <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="openApproveRuleDialog('查看', scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="openApproveRuleDialog('修改', scope.row)">修改</el-button> - <el-button link type="primary" style="color: red" size="small" :icon="Delete" @click="deleteApproveRule(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - </div> - <approve-rule-dialog ref="approveRuleDialogRef" @refreshApproveRule="getApproveRule"></approve-rule-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable, ElMessage, ElMessageBox } from 'element-plus'; -import approveRuleDialog from '/@/views/specialWorkSystem/flow/ruleofApp/components/approveRuleDialog.vue'; -import { departmentApi } from '/@/api/systemManage/department'; -import { approveRuleApi } from '/@/api/specialWorkSystem/approveRule/index'; -import { userApi } from '/@/api/systemManage/user'; - -interface stateType { - tableData: { - approveRuleData: []; - total: number; - loading: boolean; - params: { - pageIndex: number | null; - pageSize: number | null; - searchParams: { - ruleName: string | null; - depId: number | null; - workType: number | null; - workLevel: number | null; - }; - }; - }; - workTypeList: Array<type>; - departmentList: []; - userList: []; - workLevelList: Array<type>; - deleteList: { ids: Array<deleteType> }; - timeType: Array<type>; -} -interface deleteType { - ruleId: number; -} - -interface type { - id: number; - name: string; -} - -export default { - name: 'index', - components: { approveRuleDialog }, - setup() { - const approveRuleDialogRef = ref(); - const state = reactive<stateType>({ - tableData: { - approveRuleData: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - searchParams: { - ruleName: null, - depId: null, - workType: null, - workLevel: null - } - } - }, - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ], - workLevelList: [ - { id: 3, name: '特级动火作业' }, - { id: 1, name: '一级动火作业' }, - { id: 2, name: '二级动火作业' }, - { id: 7, name: '特级高处作业' }, - { id: 4, name: '一级高处作业' }, - { id: 5, name: '二级高处作业' }, - { id: 6, name: '三级高处作业' }, - { id: 8, name: '一级吊装作业' }, - { id: 9, name: '二级吊装作业' }, - { id: 10, name: '三级吊装作业' }, - { id: 11, name: '抽盲板作业' }, - { id: 12, name: '堵盲板作业' } - ], - departmentList: [], - userList: [], - deleteList: { ids: [] }, - timeType: [ - { id: 1, name: '分' }, - { id: 2, name: '小时' }, - { id: 3, name: '日' }, - { id: 4, name: '月' }, - { id: 5, name: '年' } - ] - }); - - //获取巡检任务数据 - const getApproveRule = async () => { - let res = await approveRuleApi().getApproveRuleList(state.tableData.params); - if (res.data.code === '200') { - state.tableData.approveRuleData = res.data.data; - state.tableData.total = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取部门 - const getDepartmentData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - //获取用户列表 - const getUserData = async () => { - let res = await userApi().getAllUser(); - if (res.data.code === '200') { - state.userList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 删除 - const deleteApproveRule = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该审批规则,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await approveRuleApi().deleteApproveRule({ ids: [row.id] }); - state.deleteList.ids = []; - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getApproveRule(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - // 批量删除 - const deleteMoreApproveRule = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除这些审批规则,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await approveRuleApi().deleteApproveRule(state.deleteList); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await getApproveRule(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const openApproveRuleDialog = (type: string, value: {}) => { - approveRuleDialogRef.value.showApproveRuleDialog(type, value, state.departmentList, state.userList, state.workTypeList); - }; - - const parseNumber = (value: number, type: string) => { - if (type === '作业类型') { - return state.workTypeList.find((item) => item.id === value)?.name; - } else if (type === '作业等级') { - return state.workLevelList.find((item) => item.id == value)?.name; - } else { - } - }; - - const handleSelectionChange = (val: Array<deleteType>) => { - state.deleteList.ids = val.map((item) => { - return item.ruleId; - }) as []; - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.tableData.params.pageSize = val; - getApproveRule(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.tableData.params.pageIndex = val; - getApproveRule(); - }; - - const reset = () => { - state.tableData.params = { - pageIndex: 1, - pageSize: 10, - searchParams: { - ruleName: null, - depId: null, - workType: null, - workLevel: null - } - }; - }; - - // 页面加载时 - onMounted(() => { - getApproveRule(); - getDepartmentData(); - getUserData(); - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - reset, - parseNumber, - deleteApproveRule, - getApproveRule, - deleteMoreApproveRule, - handleSelectionChange, - onHandleSizeChange, - onHandleCurrentChange, - approveRuleDialogRef, - openApproveRuleDialog, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/specialWorkSystem/foundationSet/goods/index.vue b/src/views/specialWorkSystem/foundationSet/goods/index.vue deleted file mode 100644 index ee1493b..0000000 --- a/src/views/specialWorkSystem/foundationSet/goods/index.vue +++ /dev/null @@ -1,989 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchType"> - <el-option - v-for="item in workTypeList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-col v-if="searchType==1" :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业等级:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchLevel"> - <el-option - v-for="item in fireLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-col v-if="searchType==3" :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业等级:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchLevel"> - <el-option - v-for="item in hoistLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-col v-if="searchType==6" :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业等级:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchLevel"> - <el-option - v-for="item in heightLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-col v-if="searchType==8" :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业等级:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchLevel"> - <el-option - v-for="item in plateLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">物资配置名称:</span> - <div class="grid-content topInfo"> - <el-input v-model="searchName"/> - </div> - </el-col> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="addRecordBtn">新增</el-button> - <!-- <el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>--> -<!-- <el-button type="danger" :icon="Delete" size="default" plain @click="deleteBatchBtn">删除</el-button>--> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> - </el-row> - <el-table ref="multipleTableRef" :data="tableData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange"> -<!-- <el-table-column type="selection" width="100" />--> - <el-table-column property="name" label="物资配置名称" align="center" :show-overflow-tooltip="true"/> - <el-table-column property="workType" label="关联作业类型" align="center" :formatter="toType" :show-overflow-tooltip="true"/> - <el-table-column property="workLevel" label="关联作业等级" align="center" :formatter="toLevel" :show-overflow-tooltip="true"/> - <el-table-column property="createUname" label="创建人" align="center"/> - <el-table-column property="gmtCreate" label="创建时间" align="center"/> -<!-- <el-table-column property="gmtModified" label="更新时间" align="center"/>--> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex" v-model:page-size="pageSize" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业物资标准" @close="clearList"> - <el-form :model="details" label-width="140px"> - <el-form-item label="作业物资标准名称"> - <el-input v-model="details.name" readonly /> - </el-form-item> - <el-form-item label="关联作业类型"> - <el-input v-model="details.workType" readonly /> - </el-form-item> - <el-form-item label="关联作业等级"> - <el-input v-model="details.workLevel" readonly /> - </el-form-item> - <el-form-item label="作业物资汇总"> - <div class="materials"> - <div class="maList" v-for="item in details.clList"> - <div>{{item.configurationLevelName}}</div> - <div> - <div v-if="item.mdList.length>0" v-for="i in item.mdList"> - {{i.materialName}}({{i.bigClassifyName }}):标准值:{{i.standVal }} - </div> - <div v-else> - 无 - </div> - </div> - </div> - </div> - </el-form-item> - <el-form-item label="描述"> - <el-input v-model="details.info" type="textarea" autosize readonly /> - </el-form-item> - <el-form-item label="创建人"> - <el-input v-model="details.createUname" readonly /> - </el-form-item> - <el-form-item label="创建时间"> - <el-input v-model="details.gmtCreate" readonly /> - </el-form-item> -<!-- <el-form-item label="更新时间">--> -<!-- <el-input v-model="details.gmtModified" readonly />--> -<!-- </el-form-item>--> - <el-form-item> - <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="作业物资标准编辑" @close="closeAdd" @open="openAdd" center> - <el-form :model="addRecord" label-width="150px" ref="addRef" :rules="addRules"> - <el-form-item label="作业物资标准名称" prop="name"> - <el-input v-model="addRecord.name"> </el-input> - </el-form-item> - <el-form-item label="关联作业类型" prop="workType"> - <el-select v-model="addRecord.workType" clearable filterable class="input-box" placeholder="关联作业类型"> - <el-option v-for="item in workTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option> - </el-select> - </el-form-item> - <el-form-item v-if="addRecord.workType == 1" label="关联作业等级" prop="workLevel"> - <el-select v-model="addRecord.workLevel"> - <el-option - v-for="item in fireLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - <el-form-item v-if="addRecord.workType == 3" label="关联作业等级" prop="workLevel"> - <el-select v-model="addRecord.workLevel"> - <el-option - v-for="item in hoistLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - <el-form-item v-if="addRecord.workType == 6" label="关联作业等级" prop="workLevel"> - <el-select v-model="addRecord.workLevel"> - <el-option - v-for="item in heightLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - <el-form-item v-if="addRecord.workType == 8" label="关联作业等级" prop="workLevel"> - <el-select v-model="addRecord.workLevel"> - <el-option - v-for="item in plateLevel" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - <el-form-item label="物资标准配置"> - <el-tabs tab-position="left" class="demo-tabs" type="border-card"> - <el-tab-pane v-for="(item,index) in allList" :label="item.materialClassifyName" :key="index"> - <div class="tab-i" v-if="item.childList && item.childList.length>0"> - <div v-for="(i,x) in item.childList" :key="x"> - <el-checkbox :label="i.materialClassifyName" v-model="checkData[index].childList[x].checked"> - </el-checkbox> - <el-form v-if="checkData[index].childList[x].checked" :model="checkData[index].childList[x]" label-width="100px" ref="addListRef" :rules="addListRules"> - <el-form-item label="配置级别" prop="configurationLevel"> - <el-select v-model="checkData[index].childList[x].configurationLevel"> - <el-option key="0" label="必选" :value="0"/> - <el-option key="1" label="可选" :value="1"/> - <el-option key="2" label="高配" :value="2"/> - </el-select> - </el-form-item> - <el-form-item label="标准值" prop="standVal"><el-input type="number" v-model.number="checkData[index].childList[x].standVal"/></el-form-item> - </el-form> - </div> - </div> - <div v-else>暂无物资配置数据</div> - </el-tab-pane> - </el-tabs> - <div v-if="chosenIndex != null" style="color: #79bbff">注:修改配置数据须重新填写配置</div> - </el-form-item> - <el-form-item label="描述" prop="info"> - <el-input v-model="addRecord.info" type="textarea" autosize :rows="2"/> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear"> - <span>您确定要删除该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> -<!-- <el-dialog v-model="deleteSetDialog" title="提示" width="30%" center>--> -<!-- <span>您确定要删除这些记录吗?</span>--> -<!-- <template #footer>--> -<!-- <span class="dialog-footer">--> -<!-- <el-button @click="deleteSetDialog = false" size="default">取消</el-button>--> -<!-- <el-button type="primary" @click="conFirmDeleteBatch" size="default">确认</el-button>--> -<!-- </span>--> -<!-- </template>--> -<!-- </el-dialog>--> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElMessage, ElTable } from 'element-plus' -import type { FormInstance, FormRules } from 'element-plus' -import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; -import { materialApi } from '/@/api/specialWorkSystem/material'; - -// 定义接口来定义对象的类型 -interface stateType { - tableData: Array<any>; - allList: Array<any>; - departmentList: Array<any>; - casProps: {}; - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - searchType: null | number; - searchLevel: null | number; - searchName: string; - totalSize: number; - checkData: Array<any>; - workTypeList: Array<any>; - workLevelList: Array<any>; - fireLevel: Array<any>; - hoistLevel: Array<any>; - heightLevel: Array<any>; - plateLevel: Array<any>; - mustList: Array<string>; - chooseList: Array<string>; - highList: Array<string>; - addRecord: { - - }; - details: { - - }; -} - -export default { - name: 'material', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - checkData: [], - chosenIndex: null, - searchType: null, - searchLevel: null, - searchName: '', - tableData: [], - allList: [], - departmentList: [], - mustList: [], - chooseList: [], - highList: [], - workTypeList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ], - workLevelList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ], - fireLevel: [ - { - label: "一级动火作业", - value: 1 - }, - { - label: "二级动火作业", - value: 2 - }, - { - label: "特级动火作业", - value: 3 - } - ], - hoistLevel: [ - { - label: "一级吊装作业", - value: 8 - }, - { - label: "二级吊装作业", - value: 9 - }, - { - label: "三级吊装作业", - value: 10 - } - ], - heightLevel: [ - { - label: "一级高处作业", - value: 4 - }, - { - label: "二级高处作业", - value: 5 - }, - { - label: "三级高处作业", - value: 6 - }, - { - label: "特级高处作业", - value: 7 - } - ], - plateLevel: [ - { - label: "抽盲板作业", - value: 11 - }, - { - label: "堵盲板作业", - value: 12 - } - ], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName' - }, - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - deleteDialog: false, - deleteSetDialog: false, - addRecord: { - - }, - details: { - - }, - deleteId: null, - deleteArr: [] - }); - interface User { - groupName: string; - department: number | null; - depId: number; - groupMembers: Array<any>; - groupInfo: string; - } - // const multipleTableRef = ref<InstanceType<typeof ElTable>>(); - // const toggleSelection = (rows?: User[]) => { - // if (rows) { - // rows.forEach((row) => { - // // TODO: improvement typing when refactor table - // // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // // @ts-expect-error - // multipleTableRef.value!.toggleRowSelection(row, undefined); - // }); - // } else { - // multipleTableRef.value!.clearSelection(); - // } - // }; - - // 多选 - // const handleSelectionChange = (val: User[]) => { - // state.multipleSelection = JSON.parse(JSON.stringify(val)); - // state.deleteArr = state.multipleSelection.map((item) => { - // item = item.id; - // return item; - // }); - // }; - - const addRef = ref<FormInstance>(); - const addListRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - const addListRules = reactive<FormRules>({ - standVal: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - configurationLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage() - }); - - const toType = (row, column, cellValue, index) => { - return state.workTypeList.find((item) => item.value === row.workType)?.label; - }; - - const toLevel = (row, column, cellValue, index) => { - if(row.workLevel == null){ - return '无' - }else{ - if(row.workLevel <= 3){ - return state.fireLevel.find((item) => item.value === row.workLevel)?.label; - }else if(row.workLevel>3 && row.workLevel<=7){ - return state.heightLevel.find((item) => item.value === row.workLevel)?.label; - }else if(row.workLevel>8 && row.workLevel<=10){ - return state.hoistLevel.find((item) => item.value === row.workLevel)?.label; - }else{ - return state.plateLevel.find((item) => item.value === row.workLevel)?.label; - } - } - }; - - const getList = async ()=>{ - let res = await materialApi().getRecordList(); - if (res.data.code === '200') { - state.allList = JSON.parse(JSON.stringify(res.data.data)) - for(let i in state.allList){ - state.allList[i].childList = state.allList[i].childList?.map((item:any) => { - const obj = { - checked: false, - materialClassifyName: item.materialClassifyName, - standVal: 0, - configurationLevel: null, - smallClassifyId: item.id - } - return {...obj} - }) - } - state.checkData = JSON.parse(JSON.stringify(state.allList)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - - // 分页获取物资标准列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.searchType, workLevel: state.searchLevel, name: state.searchName } }; - let res = await materialApi().getRecordPage(data); - if (res.data.code === '200') { - // state.tableData = res.data.data.map((item) => { - // if (!item.groupMembers || item.groupMembers == null) { - // item.groupMembers = []; - // } else { - // item.groupMembers = Array.from(item.groupMembers, ({ username }) => username); - // } - // return item; - // }); - state.tableData = res.data.data - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = res.data.data; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchType == null && state.searchLevel == null && state.searchName == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.searchType = null - state.searchLevel = null - state.searchName = '' - getListByPage(); - }; - - const addRecordBtn = () =>{ - getList() - state.dialogAddRecord = true - } - - // 添加方法 - const addRecord = async (data: any) => { - let res = await materialApi().addRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '添加成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 修改方法 - const editRecordBtn = async (index, row) => { - getList() - state.addRecord = JSON.parse(JSON.stringify(row)); - state.dialogAddRecord = true; - state.chosenIndex = index; - }; - - const editRecord = async (data: any) => { - let res = await materialApi().updateRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '修改成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - state.addRecord.materialDetailList = [] - for(let i in state.checkData){ - if(state.checkData[i].childList && state.checkData[i].childList.length>0){ - for(let j=0;j<state.checkData[i].childList.length;j++){ - if(state.checkData[i].childList[j].checked){ - // delete state.checkData[i].list[j].checked - // state.checkData[i].list[j].checked - let { checked,materialClassifyName,...checkObj } = state.checkData[i].childList[j] - state.addRecord.materialDetailList.push(checkObj) - } - } - } - } - const data = { - name: state.addRecord.name, - workType: state.addRecord.workType, - workLevel: state.addRecord.workLevel, - info: state.addRecord.info, - materialDetailList: state.addRecord.materialDetailList - }; - if(data.materialDetailList.length==0 || data.materialDetailList.some((e) => e.configurationLevel == null)){ - ElMessage({ - type: 'warning', - message: '请选择物资配置并完善必填数据' - }); - return - } - if(data.materialDetailList.some((e) => e.configurationLevel == 0 && e.standVal <= 0)){ - ElMessage({ - type: 'warning', - message: '必选物资标准值须大于0' - }); - return - } - if (state.chosenIndex == null) { - await addRecord(data); - } else { - data.id = state.addRecord.id; - await editRecord(data); - } - state.dialogAddRecord = false; - } else { - console.log('error submit!', fields); - } - }); - }; - - // 删除方法 - const deleteRecord = async (data: any) => { - let res = await materialApi().deleteRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '删除成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.id; - state.deleteDialog = true; - }; - - const conFirmDelete = () => { - deleteRecord({ id: state.deleteId }); - state.deleteDialog = false; - }; - - // 批量删除 - // const deleteBatchBtn = async () => { - // ElMessage({ - // type: 'warning', - // message: '抱歉,本页面暂不支持批量删除' - // }); - // if (state.deleteArr.length > 0) { - // state.deleteSetDialog = true - // } else { - // ElMessage({ - // type: 'warning', - // message: '请先选择要删除的记录' - // }); - // } - // }; - - // const conFirmDeleteBatch = async () => { - // let res = await teamManageApi().deletBatchRecord({ids: state.deleteArr}); - // if (res.data.code === '200') { - // state.deleteSetDialog = false - // ElMessage({ - // type: 'success', - // message: res.data.msg - // }); - // getListByPage() - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // state.deleteSetDialog = false - // } - // } - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.details.workType = toType(state.details) - state.details.workLevel = toLevel(state.details) - state.dialogDetails = true; - }; - - const clearList = ()=>{ - state.mustList = [] - state.chooseList = [] - state.highList = [] - } - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - const closeAdd = () => { - state.addRecord = {}; - state.chosenIndex = null; - }; - const openAdd = () => { - if (state.chosenIndex == null) { - state.addRecord.info = ''; - } - }; - const indexClear = () => { - state.deleteId = null; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - addRef, - addListRef, - addRules, - addListRules, - View, - Edit, - Delete, - Refresh, - Plus, - addRecordBtn, - toType, - toLevel, - searchRecord, - clearSearch, - viewRecord, - clearList, - deleteRecordBtn, - conFirmDelete, - getListByPage, - reLoadData, - deleteRecord, - handleSizeChange, - handleCurrentChange, - confirmAddRecord, - closeAdd, - openAdd, - indexClear, - editRecordBtn, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } -} -.materials{ - width: 100%; - border: 1px solid #ccc; - .maList{ - width: 100%; - display: flex; - align-items: center; - border-bottom: 1px solid #ccc; - &:last-of-type{ - border-bottom: none; - } - - &>div:first-of-type{ - width: 20%; - text-align: center; - margin-right: 20px; - padding: 5px 10px; - border-right: 1px solid #ccc; - } - &>div{ - height: 100%; - div{ - height: 100%; - line-height: 24px; - } - } - } -} - -.el-input { - width: 100% !important; -} -.el-date-editor::v-deep { - width: 100%; -} -.el-select { - width: 100% !important; -} -.el-tabs{ - width: 100%; -} -::v-deep(.el-date-editor){ - width: 100%; -} - -:deep(.el-cascader){ - width: 100% !important; -} - -.tab-i{ - margin-bottom: 20px; - - .el-form-item{ - margin-bottom: 20px; - } -} -</style> diff --git a/src/views/specialWorkSystem/foundationSet/safetyAction/components/safetyActionDialog.vue b/src/views/specialWorkSystem/foundationSet/safetyAction/components/safetyActionDialog.vue deleted file mode 100644 index 5f2fde5..0000000 --- a/src/views/specialWorkSystem/foundationSet/safetyAction/components/safetyActionDialog.vue +++ /dev/null @@ -1,221 +0,0 @@ -<template> - <div class="system-add-menu-container"> - <el-dialog :title="title" v-model="isShowSafetyActionDialog" width="600px" :close-on-click-modal="false"> - <el-form :model="safetyActionForm" :rules="safetyActionFormRules" ref="safetyActionFormRef" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="作业类型" prop="workType"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.workType" placeholder="请选择作业类型" filterable clearable> - <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></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="type"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.type" placeholder="请选择措施类型" clearable filterable> - <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col v-if="safetyActionForm.type === 1" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="正确值" prop="correctVal"> - <el-select class="input-add" :disabled="!disabled" v-model="safetyActionForm.correctVal" placeholder="请选择正确值" clearable filterable> - <el-option v-for="item in typeTwoList" :key="item.id" :label="item.name" :value="item.id"></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="context"> - <el-input class="input-add" :disabled="!disabled" :rows="3" v-model.trim="safetyActionForm.context" type="textarea" placeholder="请输入描述"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyActionForm.createUname"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="创建时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyActionForm.gmtCreate"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改人" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyActionForm.modifiedUname"></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-show="personTime"> - <el-form-item label="最后修改时间" prop="location"> - <el-input class="input-add" :disabled="!disabled" v-model.trim="safetyActionForm.gmtModified"></el-input> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> - <span class="dialog-footer" v-show="disabled"> - <el-button @click="isShowSafetyActionDialog = !isShowSafetyActionDialog" size="default">取 消</el-button> - <el-button type="primary" @click="submitSafetyAction" v-throttle size="default">确 定</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> -interface stateType { - isShowSafetyActionDialog: Boolean; - disabled: Boolean; - personTime: Boolean; - safetyActionForm: { - workType: number | null; - type: number | null; - correctVal: number | null; - context: string | null; - }; - title: string; - departmentList: []; - workTypeList: Array<levelListState>; - typeList: Array<levelListState>; - typeTwoList: Array<levelListState>; - safetyActionFormRules: {}; -} -interface levelListState { - id: number; - name: string; -} - -import { reactive, toRefs, ref } from 'vue'; -import { safetyActionApi } from '/@/api/specialWorkSystem/safetyAction'; -import { ElMessage } from 'element-plus'; -export default { - name: 'SafetyActionDialog', - setup(props: any, context: any) { - const safetyActionFormRef = ref(); - const state = reactive<stateType>({ - title: '', - disabled: false, - personTime: false, - departmentList: [], - isShowSafetyActionDialog: false, - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ], - typeList: [ - { id: 1, name: '选择' }, - { id: 2, name: '填空' } - ], - typeTwoList: [ - { id: 1, name: '是' }, - { id: 2, name: '否' } - ], - safetyActionForm: { - workType: null, - type: null, - correctVal: null, - context: null - }, - safetyActionFormRules: { - workType: [{ required: true, message: '请选择作业类型', trigger: 'change' }], - type: [{ required: true, message: '请选择措施类型', trigger: 'change' }], - correctVal: [{ required: true, message: '请选择正确值', trigger: 'change' }], - context: [{ required: true, message: '请填写措施内容', trigger: 'blur' }] - } - }); - - //打开模态框 - const showSafetyActionDialog = (type: string, value: object, department: []) => { - state.isShowSafetyActionDialog = true; - state.departmentList = department; - setTimeout(() => { - safetyActionFormRef.value.clearValidate(); - }); - if (type === '新增') { - state.disabled = true; - state.personTime = false; - state.title = '新增安全措施'; - state.safetyActionForm = { - workType: null, - type: null, - correctVal: null, - context: null - }; - } else if (type === '查看') { - state.disabled = false; - state.personTime = true; - state.title = '查看安全措施'; - state.safetyActionForm = JSON.parse(JSON.stringify(value)); - } else { - state.disabled = true; - state.personTime = false; - state.title = '修改安全措施'; - state.safetyActionForm = JSON.parse(JSON.stringify(value)); - // for (let i in state.SafetyActionForm) { - // state.SafetyActionForm[i] = SafetyActionForm[i]; - // } - } - }; - - //新增修改提交 - const submitSafetyAction = async () => { - safetyActionFormRef.value.validate(async (valid: Boolean) => { - if (valid) { - if (state.title === '新增安全措施') { - let res = await safetyActionApi().addSafetyAction(state.safetyActionForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '安全措施新增成功', - duration: 2000 - }); - state.isShowSafetyActionDialog = false; - context.emit('refreshSafetyAction'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } else { - let res = await safetyActionApi().modSafetyAction(state.safetyActionForm); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '安全措施改成功', - duration: 2000 - }); - state.isShowSafetyActionDialog = false; - context.emit('refreshSafetyAction'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - } else { - ElMessage({ - type: 'warning', - message: '请完善基本信息' - }); - } - }); - }; - - return { - ...toRefs(state), - safetyActionFormRef, - submitSafetyAction, - showSafetyActionDialog - }; - } -}; -</script> - -<style scoped></style> diff --git a/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue b/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue deleted file mode 100644 index daae169..0000000 --- a/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue +++ /dev/null @@ -1,453 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <div class="basic-line"> - <span>作业类型:</span> - <el-select v-model="tableData.params.searchParams.workType" clearable filterable class="input-box" placeholder="作业类型"> - <el-option v-for="item in workTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>措施类型:</span> - <el-select v-model="tableData.params.searchParams.type" clearable filterable class="input-box" placeholder="措施类型"> - <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </div> - <div class="basic-line"> - <span>措施内容:</span> - <el-input v-model.trim="tableData.params.searchParams.context" class="input-box" placeholder="措施内容"> </el-input> - </div> - <div style="padding-bottom: 10px"> - <el-button type="primary" @click="initSafetyAction">查询</el-button> - <el-button plain @click="reset">重置</el-button> - </div> - </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="openSafetyActionDialog('新增', {})">新增</el-button> - <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreSafetyAction" plain>批量删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" /> - </el-row> - <el-table ref="multipleTableRef" :data="tableData.safetyActionData" 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="workType" label="作业类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.workType, '作业类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="type" label="措施类型"> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.type, '措施类型') }} - </span> - </template> - </el-table-column> - <el-table-column property="context" label="措施内容" show-overflow-tooltip></el-table-column> - <el-table-column prop="correctVal" label="正确值" show-overflow-tooltip> - <template #default="scope"> - <span> - {{ parseNumber(scope.row.correctVal, '正确值') }} - </span> - </template> - </el-table-column> - <el-table-column prop="createUname" label="创建人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column> - <el-table-column prop="modifiedUname" label="最后修改人" show-overflow-tooltip></el-table-column> - <el-table-column prop="gmtModified" label="最后修改时间" show-overflow-tooltip></el-table-column> -<!-- <el-table-column property="status" label="状态" width="60" />--> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="openSafetyActionDialog('查看', scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="openSafetyActionDialog('修改', scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteSafetyAction(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <br /> - <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="tableData.params.pageIndex" background v-model:page-size="tableData.params.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" class="page-position"> </el-pagination> - </div> - </div> - </div> - <safety-action-dialog ref="safetyActionDialogRef" @refreshSafetyAction="initSafetyAction"></safety-action-dialog> - </div> -</template> - -<script lang="ts"> -import { toRefs, reactive, ref, onMounted } from 'vue'; -import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; -import { ElTable, ElMessage, ElMessageBox } from 'element-plus'; -import { safetyActionApi } from '/@/api/specialWorkSystem/safetyAction/index.ts'; -import { departmentApi } from '/@/api/systemManage/department'; -import safetyActionDialog from '/@/views/specialWorkSystem/foundationSet/safetyAction/components/safetyActionDialog.vue'; -let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined] -}; - -interface stateType { - tableData: { - safetyActionData: []; - total: number; - loading: boolean; - params: { - pageIndex: number | null; - pageSize: number | null; - searchParams: { - workType: number | null; - type: number | null; - context: string | null; - }; - }; - }; - workTypeList: Array<type>; - typeList: Array<type>; - typeTwoList: Array<type>; - deleteList: { - ids: Array<number>; - }; -} -interface type { - id: number; - name: string; -} -interface ruleType { - id: number; -} -export default { - name: 'index', - components: { safetyActionDialog }, - setup() { - const safetyActionDialogRef = ref(); - const state = reactive<stateType>({ - tableData: { - safetyActionData: [], - total: 0, - loading: false, - params: { - pageIndex: 1, - pageSize: 10, - searchParams: { - workType: null, - type: null, - context: null - } - } - }, - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ], - typeList: [ - { id: 1, name: '选择' }, - { id: 2, name: '填空' } - ], - typeTwoList: [ - { id: 1, name: '是' }, - { id: 2, name: '否' } - ], - deleteList: { - ids: [] - } - }); - - //获取巡检任务数据 - const initSafetyAction = async () => { - let res = await safetyActionApi().getSafetyActionList(state.tableData.params); - if (res.data.code === '200') { - state.tableData.safetyActionData = res.data.data; - state.tableData.total = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // //获取部门 - // const getDepartmentData = async () => { - // let res = await departmentApi().getDepartmentList(); - // if (res.data.code === '200') { - // state.departmentList = res.data.data; - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - - // 删除 - const deleteMoreSafetyAction = () => { - ElMessageBox.confirm(`此操作将永久删除该措施,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await safetyActionApi().deleteSafetyAction(state.deleteList); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initSafetyAction(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - // 删除 - const deleteSafetyAction = (row: any) => { - ElMessageBox.confirm(`此操作将永久删除该措施,是否继续?`, '提示', { - confirmButtonText: '确认', - cancelButtonText: '取消', - type: 'warning' - }) - .then(async () => { - let res = await safetyActionApi().deleteSafetyAction({ ids: [row.id] }); - if (res.data.code === '200') { - state.deleteList.ids = []; - ElMessage({ - type: 'success', - duration: 2000, - message: '删除成功' - }); - await initSafetyAction(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - .catch(() => {}); - }; - - const handleSelectionChange = (val: Array<ruleType>) => { - state.deleteList.ids = val.map((item) => { - return item.id; - }); - }; - - const openSafetyActionDialog = (type: string, value: {}) => { - safetyActionDialogRef.value.showSafetyActionDialog(type, value); - }; - - const parseNumber = (value: number, type: string) => { - if (type === '作业类型') { - return state.workTypeList.find((item) => item.id === value)?.name; - } else if (type === '正确值') { - return state.typeTwoList.find((item) => item.id == value)?.name; - } else { - return state.typeList.find((item) => item.id == value)?.name; - } - }; - - // 分页改变 - const onHandleSizeChange = (val: number) => { - state.tableData.params.pageSize = val; - initSafetyAction(); - }; - // 分页改变 - const onHandleCurrentChange = (val: number) => { - state.tableData.params.pageIndex = val; - initSafetyAction(); - }; - - const reset = () => { - state.tableData.params = { - pageIndex: 1, - pageSize: 10, - searchParams: { - workType: null, - type: null, - context: null - } - }; - }; - - // 页面加载时 - onMounted(() => { - initSafetyAction(); - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - reset, - parseNumber, - handleSelectionChange, - deleteSafetyAction, - deleteMoreSafetyAction, - initSafetyAction, - onHandleSizeChange, - onHandleCurrentChange, - safetyActionDialogRef, - openSafetyActionDialog, - ...toRefs(state) - }; - } -}; -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - 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; - } - } - } -} -.stepItem { - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type { - margin-top: 30px; - } - &:last-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 10px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header) { - padding: 10px 15px; - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - & > div:first-of-type { - margin-right: 80px; - font-size: 18px; - font-weight: bold; - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } -} -:deep(.el-textarea.is-disabled .el-textarea__inner) { - background-color: var(--el-card-bg-color); - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__inner) { - color: var(--el-input-text-color, var(--el-text-color-regular)); -} -:deep(.el-input.is-disabled .el-input__wrapper) { - background-color: var(--el-card-bg-color); -} -</style> diff --git a/src/views/specialWorkSystem/plan/appoint/index.vue b/src/views/specialWorkSystem/plan/appoint/index.vue deleted file mode 100644 index 809898b..0000000 --- a/src/views/specialWorkSystem/plan/appoint/index.vue +++ /dev/null @@ -1,616 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">申请部门:</span> - <div class="grid-content topInfo"> - <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/> - </div> - </el-col> - <el-col :span="6" style="display:flex;align-items: center;"> - <span style="white-space: nowrap;margin-left: 20px">预约日期:</span> - <div class="grid-content topInfo"> - <el-date-picker - v-model="searchDate" - type="date" - format="YYYY-MM-DD" value-format="YYYY-MM-DD" - /> - </div> - </el-col> - <el-button style="margin-left: 20px" type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> -<!-- <el-row class="cardTop">--> -<!-- <el-col :span="12" class="mainCardBtn">--> -<!-- <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>--> -<!-- </el-col>--> -<!-- <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/>--> -<!-- </el-row>--> - <el-table - :data="tableData" - style="width: 100%" - height="calc(100% - 48px)" - :header-cell-style="{background: '#fafafa'}" - > -<!-- <el-table-column type="selection" width="55" />--> - <el-table-column type="index" label="序号" width="80" /> - <el-table-column prop="applyDepName" align="center" label="申请部门"/> - <el-table-column prop="appointmentTime" align="center" label="预约时间"/> - <el-table-column prop="hotWork" align="center" label="动火作业"/> - <el-table-column prop="confinedSpaceOper" align="center" label="受限空间作业"/> - <el-table-column prop="liftingOper" align="center" label="吊装作业"/> - <el-table-column prop="groundBreakingOper" align="center" label="动土作业"/> - <el-table-column prop="openCircuitOper" align="center" label="断路作业"/> - <el-table-column prop="workAtHeight" align="center" label="高处作业" /> - <el-table-column prop="temporaryPowerOper" align="center" label="临时用电作业"/> - <el-table-column prop="blindPlatePluggingOper" align="center" label="盲板抽堵作业"/> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> -<!-- <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button>--> -<!-- <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button>--> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination - v-model:currentPage="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 15]" - small=false - background - layout="total, sizes, prev, pager, next, jumper" - :total="totalSize" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业预约"> - <el-form :model="details" label-width="120px"> - <el-form-item label="申请部门"> - <el-input - v-model="details.applyDepName" - readonly - /> - </el-form-item> - <el-form-item label="预约时间"> - <el-input - v-model="details.appointmentTime" - readonly - /> - </el-form-item> - <el-form-item label="动火作业"> - <el-input - v-model="details.hotWork" - readonly - /> - </el-form-item> - <el-form-item label="受限空间作业"> - <el-input - v-model="details.confinedSpaceOper" - readonly - /> - </el-form-item> - <el-form-item label="吊装作业"> - <el-input - v-model="details.liftingOper" - readonly - /> - </el-form-item> - <el-form-item label="动土作业"> - <el-input - v-model="details.groundBreakingOper" - readonly - /> - </el-form-item> - <el-form-item label="断路作业"> - <el-input - v-model="details.openCircuitOper" - readonly - /> - </el-form-item> - <el-form-item label="高处作业"> - <el-input - v-model="details.workAtHeight" - readonly - /> - </el-form-item> - <el-form-item label="临时用电作业"> - <el-input - v-model="details.temporaryPowerOper" - readonly - /> - </el-form-item> - <el-form-item label="盲板抽堵作业"> - <el-input - v-model="details.blindPlatePluggingOper" - readonly - /> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false">确认</el-button> - </span> - </template> - </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="applyDepId"> - <el-cascader :disabled = isDisabled v-model="addRecord.applyDepId" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - <el-form-item label="预约时间" prop="appointmentTime"> - <el-date-picker - v-model="addRecord.appointmentTime" - type="date" - format="YYYY-MM-DD" value-format="YYYY-MM-DD" - :disabled = isDisabled - /> - </el-form-item> - <el-form-item label="动火作业" prop="hotWork"> - <el-input - v-model="addRecord.hotWork" - /> - </el-form-item> - <el-form-item label="受限空间作业" prop="confinedSpaceOper"> - <el-input - v-model="addRecord.confinedSpaceOper" - /> - </el-form-item> - <el-form-item label="吊装作业" prop="liftingOper"> - <el-input - v-model="addRecord.liftingOper" - /> - </el-form-item> - <el-form-item label="动土作业" prop="groundBreakingOper"> - <el-input - v-model="addRecord.groundBreakingOper" - /> - </el-form-item> - <el-form-item label="断路作业" prop="openCircuitOper"> - <el-input - v-model="addRecord.openCircuitOper" - /> - </el-form-item> - <el-form-item label="高处作业" prop="workAtHeight"> - <el-input - v-model="addRecord.workAtHeight" - /> - </el-form-item> - <el-form-item label="临时用电作业" prop="temporaryPowerOper"> - <el-input - v-model="addRecord.temporaryPowerOper" - /> - </el-form-item> - <el-form-item label="盲板抽堵作业" prop="blindPlatePluggingOper"> - <el-input - v-model="addRecord.blindPlatePluggingOper" - /> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </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"> - import {toRefs, reactive, ref, onMounted, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable, ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workAppointApi } from '/@/api/specialWorkSystem/workPlan/workAppoint'; - import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: Array<any>; - departmentList: Array<any>; - casProps: {}; - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - searchDep: number | null; - searchDate: string; - isDisabled:boolean; - totalSize: number; - addRecord: { - - }; - details: { - - }; - workTypeList: Array<any> - } - - export default { - name: 'workReservation', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - chosenIndex: null, - searchDep: null, - searchDate: '', - isDisabled: false, - tableData: [], - departmentList: [], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName', - checkStrictly: true - }, - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - deleteDialog: false, - deleteSetDialog: false, - addRecord: {}, - details: {}, - deleteId: null, - deleteArr: [], - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - - const addRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - appointmentTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hotWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - groundBreakingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - blindPlatePluggingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - temporaryPowerOper : [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workAtHeight: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - openCircuitOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - liftingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - confinedSpaceOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage() - getAllDepartment() - }); - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 分页获取气体检测列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { applyDepId: state.searchDep, appointmentTime: state.searchDate } }; - let res = await workAppointApi().getAppointListPage(data); - if (res.data.code === '200') { - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchDep == null && state.searchDate == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.searchDep = null; - state.searchDate = ''; - getListByPage(); - }; - - // 添加记录方法 - const addRecord = async (data: any) => { - let res = await workAppointApi().addRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '添加成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 修改记录方法 - const editRecord = async (data: any) => { - let res = await workAppointApi().editRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '修改成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 点击修改 - const editRecordBtn = (index, row) => { - state.dialogAddRecord = true; - state.chosenIndex = index; - state.addRecord = JSON.parse(JSON.stringify(row)); - state.isDisabled = true - }; - - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - const data = { - applyDepId: state.addRecord.applyDepId, - appointmentTime: state.addRecord.appointmentTime, - hotWork: Number(state.addRecord.hotWork), - groundBreakingOper: Number(state.addRecord.groundBreakingOper), - blindPlatePluggingOper: Number(state.addRecord.blindPlatePluggingOper), - temporaryPowerOper: Number(state.addRecord.temporaryPowerOper), - workAtHeight: Number(state.addRecord.workAtHeight), - openCircuitOper: Number(state.addRecord.openCircuitOper), - liftingOper: Number(state.addRecord.liftingOper), - confinedSpaceOper: Number(state.addRecord.confinedSpaceOper), - }; - if (state.chosenIndex == null) { - await addRecord(data); - } else { - data.id = state.addRecord.id - await editRecord(data); - } - state.dialogAddRecord = false; - getListByPage(); - } else { - console.log('error submit!', fields); - } - }); - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.dialogDetails = true; - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - - // 删除方法 - const deleteRecord = async (data: any) => { - let res = await workAppointApi().deleteRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '删除成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.id; - state.deleteDialog = true; - }; - - const conFirmDelete = () => { - deleteRecord({ id: state.deleteId }); - state.deleteDialog = false; - }; - - - const closeAdd = () => { - state.addRecord = {}; - state.chosenIndex = null; - state.isDisabled = false - }; - - const indexClear = () => { - state.deleteId = null; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - addRef, - addRules, - View, - Edit, - Delete, - Refresh, - Plus, - Search, - searchRecord, - clearSearch, - viewRecord, - editRecordBtn, - deleteRecordBtn, - conFirmDelete, - getListByPage, - reLoadData, - handleSizeChange, - handleCurrentChange, - confirmAddRecord, - closeAdd, - indexClear, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .red{ - color: red; - } - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - ::v-deep(.el-date-editor){ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } -</style> diff --git a/src/views/specialWorkSystem/plan/reservation/index.vue b/src/views/specialWorkSystem/plan/reservation/index.vue deleted file mode 100644 index ae30465..0000000 --- a/src/views/specialWorkSystem/plan/reservation/index.vue +++ /dev/null @@ -1,632 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> -<!-- <el-col :span="6" style="display:flex;align-items: center">--> -<!-- <span style="white-space: nowrap">申请部门:</span>--> -<!-- <div class="grid-content topInfo">--> -<!-- <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>--> -<!-- </div>--> -<!-- </el-col>--> - <el-col :span="6" style="display:flex;align-items: center;"> - <span style="white-space: nowrap;margin-left: 20px">预约日期:</span> - <div class="grid-content topInfo"> - <el-date-picker - v-model="searchDate" - type="date" - format="YYYY-MM-DD" value-format="YYYY-MM-DD" - /> - </div> - </el-col> - <el-button style="margin-left: 20px" type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/> - </el-row> - <el-table - :data="tableData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{background: '#fafafa'}" - > -<!-- <el-table-column type="selection" width="55" />--> - <el-table-column type="index" label="序号" width="80" /> - <el-table-column prop="applyDepName" align="center" label="申请部门"/> - <el-table-column prop="appointmentTime" align="center" label="预约时间"/> - <el-table-column prop="hotWork" align="center" label="动火作业"/> - <el-table-column prop="confinedSpaceOper" align="center" label="受限空间作业"/> - <el-table-column prop="liftingOper" align="center" label="吊装作业"/> - <el-table-column prop="groundBreakingOper" align="center" label="动土作业"/> - <el-table-column prop="openCircuitOper" align="center" label="断路作业"/> - <el-table-column prop="workAtHeight" align="center" label="高处作业" /> - <el-table-column prop="temporaryPowerOper" align="center" label="临时用电作业"/> - <el-table-column prop="blindPlatePluggingOper" align="center" label="盲板抽堵作业"/> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecordBtn(scope.$index, scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination - v-model:currentPage="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 15]" - small=false - background - layout="total, sizes, prev, pager, next, jumper" - :total="totalSize" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业预约"> - <el-form :model="details" label-width="120px"> - <el-form-item label="申请部门"> - <el-input - v-model="details.applyDepName" - readonly - /> - </el-form-item> - <el-form-item label="预约时间"> - <el-input - v-model="details.appointmentTime" - readonly - /> - </el-form-item> - <el-form-item label="动火作业"> - <el-input - v-model="details.hotWork" - readonly - /> - </el-form-item> - <el-form-item label="受限空间作业"> - <el-input - v-model="details.confinedSpaceOper" - readonly - /> - </el-form-item> - <el-form-item label="吊装作业"> - <el-input - v-model="details.liftingOper" - readonly - /> - </el-form-item> - <el-form-item label="动土作业"> - <el-input - v-model="details.groundBreakingOper" - readonly - /> - </el-form-item> - <el-form-item label="断路作业"> - <el-input - v-model="details.openCircuitOper" - readonly - /> - </el-form-item> - <el-form-item label="高处作业"> - <el-input - v-model="details.workAtHeight" - readonly - /> - </el-form-item> - <el-form-item label="临时用电作业"> - <el-input - v-model="details.temporaryPowerOper" - readonly - /> - </el-form-item> - <el-form-item label="盲板抽堵作业"> - <el-input - v-model="details.blindPlatePluggingOper" - readonly - /> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false">确认</el-button> - </span> - </template> - </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="applyDepId">--> -<!-- <el-cascader placeholder="若选择部门非本人所在部门,则记录不会出现在该页面" :disabled = isDisabled v-model="addRecord.applyDepId" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" />--> -<!-- </el-form-item>--> - <el-form-item label="预约时间" prop="appointmentTime"> - <el-date-picker - v-model="addRecord.appointmentTime" - type="date" - format="YYYY-MM-DD" value-format="YYYY-MM-DD" - :disabled = isDisabled - placeholder="请选择预约时间段" - /> - </el-form-item> - <el-form-item label="动火作业" prop="hotWork"> - <el-input - v-model="addRecord.hotWork" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="受限空间作业" prop="confinedSpaceOper"> - <el-input - v-model="addRecord.confinedSpaceOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="吊装作业" prop="liftingOper"> - <el-input - v-model="addRecord.liftingOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="动土作业" prop="groundBreakingOper"> - <el-input - v-model="addRecord.groundBreakingOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="断路作业" prop="openCircuitOper"> - <el-input - v-model="addRecord.openCircuitOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="高处作业" prop="workAtHeight"> - <el-input - v-model="addRecord.workAtHeight" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="临时用电作业" prop="temporaryPowerOper"> - <el-input - v-model="addRecord.temporaryPowerOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - <el-form-item label="盲板抽堵作业" prop="blindPlatePluggingOper"> - <el-input - v-model="addRecord.blindPlatePluggingOper" - type="number" - placeholder="预约数量(没有则为0)" - /> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </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"> - import {toRefs, reactive, ref, onMounted, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable, ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workReserveApi } from '/@/api/specialWorkSystem/workPlan/workReservation'; - import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: Array<any>; - departmentList: Array<any>; - casProps: {}; - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - searchDep: number | null; - searchDate: string; - isDisabled:boolean; - totalSize: number; - addRecord: { - - }; - details: { - - }; - workTypeList: Array<any> - } - - export default { - name: 'workReservation', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - chosenIndex: null, - searchDep: null, - searchDate: '', - isDisabled: false, - tableData: [], - departmentList: [], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName', - checkStrictly: true - }, - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - deleteDialog: false, - deleteSetDialog: false, - addRecord: {}, - details: {}, - deleteId: null, - deleteArr: [], - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - - const addRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - appointmentTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hotWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - groundBreakingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - blindPlatePluggingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - temporaryPowerOper : [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workAtHeight: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - openCircuitOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - liftingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - confinedSpaceOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage() - getAllDepartment() - }); - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 分页获取气体检测列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { applyDepId: state.searchDep, appointmentTime: state.searchDate } }; - let res = await workReserveApi().getReserveListPage(data); - if (res.data.code === '200') { - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchDep == null && state.searchDate == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.searchDep = null; - state.searchDate = ''; - getListByPage(); - }; - - // 添加记录方法 - const addRecord = async (data: any) => { - let res = await workReserveApi().addRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '添加成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 修改记录方法 - const editRecord = async (data: any) => { - let res = await workReserveApi().editRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '修改成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 点击修改 - const editRecordBtn = (index, row) => { - state.dialogAddRecord = true; - state.chosenIndex = index; - state.addRecord = JSON.parse(JSON.stringify(row)); - state.isDisabled = true - }; - - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - const data = { - applyDepId: state.addRecord.applyDepId, - appointmentTime: state.addRecord.appointmentTime, - hotWork: Number(state.addRecord.hotWork), - groundBreakingOper: Number(state.addRecord.groundBreakingOper), - blindPlatePluggingOper: Number(state.addRecord.blindPlatePluggingOper), - temporaryPowerOper: Number(state.addRecord.temporaryPowerOper), - workAtHeight: Number(state.addRecord.workAtHeight), - openCircuitOper: Number(state.addRecord.openCircuitOper), - liftingOper: Number(state.addRecord.liftingOper), - confinedSpaceOper: Number(state.addRecord.confinedSpaceOper), - }; - if (state.chosenIndex == null) { - await addRecord(data); - } else { - data.id = state.addRecord.id - await editRecord(data); - } - state.dialogAddRecord = false; - getListByPage(); - } else { - console.log('error submit!', fields); - } - }); - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.dialogDetails = true; - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - - // 删除方法 - const deleteRecord = async (data: any) => { - let res = await workReserveApi().deleteRecord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '删除成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.id; - state.deleteDialog = true; - }; - - const conFirmDelete = () => { - deleteRecord({ id: state.deleteId }); - state.deleteDialog = false; - }; - - - const closeAdd = () => { - state.addRecord = {}; - state.chosenIndex = null; - state.isDisabled = false - }; - - const indexClear = () => { - state.deleteId = null; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - addRef, - addRules, - View, - Edit, - Delete, - Refresh, - Plus, - Search, - searchRecord, - clearSearch, - viewRecord, - editRecordBtn, - deleteRecordBtn, - conFirmDelete, - getListByPage, - reLoadData, - handleSizeChange, - handleCurrentChange, - confirmAddRecord, - closeAdd, - indexClear, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .red{ - color: red; - } - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - ::v-deep(.el-date-editor){ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } -</style> diff --git a/src/views/specialWorkSystem/plan/sumReserve/index.vue b/src/views/specialWorkSystem/plan/sumReserve/index.vue deleted file mode 100644 index 32f8d2b..0000000 --- a/src/views/specialWorkSystem/plan/sumReserve/index.vue +++ /dev/null @@ -1,436 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="8" style="display:flex;align-items: center"> - <span style="white-space: nowrap">选择时间段:</span> - <div class="grid-content topInfo"> - <el-date-picker - v-model="searchDates" - type="daterange" - unlink-panels - range-separator="至" - start-placeholder="开始日期" - end-placeholder="结束日期" - value-format="YYYY-MM-DD" - :shortcuts="shortcuts" - /> - </div> - </el-col> - <el-button style="margin-left: 20px" type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div :id="chartName" style="width: 100%;height: 100%"></div> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, ref, onMounted, defineAsyncComponent, nextTick} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable, ElMessage, ElMessageBox } from 'element-plus' - import { workAppointApi } from '/@/api/specialWorkSystem/workPlan/workAppoint'; - import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; - import * as echarts from "echarts"; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: [], - departmentList: Array<any>, - hotCount: Array<any>, - confinedSpaceCount: Array<any>, - liftingCount: Array<any>, - groundBreakingCount: Array<any>, - openCircuitCout: Array<any>, - heightCount: Array<any>, - temporaryPowerCount: Array<any>, - blindPlatePluggingCount: Array<any>, - searchDates: Array<any>, - startTime: String, - endTime: String - } - - export default { - name: 'workReservation', - components: {}, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - tableData: [], - departmentList: [], - hotCount: [], - confinedSpaceCount: [], - liftingCount: [], - groundBreakingCount: [], - openCircuitCout: [], - heightCount: [], - temporaryPowerCount: [], - blindPlatePluggingCount: [], - searchDates: [], - startTime: '', - endTime: '' - }); - const chartName = ref("eChart" + Date.now() + Math.random()) - const shortcuts = [ - { - text: '上周', - value: () => { - const end = new Date() - const start = new Date() - start.setTime(start.getTime() - 3600 * 1000 * 24 * 7) - return [start, end] - }, - }, - { - text: '上个月', - value: () => { - const end = new Date() - const start = new Date() - start.setTime(start.getTime() - 3600 * 1000 * 24 * 30) - return [start, end] - }, - }, - { - text: '上个季度', - value: () => { - const end = new Date() - const start = new Date() - start.setTime(start.getTime() - 3600 * 1000 * 24 * 90) - return [start, end] - }, - }, - ] - - // 页面载入时执行方法 - onMounted(() => { - getListByPage() - // getAllDepartment() - }); - - // 获取列表 - const getListByPage = async () => { - const data = { startTime: state.searchDates[0], endTime: state.searchDates[1] }; - let res = await workAppointApi().getAllRecords(data); - if (res.data.code === '200') { - if(JSON.parse(JSON.stringify(res.data.data)).length>0){ - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - state.departmentList = Array.from(state.tableData, ({ applyDepName }) => applyDepName); - state.hotCount = Array.from(state.tableData, ({ hotCount }) => hotCount); - state.confinedSpaceCount = Array.from(state.tableData, ({ confinedSpaceCount }) => confinedSpaceCount); - state.liftingCount = Array.from(state.tableData, ({ liftingCount }) => liftingCount); - state.groundBreakingCount = Array.from(state.tableData, ({ groundBreakingCount }) => groundBreakingCount); - state.openCircuitCout = Array.from(state.tableData, ({ openCircuitCout }) => openCircuitCout); - state.heightCount = Array.from(state.tableData, ({ heightCount }) => heightCount); - state.temporaryPowerCount = Array.from(state.tableData, ({ temporaryPowerCount }) => temporaryPowerCount); - state.blindPlatePluggingCount = Array.from(state.tableData, ({ blindPlatePluggingCount }) => blindPlatePluggingCount); - initCharts() - }else{ - ElMessage({ - type: 'warning', - message: '该时段暂无数据' - }); - } - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const initCharts =()=>{ - let dom = document.getElementById(chartName.value); - let myChart = echarts.init(dom); - - type EChartsOption = echarts.EChartsOption - let option: EChartsOption; - - option = { - tooltip: { - trigger: 'axis', - // axisPointer: { - // type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow' - // }, - axisPointer: { - type: "cross", - label: { - formatter: function (params) { - if (params.seriesData.length === 0) { - window.mouseCurValue = params.value; - } - } - } - }, - formatter: function (params) { - let res = "", sum = 0; - for (let i = 0; i < params.length; i++) { - let series = params[i]; - sum += Number(series.data); - if (sum >= window.mouseCurValue) { - res = series.axisValue + "<br/>" + series.marker + series.seriesName + ":" + series.data + "<br/>"; - break; - } - } - return res; - }, - }, - legend: {}, - grid: { - left: '3%', - right: '3%', - bottom: '3%', - containLabel: true - }, - xAxis: { - type: 'value' - }, - yAxis: { - type: 'category', - data: state.departmentList - }, - series: [ - { - name: '动火作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.hotCount - }, - { - name: '受限空间作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.confinedSpaceCount - }, - { - name: '吊装作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.liftingCount - }, - { - name: '动土作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.groundBreakingCount - }, - { - name: '断路作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.openCircuitCout - }, - { - name: '高处作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.heightCount - }, - { - name: '临时用电作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.temporaryPowerCount - }, - { - name: '盲板抽堵作业', - type: 'bar', - stack: 'total', - label: { - show: true - }, - emphasis: { - focus: 'series' - }, - data: state.blindPlatePluggingCount - } - ] - }; - - option && myChart.setOption(option); - - window.addEventListener("resize",function (){ - myChart.resize(); - }); - } - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchDates == []) { - ElMessage({ - type: 'warning', - message: '请选择时间段' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.searchDates = []; - getListByPage(); - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - View, - Edit, - Delete, - Refresh, - Plus, - Search, - shortcuts, - chartName, - searchRecord, - clearSearch, - getListByPage, - reLoadData, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .red{ - color: red; - } - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - ::v-deep(.el-date-editor){ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } -</style> diff --git a/src/views/specialWorkSystem/process/components/dialogPermitNo.vue b/src/views/specialWorkSystem/process/components/dialogPermitNo.vue deleted file mode 100644 index 9738408..0000000 --- a/src/views/specialWorkSystem/process/components/dialogPermitNo.vue +++ /dev/null @@ -1,225 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="8" style="display:flex;align-items: center"> - <div class="grid-content topInfo"> - <el-input v-model="searchNo" placeholder="请输入作业证编号"></el-input> - </div> - </el-col> - <el-col :span="8" style="display:flex;align-items: center"> - <div class="grid-content topInfo"> - <el-select v-model="workType" placeholder="请选择作业类型"> - <el-option - v-for="item in workTypeList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </div> - </el-col> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-table - :data="tableData" - ref="singleTableRef" - highlight-current-row - style="width: 100%" - @current-change="handleCurrentChange" - :header-cell-style="{background: '#fafafa'}" - > - <el-table-column type="index" label="序号" width="80"/> - <el-table-column property="workPermitNo" label="作业证编号"/> - <el-table-column property="workTypeDesc" label="作业类型"/> - </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="totalSize"--> -<!-- @size-change="handleSizeChange"--> -<!-- @current-change="handleCurrentChange"--> -<!-- />--> -<!-- </div>--> - </div> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage,ElTable } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import {workProcessApi} from "/@/api/specialWorkSystem/workProcess"; - - - interface stateType { - workPermitNo: string - searchNo: string - workType: number - } - export default defineComponent({ - name: 'permitNo', - components: {}, - props:[], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const currentRow = ref() - const singleTableRef = ref<InstanceType<typeof ElTable>>() - const state = reactive<stateType>({ - workPermitNo: '', - searchNo: '', - workType: null, - tableData: [], - workTypeList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ] - }); - const handleCurrentChange = (val: User | undefined) => { - currentRow.value = val - state.workPermitNo = currentRow.value.workPermitNo - } - // 获取作业编号列表 - const getAllReport = async (data)=>{ - const res = await workProcessApi().postReportList({workPermitNo: state.searchNo,workType: state.workType}) - if (res.data.code === '200') { - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchNo == ''&& state.workType == null) { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getAllReport(); - } - }; - - const clearSearch = async () => { - state.searchNo = ''; - state.workType = null; - getAllReport(); - }; - // 页面载入时执行方法 - onMounted(() => { - getAllReport() - }); - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - currentRow, - singleTableRef, - searchRecord, - clearSearch, - handleCurrentChange, - Search, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/process/qtjcfx/index.vue b/src/views/specialWorkSystem/process/qtjcfx/index.vue deleted file mode 100644 index 6ef38e0..0000000 --- a/src/views/specialWorkSystem/process/qtjcfx/index.vue +++ /dev/null @@ -1,511 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业证编号:</span> - <div class="grid-content topInfo"> - <el-input v-model="workPermitNo" placeholder="请输入作业证编号"></el-input> - </div> - </el-col> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="workType" placeholder="请选择作业类型"> - <el-option - v-for="item in workTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/> - </el-row> - <el-table - :data="tableData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{background: '#fafafa'}" - > - <el-table-column type="index" label="序号" width="80"/> - <el-table-column property="workPermitNo" label="作业证编号"/> - <el-table-column property="workTypeDesc" label="作业类型"/> - <el-table-column property="combustible" label="可燃气%"/> -<!-- <el-table-column property="combustible" label="可燃气%">--> -<!-- <template #default="scope">--> -<!-- <span :class="scope.row.combustible > 0 ? 'red': ''">{{ scope.row.combustible }}</span>--> -<!-- </template>--> -<!-- </el-table-column>--> - <el-table-column property="oxygen" label="氧气%"/> - <el-table-column property="carbonMonoxide" label="一氧化碳ppm"/> - <el-table-column property="hydrogenSulfide" label="硫化氢ppm"/> - <el-table-column property="info" label="描述" show-overflow-tooltip width="200"/> - <el-table-column property="operatorUname" label="分析人"/> - <el-table-column property="operationTime" label="分析时间" align="center" width="180"/> - <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> - </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="totalSize" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="检测记录"> - <el-form :model="details" label-width="120px"> - <el-form-item label="作业证编号"> - <el-input v-model="details.workPermitNo" readonly/> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly/> - </el-form-item> - <el-form-item label="可燃气%"> - <el-input v-model="details.combustible" readonly/> - </el-form-item> - <el-form-item label="氧气%"> - <el-input v-model="details.oxygen" readonly/> - </el-form-item> - <el-form-item label="一氧化碳ppm"> - <el-input v-model="details.carbonMonoxide" readonly/> - </el-form-item> - <el-form-item label="硫化氢ppm"> - <el-input v-model="details.hydrogenSulfide" readonly/> - </el-form-item> - <el-form-item label="描述"> - <el-input v-model="details.info" type="textarea" readonly/> - </el-form-item> - <el-form-item label="分析人"> - <el-input v-model="details.operatorUname" readonly/> - </el-form-item> - <el-form-item label="分析时间"> - <el-input v-model="details.operationTime" readonly/> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="新增" @close="closeAdd" @open="openAdd"> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="作业证编号" prop="workPermitNo"> - <el-input v-model="addRecord.workPermitNo" placeholder="作业编号须为已审批作业的编号,可点击右方按钮查询"> - <template #append> - <el-button :icon="Search" @click="dialogPermitNo = true"/> - </template> - </el-input> - </el-form-item> - <el-form-item label="作业类型" prop="workType"> - <el-select v-model="addRecord.workType"> - <el-option - v-for="item in workTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="可燃气%" prop="combustible"> - <el-input v-model="addRecord.combustible"/> - </el-form-item> - <el-form-item label="氧气%" prop="oxygen"> - <el-input v-model="addRecord.oxygen"/> - </el-form-item> - <el-form-item label="一氧化碳ppm" prop="carbonMonoxide"> - <el-input v-model="addRecord.carbonMonoxide"/> - </el-form-item> - <el-form-item label="硫化氢ppm" prop="hydrogenSulfide"> - <el-input v-model="addRecord.hydrogenSulfide"/> - </el-form-item> - <el-form-item label="描述" prop="info"> - <el-input v-model="addRecord.info" type="textarea"> </el-input> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogPermitNo" title="选择相应的作业编号"> - <permit-no ref="permitNoInfo"></permit-no> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogPermitNo = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmPermitNo" size="default">确认</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, ref, onMounted, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable, ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workProcessApi } from '/@/api/specialWorkSystem/workProcess'; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: Array<any>; - departmentList: Array<any>; - department:string; - workerList: Array<string>; - casProps: {}; - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - dialogPermitNo: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - workPermitNo: string; - workType: number | null; - totalSize: number; - addRecord: { - - }; - details: { - - }; - workTypeList: Array<any> - } - - export default { - name: 'gasCheck', - components: { - permitNo: defineAsyncComponent(() => import('/@/views/specialWorkSystem/process/components/dialogPermitNo.vue')) - }, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const permitNoInfo = ref() - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - chosenIndex: null, - workPermitNo: '', - workType: null, - tableData: [], - departmentList: [], - department: '', - workerList: [], - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName' - }, - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - dialogPermitNo: false, - deleteDialog: false, - deleteSetDialog: false, - addRecord: { - - }, - details: { - - }, - deleteId: null, - deleteArr: [], - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - - const addRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - workPermitNo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - combustible: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - oxygen: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - carbonMonoxide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hydrogenSulfide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - info: [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage() - }); - - // 分页获取气体检测列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.workType, workPermitNo: state.workPermitNo } }; - let res = await workProcessApi().getDetectionListPage(data); - if (res.data.code === '200') { - state.tableData = JSON.parse(JSON.stringify(res.data.data)) - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const confirmPermitNo = ()=>{ - if(permitNoInfo.value.workPermitNo == ''){ - ElMessage({ - type: 'warning', - message: '请选择相应的作业编码' - }); - }else{ - state.addRecord.workPermitNo = permitNoInfo.value.workPermitNo - state.dialogPermitNo = false - } - } - - // 关键词查询记录 - const searchRecord = async () => { - if (state.workPermitNo == ''&& state.workType == null) { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.workPermitNo = ''; - state.workType = null; - getListByPage(); - }; - - // 添加气体检测方法 - const addRecord = async (data: any) => { - let res = await workProcessApi().postDetectionReport(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '添加成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - const data = { - workPermitNo: state.addRecord.workPermitNo, - info: state.addRecord.info, - combustible: Number(state.addRecord.combustible), - oxygen: Number(state.addRecord.oxygen), - carbonMonoxide: Number(state.addRecord.carbonMonoxide), - hydrogenSulfide: Number(state.addRecord.hydrogenSulfide), - source: 2, - }; - await addRecord(data); - state.dialogAddRecord = false; - getListByPage(); - } else { - console.log('error submit!', fields); - } - }); - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.dialogDetails = true; - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - const closeAdd = () => { - state.addRecord = {}; - state.chosenIndex = null; - }; - - const openAdd = () => { - if (state.chosenIndex == null) { - state.addRecord.info = ''; - } - }; - const indexClear = () => { - state.deleteId = null; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - addRef, - addRules, - View, - Edit, - Delete, - Refresh, - Plus, - Search, - permitNoInfo, - confirmPermitNo, - searchRecord, - clearSearch, - viewRecord, - getListByPage, - reLoadData, - handleSizeChange, - handleCurrentChange, - confirmAddRecord, - closeAdd, - openAdd, - indexClear, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .red{ - color: red; - } - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> diff --git a/src/views/specialWorkSystem/process/zyjcgl/index.vue b/src/views/specialWorkSystem/process/zyjcgl/index.vue deleted file mode 100644 index 7398d60..0000000 --- a/src/views/specialWorkSystem/process/zyjcgl/index.vue +++ /dev/null @@ -1,632 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业证编号:</span> - <div class="grid-content topInfo"> - <el-input v-model="workPermitNo" placeholder="请输入作业证编号"></el-input> - </div> - </el-col> - <el-col :span="6" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="workType" placeholder="请选择作业类型"> - <el-option - v-for="item in workTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/> - </el-row> - <el-table - :data="tableData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{background: '#fafafa'}" - > - <el-table-column type="index" label="序号" width="80" align="center"/> - <el-table-column property="workPermitNo" label="作业证编号" align="center"/> - <el-table-column property="workTypeDesc" label="作业类型" align="center"/> - <el-table-column property="checkContent" label="检查内容" align="center"/> - <el-table-column property="checkResultDesc" label="检查结果" align="center"> - <template #default="scope"> - <span :class="scope.row.checkResultDesc == '异常' ? 'red': ''">{{ scope.row.checkResultDesc}}</span> - </template> - </el-table-column> - <el-table-column property="info" label="描述" show-overflow-tooltip width="200" align="center"/> - <el-table-column property="operatorUname" label="分析人" align="center"/> - <el-table-column property="operationTime" label="分析时间" width="180" align="center"/> - <el-table-column property="mcResultName" label="物资检查" width="180" align="center"> - <template #default="scope"> - <span :class="scope.row.mcResultName == '不合格' ? 'red': ''">{{ scope.row.mcResultName== null?'-':scope.row.mcResultName}}</span> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="100"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</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="totalSize" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="检查记录"> - <el-form :model="details" label-width="120px"> - <el-form-item label="作业证编号"> - <el-input v-model="details.workPermitNo" readonly/> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly/> - </el-form-item> - <el-form-item label="检查内容"> - <el-input v-model="details.checkContent" readonly/> - </el-form-item> - <el-form-item label="检查结果"> - <el-input :class="details.checkResultDesc == '异常' ? 'red': ''" v-model="details.checkResultDesc" readonly/> - </el-form-item> - <el-form-item label="现场图片" v-if="details.imagePaths && details.imagePaths.length>0"> - <el-image v-for="item in details.imagePaths" :preview-src-list="details.imagePaths" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="描述"> - <el-input v-model="details.info" type="textarea" readonly/> - </el-form-item> - <el-form-item label="分析人"> - <el-input v-model="details.operatorUname" readonly/> - </el-form-item> - <el-form-item label="分析时间"> - <el-input v-model="details.operationTime" readonly/> - </el-form-item> - <el-form-item label="物资检查"> - <span>{{details.mcResultName== null?'-':details.mcResultName}}</span> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="新增" @close="closeAdd" @open="openAdd"> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="作业证编号" prop="workPermitNo"> - <el-input v-model="addRecord.workPermitNo" placeholder="作业编号须为已审批作业的编号,可点击右方按钮查询"> - <template #append> - <el-button :icon="Search" @click="dialogPermitNo = true"/> - </template> - </el-input> - </el-form-item> - <el-form-item label="作业类型" prop="workType"> - <el-select v-model="addRecord.workType"> - <el-option - v-for="item in workTypeList" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </el-form-item> - <el-form-item label="检查内容" prop="checkContent"> - <el-input v-model="addRecord.checkContent"> </el-input> - </el-form-item> - <el-form-item label="检查结果" prop="checkResult"> - <el-select v-model="addRecord.checkResult"> - <el-option label="正常" value="1"/> - <el-option label="异常" value="2"/> - </el-select> - </el-form-item> - <el-form-item label="现场照片" prop="imagePaths"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div> - </template> - </el-upload> - </el-form-item> - <el-form-item label="描述" prop="info"> - <el-input v-model="addRecord.info" type="textarea"> </el-input> - </el-form-item> - </el-form> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogVisible"> - <img w-full :src="dialogImageUrl" alt="Preview Image" /> - </el-dialog> - <el-dialog v-model="dialogPermitNo" title="选择相应的作业编号"> - <permit-no ref="permitNoInfo"></permit-no> - <template #footer> - <span class="dialog-footer"> - <el-button type="warning" @click="dialogPermitNo = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmPermitNo" size="default">确认</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, ref, onMounted, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import { useUserInfo } from '/@/stores/userInfo'; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'; - import { ElTable, ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; - import { workProcessApi } from '/@/api/specialWorkSystem/workProcess'; - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import axios from 'axios'; - - // 定义接口来定义对象的类型 - interface stateType { - tableData: Array<any>; - imgLimit: number; - fileList: Array<file>, - uploadUrl: string, - isOverSize: Boolean, - dialogVisible: Boolean, - dialogImageUrl: string | null, - multipleSelection: Array<any>; - deleteArr: Array<any>; - dialogDetails: boolean; - dialogAddRecord: boolean; - dialogPermitNo: boolean; - deleteDialog: boolean; - deleteSetDialog: boolean; - pageIndex: number; - pageSize: number; - chosenIndex: null | number; - deleteId: null | number; - workPermitNo: string; - workType: number | null; - totalSize: number; - addRecord: {}; - details: {}; - workTypeList: Array<any> - } - interface file { - url: string; - } - export default { - name: 'analysis', - components: { - permitNo: defineAsyncComponent(() => import('/@/views/specialWorkSystem/process/components/dialogPermitNo.vue')) - }, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const permitNoInfo = ref() - const state = reactive<stateType>({ - pageIndex: 1, - pageSize: 10, - totalSize: 0, - chosenIndex: null, - workPermitNo: '', - workType: null, - isOverSize: false, - fileList: [], - imgLimit: 3, - uploadUrl: '', - dialogVisible: false, - dialogImageUrl: null, - tableData: [], - multipleSelection: [], - dialogDetails: false, - dialogAddRecord: false, - dialogPermitNo: false, - deleteDialog: false, - deleteSetDialog: false, - addRecord: { - workPermitNo: '', - checkContent: '', - checkResult: '', - info: '', - source: 2, - imagePaths: [] - }, - details: {}, - deleteId: null, - deleteArr: [], - workTypeList: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - - const addRef = ref<FormInstance>(); - const addRules = reactive<FormRules>({ - workPermitNo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - checkContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - checkResult: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - imagePaths: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - info: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - }); - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - }); - - // 分页获取作业检查列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.workType, workPermitNo: state.workPermitNo } }; - let res = await workProcessApi().getCheckListPage(data); - if (res.data.code === '200') { - state.tableData = res.data.data - state.totalSize = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 图片上传 - const showTip =()=>{ - ElMessage({ - type: 'warning', - message: '超出文件上传数量' - }); - } - const confirmPermitNo = ()=>{ - if(permitNoInfo.value.workPermitNo == ''){ - ElMessage({ - type: 'warning', - message: '请选择相应的作业编码' - }); - }else{ - state.addRecord.workPermitNo = permitNoInfo.value.workPermitNo - state.dialogPermitNo = false - } - } - const handlePreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile); - }; - - const handlePictureCardPreview = (uploadFile: { url: string }) => { - state.dialogImageUrl = uploadFile.url!; - state.dialogVisible = true; - }; - - const getUploadUrl = async (rawFile: any) => { - const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' - if(fileSize === '0'){ - ElMessage({ - type: 'warning', - message: '文件大小不能超过500k。' - }); - state.isOverSize = true - return false - }else{ - const res = await workApplyApi().getUploadUrl(rawFile.name); - state.addRecord.imagePaths.push(res.data.data.fileName) - state.uploadUrl = res.data.data.uploadUrl; - console.log(state.addRecord.imagePaths,state.uploadUrl,6666666666666) - } - }; - - const upload = async (params: any) => { - // const formData = new FormData(); - // formData.append('file', state.fileList[0].raw); - let reader = new FileReader(); - reader.readAsArrayBuffer(params.file); - reader.onload = async () => { - axios - .put(state.uploadUrl, reader.result, { - header: { 'Content-Type': 'multipart/form-data' } - }) - .then(() => { - // if (state.fileList.length === 2) { - // state.fileList.splice(0, 1); - // } - // console.log(state.form.workDetail.photos,'photos') - }); - }; - }; - - const beforeRemove = (file: {}, fileList: []) => { - const result = new Promise((resolve, reject) => { - if(!state.isOverSize){ - ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => { - // console.log(state.workDetail.photos,'path') - const list = JSON.parse(JSON.stringify(state.addRecord.imagePaths)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.addRecord.photos.splice(index,1) - // 请求删除接口 - deletePic(false,list[index]) - } - }) - }) - .catch(() => { - reject(false); - }); - }else{ - const list = JSON.parse(JSON.stringify(state.addRecord.imagePaths)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.addRecord.photos.splice(index,1) - deletePic(true,list[index]) - } - }) - state.isOverSize = false - } - }); - return result; - }; - - // 删除图片接口 - const deletePic = async(isOverSize:boolean,fileName:string)=>{ - const res = await workApplyApi().deleteFile({fileName: fileName}) - if (res.data.code === '200') { - ElMessage({ - type: isOverSize ? 'error' : 'success', - message: isOverSize ? '上传失败':'删除成功!' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - - - // 关键词查询记录 - const searchRecord = async () => { - if (state.workPermitNo == ''&& state.workType == null) { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - - const clearSearch = async () => { - state.workPermitNo = ''; - state.workType = null; - getListByPage(); - }; - - - // 添加气体检测方法 - const addRecord = async (data: any) => { - let res = await workProcessApi().postCheckReport(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '添加成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - - // 新增修改记录 - const confirmAddRecord = async (formEl: FormInstance | undefined) => { - if (!formEl) return; - await formEl.validate(async (valid, fields) => { - if (valid) { - await addRecord(state.addRecord); - state.dialogAddRecord = false; - getListByPage(); - } else { - console.log('error submit!', fields); - } - }); - }; - - const handleSizeChange = (val: number) => { - state.pageSize = val; - getListByPage(); - }; - const handleCurrentChange = (val: number) => { - state.pageIndex = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row) => { - state.details = JSON.parse(JSON.stringify(row)); - state.dialogDetails = true; - }; - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - const closeAdd = () => { - state.addRecord = {}; - state.chosenIndex = null; - }; - - const openAdd = () => { - if (state.chosenIndex == null) { - state.addRecord.info = ''; - } - }; - const indexClear = () => { - state.deleteId = null; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - return { - addRef, - addRules, - View, - Edit, - Delete, - Refresh, - Plus, - Search, - permitNoInfo, - showTip, - confirmPermitNo, - handlePreview, - handlePictureCardPreview, - getUploadUrl, - upload, - beforeRemove, - searchRecord, - clearSearch, - viewRecord, - getListByPage, - reLoadData, - handleSizeChange, - handleCurrentChange, - confirmAddRecord, - closeAdd, - openAdd, - indexClear, - ...toRefs(state) - }; - } - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .red{ - color: red; - - ::v-deep(input){ - color: red; - } - } - .home-container { - height: calc(100vh - 144px); - 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 { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue deleted file mode 100644 index dcb6adc..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue +++ /dev/null @@ -1,152 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位ID"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="断路原因"> - <el-input v-model="details.workDetail.bcReason" readonly type="textarea" /> - </el-form-item> - <el-form-item label="断路地段说明"> - <el-input v-model="details.workDetail.bcExplain" readonly type="textarea" /> - </el-form-item> - <el-form-item label="涉及相关部门"> - <el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/> - </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.bcPath" :preview-src-list="details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue deleted file mode 100644 index ed30241..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue +++ /dev/null @@ -1,137 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业方式"> - <el-input v-model="details.workDetail.hotMethod" readonly type="textarea" /> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'fire', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue deleted file mode 100644 index 244330e..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue +++ /dev/null @@ -1,152 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="范围"> - <el-input v-model="details.workDetail.gbScope" readonly type="textarea" /> - </el-form-item> - <el-form-item label="动土方式"> - <el-input v-model="details.workDetail.gbMethod" readonly type="textarea" /> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.gbPath" :preview-src-list="details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue deleted file mode 100644 index 0fb8a7a..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue +++ /dev/null @@ -1,146 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位ID"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业高度"> - <el-input v-model="details.workDetail.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue deleted file mode 100644 index 3b4dc2a..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue +++ /dev/null @@ -1,146 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="吊装工具名称"> - <el-input v-model="details.workDetail.hoistingToolName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="起吊物体重量"> - <el-input v-model="details.workDetail.weightMass" readonly type="textarea"><template #append>吨(t)</template></el-input> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue deleted file mode 100644 index f307fc0..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue +++ /dev/null @@ -1,170 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="盲板编号"> - <el-input v-model="details.workDetail.bpCode" readonly type="textarea" /> - </el-form-item> - <el-form-item label="主要介质"> - <el-input v-model="details.workDetail.mainMedia" readonly type="textarea" /> - </el-form-item> - <el-form-item label="温度"> - <el-input v-model="details.workDetail.temperature" readonly type="textarea"><template #append>摄氏度(℃)</template></el-input> - </el-form-item> - <el-form-item label="压力"> - <el-input v-model="details.workDetail.pressure" readonly type="textarea"><template #append>千帕(kPa)</template></el-input> - </el-form-item> - <el-form-item label="盲板材质"> - <el-input v-model="details.workDetail.bpMaterialQuality" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板规格"> - <el-input v-model="details.workDetail.bpSpecification" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板位置"> - <el-input v-model="details.workDetail.bpLocation" readonly type="textarea"/> - </el-form-item> - <el-form-item label="装盲板时间"> - <el-input v-model="details.workDetail.installBpTime" readonly/> - </el-form-item> - <el-form-item label="拆盲板时间"> - <el-input v-model="details.workDetail.uninstallBpTime" readonly/> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板位置图"> - <el-image v-for="item in details.workDetail.bpLocationMapPath" :preview-src-list="details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue deleted file mode 100644 index f3c893c..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="电源接入点"> - <el-input v-model="details.workDetail.powerAccessPoint" readonly type="textarea" /> - </el-form-item> - <el-form-item label="工作电压"> - <el-input v-model="details.workDetail.workingVoltage" readonly type="textarea"><template #append>伏特(v)</template></el-input> - </el-form-item> - <el-form-item label="用电设备及功率"> - <el-input v-model="details.workDetail.equipmentAndPower" readonly type="textarea" /> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue b/src/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue deleted file mode 100644 index d9feabc..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="受限空间所属单位"> - <el-input v-model="details.workDetail.csDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="受限空间名称"> - <el-input v-model="details.workDetail.csName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="空间原有介质名称"> - <el-input v-model="details.workDetail.csOriginalName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> -<!-- <el-form-item label="当前层级">--> -<!-- <el-input v-model="details.stepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="上一层级">--> -<!-- <el-input v-model="details.preStepId" readonly />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="下一层级">--> -<!-- <el-input v-model="details.nextStepId" readonly />--> -<!-- </el-form-item>--> - <el-form-item label="层级审批类型"> - <el-input v-model="details.stepTypeDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepSerial && details.stepSerial!=null" label="层级排序号"> - <el-input v-model="details.stepSerial" readonly /> - </el-form-item> - <el-form-item v-if="details.stepStartApprovalTime && details.stepStartApprovalTime!=null" label="层级预期开始审批时间"> - <el-input v-model="details.stepStartApprovalTime" readonly /> - </el-form-item> - <el-form-item v-if="details.stepFinishApprovalTime && details.stepFinishApprovalTime!=null" label="层级预期结束审批时间"> - <el-input v-model="details.stepFinishApprovalTime" readonly /> - </el-form-item> - <el-form-item label="审批人姓名"> - <el-input v-model="details.unitApprovalUname" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalStartTime && details.unitApprovalStartTime!=null" label="单元审批开始时间"> - <el-input v-model="details.unitApprovalStartTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitApprovalEndTime && details.unitApprovalEndTime!=null" label="单元审批结束时间"> - <el-input v-model="details.unitApprovalEndTime" readonly /> - </el-form-item> - <el-form-item v-if="details.unitResultDesc && details.unitResultDesc!=null" label="单元审批结果"> - <el-input v-model="details.unitResultDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.statusDesc && details.statusDesc!=null" label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - <el-form-item v-if="details.stepApprovalResultDesc && details.stepApprovalResultDesc!=null" label="审批结果"> - <el-input v-model="details.stepApprovalResultDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsp/index.vue b/src/views/specialWorkSystem/workTicket/wdsp/index.vue deleted file mode 100644 index 84dfa62..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsp/index.vue +++ /dev/null @@ -1,815 +0,0 @@ -<template> - <div class="home-container"> -<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">--> -<!-- <el-tab-pane label="申请中" name="1">--> - <div style="height: 100%"> - <el-row class="homeCard"> - <span>作业类型:</span> - <el-col :span="10"> - <div class="grid-content topInfo"> - <el-select v-model="searchWord"> - <el-option - v-for="item in workType" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </div> - </el-col> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button> - <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>--> - <!-- <el-button type="success" size="default">设置分类</el-button>--> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> - </el-row> - <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="applyUname" label="申请人" /> - <el-table-column property="depName" label="部门名称" /> - <el-table-column property="operators" label="作业人" /> - <el-table-column property="workTypeDesc" label="作业类型" /> - <el-table-column property="workLevelDesc" label="作业等级" /> - <el-table-column property="applyTime" label="申请时间" width="180" /> - <el-table-column label="审批状态" align="center" width="180"> - <template #default="scope"> - <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button> -<!-- <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">终止</el-button>--> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业审批详情" center> - <fire v-if="dialogType == 1" :details = details></fire> - <space v-else-if="dialogType == 2" :details = details></space> - <hoist v-else-if="dialogType == 3" :details = details></hoist> - <ground v-else-if="dialogType == 4" :details = details></ground> - <broken v-else-if="dialogType == 5" :details = details></broken> - <height v-else-if="dialogType == 6" :details = details></height> - <power v-else-if="dialogType == 7" :details = details></power> - <plate v-else :details = details></plate> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false" - >确认</el-button - > - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogStatus" title="作业审批进度" center width="60%"> - <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> - <el-form-item label="申请作业人"> - <el-input v-model="approveInfo.operators" readonly type="textarea" /> - </el-form-item> - </el-form> - <div style="display: flex; flex-direction: column-reverse"> - <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem"> - <div class="stepNum">{{ item.stepSerial }}</div> - <div class="stepCard"> - <el-card class="box-card" shadow="always"> - <div class="text"> - 审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span> - </div> - <div class="text"> - 审批层级:<span class="bold-text">{{ item.typeDesc }}</span> - </div> - <div class="text" v-if="item.auditTypeDesc"> - 审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span> - </div> - <div class="text" v-show="item.startApprovalTime != null"> - 开始时间:<span>{{ item.startApprovalTime }}</span> - </div> - <div class="approveUnit"> - <div class="item-tit"><span>审批人</span><span>审批状态</span></div> - <div class="item-cont" v-for="i in item.stepUnits"> - <span>{{ i.approvalUname }}</span - ><span>{{ i.resultDesc }}</span> - </div> - </div> - <div class="approveItem"> - <div class="item-tit"> - <span>审批项目</span> -<!-- <span>类型</span>--> - <div>措施标准</div> - </div> - <div class="item-cont" v-for="i in item.stepItems"> - <span>{{ i.itemName }}</span> -<!-- <span>{{ i.typeDesc }}</span>--> - <div v-if="i.measure !== null"> - <div> - <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span> - </div> - <div> - <span>措施内容:</span><span>{{ i.measure.context }}</span> - </div> - </div> - <div v-if="i.stand !== null"> - <div> - <span>标题名称:</span><span>{{ i.stand.title }}</span> - </div> - <div> - <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span> - </div> - </div> - </div> - </div> - <div class="text" v-show="item.expFinishApprovalTime != null"> - 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> - </div> - <div class="text" v-show="item.finishApprovalTime != null"> - 结束时间:<span>{{ item.finishApprovalTime }}</span> - </div> - </el-card> - </div> - </div> - </div> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear"> - <span>您确定要终止该条审批吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="已通过" name="2">--> -<!-- <div style="height: 100%">--> -<!-- <el-row class="homeCard">--> -<!-- <el-col :span="8">--> -<!-- <div class="grid-content topInfo">--> -<!-- <el-input v-model="searchWord" placeholder="作业证名称"></el-input>--> -<!-- <el-button type="primary">查询</el-button>--> -<!-- <el-button plain>重置</el-button>--> -<!-- </div>--> -<!-- </el-col>--> -<!-- </el-row>--> -<!-- <div class="homeCard">--> -<!-- <div class="main-card">--> -<!-- <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">--> -<!-- <el-table-column type="selection" width="55" />--> -<!-- <el-table-column type="index" label="编号" width="200" />--> -<!-- <el-table-column property="level" label="作业证等级" width="180" sortable />--> -<!-- <el-table-column property="applyDate" label="申请日期" sortable />--> -<!-- <el-table-column property="name" label="申请人" width="180" />--> -<!-- <el-table-column property="department" label="申请部门" width="180" />--> -<!-- <el-table-column label="申请状态" width="180">--> -<!-- <template #default="scope">--> -<!-- <el-tag type="success">{{ scope.row.status }}</el-tag>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- </el-table>--> -<!-- <div class="pageBtn">--> -<!-- <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </el-tab-pane>--> -<!-- </el-tabs>--> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { useRouter } from 'vue-router'; -import { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { workApprovalApi } from '/@/api/specialWorkSystem/workApproval'; -import type { TabsPaneContext } from 'element-plus'; -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; - -// 定义接口来定义对象的类型 -interface stateType { - applyData: Array<string>; - workTimeList: Array<string>; - multipleSelection: Array<any>; - deleteArr: Array<any>; - approveInfo: Object; - dialogDetails: boolean; - dialogStatus: boolean; - deleteDialog: boolean; - pageIndex1: number; - pageSize1: number; - chosenIndex: null | number; - deleteId: null | number; - searchWord: string; - totalSize1: number; - activeName: string; - addRecord: {}; - details: {}; - statusInfo: {}; - workType: Array<type>; - dialogType: number | null; - departmentList: Array<any>; - departmentRecursionList: Array<DepartmentState>; -} -interface type { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; -} -export default defineComponent({ - name: 'myApproval', - components: { - fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/fireLog.vue')), - space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/spaceLog.vue')), - hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/hoistLog.vue')), - ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/groundLog.vue')), - broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/brokenLog.vue')), - height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/heightLog.vue')), - power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/powerLog.vue')), - plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsp/components/plateLog.vue')) - }, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex1: 1, - pageSize1: 10, - totalSize1: 0, - dialogType: null, - activeName: '1', - departmentList: [], - departmentRecursionList: [], - chosenIndex: null, - searchWord: '', - applyData: [], - workTimeList: [], - multipleSelection: [], - approveInfo: { - approvalSteps: [], - operators: [] - }, - dialogDetails: false, - dialogStatus: false, - deleteDialog: false, - addRecord: {}, - details: {}, - statusInfo: {}, - deleteId: null, - deleteArr: [], - workType: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - interface User { - name: string; - list: []; - info: string; - } - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - // 填写表单 - const toApply = () => { - router.push({ - path: 'zysq' - }); - }; - - const handleClick = (tab: TabsPaneContext, event: Event) => { - console.log(tab, event); - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 获取层级审批数据 - // const getApprovalData = async (id) => { - // let res = await workApprovalApi().getApprovalData({workApplyId: id}); - // if (res.data.code === '200') { - // console.log(res.data.data,'层级数据') - // // state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - // // recursion(state.departmentList); - // } else { - // ElMessage({ - // type: 'warning', - // message: res.data.msg - // }); - // } - // }; - - const recursion = (value: any) => { - for (let i of value) { - if (i.children.length !== 0) { - state.departmentRecursionList.push(i); - recursion(i.children); - } else { - state.departmentRecursionList.push(i); - } - } - }; - - // 分页获取工作时间组列表 - const getListByPage = async () => { - const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; - let res = await workApprovalApi().getApprovalListPage(data); - if (res.data.code === '200') { - state.applyData = JSON.parse(JSON.stringify(res.data.data)); - state.applyData = state.applyData.map((item) => { - if (item.operators == null || item.operators == []) { - item.operators = []; - } else { - item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); - } - return item; - }); - state.totalSize1 = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchWord == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - // 重置搜索 - const clearSearch = async () => { - state.searchWord = ''; - getListByPage(); - }; - - // 查看进度 - const viewStatus = (row) => { - getStatus({ workApplyId: row.workApplyId }); - state.dialogStatus = true; - }; - - // 查询进度方法 - const getStatus = async (data: any) => { - let res = await workApprovalApi().getApprovalStatus(data); - if (res.data.code === '200') { - state.approveInfo = JSON.parse(JSON.stringify(res.data.data)); - state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname); - console.log(state.approveInfo, '我的审批'); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.workApplyId; - state.deleteDialog = true; - }; - - // 取消申请方法 - const deleteRecord = async (data: any) => { - let res = await workApprovalApi().postAbord(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '取消成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const conFirmDelete = () => { - deleteRecord({ workApplyId: state.deleteId }); - state.deleteDialog = false; - }; - - const handleSizeChange1 = (val: number) => { - state.pageSize1 = val; - getListByPage(); - }; - const handleCurrentChange1 = (val: number) => { - state.pageIndex1 = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row: any) => { - state.dialogType = row.workType - state.details = JSON.parse(JSON.stringify(row)); - console.log(state.details,'details') - // getApprovalData(state.details.workApplyId) - if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ - state.details.workDetail.otherSpecialWork=[] - } - else { - console.log(state.details.workDetail.otherSpecialWork,'split') - const a = state.details.workDetail.otherSpecialWork - state.details.workDetail.otherSpecialWork = a.split(',').map((item) => { - return state.workType.find((i: { id: number }) => i.id === Number(item))?.name; - }); - } - if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){ - state.details.workDetail.involvedDepIds=[] - } - else { - const a = state.details.workDetail.involvedDepIds - state.details.workDetail.involvedDepIds = a.split(',').map((item) => { - return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName; - }); - } - if(state.details.workDetail.csDepId){ - state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName; - } - if(state.details.workDetail.operationDepId){ - state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName; - } - if(state.details.workDetail.gbPath){ - state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',') - } - if(state.details.workDetail.bcPath){ - state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',') - } - if(state.details.workDetail.bpLocationMapPath){ - state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',') - } - state.dialogDetails = true; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - getAllDepartment() - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - Finished, - reLoadData, - toApply, - handleClick, - searchRecord, - clearSearch, - viewRecord, - viewStatus, - deleteRecordBtn, - conFirmDelete, - getListByPage, - handleSizeChange1, - handleCurrentChange1, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .demo-tabs { - width: 100%; - height: 100%; - - &::v-deep(.el-tabs__content) { - height: calc(100% - 60px); - } - - .el-tab-pane { - height: 100%; - } - } - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn { - margin: 0; - } - } - .pageBtn { - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type { - height: calc(100% - 100px); - } - } - .stepItem { - display: flex; - align-items: flex-start; - margin-top: 30px; - margin-left: 30px; - padding-bottom: 30px; - padding-left: 40px; - border-left: 1px solid #a0cfff; - position: relative; - &:first-of-type { - margin-top: 30px; - } - &:first-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - position: absolute; - width: 40px; - height: 40px; - border-radius: 20px; - box-sizing: border-box; - font-size: 18px; - color: #333; - border: 1px solid #a0cfff; - line-height: 38px; - text-align: center; - left: -20px; - top: -30px; - background: #d9ecff; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - - .card-header { - display: flex; - justify-content: space-between; - align-items: center; - - span { - font-weight: bold; - margin-left: 10px; - } - } - - .text { - width: 100%; - font-size: 14px; - margin-bottom: 10px; - padding-left: 10px; - - span { - color: #409eff; - } - - .bold-text{ - font-weight: bolder; - } - - &:last-of-type { - margin-bottom: 0; - } - } - .approveUnit { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - border: 1px solid #fff; - background: #ecf8ff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - span { - width: 45%; - &:first-of-type { - width: 30%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - .approveItem { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - background: #ecf8ff; - border: 1px solid #fff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: flex-start; - margin-bottom: 10px; - span { - width: 50%; - &:first-of-type { - width: 25%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - - .topInfo { - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - .el-card { - border: 0; - } -} -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue deleted file mode 100644 index b32213d..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="断路原因"> - <el-input v-model="details.workDetail.bcReason" readonly type="textarea" /> - </el-form-item> - <el-form-item label="断路地段说明"> - <el-input v-model="details.workDetail.bcExplain" readonly type="textarea" /> - </el-form-item> - <el-form-item label="涉及相关部门"> - <el-input v-model="details.workDetail.involvedDepIds" readonly type="textarea"/> - </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.bcPath" :preview-src-list="details.workDetail.bcPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue deleted file mode 100644 index 6386a7e..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue +++ /dev/null @@ -1,122 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业方式"> - <el-input v-model="details.workDetail.hotMethod" readonly type="textarea" /> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'fire', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue deleted file mode 100644 index ed728d7..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue +++ /dev/null @@ -1,131 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="范围"> - <el-input v-model="details.workDetail.gbScope" readonly type="textarea" /> - </el-form-item> - <el-form-item label="动土方式"> - <el-input v-model="details.workDetail.gbMethod" readonly type="textarea" /> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="图片"> - <el-image v-for="item in details.workDetail.gbPath" :preview-src-list="details.workDetail.gbPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue deleted file mode 100644 index f95c6e9..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue +++ /dev/null @@ -1,125 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业单位"> - <el-input v-model="details.workDetail.operationDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业高度"> - <el-input v-model="details.workDetail.operationHeight" readonly type="textarea"><template #append>米(m)</template></el-input> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue deleted file mode 100644 index 1086537..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue +++ /dev/null @@ -1,125 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="吊装工具名称"> - <el-input v-model="details.workDetail.hoistingToolName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="起吊物体重量"> - <el-input v-model="details.workDetail.weightMass" readonly type="textarea"><template #append>吨(t)</template></el-input> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue deleted file mode 100644 index 69620a3..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue +++ /dev/null @@ -1,149 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="盲板编号"> - <el-input v-model="details.workDetail.bpCode" readonly type="textarea" /> - </el-form-item> - <el-form-item label="主要介质"> - <el-input v-model="details.workDetail.mainMedia" readonly type="textarea" /> - </el-form-item> - <el-form-item label="温度"> - <el-input v-model="details.workDetail.temperature" readonly type="textarea"><template #append>摄氏度(℃)</template></el-input> - </el-form-item> - <el-form-item label="压力"> - <el-input v-model="details.workDetail.pressure" readonly type="textarea"><template #append>千帕(kPa)</template></el-input> - </el-form-item> - <el-form-item label="盲板材质"> - <el-input v-model="details.workDetail.bpMaterialQuality" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板规格"> - <el-input v-model="details.workDetail.bpSpecification" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板位置"> - <el-input v-model="details.workDetail.bpLocation" readonly type="textarea"/> - </el-form-item> - <el-form-item label="装盲板时间"> - <el-input v-model="details.workDetail.installBpTime" readonly/> - </el-form-item> - <el-form-item label="拆盲板时间"> - <el-input v-model="details.workDetail.uninstallBpTime" readonly/> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="盲板位置图"> - <el-image v-for="item in details.workDetail.bpLocationMapPath" :preview-src-list="details.workDetail.bpLocationMapPath" style="width: 150px; height: 150px;margin-right: 50px;margin-bottom: 20px" :src="item" fit="cover" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue deleted file mode 100644 index cf81c13..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea" /> - </el-form-item> - <el-form-item label="电源接入点"> - <el-input v-model="details.workDetail.powerAccessPoint" readonly type="textarea" /> - </el-form-item> - <el-form-item label="工作电压"> - <el-input v-model="details.workDetail.workingVoltage" readonly type="textarea"><template #append>伏特(v)</template></el-input> - </el-form-item> - <el-form-item label="用电设备及功率"> - <el-input v-model="details.workDetail.equipmentAndPower" readonly type="textarea" /> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea"/> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue b/src/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue deleted file mode 100644 index d6b4606..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <div style="height: 100%"> - <el-form :model="details" label-width="150px"> - <el-form-item label="作业申请单号"> - <el-input v-model="details.workPermitNo" readonly /> - </el-form-item> - <el-form-item label="申请人"> - <el-input v-model="details.applyUname" readonly /> - </el-form-item> - <el-form-item label="部门名称"> - <el-input v-model="details.depName" readonly /> - </el-form-item> - <el-form-item label="作业人"> - <el-input v-model="details.operators" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业类型"> - <el-input v-model="details.workTypeDesc" readonly /> - </el-form-item> - <el-form-item label="作业等级"> - <el-input v-model="details.workLevelDesc" readonly /> - </el-form-item> - <el-form-item label="作业内容"> - <el-input v-model="details.workContent" readonly type="textarea" /> - </el-form-item> - <el-form-item label="作业地址"> - <el-input v-model="details.workLocation" readonly type="textarea"/> - </el-form-item> - <el-form-item label="受限空间所属单位"> - <el-input v-model="details.workDetail.csDepId" readonly type="textarea" /> - </el-form-item> - <el-form-item label="受限空间名称"> - <el-input v-model="details.workDetail.csName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="空间原有介质名称"> - <el-input v-model="details.workDetail.csOriginalName" readonly type="textarea" /> - </el-form-item> - <el-form-item label="物资状态"> - <span>{{ details.materialStatus==0?'未关联物资':(details.materialStatus==1?'必选物资配备不足':(details.materialStatus==2?'必选物资配备齐全':(details.materialStatus==3?'物资配置专业':(details.materialStatus==4?'物资配置高端':'-')))) }}</span> - </el-form-item> - <el-form-item label="关联物资" v-if="details.workMaterial&&details.workMaterial.length>0"> - <el-table :data="details.workMaterial" style="width: 100%" border> - <el-table-column prop="bigClassifyName" label="物资类型" align="center"/> - <el-table-column prop="materialName" label="物资名称" align="center"/> - <el-table-column prop="configurationLevel" label="配置级别" align="center"> - <template #default="scope"> - {{scope.row.configurationLevel == 0?'必选':(scope.row.configurationLevel == 1? '可选':'高配')}} - </template> - </el-table-column> - <el-table-column prop="useCount" label="配置数量" align="center"/> - </el-table> - </el-form-item> - <el-form-item label="关联其他作业"> - <el-input v-model="details.workDetail.otherSpecialWork" readonly type="textarea" /> - </el-form-item> - <el-form-item label="期望开始时间"> - <el-input v-model="details.expStartTime" readonly /> - </el-form-item> - <el-form-item label="期望结束时间"> - <el-input v-model="details.expEndTime" readonly /> - </el-form-item> - <el-form-item label="申请时间"> - <el-input v-model="details.applyTime" readonly /> - </el-form-item> - <el-form-item label="当前状态"> - <el-input v-model="details.statusDesc" readonly /> - </el-form-item> - </el-form> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - form: Object, - workerList: Array<any>, - workTypeList: Array<any>, - workLevelList: Array<any>, - otherWorkList: Array<any> - } - export default defineComponent({ - name: 'space', - components: {}, - props:['details'], - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - return { - Search - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsq/index.vue b/src/views/specialWorkSystem/workTicket/wdsq/index.vue deleted file mode 100644 index 340b902..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsq/index.vue +++ /dev/null @@ -1,877 +0,0 @@ -<template> - <div class="home-container"> -<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">--> -<!-- <el-tab-pane label="申请中" name="1">--> - <div style="height: 100%"> - <el-row class="homeCard"> - <span>作业类型:</span> - <el-col :span="10"> - <div class="grid-content topInfo"> - <el-select v-model="searchWord"> - <el-option - v-for="item in workType" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - - <el-button type="primary" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </div> - </el-col> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button> - <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>--> - <!-- <el-button type="success" size="default">设置分类</el-button>--> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> - </el-row> - <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="workPermitNo" label="作业申请单号" width="180" /> - <el-table-column property="applyUname" label="申请人" /> - <el-table-column property="depName" label="部门名称" /> - <el-table-column property="operators" label="作业人" /> - <el-table-column property="workTypeDesc" label="作业类型" /> - <el-table-column property="workLevelDesc" label="作业等级" /> - <el-table-column property="materialStatus" label="物资状态" align="center" width="180"> - <template #default="scope"> - <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span> - </template> - </el-table-column> - <el-table-column property="applyTime" label="申请时间" width="180" /> - <el-table-column label="申请状态" align="center" width="180"> - <template #default="scope"> - <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="300"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button> - <el-button link type="warning" size="small" :icon="Delete" @click="deleteRecordBtn(scope.row)">取消</el-button> - <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业申请详情" center> - <fire v-if="dialogType == 1" :details = details></fire> - <space v-else-if="dialogType == 2" :details = details></space> - <hoist v-else-if="dialogType == 3" :details = details></hoist> - <ground v-else-if="dialogType == 4" :details = details></ground> - <broken v-else-if="dialogType == 5" :details = details></broken> - <height v-else-if="dialogType == 6" :details = details></height> - <power v-else-if="dialogType == 7" :details = details></power> - <plate v-else :details = details></plate> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false" - >确认</el-button - > - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogStatus" title="作业申请进度" width="60%"> - <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> - <el-form-item label="申请作业人"> - <el-input v-model="approveInfo.operators" readonly type="textarea" /> - </el-form-item> - </el-form> - <div style="display: flex; flex-direction: column-reverse"> - <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem"> - <div class="stepNum">{{ item.stepSerial }}</div> - <div class="stepCard"> - <el-card class="box-card" shadow="always"> - <div class="text"> - 审批结果:<span class="bold-text">{{ item.approvalResultDesc }}</span> - </div> - <div class="text"> - 审批类型:<span class="bold-text">{{ item.typeDesc }}</span> - </div> - <div class="text" v-if="item.auditTypeDesc"> - 审批类型:<span class="bold-text">{{ item.auditTypeDesc }}</span> - </div> - <div class="text" v-show="item.startApprovalTime != null"> - 开始时间:<span>{{ item.startApprovalTime }}</span> - </div> - <div class="approveUnit"> - <div class="item-tit"><span>审批人</span><span>审批状态</span></div> - <div class="item-cont" v-for="i in item.stepUnits"> - <span>{{ i.approvalUname }}</span - ><span>{{ i.resultDesc }}</span> - </div> - </div> - <div class="approveItem"> - <div class="item-tit"> - <span>审批项目</span> -<!-- <span>类型</span>--> - <div>措施标准</div> - </div> - <div class="item-cont" v-for="i in item.stepItems"> - <span>{{ i.itemName }}</span> -<!-- <span>{{ i.typeDesc }}</span>--> - <div v-if="i.measure !== null"> - <div> - <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span> - </div> - <div> - <span>措施内容:</span><span>{{ i.measure.context }}</span> - </div> - </div> - <div v-if="i.stand !== null"> - <div> - <span>标题名称:</span><span>{{ i.stand.title }}</span> - </div> - <div> - <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span> - </div> - </div> - </div> - </div> - <div class="text" v-show="item.expFinishApprovalTime && item.expFinishApprovalTime != null"> - 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> - </div> - <div class="text" v-show="item.finishApprovalTime != null"> - 结束时间:<span>{{ item.finishApprovalTime }}</span> - </div> - </el-card> - </div> - </div> - </div> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center> - <span>您确定要取消该条申请吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="downLoadDialog" title="提示" width="30%" center> - <span>您确定要导出该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="downLoadDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDownLoad" size="default">确认</el-button> - </span> - </template> - </el-dialog> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="已通过" name="2">--> -<!-- <div style="height: 100%">--> -<!-- <el-row class="homeCard">--> -<!-- <el-col :span="8">--> -<!-- <div class="grid-content topInfo">--> -<!-- <el-input v-model="searchWord" placeholder="作业证名称"></el-input>--> -<!-- <el-button type="primary">查询</el-button>--> -<!-- <el-button plain>重置</el-button>--> -<!-- </div>--> -<!-- </el-col>--> -<!-- </el-row>--> -<!-- <div class="homeCard">--> -<!-- <div class="main-card">--> -<!-- <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">--> -<!-- <el-table-column type="selection" width="55" />--> -<!-- <el-table-column type="index" label="编号" width="200" />--> -<!-- <el-table-column property="level" label="作业证等级" width="180" sortable />--> -<!-- <el-table-column property="applyDate" label="申请日期" sortable />--> -<!-- <el-table-column property="name" label="申请人" width="180" />--> -<!-- <el-table-column property="department" label="申请部门" width="180" />--> -<!-- <el-table-column label="申请状态" width="180">--> -<!-- <template #default="scope">--> -<!-- <el-tag type="success">{{ scope.row.status }}</el-tag>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- </el-table>--> -<!-- <div class="pageBtn">--> -<!-- <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </el-tab-pane>--> -<!-- </el-tabs>--> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { useRouter } from 'vue-router'; -import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; -import type { TabsPaneContext } from 'element-plus'; -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; -import Cookies from 'js-cookie'; -import axios from 'axios'; - -// 定义接口来定义对象的类型 -interface stateType { - applyData: Array<string>; - workTimeList: Array<string>; - multipleSelection: Array<any>; - deleteArr: Array<any>; - approveInfo: Object; - dialogDetails: boolean; - dialogStatus: boolean; - deleteDialog: boolean; - downLoadDialog: boolean; - pageIndex1: number; - pageSize1: number; - chosenIndex: null | number; - deleteId: null | number; - downLoadId: null | number; - downLoadName: string; - searchWord: string; - totalSize1: number; - activeName: string; - addRecord: {}; - details: {}; - statusInfo: {}; - workType: Array<type>; - dialogType: number | null; - departmentList: Array<any>; - departmentRecursionList: Array<DepartmentState>; -} -interface type { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; -} -export default defineComponent({ - name: 'myApply', - components: { - fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')), - space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')), - hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')), - ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')), - broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')), - height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')), - power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')), - plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue')) - }, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex1: 1, - pageSize1: 10, - totalSize1: 0, - dialogType: null, - activeName: '1', - departmentList: [], - departmentRecursionList: [], - chosenIndex: null, - searchWord: '', - applyData: [], - workTimeList: [], - multipleSelection: [], - approveInfo: { - approvalSteps: [], - operators: [] - }, - dialogDetails: false, - dialogStatus: false, - deleteDialog: false, - downLoadDialog: false, - addRecord: {}, - details: {}, - statusInfo: {}, - deleteId: null, - downLoadId: null, - downLoadName: '', - deleteArr: [], - workType: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - interface User { - name: string; - list: []; - info: string; - } - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - // 填写表单 - const toApply = () => { - router.push({ - path: 'zysq' - }); - }; - - const handleClick = (tab: TabsPaneContext, event: Event) => { - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const recursion = (value: any) => { - for (let i of value) { - if (i.children.length !== 0) { - state.departmentRecursionList.push(i); - recursion(i.children); - } else { - state.departmentRecursionList.push(i); - } - } - }; - - // 分页获取 - const getListByPage = async () => { - const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; - let res = await workApplyApi().getApplyListPage(data); - if (res.data.code === '200') { - state.applyData = JSON.parse(JSON.stringify(res.data.data)); - console.log(state.applyData,'applyData') - state.applyData = state.applyData.map((item) => { - if (item.operators == null || item.operators == []) { - item.operators = []; - } else { - item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); - } - return item; - }); - state.totalSize1 = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 表格数据格式化 - const toNames = (row, column, cellValue, index) => { - if (row.list == []) { - return []; - } else { - const nameList = []; - for (let i = 0; i < row.list.length; i++) { - for (let t = 0; t < state.workTimeList.length; t++) { - if (row.list[i] == state.workTimeList[t].id) { - nameList.push(state.workTimeList[t].name); - } - } - } - return nameList.join(); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchWord == '') { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - // 重置搜索 - const clearSearch = async () => { - state.searchWord = ''; - getListByPage(); - }; - - // 查看进度 - const viewStatus = (row) => { - getStatus({ workApplyId: row.workApplyId }); - state.dialogStatus = true; - }; - - // 查询进度方法 - const getStatus = async (data: any) => { - let res = await workApplyApi().getStatus(data); - if (res.data.code === '200') { - state.approveInfo = JSON.parse(JSON.stringify(res.data.data)); - state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.workApplyId; - state.deleteDialog = true; - }; - - // 取消申请方法 - const deleteRecord = async (data: any) => { - let res = await workApplyApi().cancelApply(data); - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '删除成功!' - }); - getListByPage(); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const conFirmDelete = () => { - deleteRecord({ workApplyId: state.deleteId }); - state.deleteDialog = false; - }; - - // 导出图表 - const downLoadBtn = (row:any) =>{ - state.downLoadId = row.workApplyId; - state.downLoadName = row.workTypeDesc + row.workPermitNo - state.downLoadDialog = true; - } - - // 导出方法 - const downLoadRecord = async (data: any) => { - // let res = await workApplyApi().postPrinting(data); - axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ - if (res) { - const link = document.createElement('a') - let blob = new Blob([res.data],{type: 'application/pdf'}) - link.style.display = "none"; - link.href = URL.createObjectURL(blob); // 创建URL - link.setAttribute("download", state.downLoadName + "作业证.pdf"); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }) - - }; - - const conFirmDownLoad = () => { - downLoadRecord({ applyWorkId: state.downLoadId }); - state.downLoadDialog = false; - }; - - const handleSizeChange1 = (val: number) => { - state.pageSize1 = val; - getListByPage(); - }; - const handleCurrentChange1 = (val: number) => { - state.pageIndex1 = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row: any) => { - state.dialogType = row.workType - state.details = JSON.parse(JSON.stringify(row)); - if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ - state.details.workDetail.otherSpecialWork=[] - } - else { - const a = state.details.workDetail.otherSpecialWork - state.details.workDetail.otherSpecialWork = a.split(',').map((item) => { - return state.workType.find((i: { id: number }) => i.id === Number(item))?.name; - }); - } - if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){ - state.details.workDetail.involvedDepIds=[] - } - else { - const a = state.details.workDetail.involvedDepIds - state.details.workDetail.involvedDepIds = a.split(',').map((item) => { - return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName; - }); - } - if(state.details.workDetail.csDepId){ - state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName; - } - if(state.details.workDetail.operationDepId){ - state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName; - } - if(state.details.workDetail.gbPath){ - state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',') - } - if(state.details.workDetail.bcPath){ - state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',') - } - if(state.details.workDetail.bpLocationMapPath){ - state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',') - } - state.dialogDetails = true; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - getAllDepartment() - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - Finished, - Download, - reLoadData, - toApply, - handleClick, - toNames, - searchRecord, - clearSearch, - viewRecord, - viewStatus, - deleteRecordBtn, - downLoadBtn, - conFirmDelete, - conFirmDownLoad, - getListByPage, - handleSizeChange1, - handleCurrentChange1, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .demo-tabs { - width: 100%; - height: 100%; - - &::v-deep(.el-tabs__content) { - height: calc(100% - 60px); - } - - .el-tab-pane { - height: 100%; - } - } - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn { - margin: 0; - } - } - .pageBtn { - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type { - height: calc(100% - 100px); - } - } - .stepItem { - display: flex; - align-items: flex-start; - margin-top: 30px; - margin-left: 30px; - padding-bottom: 30px; - padding-left: 40px; - border-left: 1px solid #a0cfff; - position: relative; - &:first-of-type { - margin-top: 30px; - } - &:first-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - position: absolute; - width: 40px; - height: 40px; - border-radius: 20px; - box-sizing: border-box; - font-size: 18px; - color: #333; - border: 1px solid #a0cfff; - line-height: 38px; - text-align: center; - left: -20px; - top: -30px; - background: #d9ecff; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - - .card-header { - display: flex; - justify-content: space-between; - align-items: center; - - span { - font-weight: bold; - margin-left: 10px; - } - } - - .text { - width: 100%; - font-size: 14px; - margin-bottom: 10px; - padding-left: 10px; - - span { - color: #409eff; - } - - .bold-text{ - font-weight: bolder; - } - - &:last-of-type { - margin-bottom: 0; - } - } - .approveUnit { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - border: 1px solid #fff; - background: #ecf8ff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - span { - width: 45%; - &:first-of-type { - width: 30%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - .approveItem { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - background: #ecf8ff; - border: 1px solid #fff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: flex-start; - margin-bottom: 10px; - span { - width: 50%; - &:first-of-type { - width: 25%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - - .topInfo { - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } - .el-card { - border: 0; - } -} -</style> diff --git a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue b/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue deleted file mode 100644 index 9bf63b3..0000000 --- a/src/views/specialWorkSystem/workTicket/wdsqjl/index.vue +++ /dev/null @@ -1,888 +0,0 @@ -<template> - <div class="home-container"> -<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">--> -<!-- <el-tab-pane label="申请中" name="1">--> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">作业类型:</span> - <div class="grid-content topInfo"> - <el-select v-model="searchWord"> - <el-option - v-for="item in workType" - :key="item.id" - :label="item.name" - :value="item.id" - /> - </el-select> - </div> - </el-col> - <el-col :span="5" style="display:flex;align-items: center"> - <span style="white-space: nowrap">申请部门:</span> - <div class="grid-content topInfo"> - <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/> - </div> - </el-col> - <el-col :span="8" style="display:flex;align-items: center;"> - <span style="white-space: nowrap;margin-left: 20px">申请时间:</span> - <div class="grid-content topInfo"> - <el-date-picker - v-model="searchDate" - type="daterange" - unlink-panels - range-separator="至" - start-placeholder="开始日期" - end-placeholder="结束日期" - format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" - /> - </div> - </el-col> - <el-button type="primary" style="margin-left: 20px" @click="searchRecord">查询</el-button> - <el-button plain @click="clearSearch">重置</el-button> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="toApply()">申请</el-button> - <!-- <el-button type="danger" :icon="Delete" size="default">删除</el-button>--> - <!-- <el-button type="success" size="default">设置分类</el-button>--> - </el-col> - <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData()" /> - </el-row> - <el-table ref="multipleTableRef" :data="applyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> - <el-table-column property="workPermitNo" label="作业申请单号" width="180" align="center"/> - <el-table-column property="applyUname" label="申请人" align="center"/> - <el-table-column property="depName" label="部门名称" align="center"/> - <el-table-column property="operators" label="作业人" align="center"/> - <el-table-column property="workTypeDesc" label="作业类型" align="center"/> - <el-table-column property="workLevelDesc" label="作业等级" align="center"/> - <el-table-column property="materialStatus" label="物资状态" align="center" width="180"> - <template #default="scope"> - <span>{{ scope.row.materialStatus==0?'未关联物资':(scope.row.materialStatus==1?'必选物资配备不足':(scope.row.materialStatus==2?'必选物资配备齐全':(scope.row.materialStatus==3?'物资配置专业':(scope.row.materialStatus==4?'物资配置高端':'-')))) }}</span> - </template> - </el-table-column> - <el-table-column property="applyTime" label="申请时间" width="180" align="center"/> - <el-table-column label="申请状态" align="center" width="180"> - <template #default="scope"> - <el-tag :type="scope.row.status==2?'success':(scope.row.status==8||scope.row.status==9)?'warning':'danger'">{{ scope.row.statusDesc }}</el-tag> - </template> - </el-table-column> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="success" size="small" :icon="Finished" @click="viewStatus(scope.row)">进度</el-button> - <el-button :disabled="scope.row.status == 7 ? false : true" link type="primary" size="small" :icon="Download" @click="downLoadBtn(scope.row)">导出作业票</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination v-model:currentPage="pageIndex1" v-model:page-size="pageSize1" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="作业申请详情" center> - <fire v-if="dialogType == 1" :details = details></fire> - <space v-else-if="dialogType == 2" :details = details></space> - <hoist v-else-if="dialogType == 3" :details = details></hoist> - <ground v-else-if="dialogType == 4" :details = details></ground> - <broken v-else-if="dialogType == 5" :details = details></broken> - <height v-else-if="dialogType == 6" :details = details></height> - <power v-else-if="dialogType == 7" :details = details></power> - <plate v-else :details = details></plate> - <template #footer> - <span class="dialog-footer"> - <el-button type="primary" @click="dialogDetails = false" - >确认</el-button - > - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogStatus" title="作业申请进度" width="60%"> - <el-form v-if="approveInfo.operators.length > 0" style="margin-bottom: 40px"> - <el-form-item label="申请作业人"> - <el-input v-model="approveInfo.operators" readonly type="textarea" /> - </el-form-item> - </el-form> - <div style="display: flex; flex-direction: column-reverse"> - <div v-for="(item, index) in approveInfo.approvalSteps" class="stepItem"> - <div class="stepNum">{{ item.stepSerial }}</div> - <div class="stepCard"> - <el-card class="box-card" shadow="always"> - <div class="text"> - 审批结果:<span>{{ item.approvalResultDesc }}</span> - </div> - <div class="text"> - 审批层级:<span>{{ item.typeDesc }}</span> - </div> - <div class="text" v-if="item.auditTypeDesc"> - 审批类型:<span>{{ item.auditTypeDesc }}</span> - </div> - <div class="text" v-show="item.startApprovalTime != null"> - 开始时间:<span>{{ item.startApprovalTime }}</span> - </div> - <div class="approveUnit"> - <div class="item-tit"><span>审批人</span><span>审批状态</span></div> - <div class="item-cont" v-for="i in item.stepUnits"> - <span>{{ i.approvalUname }}</span - ><span>{{ i.resultDesc }}</span> - </div> - </div> - <div class="approveItem"> - <div class="item-tit"> - <span>审批项目</span> -<!-- <span>类型</span>--> - <div>措施标准</div> - </div> - <div class="item-cont" v-for="i in item.stepItems"> - <span>{{ i.itemName }}</span> -<!-- <span>{{ i.typeDesc }}</span>--> - <div v-if="i.measure !== null"> - <div> - <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span> - </div> - <div> - <span>措施内容:</span><span>{{ i.measure.context }}</span> - </div> - </div> - <div v-if="i.stand !== null"> - <div> - <span>标题名称:</span><span>{{ i.stand.title }}</span> - </div> - <div> - <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span> - </div> - </div> - </div> - </div> - <div class="text" v-show="item.expFinishApprovalTime != null"> - 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span> - </div> - <div class="text" v-show="item.finishApprovalTime != null"> - 结束时间:<span>{{ item.finishApprovalTime }}</span> - </div> - </el-card> - </div> - </div> - </div> - </el-dialog> - <el-dialog v-model="downLoadDialog" title="提示" width="30%" center> - <span>您确定要导出该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="downLoadDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDownLoad" size="default">确认</el-button> - </span> - </template> - </el-dialog> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="已通过" name="2">--> -<!-- <div style="height: 100%">--> -<!-- <el-row class="homeCard">--> -<!-- <el-col :span="8">--> -<!-- <div class="grid-content topInfo">--> -<!-- <el-input v-model="searchWord" placeholder="作业证名称"></el-input>--> -<!-- <el-button type="primary">查询</el-button>--> -<!-- <el-button plain>重置</el-button>--> -<!-- </div>--> -<!-- </el-col>--> -<!-- </el-row>--> -<!-- <div class="homeCard">--> -<!-- <div class="main-card">--> -<!-- <el-table ref="multipleTableRef" :data="passedData" style="width: 100%" height="calc(100% - 48px)" :header-cell-style="{ background: '#fafafa' }" @selection-change="handleSelectionChange">--> -<!-- <el-table-column type="selection" width="55" />--> -<!-- <el-table-column type="index" label="编号" width="200" />--> -<!-- <el-table-column property="level" label="作业证等级" width="180" sortable />--> -<!-- <el-table-column property="applyDate" label="申请日期" sortable />--> -<!-- <el-table-column property="name" label="申请人" width="180" />--> -<!-- <el-table-column property="department" label="申请部门" width="180" />--> -<!-- <el-table-column label="申请状态" width="180">--> -<!-- <template #default="scope">--> -<!-- <el-tag type="success">{{ scope.row.status }}</el-tag>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- </el-table>--> -<!-- <div class="pageBtn">--> -<!-- <el-pagination v-model:currentPage="pageIndex2" v-model:page-size="pageSize2" :page-sizes="[10, 15]" small="false" background layout="total, sizes, prev, pager, next, jumper" :total="totalSize2" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </div>--> -<!-- </el-tab-pane>--> -<!-- </el-tabs>--> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue'; -import { storeToRefs } from 'pinia'; -import { initBackEndControlRoutes } from '/@/router/backEnd'; -import { useUserInfo } from '/@/stores/userInfo'; -import { Session } from '/@/utils/storage'; -import { useRouter } from 'vue-router'; -import { Edit, View, Plus, Delete, Refresh, Search, Finished, Download } from '@element-plus/icons-vue'; -import { ElTable } from 'element-plus'; -import { FormInstance, FormRules, ElMessage } from 'element-plus'; -import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; -import type { TabsPaneContext } from 'element-plus'; -import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; -import Cookies from 'js-cookie'; -import axios from 'axios'; - -// 定义接口来定义对象的类型 -interface stateType { - applyData: Array<string>; - workTimeList: Array<string>; - multipleSelection: Array<any>; - deleteArr: Array<any>; - casProps: {}; - approveInfo: Object; - dialogDetails: boolean; - dialogStatus: boolean; - deleteDialog: boolean; - downLoadDialog: boolean; - pageIndex1: number; - pageSize1: number; - chosenIndex: null | number; - deleteId: null | number; - downLoadId: null | number; - downLoadName: string; - searchWord: number | null; - searchDep: number | null; - searchDate: Array<any>, - totalSize1: number; - activeName: string; - addRecord: {}; - details: {}; - statusInfo: {}; - workType: Array<type>; - dialogType: number | null; - departmentList: Array<any>; - departmentRecursionList: Array<DepartmentState>; -} -interface type { - id: number; - name: string; -} -interface DepartmentState { - depId: number; - depName: string; -} -export default defineComponent({ - name: 'myApply', - components: { - fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/fireLog.vue')), - space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/spaceLog.vue')), - hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/hoistLog.vue')), - ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/groundLog.vue')), - broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/brokenLog.vue')), - height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/heightLog.vue')), - power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/powerLog.vue')), - plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/wdsq/components/plateLog.vue')) - }, - setup() { - const userInfo = useUserInfo(); - const { userInfos } = storeToRefs(userInfo); - const router = useRouter(); - const state = reactive<stateType>({ - pageIndex1: 1, - pageSize1: 10, - totalSize1: 0, - dialogType: null, - activeName: '1', - departmentList: [], - departmentRecursionList: [], - chosenIndex: null, - searchWord: null, - searchDep: null, - searchDate: [], - applyData: [], - workTimeList: [], - multipleSelection: [], - approveInfo: { - approvalSteps: [], - operators: [] - }, - casProps: { - expandTrigger: 'hover', - emitPath: false, - value: 'depId', - label: 'depName', - checkStrictly: true - }, - dialogDetails: false, - dialogStatus: false, - deleteDialog: false, - downLoadDialog: false, - addRecord: {}, - details: {}, - statusInfo: {}, - deleteId: null, - downLoadId: null, - downLoadName: '', - deleteArr: [], - workType: [ - { id: 1, name: '动火作业' }, - { id: 2, name: '受限空间作业' }, - { id: 3, name: '吊装作业' }, - { id: 4, name: '动土作业' }, - { id: 5, name: '断路作业' }, - { id: 6, name: '高处作业' }, - { id: 7, name: '临时用电作业' }, - { id: 8, name: '盲板抽堵作业' } - ] - }); - interface User { - name: string; - list: []; - info: string; - } - - // 刷新 - const reLoadData = async () => { - getListByPage(); - }; - - // 填写表单 - const toApply = () => { - router.push({ - path: 'zysq' - }); - }; - - const handleClick = (tab: TabsPaneContext, event: Event) => { - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - // recursion(state.departmentList); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // const recursion = (value: any) => { - // for (let i of value) { - // if (i.children.length !== 0) { - // state.departmentRecursionList.push(i); - // recursion(i.children); - // } else { - // state.departmentRecursionList.push(i); - // } - // } - // }; - - // 分页获取列表 - const getListByPage = async () => { - const dateRange = JSON.parse(JSON.stringify(state.searchDate)) - if(dateRange[1]){dateRange[1] = dateRange[1].replace('00:00:00','23:59:59')} - const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord, applyDepId: state.searchDep,applyStartTime: dateRange[0],applyEndTime: dateRange[1]} }; - let res = await workApplyApi().getApplyList(data); - if (res.data.code === '200') { - state.applyData = JSON.parse(JSON.stringify(res.data.data)); - state.applyData = state.applyData.map((item) => { - if (item.operators == null || item.operators == []) { - item.operators = []; - } else { - item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname); - } - return item; - }); - state.totalSize1 = res.data.total; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 表格数据格式化 - const toNames = (row, column, cellValue, index) => { - if (row.list == []) { - return []; - } else { - const nameList = []; - for (let i = 0; i < row.list.length; i++) { - for (let t = 0; t < state.workTimeList.length; t++) { - if (row.list[i] == state.workTimeList[t].id) { - nameList.push(state.workTimeList[t].name); - } - } - } - return nameList.join(); - } - }; - - // 关键词查询记录 - const searchRecord = async () => { - if (state.searchWord == null && state.searchDep == null && state.searchDate == []) { - ElMessage({ - type: 'warning', - message: '请输入查询关键词' - }); - } else { - getListByPage(); - } - }; - // 重置搜索 - const clearSearch = async () => { - state.searchWord = null; - state.searchDep = null; - state.searchDate = [] - getListByPage(); - }; - - // 查看进度 - const viewStatus = (row) => { - getStatus({ workApplyId: row.workApplyId }); - }; - - // 查询进度方法 - const getStatus = async (data: any) => { - let res = await workApplyApi().getAllStatus(data); - if (res.data.code === '200') { - state.approveInfo = JSON.parse(JSON.stringify(res.data.data)); - state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname); - state.dialogStatus = true; - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const deleteRecordBtn = (row) => { - state.deleteId = row.workApplyId; - state.deleteDialog = true; - }; - - // 导出图表 - const downLoadBtn = (row:any) =>{ - state.downLoadId = row.workApplyId; - state.downLoadName = row.workTypeDesc + row.workPermitNo - state.downLoadDialog = true; - } - - // 导出方法 - const downLoadRecord = async (data: any) => { - // let res = await workApplyApi().postPrinting(data); - axios.post(import.meta.env.VITE_API_URL + `/work/apply/printingPdf`,data,{headers:{'Content-Type': 'application/json','Authorization': `${Cookies.get('token')}`,'uid':`${Cookies.get('uid')}`},responseType: 'blob'}).then(res=>{ - if (res) { - const link = document.createElement('a') - let blob = new Blob([res.data],{type: 'application/pdf'}) - link.style.display = "none"; - link.href = URL.createObjectURL(blob); // 创建URL - link.setAttribute("download", state.downLoadName + "作业证.pdf"); - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - } else { - ElMessage({ - type: 'warning', - message: '导出失败' - }); - } - }) - - }; - - const conFirmDownLoad = () => { - downLoadRecord({ applyWorkId: state.downLoadId }); - state.downLoadDialog = false; - }; - - const handleSizeChange1 = (val: number) => { - state.pageSize1 = val; - getListByPage(); - }; - const handleCurrentChange1 = (val: number) => { - state.pageIndex1 = val; - getListByPage(); - }; - - // 查看记录 - const viewRecord = (row: any) => { - state.dialogType = row.workType - state.details = JSON.parse(JSON.stringify(row)); - if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){ - state.details.workDetail.otherSpecialWork=[] - } - else { - const a = state.details.workDetail.otherSpecialWork - state.details.workDetail.otherSpecialWork = a.split(',').map((item) => { - return state.workType.find((i: { id: number }) => i.id === Number(item))?.name; - }); - } - if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){ - state.details.workDetail.involvedDepIds=[] - } - else { - const a = state.details.workDetail.involvedDepIds - state.details.workDetail.involvedDepIds = a.split(',').map((item) => { - return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName; - }); - } - if(state.details.workDetail.csDepId){ - state.details.workDetail.csDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.csDepId))?.depName; - } - if(state.details.workDetail.operationDepId){ - state.details.workDetail.operationDepId = state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(state.details.workDetail.operationDepId))?.depName; - } - if(state.details.workDetail.gbPath){ - state.details.workDetail.gbPath = state.details.workDetail.gbPath.split(',') - } - if(state.details.workDetail.bcPath){ - state.details.workDetail.bcPath = state.details.workDetail.bcPath.split(',') - } - if(state.details.workDetail.bpLocationMapPath){ - state.details.workDetail.bpLocationMapPath = state.details.workDetail.bpLocationMapPath.split(',') - } - state.dialogDetails = true; - }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId', value); - userInfos.value.projectId = value; - await initBackEndControlRoutes(); - }; - - // 页面载入时执行方法 - onMounted(() => { - getListByPage(); - getAllDepartment() - }); - - return { - View, - Edit, - Delete, - Refresh, - Plus, - Finished, - Download, - reLoadData, - toApply, - handleClick, - toNames, - searchRecord, - clearSearch, - viewRecord, - viewStatus, - deleteRecordBtn, - downLoadBtn, - conFirmDownLoad, - getListByPage, - handleSizeChange1, - handleCurrentChange1, - ...toRefs(state) - }; - } -}); -</script> - -<style scoped lang="scss"> -$homeNavLengh: 8; -.home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .demo-tabs { - width: 100%; - height: 100%; - - &::v-deep(.el-tabs__content) { - height: calc(100% - 60px); - } - - .el-tab-pane { - height: 100%; - } - } - .homeCard { - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card { - width: 100%; - height: 100%; - .cardTop { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn { - margin: 0; - } - } - .pageBtn { - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type { - height: calc(100% - 100px); - } - } - .stepItem { - display: flex; - align-items: flex-start; - margin-top: 30px; - margin-left: 30px; - padding-bottom: 30px; - padding-left: 40px; - border-left: 1px solid #a0cfff; - position: relative; - &:first-of-type { - margin-top: 30px; - } - &:first-of-type { - margin-bottom: 0; - border-left: none; - } - .stepNum { - position: absolute; - width: 40px; - height: 40px; - border-radius: 20px; - box-sizing: border-box; - font-size: 18px; - color: #333; - border: 1px solid #a0cfff; - line-height: 38px; - text-align: center; - left: -20px; - top: -30px; - background: #d9ecff; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - - .card-header { - display: flex; - justify-content: space-between; - align-items: center; - - span { - font-weight: bold; - margin-left: 10px; - } - } - - .text { - width: 100%; - font-size: 14px; - margin-bottom: 10px; - padding-left: 10px; - - span { - font-weight: bolder; - color: #409eff; - } - - &:last-of-type { - margin-bottom: 0; - } - } - .approveUnit { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - border: 1px solid #fff; - background: #ecf8ff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - &:last-of-type{ - text-align: center; - } - } - & > div { - flex: 1; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: center; - span { - width: 45%; - &:first-of-type { - width: 30%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - .approveItem { - width: 100%; - font-size: 14px; - margin-bottom: 20px; - padding: 10px 15px; - background: #ecf8ff; - border: 1px solid #fff; - border-radius: 6px; - .item-tit { - width: 100%; - display: flex; - color: #409eff; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 10px; - border-bottom: 1px solid #a0cfff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - } - } - .item-cont { - width: 100%; - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - border-bottom: 1px solid #c6e2ff; - - & > span { - flex: 1; - } - & > div { - flex: 2; - text-align: center; - - & > div { - text-align: left; - width: 100%; - display: flex; - justify-content: center; - align-items: flex-start; - margin-bottom: 10px; - span { - width: 50%; - &:first-of-type { - width: 25%; - } - } - } - } - &:last-of-type { - border-bottom: 0; - } - } - } - } - } - &:hover .card-header { - color: #0098f5; - } - &:hover .stepNum { - border: 2px solid #0098f5; - color: #0098f5; - } - } - .el-row { - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content { - align-items: center; - min-height: 36px; - } - - .topInfo { - width: 100%; - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - & > div { - white-space: nowrap; - margin-right: 20px; - } - } - } -} -.el-card { - border: 0; -} -.el-input{ - width: 100% !important; -} -::v-deep(.el-date-editor){ - width: 100%; -} -.el-select{ - width: 100%; -} -:deep(.el-cascader){ - width: 100% !important; -} -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue b/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue deleted file mode 100644 index da141bb..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/broken.vue +++ /dev/null @@ -1,504 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="作业单位" prop="workDetail.operationDepId"> -<!-- <el-select v-model="form.workDetail.operationDepId">--> -<!-- <el-option--> -<!-- v-for="item in csDepList"--> -<!-- :key="item.value"--> -<!-- :label="item.label"--> -<!-- :value="item.value"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps2" :show-all-levels="false" @change="handleChange2" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="断路原因" prop="workDetail.bcReason"> - <el-input - v-model="form.workDetail.bcReason" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="断路地段说明" prop="workDetail.bcExplain"> - <el-input - v-model="form.workDetail.bcExplain" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="涉及相关部门" prop="workDetail.involvedDepIds"> - <el-cascader v-model="form.workDetail.involvedDepIds" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="图片上传" prop="workDetail.bcPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - <el-dialog v-model="dialogVisible"> - <img w-full :src="dialogImageUrl" alt="Preview Image" /> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import axios from 'axios'; - - interface stateType { - form: Object, - csDepList: Array<any>, - fileList: Array<file>, - uploadUrl: string, - dialogVisible: Boolean, - dialogImageUrl: string | null, - imgLimit: number, - casProps: {}, - casProps2: {}, - isOverSize: boolean, - } - interface file { - url: string; - } - export default defineComponent({ - name: 'brokenForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList','departList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - form: { - operatorUids: [], - workType: 5, - workLevel: 0, - workContent: '', - workLocation: '', - hazardIdentification: '', - maBaseId: null, - workDetail:{ - operationDepId: null, - bcReason: '', - bcExplain: '', - bcPath: [], - involvedDepIds: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - isOverSize: false, - fileList: [], - imgLimit: 3, - uploadUrl: '', - dialogVisible: false, - dialogImageUrl: null, - csDepList: [ - { - label: "单位一", - value: 1 - }, - { - label: "单位二", - value: 2 - }, - { - label: "单位三", - value: 3 - }, - { - label: "单位四", - value: 4 - }, - { - label: "单位五", - value: 5 - }, - { - label: "单位六", - value: 6 - } - ], - casProps: { - emitPath: false, - value: 'depId', - label: 'depName', - multiple: true, - expandTrigger: 'hover' - }, - casProps2: { - emitPath: false, - value: 'depId', - label: 'depName', - multiple: false, - expandTrigger: 'hover', - checkStrictly: true - } - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bcReason": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bcExplain": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bcPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.involvedDepIds": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - - const openMaList = ()=>{ - if(state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - // if (state.form.wmAddReqDTOList == null || state.form.wmAddReqDTOList.length == 0){ - // ElMessage({ - // type: 'warning', - // message: '请确认关联物资的配置' - // }); - // return - // } - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.involvedDepIds = data.workDetail.involvedDepIds.join(',') - data.workDetail.bcPath = data.workDetail.bcPath.join(',') - const res = await workApplyApi().postBrokenApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - state.form.workDetail.bcPath = [] - state.fileList = [] - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - const handlePreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile); - }; - - const handlePictureCardPreview = (uploadFile: { url: string }) => { - state.dialogImageUrl = uploadFile.url!; - state.dialogVisible = true; - }; - - const getUploadUrl = async (rawFile: any) => { - const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' - if(fileSize === '0'){ - ElMessage({ - type: 'warning', - message: '文件大小不能超过500k。' - }); - state.isOverSize = true - return false - }else{ - const res = await workApplyApi().getUploadUrl(rawFile.name); - state.form.workDetail.bcPath.push(res.data.data.fileName) - state.uploadUrl = res.data.data.uploadUrl; - console.log(res.data.data.fileName,'name') - } - }; - - const upload = async (params: any) => { - // const formData = new FormData(); - // formData.append('file', state.fileList[0].raw); - let reader = new FileReader(); - reader.readAsArrayBuffer(params.file); - reader.onload = async () => { - axios - .put(state.uploadUrl, reader.result, { - header: { 'Content-Type': 'multipart/form-data' } - }) - .then(() => { - // if (state.fileList.length === 2) { - // state.fileList.splice(0, 1); - // } - // console.log(state.form.workDetail.bcPath,'bcPath') - }); - }; - }; - - const beforeRemove = (file: {}, fileList: []) => { - const result = new Promise((resolve, reject) => { - if(!state.isOverSize){ - ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => { - // console.log(state.workDetail.bcPath,'path') - const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.bcPath.splice(index,1) - deletePic(false,list[index]) - } - }) - // 请求删除接口 - }) - .catch(() => { - reject(false); - }); - }else{ - const list = JSON.parse(JSON.stringify(state.form.workDetail.bcPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.bcPath.splice(index,1) - deletePic(true,list[index]) - } - }) - state.isOverSize = false - } - }); - return result; - }; - - - // 删除图片接口 - const deletePic = async(isOverSize:boolean,fileName:string)=>{ - console.log(fileName,'fileName') - const res = await workApplyApi().deleteFile({fileName: fileName}) - if (res.data.code === '200') { - ElMessage({ - type: isOverSize ? 'error' : 'success', - message: isOverSize ? '上传失败':'删除成功!' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - - const showTip =()=>{ - ElMessage({ - type: 'warning', - message: '超出文件上传数量' - }); - } - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - conFirmMaterials, - openMaList, - handlePreview, - getUploadUrl, - beforeRemove, - upload, - showTip, - submitForm, - handlePictureCardPreview, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue b/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue deleted file mode 100644 index 9af9738..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/fire.vue +++ /dev/null @@ -1,366 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="form.workLevel"> - <el-option - v-for="item in workLevelList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="动火方式" prop="workDetail.hotMethod"> - <el-input - v-model="form.workDetail.hotMethod" - autosize - type="textarea" - placeholder="请输入动火方式" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option - v-for="item in otherWorkList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - interface stateType { - form: Object, - workLevelList: Array<any>, - otherWorkList: Array<any>, - equipmentDialog: boolean - } - export default defineComponent({ - name: 'fireForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 1, - workLevel: null, - workContent: '', - workLocation: '', - maBaseId: null, - hazardIdentification: '', - workDetail:{ - hotMethod: '', - otherSpecialWork: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - workLevelList: [ - { - label: "一级动火作业", - value: 1 - }, - { - label: "二级动火作业", - value: 2 - }, - { - label: "特级动火作业", - value: 3 - } - ], - otherWorkList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ] - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.hotMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // 页面载入时执行方法 - onMounted(() => { - - }); - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - const openMaList = ()=>{ - if(state.form.workLevel == null || state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人和作业等级再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - // if (state.form.wmAddReqDTOList == null || state.form.wmAddReqDTOList.length == 0){ - // ElMessage({ - // type: 'warning', - // message: '请确认关联物资的配置' - // }); - // return - // } - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - const res = await workApplyApi().postFireApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - material, - ruleFormRef, - applyRules, - openMaList, - conFirmMaterials, - submitForm, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } - - .tab-i{ - margin-bottom: 15px; - - &:last-of-type{ - margin-bottom: 0; - } - ::v-deep(.el-form-item){ - .el-form-item__label{ - margin-bottom: 4px; - } - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue b/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue deleted file mode 100644 index 26a089b..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/ground.vue +++ /dev/null @@ -1,563 +0,0 @@ - <template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="作业单位" prop="workDetail.operationDepId"> -<!-- <el-select v-model="form.workDetail.operationDepId">--> -<!-- <el-option--> -<!-- v-for="item in csDepList"--> -<!-- :key="item.value"--> -<!-- :label="item.label"--> -<!-- :value="item.value"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="范围" prop="workDetail.gbScope"> - <el-input - v-model="form.workDetail.gbScope" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="动土方式" prop="workDetail.gbMethod"> - <el-input - v-model="form.workDetail.gbMethod" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="图片上传" prop="workDetail.gbPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - <el-dialog v-model="dialogVisible"> - <img w-full :src="dialogImageUrl" alt="Preview Image" /> - </el-dialog> - </div> -</template> - -<script lang="ts"> - import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search,Plus } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import axios from 'axios'; - - interface stateType { - equipmentDialog: boolean, - form: Object, - csDepList: Array<any>, - otherWorkList: Array<any>, - fileList: Array<file>, - uploadUrl: string, - dialogVisible: Boolean, - dialogImageUrl: string | null, - imgLimit: number, - casProps: {}, - isOverSize: Boolean - } - interface file { - url: string; - } - export default { - name: 'groundForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList','departList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 4, - workLevel: 0, - workContent: '', - workLocation: '', - hazardIdentification: '', - maBaseId: null, - workDetail:{ - operationDepId: null, - gbScope: '', - gbMethod: '', - gbPath: [], - otherSpecialWork: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - isOverSize: false, - fileList: [], - imgLimit: 3, - uploadUrl: '', - dialogVisible: false, - dialogImageUrl: null, - csDepList: [ - { - label: "单位一", - value: 1 - }, - { - label: "单位二", - value: 2 - }, - { - label: "单位三", - value: 3 - }, - { - label: "单位四", - value: 4 - }, - { - label: "单位五", - value: 5 - }, - { - label: "单位六", - value: 6 - } - ], - otherWorkList: [ - { - label: '动火作业', - value: 1 - }, - { - label: '受限空间作业', - value: 2 - }, - { - label: '吊装作业', - value: 3 - }, - { - label: '动土作业', - value: 4 - }, - { - label: '断路作业', - value: 5 - }, - { - label: '高处作业', - value: 6 - }, - { - label: '临时用电作业', - value: 7 - }, - { - label: '盲板抽堵作业', - value: 8 - } - ], - casProps: { - emitPath: false, - value: 'depId', - label: 'depName', - multiple: false, - expandTrigger: 'hover', - checkStrictly: true - } - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.gbScope": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.gbMethod": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.gbPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - - const openMaList = ()=>{ - if(state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - // if (state.form.wmAddReqDTOList == null || state.form.wmAddReqDTOList.length == 0){ - // ElMessage({ - // type: 'warning', - // message: '请确认关联物资的配置' - // }); - // return - // } - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - data.workDetail.gbPath = data.workDetail.gbPath.join(',') - const res = await workApplyApi().postGroundApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - state.form.workDetail.gbPath = [] - state.fileList = [] - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - const handlePreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile); - }; - - const handlePictureCardPreview = (uploadFile: { url: string }) => { - state.dialogImageUrl = uploadFile.url!; - state.dialogVisible = true; - }; - - const getUploadUrl = async (rawFile: any) => { - const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' - if(fileSize === '0'){ - ElMessage({ - type: 'warning', - message: '文件大小不能超过500k。' - }); - state.isOverSize = true - return false - }else{ - const res = await workApplyApi().getUploadUrl(rawFile.name); - state.form.workDetail.gbPath.push(res.data.data.fileName) - state.uploadUrl = res.data.data.uploadUrl; - } - }; - - const upload = async (params: any) => { - // const formData = new FormData(); - // formData.append('file', state.fileList[0].raw); - let reader = new FileReader(); - reader.readAsArrayBuffer(params.file); - reader.onload = async () => { - axios - .put(state.uploadUrl, reader.result, { - header: { 'Content-Type': 'multipart/form-data' } - }) - .then(() => { - // if (state.fileList.length === 2) { - // state.fileList.splice(0, 1); - // } - // console.log(state.form.workDetail.gbPath,'gbpath') - }); - }; - }; - - const beforeRemove = (file: {}, fileList: []) => { - const result = new Promise((resolve, reject) => { - if(!state.isOverSize){ - ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => { - // console.log(state.workDetail.gbPath,'path') - const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.gbPath.splice(index,1) - // 请求删除接口 - deletePic(false,list[index]) - } - }) - }) - .catch(() => { - reject(false); - }); - }else{ - const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.gbPath.splice(index,1) - deletePic(true,list[index]) - } - }) - state.isOverSize = false - } - }); - return result; - }; - - - // 删除图片接口 - const deletePic = async(isOverSize:boolean,fileName:string)=>{ - const res = await workApplyApi().deleteFile({fileName: fileName}) - if (res.data.code === '200') { - ElMessage({ - type: isOverSize ? 'error' : 'success', - message: isOverSize ? '上传失败':'删除成功!' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - - const showTip =()=>{ - ElMessage({ - type: 'warning', - message: '超出文件上传数量' - }); - } - - // const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { - // console.log('2111111111111') - // }; - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - Plus, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - handlePreview, - getUploadUrl, - beforeRemove, - upload, - showTip, - submitForm, - handlePictureCardPreview, - ...toRefs(state), - }; - }, - }; -</script> - -<style scoped lang="scss"> - .avatar-uploader .avatar { - width: 178px; - height: 178px; - display: block; - } - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } - } -</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> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/height.vue b/src/views/specialWorkSystem/workTicket/zysq/components/height.vue deleted file mode 100644 index 0fcee6b..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/height.vue +++ /dev/null @@ -1,413 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="form.workLevel"> - <el-option - v-for="item in workLevelList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="作业单位" prop="workDetail.operationDepId"> - <!-- <el-select v-model="form.workDetail.operationDepId">--> - <!-- <el-option--> - <!-- v-for="item in heDepList"--> - <!-- :key="item.value"--> - <!-- :label="item.label"--> - <!-- :value="item.value"--> - <!-- />--> - <!-- </el-select>--> - <el-cascader v-model="form.workDetail.operationDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业高度" prop="workDetail.operationHeight"> - <el-input - v-model="form.workDetail.operationHeight" - type="number" - placeholder="请输入作业高度(大于等于0)" - > - <template #append>米(m)</template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option - v-for="item in otherWorkList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - - interface stateType { - equipmentDialog: boolean, - form: Object, - workTypeList: Array<any>, - workLevelList: Array<any>, - heDepList: Array<any>, - otherWorkList: Array<any>, - casProps:{} - } - export default defineComponent({ - name: 'heightForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList','departList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 6, - workLevel: null, - workContent: '', - workLocation: '', - hazardIdentification: '', - maBaseId: null, - workDetail:{ - operationDepId: '', - operationHeight: null, - otherSpecialWork: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - heDepList: [ - { - label: "单位一", - value: 1 - }, - { - label: "单位二", - value: 2 - }, - { - label: "单位三", - value: 3 - }, - { - label: "单位四", - value: 4 - }, - { - label: "单位五", - value: 5 - }, - { - label: "单位六", - value: 6 - } - ], - casProps: { - emitPath: false, - value: 'depId', - label: 'depName', - multiple: false, - expandTrigger: 'hover', - checkStrictly: true - }, - workTypeList: [ - { - label: "类型一", - value: 1 - }, - { - label: "类型二", - value: 2 - } - ], - workLevelList: [ - { - label: "一级高处作业", - value: 4 - }, - { - label: "二级高处作业", - value: 5 - }, - { - label: "三级高处作业", - value: 6 - }, - { - label: "特级高处作业", - value: 7 - } - ], - otherWorkList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ] - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.operationDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.operationHeight": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - const openMaList = ()=>{ - if(state.form.workLevel == null || state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人和作业等级再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - const res = await workApplyApi().postHeightApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - submitForm, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue b/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue deleted file mode 100644 index f9ae96f..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/hoist.vue +++ /dev/null @@ -1,308 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="form.workLevel"> - <el-option - v-for="item in workLevelList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="吊装工具名称" prop="workDetail.hoistingToolName"> - <el-input - v-model="form.workDetail.hoistingToolName" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="起吊物体质量" prop="workDetail.weightMass"> - <el-input - v-model="form.workDetail.weightMass" - type="number" - placeholder="请输入起吊物体质量(大于等于0)" - > - <template #append>吨(t)</template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - interface stateType { - equipmentDialog: boolean, - form: Object, - workLevelList: Array<any> - } - export default defineComponent({ - name: 'hoistForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 3, - workLevel: null, - workContent: '', - workLocation: '', - maBaseId: null, - hazardIdentification: '', - workDetail:{ - hoistingToolName: '', - weightMass: null - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - workLevelList: [ - { - label: "一级吊装作业", - value: 8 - }, - { - label: "二级吊装作业", - value: 9 - }, - { - label: "三级吊装作业", - value: 10 - } - ] - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.hoistingToolName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.weightMass": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - const openMaList = ()=>{ - if(state.form.workLevel == null || state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人和作业等级再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.weightMass = Number(data.workDetail.weightMass) - const res = await workApplyApi().postHoistApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - submitForm, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue b/src/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue deleted file mode 100644 index 384515a..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue +++ /dev/null @@ -1,293 +0,0 @@ -<template> - <el-dialog v-model="equipmentDialog" title="关联物资标准" width="40%" center @close="closeMaterial"> - <div class="standard" v-for="item in materialList"> - <div>{{ item.name }}</div> - <el-button @click="openList(item)" type="success">选用</el-button> - </div> - - <el-dialog v-model="equipDetailDialog" title="物资标准详情" width="75%" center @open="openDetail"> - <div class="choose-receiver"> - <span>选择其他作业关联人员</span> - <el-select v-model="receiveUids" multiple @change="changeReceiver"> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </div> - <table class="table"> - <tr> - <th class="w-25">物资名称</th> - <th class="w-15">标准值</th> - <th class="w-15">级别</th> - <th class="w-30">关联人员与个数</th> - <th class="w-15">实际使用</th> - </tr> - <tr v-for="(item,index) in materialDetail"> - <td class="w-25">{{item.materialName}}</td> -<!-- <td class="w-1">--> -<!-- <el-select v-model="addList[index].depId" @change="changeDep($event,index)">--> -<!-- <el-option--> -<!-- v-for="i in item.msList"--> -<!-- :key="i.depId"--> -<!-- :label="i.depName"--> -<!-- :value="i.depId"--> -<!-- />--> -<!-- </el-select>--> -<!-- </td>--> -<!-- <td class="w-15">--> -<!-- {{stockCount[index]}}--> -<!-- </td>--> - <td class="w-15">{{item.standVal}}</td> - <td class="w-15">{{item.configurationLevelName}}</td> - <td class="w-30"> - {{item.receiveUnames}} - </td> -<!-- <td class="w-15">--> -<!-- <el-input type="number" v-model.number="addList[index].useCount"/>--> -<!-- </td>--> - <td class="w-15"> - {{item.receiveCount}} - </td> - </tr> - </table> - <template #footer> - <span class="dialog-footer"> - <el-button @click="closeChoose()" size="default">取消</el-button> - <el-button type="primary" @click="submitMaterials" size="default">确认</el-button> - </span> - </template> - </el-dialog> - </el-dialog> -</template> - -<script lang="ts"> -import {workApplyApi} from "/@/api/specialWorkSystem/workApply"; - -interface stateType { - equipmentDialog:boolean - materialList: Array<any> - equipDetailDialog: boolean - materialDetail: Array<any> - stockCount: Array<number> - chosenId: number | null, - receiveUids: Array<number> -} - - -import { reactive, toRefs, ref } from 'vue'; -import { approveBasicApi } from '/@/api/specialWorkSystem/approveBasic'; -import {ElMessage, ElMessageBox} from 'element-plus'; -import {useUserInfo} from "/@/stores/userInfo"; -import {storeToRefs} from "pinia"; - -export default { - name: 'materialDialog', - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const approveBasicFormRef = ref(); - const state = reactive<stateType>({ - chosenId: null, - equipmentDialog: false, - materialList: [], - equipDetailDialog: false, - materialDetail: [], - stockCount: [], - receiveUids: [] - }); - - // 确认物资标准 - const getMaList = async(type:number,level:number) =>{ - const data = {workType: type,workLevel: level} - const res = await workApplyApi().getMaterial(data) - if (res.data.code === '200') { - if(res.data.data && res.data.data.length>0){ - state.materialList = JSON.parse(JSON.stringify(res.data.data)) - state.equipmentDialog = true - }else{ - ElMessage({ - type: 'warning', - message: '暂时查询不到物资标准信息' - }); - } - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - const openList = async(item:object)=>{ - state.chosenId = item.id - const data = {maBaseId: state.chosenId,receiveUids:state.receiveUids} - const res = await workApplyApi().getMaterialDetail(data) - if (res.data.code === '200') { - if(res.data.data && res.data.data.length>0){ - state.materialDetail = res.data.data - state.equipDetailDialog = true - }else{ - ElMessage({ - type: 'warning', - message: '暂时查询不到物资标准信息' - }); - } - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - // state.stockCount = [] - // if(item.mcList && item.mcList.length>0){ - // for(let j in item.mcList){ - // if(item.mcList[j].msList == null || item.mcList[j].msList.length==0){ - // item.mcList.splice(j,1) - // } - // } - // state.materialDetail = item.mcList - // for(let i in state.materialDetail){ - // state.addList.push( - // { - // materialId: state.materialDetail[i].materialId, - // depId: null, - // depName: '', - // useCount: null - // } - // ) - // for(let x in state.materialDetail[i].msList){ - // if(state.materialDetail[i].msList[x].depId == userInfos.value.depId){ - // state.addList[i].depId = userInfos.value.depId - // state.addList[i].depName = state.materialDetail[i].msList[x].depName - // state.stockCount[i] = state.materialDetail[i].msList.find((e) => e.depId == state.addList[i].depId).stockCount - // } - // } - // } - // } - } - const changeReceiver = async ()=>{ - const data = {maBaseId: state.chosenId,receiveUids:state.receiveUids} - const res = await workApplyApi().getMaterialDetail(data) - if (res.data.code === '200') { - if(res.data.data && res.data.data.length>0){ - state.materialDetail = res.data.data - }else{ - ElMessage({ - type: 'warning', - message: '暂时查询不到物资标准信息' - }); - } - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - const openDetail = ()=>{ - } - const submitMaterials = ()=>{ - // if(state.addList.length > 0 && (state.addList.some((e) => e.depId == null && e.useCount != null ) || state.addList.some((e) => e.useCount == null && e.depId != null))){ - // ElMessage({ - // type: 'warning', - // message: '出库部门或实际使用值不可为空' - // }); - // return - // } - // for(let i in state.materialDetail){ - // if(state.materialDetail[i].configurationLevelName == '必选' && state.addList[i].depId != null && state.addList[i].useCount <= 0){ - // ElMessage({ - // type: 'warning', - // message: '必选物资数量不能小于等于0' - // }); - // return - // } - // if((state.stockCount[i] !=null && state.addList[i].useCount !=null) && (state.stockCount[i] < state.addList[i].useCount)){ - // ElMessage({ - // type: 'warning', - // message: '物资配置数量超出库存量,请重新配置' - // }); - // return - // } - // } - // if(state.addList.length > 0){ - // for(let n in state.addList){ - // if(state.addList[n].depId == null && state.addList[n].useCount == null){ - // state.addList.splice(n,1) - // } - // } - // } - console.log(state.receiveUids,state.chosenId,'666666666') - context.emit('conFirmMaterials',state.receiveUids,state.chosenId) - state.equipDetailDialog = false - state.equipmentDialog = false - } - - const closeMaterial = ()=>{ - - } - const closeChoose = () =>{ - state.equipDetailDialog = false - } - return { - ...toRefs(state), - getMaList, - openList, - changeReceiver, - openDetail, - closeChoose, - closeMaterial, - submitMaterials - }; - } -}; -</script> - -<style lang="scss" scoped> - .standard{ - width: 100%; - display: flex; - margin-bottom: 20px; - align-items: center; - justify-content: space-between; - } - - .table{ - width: 100%; - border-collapse: collapse; - margin-top: 20px; - tr{ - width: 100%; - border: 1px solid #ccc; - th,td{ - padding: 6px 0; - border-left: 1px solid #ccc; - &:first-of-type{ - border-left: none; - } - } - td{ - font-weight: bolder; - } - - .w-15{ - width: 15%; - text-align: center; - } - .w-20{ - width: 20%; - text-align: center; - } - .w-25{ - width: 25%; - text-align: center; - } - .w-30{ - width: 30%; - text-align: center; - } - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue b/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue deleted file mode 100644 index f0e9544..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/plate.vue +++ /dev/null @@ -1,619 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业等级" prop="workLevel"> - <el-select v-model="form.workLevel"> - <el-option - v-for="item in workLevelList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="盲板编号" prop="workDetail.bpCode"> - <el-input - v-model="form.workDetail.bpCode" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="主要介质" prop="workDetail.mainMedia"> - <el-input - v-model="form.workDetail.mainMedia" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="温度" prop="workDetail.temperature"> - <el-input - v-model="form.workDetail.temperature" - type="number" - placeholder="请输入温度(大于等于0)" - > - <template #append>摄氏度(℃)</template> - </el-input> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="压力" prop="workDetail.pressure"> - <el-input - v-model="form.workDetail.pressure" - type="number" - placeholder="请输入压力(大于等于0)" - > - <template #append>千帕(kPa)</template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="盲板材质" prop="workDetail.bpMaterialQuality"> - <el-input - v-model="form.workDetail.bpMaterialQuality" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="盲板规格" prop="workDetail.bpSpecification"> - <el-input - v-model="form.workDetail.bpSpecification" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="盲板时间" prop="workDetail.installLine"> - <el-date-picker - v-model="form.workDetail.installLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="--" - start-placeholder="装盲板时间" - end-placeholder="拆盲板时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="盲板位置" prop="workDetail.bpLocation"> - <el-input - v-model="form.workDetail.bpLocation" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option - v-for="item in otherWorkList" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <el-form-item label="盲板位置图" prop="workDetail.bpLocationMapPath"> - <el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl"> - <el-icon><Plus /></el-icon> - <template #tip> - <div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div> - </template> - </el-upload> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - <el-dialog v-model="dialogVisible"> - <img w-full :src="dialogImageUrl" alt="Preview Image" /> - </el-dialog> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import axios from 'axios'; - - interface stateType { - form: Object, - csDepList: Array<any>, - otherWorkList: Array<any>, - workLevelList: Array<any>, - fileList: Array<file>, - uploadUrl: string, - dialogVisible: Boolean, - dialogImageUrl: string | null, - imgLimit: number, - isOverSize: boolean, - equipmentDialog: boolean - } - interface file { - url: string; - } - export default defineComponent({ - name: 'plateForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 8, - workLevel: null, - workContent: '', - workLocation: '', - maBaseId: null, - hazardIdentification: '', - workDetail:{ - bpCode: '', - mainMedia: '', - temperature: null, - pressure: null, - bpMaterialQuality: '', - bpSpecification: '', - bpLocation: '', - bpLocationMapPath: [], - installLine: [], - installBpTime: '', - uninstallBpTime: '', - otherSpecialWork: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - isOverSize: false, - fileList: [], - imgLimit: 3, - uploadUrl: '', - dialogVisible: false, - dialogImageUrl: null, - workLevelList: [ - { - label: "抽盲板作业", - value: 11 - }, - { - label: "堵盲板作业", - value: 12 - } - ], - csDepList: [ - { - label: "单位一", - value: 1 - }, - { - label: "单位二", - value: 2 - }, - { - label: "单位三", - value: 3 - }, - { - label: "单位四", - value: 4 - }, - { - label: "单位五", - value: 5 - }, - { - label: "单位六", - value: 6 - } - ], - otherWorkList: [ - { - label: "动火作业", - value: 1 - }, - { - label: "受限空间作业", - value: 2 - }, - { - label: "吊装作业", - value: 3 - }, - { - label: "动土作业", - value: 4 - }, - { - label: "断路作业", - value: 5 - }, - { - label: "高处作业", - value: 6 - }, - { - label: "临时用电作业", - value: 7 - }, - { - label: "盲板抽堵作业", - value: 8 - } - ] - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLevel: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bpCode": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.mainMedia": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.temperature": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.pressure": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bpMaterialQuality": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bpSpecification": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.installLine": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bpLocation": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.bpLocationMapPath": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - const openMaList = ()=>{ - if(state.form.workLevel == null || state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人和作业等级再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - state.form.workDetail.installBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[0] - state.form.workDetail.uninstallBpTime = JSON.parse(JSON.stringify(state.form.workDetail.installLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - let { installLine, ...data2 } = JSON.parse(JSON.stringify(state.form.workDetail)) - data.workDetail = data2 - data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - data.workDetail.bpLocationMapPath = data.workDetail.bpLocationMapPath.join(',') - data.workDetail.temperature = Number(data.workDetail.temperature) - data.workDetail.pressure = Number(data.workDetail.pressure) - const res = await workApplyApi().postPlateApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - state.form.workDetail.bpLocationMapPath = [] - state.fileList = [] - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - const handlePreview: UploadProps['onPreview'] = (uploadFile) => { - console.log(uploadFile); - }; - - const handlePictureCardPreview = (uploadFile: { url: string }) => { - state.dialogImageUrl = uploadFile.url!; - state.dialogVisible = true; - }; - - const getUploadUrl = async (rawFile: any) => { - const fileSize = rawFile.size / 1024 < 500 ? '1' : '0' - if(fileSize === '0'){ - ElMessage({ - type: 'warning', - message: '文件大小不能超过500k。' - }); - state.isOverSize = true - return false - }else{ - const res = await workApplyApi().getUploadUrl(rawFile.name); - state.form.workDetail.bpLocationMapPath.push(res.data.data.fileName) - state.uploadUrl = res.data.data.uploadUrl; - console.log(res.data.data.fileName,'name') - } - }; - - const upload = async (params: any) => { - // const formData = new FormData(); - // formData.append('file', state.fileList[0].raw); - let reader = new FileReader(); - reader.readAsArrayBuffer(params.file); - reader.onload = async () => { - axios - .put(state.uploadUrl, reader.result, { - header: { 'Content-Type': 'multipart/form-data' } - }) - .then(() => { - // if (state.fileList.length === 2) { - // state.fileList.splice(0, 1); - // } - // console.log(state.form.workDetail.bpLocationMapPath,'bpLocationMapPath') - }); - }; - }; - - const beforeRemove = (file: {}, fileList: []) => { - const result = new Promise((resolve, reject) => { - if(!state.isOverSize){ - ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', { - confirmButtonText: '确定', - cancelButtonText: '取消', - type: 'warning' - }) - .then(() => { - // console.log(state.workDetail.bpLocationMapPath,'path') - const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.bpLocationMapPath.splice(index,1) - deletePic(false,list[index]) - } - }) - // 请求删除接口 - }) - .catch(() => { - reject(false); - }); - }else{ - const list = JSON.parse(JSON.stringify(state.form.workDetail.bpLocationMapPath)) - fileList.map((item,index)=>{ - if(item.uid === file.uid){ - fileList.splice(index,1) - state.form.workDetail.bpLocationMapPath.splice(index,1) - deletePic(true,list[index]) - } - }) - state.isOverSize = false - } - }); - return result; - }; - - - // 删除图片接口 - const deletePic = async(isOverSize:boolean,fileName:string)=>{ - console.log(fileName,'fileName') - const res = await workApplyApi().deleteFile({fileName: fileName}) - if (res.data.code === '200') { - ElMessage({ - type: isOverSize ? 'error' : 'success', - message: isOverSize ? '上传失败':'删除成功!' - }); - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - } - const showTip =()=>{ - ElMessage({ - type: 'warning', - message: '超出文件上传数量' - }); - } - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - handlePreview, - getUploadUrl, - beforeRemove, - upload, - showTip, - submitForm, - handlePictureCardPreview, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/power.vue b/src/views/specialWorkSystem/workTicket/zysq/components/power.vue deleted file mode 100644 index 07d84b4..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/power.vue +++ /dev/null @@ -1,294 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed"/> - <el-row> - <el-col :span="12"> - <el-form-item label="电源接入点" prop="workDetail.powerAccessPoint"> - <el-input - v-model="form.workDetail.powerAccessPoint" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="工作电压" prop="workDetail.workingVoltage"> - <el-input - v-model="form.workDetail.workingVoltage" - type="number" - placeholder="请输入工作电压(大于等于0)" - > - <template #append>伏特(v)</template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="用电设备及功率" prop="workDetail.equipmentAndPower"> - <el-input - v-model="form.workDetail.equipmentAndPower" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - interface stateType { - form: Object, - equipmentDialog: boolean - } - export default defineComponent({ - name: 'powerForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 7, - workLevel: 0, - workContent: '', - workLocation: '', - maBaseId: null, - hazardIdentification: '', - workDetail:{ - powerAccessPoint: '', - workingVoltage: null, - equipmentAndPower: '' - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - } - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.powerAccessPoint": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.workingVoltage": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.equipmentAndPower": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - - const openMaList = ()=>{ - if(state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - // data.workDetail.weightMass = Number(data.workDetail.weightMass) - const res = await workApplyApi().postPowerApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - submitForm, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/components/space.vue b/src/views/specialWorkSystem/workTicket/zysq/components/space.vue deleted file mode 100644 index a474192..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/components/space.vue +++ /dev/null @@ -1,379 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef"> - <div class="homeCard"> - <el-row> - <el-col :span="12"> - <el-form-item label="作业人" prop="operatorUids"> - <el-select v-model="form.operatorUids" multiple> - <el-option - v-for="item in workerList" - :key="item.uid" - :label="item.username" - :value="item.uid" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业时间" prop="workTimeLine"> - <el-date-picker - v-model="form.workTimeLine" - format="YYYY-MM-DD HH:mm" - value-format="YYYY-MM-DD HH:mm:00" - type="datetimerange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="作业内容" prop="workContent"> - <el-input - v-model="form.workContent" - autosize - type="textarea" - placeholder="请输入作业内容" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="作业地址" prop="workLocation"> - <el-input - v-model="form.workLocation" - autosize - type="textarea" - placeholder="请输入作业地址" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="危害辨识" prop="hazardIdentification"> - <el-input - v-model="form.hazardIdentification" - placeholder="请输入危害辨识" - /> - </el-form-item> - </el-col> - </el-row> - <el-divider border-style="dashed" /> - <el-row> - <el-col :span="12"> - <el-form-item label="受限空间所属单位" prop="workDetail.csDepId"> -<!-- <el-select v-model="form.workDetail.csDepId">--> -<!-- <el-option--> -<!-- v-for="item in csDepList"--> -<!-- :key="item.value"--> -<!-- :label="item.label"--> -<!-- :value="item.value"--> -<!-- />--> -<!-- </el-select>--> - <el-cascader v-model="form.workDetail.csDepId" :options="departList" :props="casProps" :show-all-levels="false" @change="handleChange" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="受限空间名称" prop="workDetail.csName"> - <el-input - v-model="form.workDetail.csName" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="空间内原有介质" prop="workDetail.csOriginalName"> - <el-input - v-model="form.workDetail.csOriginalName" - autosize - type="textarea" - placeholder="请输入" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="关联作业" prop="workDetail.otherSpecialWork"> - <el-select v-model="form.workDetail.otherSpecialWork" multiple> - <el-option v-for="item in otherWorkList" :key="item.value" :label="item.label" :value="item.value" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="选择关联物资"> - <el-button type="primary" @click="openMaList">选择物资标准</el-button> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - <material-dialog ref="material" @conFirmMaterials="conFirmMaterials"></material-dialog> - <div class="applyBtn"> - <el-button type="primary" size="large" plain @click="submitForm(ruleFormRef)">发起申请</el-button> - </div> - </div> - </div> -</template> - -<script lang="ts"> -import {toRefs, reactive, defineComponent, ref, defineAsyncComponent} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage, ElMessageBox } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - - interface stateType { - form: Object, - csDepList: Array<any>, - otherWorkList: Array<any>, - casProps: {}, - equipmentDialog: boolean - } - export default defineComponent({ - name: 'spaceForm', - components: { - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')), - }, - props:['workerList','departList'], - setup(props: any, context: any) { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - equipmentDialog: false, - form: { - operatorUids: [], - workType: 2, - workLevel: 0, - workContent: '', - workLocation: '', - maBaseId: null, - hazardIdentification: '', - workDetail:{ - csDepId: null, - csName: '', - csOriginalName: '', - otherSpecialWork: [] - }, - receiveUids: [], - workTimeLine: [], - expStartTime: '', - expEndTime: '' - }, - csDepList: [ - { - label: "单位一", - value: 1 - }, - { - label: "单位二", - value: 2 - }, - { - label: "单位三", - value: 3 - }, - { - label: "单位四", - value: 4 - }, - { - label: "单位五", - value: 5 - }, - { - label: "单位六", - value: 6 - } - ], - casProps: { - emitPath: false, - value: 'depId', - label: 'depName', - multiple: false, - expandTrigger: 'hover', - checkStrictly: true - }, - otherWorkList: [ - { - label: '动火作业', - value: 1 - }, - { - label: '受限空间作业', - value: 2 - }, - { - label: '吊装作业', - value: 3 - }, - { - label: '动土作业', - value: 4 - }, - { - label: '断路作业', - value: 5 - }, - { - label: '高处作业', - value: 6 - }, - { - label: '临时用电作业', - value: 7 - }, - { - label: '盲板抽堵作业', - value: 8 - } - ] - }); - const material = ref() - const ruleFormRef = ref<FormInstance>() - const applyRules = reactive<FormRules>({ - operatorUids: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workContent: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workLocation: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - hazardIdentification: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - workTimeLine: [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.csDepId": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.csName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }], - "workDetail.csOriginalName": [{ required: true, message: '该内容不能为空', trigger: 'blur' }] - }); - - // const toZero = (value: string | number,index: number,name: string,x:number) =>{ - // if(!value){ - // state.materialList[index][name][x].value = 0 - // } - // } - - const openMaList = ()=>{ - if(state.form.operatorUids == []){ - ElMessage({ - type: 'warning', - message: '请先选择作业人再获取相应物资配置' - }); - }else{ - if(material.value.receiveUids.length==0){ - material.value.receiveUids = state.form.operatorUids - } - material.value.getMaList(state.form.workType,state.form.workLevel) - material.value.workerList = props.workerList - } - } - const conFirmMaterials = (receiveUids: Array<number>,chosenId: number) =>{ - state.form.maBaseId = null - state.form.receiveUids = [] - state.form.receiveUids = receiveUids - state.form.maBaseId = chosenId - } - - const submitForm = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate(async (valid, fields) => { - if (valid) { - state.form.expStartTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[0] - state.form.expEndTime = JSON.parse(JSON.stringify(state.form.workTimeLine))[1] - let { workTimeLine, ...data } = JSON.parse(JSON.stringify(state.form)) - data.workDetail.otherSpecialWork = data.workDetail.otherSpecialWork.join(',') - console.log(data,'data') - const res = await workApplyApi().postSpaceApply(data) - if (res.data.code === '200') { - ElMessage({ - type: 'success', - message: '提交成功!' - }); - formEl.resetFields() - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - material.value.maBaseId = null - material.value.receiveUids = [] - } else { - console.log('error submit!', fields) - } - }) - } - - - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - return { - renderMenu, - Search, - ruleFormRef, - applyRules, - material, - openMaList, - conFirmMaterials, - submitForm, - ...toRefs(state), - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - padding-top: 15px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - :deep(.el-cascader){ - width: 100% !important; - } - } -</style> diff --git a/src/views/specialWorkSystem/workTicket/zysq/index.vue b/src/views/specialWorkSystem/workTicket/zysq/index.vue deleted file mode 100644 index fea4f09..0000000 --- a/src/views/specialWorkSystem/workTicket/zysq/index.vue +++ /dev/null @@ -1,177 +0,0 @@ -<template> - <div class="home-container"> - <el-tabs type="border-card" @tab-change="switchTab"> - <el-tab-pane label="动火作业"> - <fire-form ref="fire" :workerList = allWorkers></fire-form> - </el-tab-pane> - <el-tab-pane label="受限空间作业"> - <space-form ref="space" :workerList = allWorkers :departList = departmentList></space-form> - </el-tab-pane> - <el-tab-pane label="吊装作业"> - <hoist-form ref="hoist" :workerList = allWorkers></hoist-form> - </el-tab-pane> - <el-tab-pane label="动土作业"> - <ground-form ref="ground" :workerList = allWorkers :departList = departmentList></ground-form> - </el-tab-pane> - <el-tab-pane label="断路作业"> - <broken-form ref="broken" :workerList = allWorkers :departList = departmentList></broken-form> - </el-tab-pane> - <el-tab-pane label="高处作业"> - <height-form ref="height" :workerList = allWorkers :departList = departmentList></height-form> - </el-tab-pane> - <el-tab-pane label="临时用电作业"> - <power-form ref="power" :workerList = allWorkers></power-form> - </el-tab-pane> - <el-tab-pane label="盲板抽堵作业"> - <plate-form ref="plate" :workerList = allWorkers></plate-form> - </el-tab-pane> - </el-tabs> - <material-dialog ref="material"></material-dialog> - </div> -</template> - -<script lang="ts"> - import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Search } from '@element-plus/icons-vue' - import { ElMessage } from 'element-plus' - import type { FormInstance, FormRules } from 'element-plus' - import { workApplyApi } from '/@/api/specialWorkSystem/workApply'; - import {teamManageApi} from "/@/api/systemManage/basicDateManage/personShiftManage/teamManage"; - - interface stateType { - allWorkers: Array<any> - departmentList: Array<any> - } - export default defineComponent({ - name: 'apply', - components: { - fireForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/fire.vue')), - spaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/space.vue')), - hoistForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/hoist.vue')), - groundForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/ground.vue')), - brokenForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/broken.vue')), - heightForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/height.vue')), - powerForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/power.vue')), - plateForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/plate.vue')), - materialDialog: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/zysq/components/materialDialog.vue')) - }, - setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({ - allWorkers: [], - departmentList: [] - }); - const fire = ref() - const space = ref() - const hoist = ref() - const ground = ref() - const broken = ref() - const height = ref() - const power = ref() - const plate = ref() - const material = ref() - // 获取用户列表 - const getAll = async ()=>{ - const res = await workApplyApi().getAllUsers() - if (res.data.code === '200') { - state.allWorkers = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - // 获取部门列表 - const getAllDepartment = async () => { - let res = await teamManageApi().getAllDepartment(); - if (res.data.code === '200') { - state.departmentList = JSON.parse(JSON.stringify(res.data.data)) - } else { - ElMessage({ - type: 'warning', - message: res.data.msg - }); - } - }; - - const switchTab = (name)=>{ - console.log(name,'name') - fire.value.form.resetFields() - material.value.maBaseId = null - material.value.receiveUids = [] - } - - - // 页面载入时执行方法 - onMounted(() => { - getAll(); - getAllDepartment(); - }); - - return { - ...toRefs(state), - fire, - space, - broken, - ground, - height, - hoist, - plate, - power, - material, - switchTab - }; - }, - }); -</script> - -<style scoped lang="scss"> - .home-container { - height: 100%; - overflow: hidden; - position: relative; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - margin-bottom: 20px; - } - .applyBtn{ - width: 100%; - background: #fff; - height: 80px; - z-index: 5; - box-shadow: 0 -3px 8px rgba(150,150,150,.1); - display: flex; - align-items: center; - justify-content: center; - } - .el-row{ - margin-bottom: 20px; - } - .el-row:last-child { - margin-bottom: 0; - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } - .el-cascader{ - width: 100% !important; - } - } -</style> diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue index ae7afd9..9a44a68 100644 --- a/src/views/system/menu/component/menuDialog.vue +++ b/src/views/system/menu/component/menuDialog.vue @@ -99,7 +99,7 @@ isShowDialog: false, title: '', buttonName: '', - // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式 + // 参数请参考 `/src/router/route.json.ts` 中的 `dynamicRoutes` 路由菜单格式 ruleForm: { projectId: '', parentId: 0, diff --git a/src/views/test/index.vue b/src/views/test/index.vue new file mode 100644 index 0000000..34cd1a0 --- /dev/null +++ b/src/views/test/index.vue @@ -0,0 +1,13 @@ +<template> + +</template> + +<script> +export default { + name: "index" +} +</script> + +<style scoped> + +</style> -- Gitblit v1.9.2