From 216d03fa53a38ffc6afe45756d2ae73b21bf00b5 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期二, 23 八月 2022 11:43:49 +0800 Subject: [PATCH] lct --- src/views/intellectInspect/inspectIndex/index.vue | 157 +++++----- src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue | 21 + .env.development | 4 .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26__Default_Changelist_.xml | 4 src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue | 2 .idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26_[Default_Changelist]/shelved.patch | 579 +++++++++++++++++++++++++++++++++++++++++ src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue | 15 7 files changed, 693 insertions(+), 89 deletions(-) diff --git a/.env.development b/.env.development index e88bf91..fdcc879 100644 --- a/.env.development +++ b/.env.development @@ -1,13 +1,13 @@ # 本地环境 ENV = 'development' -VITE_API_URL = 'http://192.168.0.35:8008' +#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.29:8008' +VITE_API_URL = 'http://192.168.0.29:8008' #黄振接口地址 #VITE_API_URL = 'http://192.168.0.179:8008' diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26_\133Default_Changelist\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26_\133Default_Changelist\135/shelved.patch" new file mode 100644 index 0000000..9eb85a7 --- /dev/null +++ "b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26_\133Default_Changelist\135/shelved.patch" @@ -0,0 +1,579 @@ +Index: .env.development +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+># 本地环境\r\nENV = 'development'\r\n\r\nVITE_API_URL = 'http://192.168.0.35:8008'\r\n#李宇飞接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.50:8008'\r\n#张凤接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.29:8008'\r\n#黄振接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.179:8008'\r\n#施正红接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.69:8008'\r\n#戚会山接口地址\r\n\r\n#VITE_API_URL = 'http://121.239.169.27:16006/safeplatform'\r\n#线上正式环境接口地址\r\n\r\n#VITE_API_URL_OUT = 'http://121.239.169.27:16006/safeplatform-out'\r\n#线上正式环境外包接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.52:8011/safeplatform'\r\n#本地预发接口地址\r\n\r\n#VITE_API_URL_OUT = 'http://192.168.0.52:8011/safeplatform-out'\r\n#本地外包预发接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.52:7021/safeplatform'\r\n#本地测试接口地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.52:7021/safeplatform'\r\n#本地测试websocket接口地址\r\n\r\n#VITE_API_URL = 'http://192.168.0.29:7008'\r\n#黄振接口test地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.29:16107'\r\n#黄振websocket test接口地址\r\n\r\n#VITE_API_URL_SOCKET = 'http://192.168.0.29:8018'\r\n#黄振websocket接口地址\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/.env.development b/.env.development +--- a/.env.development (revision 624a145dcb9959e769fa635a4b9e2fe4758772ed) ++++ b/.env.development (date 1661216855739) +@@ -1,13 +1,13 @@ + # 本地环境 + ENV = 'development' + +-VITE_API_URL = 'http://192.168.0.35:8008' ++#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.29:8008' ++VITE_API_URL = 'http://192.168.0.29:8008' + #黄振接口地址 + + #VITE_API_URL = 'http://192.168.0.179:8008' +Index: src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+><template>\r\n <div class=\"home-container\">\r\n <div style=\"height: 100%\">\r\n <el-row class=\"homeCard\">\r\n <div class=\"basic-line\">\r\n <span>任务类型:</span>\r\n <el-select v-model=\"tableData.params.taskType\" clearable filterable class=\"input-box\" placeholder=\"任务类型\">\r\n <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"basic-line\">\r\n <span>执行班组:</span>\r\n <el-select v-model=\"tableData.params.execClassgroupId\" clearable filterable class=\"input-box\" placeholder=\"执行班组\">\r\n <el-option v-for=\"item in classGroupList\" :key=\"item.id\" :label=\"item.groupName\" :value=\"item.id\"></el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"basic-line\">\r\n <span>任务状态:</span>\r\n <el-select v-model=\"tableData.params.taskStatus\" clearable filterable class=\"input-box\" placeholder=\"执行班组\">\r\n <el-option v-for=\"item in taskStatusList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n </el-select>\r\n </div>\r\n <div style=\"padding-bottom: 10px\">\r\n <el-button type=\"primary\" @click=\"getInspectRecord\">查询</el-button>\r\n <el-button plain @click=\"reset\">重置</el-button>\r\n </div>\r\n </el-row>\r\n <div class=\"homeCard\">\r\n <div class=\"main-card\">\r\n <el-row class=\"cardTop\">\r\n <el-button type=\"primary\" :icon=\"Refresh\" size=\"default\" />\r\n </el-row>\r\n <el-table ref=\"multipleTableRef\" :data=\"tableData.inspectRecordData\" style=\"width: 100%\" height=\"calc(100% - 100px)\" :header-cell-style=\"{ background: '#fafafa' }\">\r\n <el-table-column property=\"taskName\" label=\"任务名称\" />\r\n <el-table-column property=\"taskType\" label=\"任务类型\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ parseNumber(scope.row.taskType, '任务类型') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"execClassgroupId\" label=\"巡检班组\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ parseNumber(scope.row.execClassgroupId, '巡检班组') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"frequency\" label=\"检查频次\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ scope.row.checkCycle }}\r\n </span>\r\n <span>\r\n {{ parseNumber(scope.row.checkCycleUnit, '检查频次') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"startTime\" label=\"任务开始时间\" />\r\n <el-table-column prop=\"execUserName\" label=\"执行人\" show-overflow-tooltip></el-table-column>\r\n <el-table-column property=\"taskStatus\" label=\"任务状态\">\r\n <template #default=\"scope\">\r\n <el-tag :type=\"scope.row.taskStatus === 1 ? 'info' : scope.row.taskStatus === 2 ? '' : scope.row.taskStatus === 3 ? 'success' : 'danger'\">\r\n <span>\r\n {{ parseNumber(scope.row.taskStatus, '任务状态') }}\r\n </span>\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"resultStatus\" label=\"巡检结果\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ parseNumber(scope.row.resultStatus, '巡检状态') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed=\"right\" label=\"操作\" align=\"center\" width=\"300\">\r\n <template #default=\"scope\">\r\n <el-button link type=\"primary\" size=\"small\" :icon=\"View\" @click=\"openInspectRecordDialog('查看', scope.row)\">查看</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"pageBtn\">\r\n <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>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <inspect-record-dialog ref=\"inspectRecordDialogRef\" @refreshInspectRecord=\"getInspectRecord\"></inspect-record-dialog>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, ref, onMounted, nextTick } from 'vue';\r\nimport { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';\r\nimport { ElTable, ElMessage } from 'element-plus';\r\nimport { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord';\r\nimport inspectRecordDialog from './components/inspectRecordDialog.vue';\r\nimport { departmentApi } from '/@/api/systemManage/department';\r\nimport { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage';\r\nimport { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage';\r\nimport { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask';\r\nlet global: any = {\r\n homeChartOne: null,\r\n homeChartTwo: null,\r\n homeCharThree: null,\r\n dispose: [null, '', undefined]\r\n};\r\n\r\ninterface stateType {\r\n tableData: {\r\n inspectRecordData: [];\r\n total: number;\r\n loading: boolean;\r\n params: {\r\n pageIndex: number | null;\r\n pageSize: number | null;\r\n taskName: string | null;\r\n taskType: number | null;\r\n taskStatus: number | null;\r\n execUserId: number | null;\r\n execClassgroupId: number | null;\r\n execDepId: number | null;\r\n startTime: string | null;\r\n validTime: string | null;\r\n createUserId: number | null;\r\n reportTime: string | null;\r\n };\r\n };\r\n workTypeList: Array<type>;\r\n taskStatusList: Array<type>;\r\n quotaList: [];\r\n departmentList: [];\r\n classGroupList: Array<classGroup>;\r\n inspectPointAllList: [];\r\n timeType: Array<type>;\r\n resultStatusList: Array<type>;\r\n}\r\ninterface type {\r\n id: number;\r\n name: string;\r\n}\r\ninterface classGroup {\r\n id: number;\r\n groupName: string;\r\n}\r\nexport default {\r\n name: 'index',\r\n components: { inspectRecordDialog },\r\n setup() {\r\n const inspectRecordDialogRef = ref();\r\n const state = reactive<stateType>({\r\n tableData: {\r\n inspectRecordData: [],\r\n total: 0,\r\n loading: false,\r\n params: {\r\n pageIndex: 1,\r\n pageSize: 10,\r\n taskName: null,\r\n taskType: null,\r\n taskStatus: 2,\r\n execUserId: null,\r\n execClassgroupId: null,\r\n execDepId: null,\r\n startTime: null,\r\n validTime: null,\r\n createUserId: null,\r\n reportTime: null\r\n }\r\n },\r\n workTypeList: [\r\n { id: 1, name: '单次任务' },\r\n { id: 2, name: '周期任务' }\r\n ],\r\n resultStatusList: [\r\n { id: 0, name: '正常' },\r\n { id: 1, name: '存在异常' }\r\n ],\r\n taskStatusList: [\r\n { id: 1, name: '待巡检' },\r\n { id: 2, name: '巡检中' },\r\n { id: 3, name: '已巡检' },\r\n { id: 4, name: '超时未巡检' }\r\n ],\r\n quotaList: [],\r\n departmentList: [],\r\n classGroupList: [],\r\n inspectPointAllList: [],\r\n timeType: [\r\n { id: 1, name: '分' },\r\n { id: 2, name: '小时' },\r\n { id: 3, name: '日' },\r\n { id: 4, name: '月' },\r\n { id: 5, name: '年' }\r\n ]\r\n });\r\n\r\n //获取巡检记录数据\r\n const getInspectRecord = async () => {\r\n let res = await inspectRecordApi().getInspectRecordList(state.tableData.params);\r\n if (res.data.code === '200') {\r\n state.tableData.inspectRecordData = res.data.data.records;\r\n state.tableData.total = res.data.data.total;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取部门\r\n const getDepartmentData = async () => {\r\n let res = await departmentApi().getDepartmentList();\r\n if (res.data.code === '200') {\r\n state.departmentList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取部门\r\n const getQuotaList = async () => {\r\n let res = await inspectTaskApi().getQuotaList();\r\n if (res.data.code === '200') {\r\n state.quotaList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取巡检点\r\n const getInspectTaskPoint = async () => {\r\n let res = await inspectPointApi().getInspectPointAll();\r\n if (res.data.code === '200') {\r\n state.inspectPointAllList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取班组\r\n const getClassGroupData = async () => {\r\n let res = await teamManageApi().getRecord({ depIp: null, groupName: null, containGroupMemberEnable: null });\r\n if (res.data.code === '200') {\r\n state.classGroupList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n const openInspectRecordDialog = (type: string, value: {}) => {\r\n inspectRecordDialogRef.value.showInspectRecordDialog(type, value, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList);\r\n };\r\n\r\n const parseNumber = (value: number, type: string) => {\r\n if (type === '任务类型') {\r\n return state.workTypeList.find((item) => item.id === value)?.name;\r\n } else if (type === '检查频次') {\r\n return state.timeType.find((item) => item.id == value)?.name;\r\n } else if (type === '巡检状态') {\r\n return state.resultStatusList.find((item) => item.id == value)?.name;\r\n } else if (type === '任务状态') {\r\n return state.taskStatusList.find((item) => item.id == value)?.name;\r\n } else {\r\n return state.classGroupList.find((item) => item.id == value)?.groupName;\r\n }\r\n };\r\n\r\n // 分页改变\r\n const onHandleSizeChange = (val: number) => {\r\n state.tableData.params.pageSize = val;\r\n getInspectRecord();\r\n };\r\n // 分页改变\r\n const onHandleCurrentChange = (val: number) => {\r\n state.tableData.params.pageIndex = val;\r\n getInspectRecord();\r\n };\r\n\r\n const reset = () => {\r\n state.tableData.params = {\r\n pageIndex: 1,\r\n pageSize: 10,\r\n taskName: null,\r\n taskType: null,\r\n taskStatus: null,\r\n execUserId: null,\r\n execClassgroupId: null,\r\n execDepId: null,\r\n startTime: null,\r\n validTime: null,\r\n createUserId: null,\r\n reportTime: null\r\n };\r\n };\r\n\r\n // 页面加载时\r\n onMounted(() => {\r\n getInspectRecord();\r\n getQuotaList();\r\n getDepartmentData();\r\n getClassGroupData();\r\n getInspectTaskPoint();\r\n });\r\n\r\n return {\r\n View,\r\n Edit,\r\n Delete,\r\n Refresh,\r\n Plus,\r\n reset,\r\n parseNumber,\r\n getInspectRecord,\r\n onHandleSizeChange,\r\n onHandleCurrentChange,\r\n inspectRecordDialogRef,\r\n openInspectRecordDialog,\r\n ...toRefs(state)\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n height: calc(100vh - 144px);\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n .homeCard {\r\n width: 100%;\r\n padding: 20px;\r\n box-sizing: border-box;\r\n background: #fff;\r\n border-radius: 4px;\r\n\r\n .main-card {\r\n width: 100%;\r\n height: 100%;\r\n .cardTop {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 20px;\r\n .mainCardBtn {\r\n margin: 0;\r\n }\r\n }\r\n .pageBtn {\r\n height: 60px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: right;\r\n\r\n .demo-pagination-block + .demo-pagination-block {\r\n margin-top: 10px;\r\n }\r\n .demo-pagination-block .demonstration {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n height: calc(100% - 100px);\r\n }\r\n }\r\n .el-row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n .grid-content {\r\n align-items: center;\r\n min-height: 36px;\r\n }\r\n\r\n .topInfo {\r\n display: flex;\r\n align-items: center;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n & > div {\r\n white-space: nowrap;\r\n margin-right: 20px;\r\n }\r\n }\r\n }\r\n}\r\n.stepItem {\r\n width: 100%;\r\n display: flex;\r\n align-items: flex-start;\r\n margin-bottom: 30px;\r\n margin-left: 30px;\r\n padding-bottom: 30px;\r\n border-left: 2px solid #ccc;\r\n &:first-of-type {\r\n margin-top: 30px;\r\n }\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n border-left: none;\r\n }\r\n .stepNum {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 15px;\r\n box-sizing: border-box;\r\n color: #333;\r\n border: 1px solid #999;\r\n line-height: 28px;\r\n text-align: center;\r\n margin-right: 10px;\r\n margin-left: -16px;\r\n margin-top: -30px;\r\n }\r\n .stepCard {\r\n width: 100%;\r\n margin-top: -30px;\r\n\r\n .box-card {\r\n width: 100%;\r\n &:deep(.el-card__header) {\r\n padding: 10px 15px;\r\n }\r\n .card-header {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n & > div:first-of-type {\r\n margin-right: 80px;\r\n font-size: 18px;\r\n font-weight: bold;\r\n }\r\n }\r\n }\r\n }\r\n &:hover .card-header {\r\n color: #0098f5;\r\n }\r\n &:hover .stepNum {\r\n border: 2px solid #0098f5;\r\n color: #0098f5;\r\n }\r\n}\r\n.el-input {\r\n width: 100% !important;\r\n}\r\n:deep(.el-date-editor) {\r\n width: 100%;\r\n}\r\n.el-select {\r\n width: 100%;\r\n}\r\n:deep(.el-textarea.is-disabled .el-textarea__inner) {\r\n background-color: var(--el-card-bg-color);\r\n color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__inner) {\r\n color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__wrapper) {\r\n background-color: var(--el-card-bg-color);\r\n}\r\n</style>\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue b/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue +--- a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue (revision 624a145dcb9959e769fa635a4b9e2fe4758772ed) ++++ b/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue (date 1661218047847) +@@ -170,8 +170,8 @@ + } + }, + workTypeList: [ +- { id: 1, name: '单次任务' }, +- { id: 2, name: '周期任务' } ++ { id: 1, name: '周期任务' }, ++ { id: 2, name: '单次任务' } + ], + resultStatusList: [ + { id: 0, name: '正常' }, +Index: src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+><template>\r\n <div class=\"home-container\">\r\n <div style=\"height: 100%\">\r\n <el-row class=\"homeCard\">\r\n <div class=\"basic-line\">\r\n <span>任务类型:</span>\r\n <el-select v-model=\"tableData.params.workType\" clearable filterable class=\"input-box\" placeholder=\"任务类型\">\r\n <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :label=\"item.name\" :value=\"item.id\"></el-option>\r\n </el-select>\r\n </div>\r\n <div class=\"basic-line\">\r\n <span>执行班组:</span>\r\n <el-select v-model=\"tableData.params.execClassgroupId\" clearable filterable class=\"input-box\" placeholder=\"执行班组\">\r\n <el-option v-for=\"item in classGroupList\" :key=\"item.id\" :label=\"item.groupName\" :value=\"item.id\"></el-option>\r\n </el-select>\r\n </div>\r\n <div style=\"padding-bottom: 10px\">\r\n <el-button type=\"primary\" @click=\"getInspectionTask\">查询</el-button>\r\n <el-button plain @click=\"reset\">重置</el-button>\r\n </div>\r\n </el-row>\r\n <div class=\"homeCard\">\r\n <div class=\"main-card\">\r\n <el-row class=\"cardTop\">\r\n <el-col :span=\"12\" class=\"mainCardBtn\">\r\n <el-button type=\"primary\" :icon=\"Plus\" size=\"default\" @click=\"openInspectTaskDialog('新增', {})\">新建</el-button>\r\n <!-- <el-button type=\"danger\" :icon=\"Delete\" size=\"default\" plain>删除</el-button>-->\r\n </el-col>\r\n <el-button type=\"primary\" :icon=\"Refresh\" size=\"default\" />\r\n </el-row>\r\n <el-table ref=\"multipleTableRef\" :data=\"tableData.inspectTaskData\" style=\"width: 100%\" height=\"calc(100% - 100px)\" :header-cell-style=\"{ background: '#fafafa' }\" @selection-change=\"handleSelectionChange\">\r\n <el-table-column type=\"selection\" width=\"55\" />\r\n <el-table-column property=\"unitName\" label=\"任务名称\" />\r\n <el-table-column property=\"workType\" label=\"任务类型\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ parseNumber(scope.row.workType, '任务类型') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"execClassgroupId\" label=\"巡检班组\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ parseNumber(scope.row.execClassgroupId, '巡检班组') }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"frequency\" label=\"检查频次\">\r\n <template #default=\"scope\">\r\n <span>\r\n {{ scope.row.checkCycle }}\r\n </span>\r\n <span>\r\n {{ scope.row.checkCycleUnit }}\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <!-- <el-table-column prop=\"validTime\" label=\"有效时间\" show-overflow-tooltip>-->\r\n <!-- <template #default=\"scope\">-->\r\n <!-- <span>-->\r\n <!-- {{ scope.row.validTime }}-->\r\n <!-- </span>-->\r\n <!-- <span>-->\r\n <!-- {{ parseNumber(scope.row.validTimeUnit, '检查频次') }}-->\r\n <!-- </span>-->\r\n <!-- </template>-->\r\n <!-- </el-table-column>-->\r\n <!-- <el-table-column prop=\"validTime\" label=\"提醒时间\" show-overflow-tooltip>-->\r\n <!-- <template #default=\"scope\">-->\r\n <!-- <span>-->\r\n <!-- {{ scope.row.noticeTime }}-->\r\n <!-- </span>-->\r\n <!-- <span>-->\r\n <!-- {{ parseNumber(scope.row.noticeTimeUnit, '检查频次') }}-->\r\n <!-- </span>-->\r\n <!-- </template>-->\r\n <!-- </el-table-column>-->\r\n <el-table-column property=\"firstStartTime\" label=\"任务开始时间\" />\r\n <el-table-column prop=\"createUserName\" label=\"创建人\" show-overflow-tooltip></el-table-column>\r\n <el-table-column prop=\"gmtCreate\" label=\"创建时间\" show-overflow-tooltip></el-table-column>\r\n <el-table-column prop=\"lastEditUserName\" label=\"最后修改人\" show-overflow-tooltip></el-table-column>\r\n <el-table-column prop=\"gmtModitify\" label=\"最后修改时间\" show-overflow-tooltip></el-table-column>\r\n <el-table-column property=\"status\" label=\"状态\" width=\"60\" />\r\n <el-table-column fixed=\"right\" label=\"操作\" align=\"center\" width=\"300\">\r\n <template #default=\"scope\">\r\n <el-button link type=\"primary\" size=\"small\" :icon=\"View\" @click=\"openInspectTaskDialog('查看', scope.row)\">查看</el-button>\r\n <el-button link type=\"primary\" size=\"small\" :icon=\"Edit\" @click=\"openInspectTaskDialog('修改', scope.row)\">修改</el-button>\r\n <el-button link type=\"danger\" size=\"small\" :icon=\"Delete\" v-if=\"scope.row.taskUnitStatus === 2\" @click=\"deleteInspectTask(scope.row)\">删除</el-button>\r\n <div @click=\"changeStatus(scope.row)\">\r\n <el-switch v-model=\"scope.row.taskUnitStatus\" inline-prompt active-text=\"开\" inactive-text=\"关\" :active-value=\"1\" :inactive-value=\"2\" style=\"margin: 0 10px\" />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"pageBtn\">\r\n <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>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <inspect-task-dialog ref=\"inspectTaskDialogRef\" @refreshInspectTask=\"getInspectionTask\"></inspect-task-dialog>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { toRefs, reactive, ref, onMounted } from 'vue';\r\nimport { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';\r\nimport { ElTable, ElMessage, ElMessageBox } from 'element-plus';\r\nimport { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask';\r\nimport inspectTaskDialog from './components/inspectTaskDialog.vue';\r\nimport { departmentApi } from '/@/api/systemManage/department';\r\nimport { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage';\r\nimport { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage';\r\nimport { facilityAreaApi } from '/@/api/intellectInspectSystem/facilityAreaManage';\r\nimport { RFIDApi } from '/@/api/intellectInspectSystem/RFID';\r\nlet global: any = {\r\n homeChartOne: null,\r\n homeChartTwo: null,\r\n homeCharThree: null,\r\n dispose: [null, '', undefined]\r\n};\r\n\r\ninterface stateType {\r\n tableData: {\r\n inspectTaskData: [];\r\n total: number;\r\n loading: boolean;\r\n params: {\r\n pageIndex: number | null;\r\n pageSize: number | null;\r\n unitName: string | null;\r\n workType: number | null;\r\n createUserId: number | null;\r\n execClassgroupId: number | null;\r\n checkCycle: number | null;\r\n checkCycleUnit: number | null;\r\n };\r\n };\r\n workTypeList: Array<type>;\r\n quotaList: [];\r\n departmentList: [];\r\n classGroupList: Array<classGroup>;\r\n inspectPointAllList: [];\r\n regionNameList: [];\r\n RFIDList: [];\r\n timeType: Array<type>;\r\n}\r\ninterface type {\r\n id: number;\r\n name: string;\r\n}\r\ninterface classGroup {\r\n id: number;\r\n groupName: string;\r\n}\r\nexport default {\r\n name: 'index',\r\n components: { inspectTaskDialog },\r\n setup() {\r\n const inspectTaskDialogRef = ref();\r\n const state = reactive<stateType>({\r\n tableData: {\r\n inspectTaskData: [],\r\n total: 0,\r\n loading: false,\r\n params: {\r\n pageIndex: 1,\r\n pageSize: 10,\r\n unitName: null,\r\n workType: null,\r\n createUserId: null,\r\n execClassgroupId: null,\r\n checkCycle: null,\r\n checkCycleUnit: null\r\n }\r\n },\r\n workTypeList: [\r\n { id: 1, name: '单次任务' },\r\n { id: 2, name: '周期任务' }\r\n ],\r\n quotaList: [],\r\n departmentList: [],\r\n classGroupList: [],\r\n inspectPointAllList: [],\r\n regionNameList: [],\r\n RFIDList: [],\r\n timeType: [\r\n { id: 1, name: '分' },\r\n { id: 2, name: '小时' },\r\n { id: 3, name: '日' },\r\n { id: 4, name: '月' },\r\n { id: 5, name: '年' }\r\n ]\r\n });\r\n\r\n //获取巡检任务数据\r\n const getInspectionTask = async () => {\r\n let res = await inspectTaskApi().getInspectTaskList(state.tableData.params);\r\n if (res.data.code === '200') {\r\n state.tableData.inspectTaskData = res.data.data.records;\r\n state.tableData.total = res.data.data.total;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取部门\r\n const getDepartmentData = async () => {\r\n let res = await departmentApi().getDepartmentList();\r\n if (res.data.code === '200') {\r\n state.departmentList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取部门\r\n const getQuotaList = async () => {\r\n let res = await inspectTaskApi().getQuotaList();\r\n if (res.data.code === '200') {\r\n state.quotaList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取巡检点\r\n const getInspectTaskPoint = async () => {\r\n let res = await inspectPointApi().getInspectPointAll();\r\n if (res.data.code === '200') {\r\n state.inspectPointAllList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取所有设施区域名称\r\n const initFacilityAreaType = async () => {\r\n let res = await facilityAreaApi().getAllFacilityAreaList();\r\n if (res.data.code === '200') {\r\n state.regionNameList = JSON.parse(JSON.stringify(res.data.data));\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取所有RFID名称\r\n const initRFIDList = async () => {\r\n let res = await RFIDApi().getAllRFIDList();\r\n if (res.data.code === '200') {\r\n state.RFIDList = JSON.parse(JSON.stringify(res.data.data));\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n //获取班组\r\n const getClassGroupData = async () => {\r\n let res = await teamManageApi().getRecord({ depIp: null, groupName: null, containGroupMemberEnable: null });\r\n if (res.data.code === '200') {\r\n state.classGroupList = res.data.data;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n const changeStatus = async (value: { taskUnitStatus: number; id: number }) => {\r\n if (value.taskUnitStatus === 2) {\r\n ElMessageBox.confirm(`此操作将关闭该巡检任务”,是否继续?`, '提示', {\r\n confirmButtonText: '确认',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(async () => {\r\n let res = await inspectTaskApi().openOrCloseInspectTask({ id: value.id, taskUnitStatus: 2 });\r\n if (res.data.code === '200') {\r\n await getInspectionTask();\r\n ElMessage({\r\n type: 'success',\r\n duration: 2000,\r\n message: '关闭成功'\r\n });\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n })\r\n .catch((error) => {});\r\n } else {\r\n ElMessageBox.confirm(`此操作将开启该巡检任务”,是否继续?`, '提示', {\r\n confirmButtonText: '确认',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(async () => {\r\n let res = await inspectTaskApi().openOrCloseInspectTask({ id: value.id, taskUnitStatus: 1 });\r\n if (res.data.code === '200') {\r\n await getInspectionTask();\r\n ElMessage({\r\n type: 'success',\r\n duration: 2000,\r\n message: '开启成功'\r\n });\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n })\r\n .catch((error) => {});\r\n }\r\n await getInspectionTask();\r\n };\r\n\r\n // 删除\r\n const deleteInspectTask = (row: any) => {\r\n ElMessageBox.confirm(`此操作将永久删除该任务:“${row.unitName}”,是否继续?`, '提示', {\r\n confirmButtonText: '确认',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(async () => {\r\n let res = await inspectTaskApi().deleteInspectTask({ id: row.id });\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n duration: 2000,\r\n message: '删除成功'\r\n });\r\n await getInspectionTask();\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n })\r\n .catch(() => {});\r\n };\r\n\r\n const openInspectTaskDialog = (type: string, value: {}) => {\r\n inspectTaskDialogRef.value.showInspectTaskDialog(type, value, state.workTypeList, state.departmentList, state.timeType, state.classGroupList, state.quotaList, state.inspectPointAllList, state.regionNameList, state.RFIDList);\r\n };\r\n\r\n const parseNumber = (value: number, type: string) => {\r\n if (type === '任务类型') {\r\n return state.workTypeList.find((item) => item.id === value)?.name;\r\n } else if (type === '检查频次') {\r\n return state.timeType.find((item) => item.id == value)?.name;\r\n } else {\r\n return state.classGroupList.find((item) => item.id == value)?.groupName;\r\n }\r\n };\r\n\r\n // 分页改变\r\n const onHandleSizeChange = (val: number) => {\r\n state.tableData.params.pageSize = val;\r\n getInspectionTask();\r\n };\r\n // 分页改变\r\n const onHandleCurrentChange = (val: number) => {\r\n state.tableData.params.pageIndex = val;\r\n getInspectionTask();\r\n };\r\n\r\n const reset = () => {\r\n state.tableData.params = {\r\n pageIndex: 1,\r\n pageSize: 10,\r\n unitName: null,\r\n workType: null,\r\n createUserId: null,\r\n execClassgroupId: null,\r\n checkCycle: null,\r\n checkCycleUnit: null\r\n };\r\n };\r\n\r\n // 页面加载时\r\n onMounted(() => {\r\n getInspectionTask();\r\n getQuotaList();\r\n getDepartmentData();\r\n getClassGroupData();\r\n getInspectTaskPoint();\r\n initFacilityAreaType();\r\n initRFIDList();\r\n });\r\n\r\n return {\r\n View,\r\n Edit,\r\n Delete,\r\n Refresh,\r\n Plus,\r\n reset,\r\n changeStatus,\r\n parseNumber,\r\n deleteInspectTask,\r\n getInspectionTask,\r\n onHandleSizeChange,\r\n onHandleCurrentChange,\r\n inspectTaskDialogRef,\r\n openInspectTaskDialog,\r\n ...toRefs(state)\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n height: calc(100vh - 144px);\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n .homeCard {\r\n width: 100%;\r\n padding: 20px;\r\n box-sizing: border-box;\r\n background: #fff;\r\n border-radius: 4px;\r\n\r\n .main-card {\r\n width: 100%;\r\n height: 100%;\r\n .cardTop {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 20px;\r\n .mainCardBtn {\r\n margin: 0;\r\n }\r\n }\r\n .pageBtn {\r\n height: 60px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: right;\r\n\r\n .demo-pagination-block + .demo-pagination-block {\r\n margin-top: 10px;\r\n }\r\n .demo-pagination-block .demonstration {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n height: calc(100% - 100px);\r\n }\r\n }\r\n .el-row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n .grid-content {\r\n align-items: center;\r\n min-height: 36px;\r\n }\r\n\r\n .topInfo {\r\n display: flex;\r\n align-items: center;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n & > div {\r\n white-space: nowrap;\r\n margin-right: 20px;\r\n }\r\n }\r\n }\r\n}\r\n.stepItem {\r\n width: 100%;\r\n display: flex;\r\n align-items: flex-start;\r\n margin-bottom: 30px;\r\n margin-left: 30px;\r\n padding-bottom: 30px;\r\n border-left: 2px solid #ccc;\r\n &:first-of-type {\r\n margin-top: 30px;\r\n }\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n border-left: none;\r\n }\r\n .stepNum {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 15px;\r\n box-sizing: border-box;\r\n color: #333;\r\n border: 1px solid #999;\r\n line-height: 28px;\r\n text-align: center;\r\n margin-right: 10px;\r\n margin-left: -16px;\r\n margin-top: -30px;\r\n }\r\n .stepCard {\r\n width: 100%;\r\n margin-top: -30px;\r\n\r\n .box-card {\r\n width: 100%;\r\n &:deep(.el-card__header) {\r\n padding: 10px 15px;\r\n }\r\n .card-header {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n & > div:first-of-type {\r\n margin-right: 80px;\r\n font-size: 18px;\r\n font-weight: bold;\r\n }\r\n }\r\n }\r\n }\r\n &:hover .card-header {\r\n color: #0098f5;\r\n }\r\n &:hover .stepNum {\r\n border: 2px solid #0098f5;\r\n color: #0098f5;\r\n }\r\n}\r\n.el-input {\r\n width: 100% !important;\r\n}\r\n:deep(.el-date-editor) {\r\n width: 100%;\r\n}\r\n.el-select {\r\n width: 100%;\r\n}\r\n:deep(.el-textarea.is-disabled .el-textarea__inner) {\r\n background-color: var(--el-card-bg-color);\r\n color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__inner) {\r\n color: var(--el-input-text-color, var(--el-text-color-regular));\r\n}\r\n:deep(.el-input.is-disabled .el-input__wrapper) {\r\n background-color: var(--el-card-bg-color);\r\n}\r\n</style>\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue +--- a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue (revision 624a145dcb9959e769fa635a4b9e2fe4758772ed) ++++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue (date 1661217995642) +@@ -80,7 +80,22 @@ + <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="status" label="状态" width="60" /> ++ <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> +@@ -175,8 +190,8 @@ + } + }, + workTypeList: [ +- { id: 1, name: '单次任务' }, +- { id: 2, name: '周期任务' } ++ { id: 1, name: '周期任务' }, ++ { id: 2, name: '单次任务' } + ], + quotaList: [], + departmentList: [], +Index: src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+><template>\r\n <div class=\"system-add-menu-container\">\r\n <el-dialog v-model=\"ifShowInspectTaskDialog\" :title=\"title\" :close-on-click-modal=\"false\">\r\n <el-form :model=\"inspectTaskForm\" label-width=\"120px\" ref=\"inspectTaskFormRef\" :rules=\"inspectTaskFormRules\">\r\n <el-row>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"任务名称\" prop=\"unitName\">\r\n <el-input v-model=\"inspectTaskForm.unitName\" :disabled=\"!inspectPointConfirm\" class=\"input-add\" placeholder=\"请填写任务名称\"> </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"任务类型\" prop=\"workType\">\r\n <el-select v-model=\"inspectTaskForm.workType\" :disabled=\"!inspectPointConfirm\" class=\"input-add\" placeholder=\"请选择任务类型\">\r\n <el-option v-for=\"item in workTypeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"巡检部门\" prop=\"execDepId\">\r\n <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>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"巡检班组\" prop=\"execClassgroupId\">\r\n <el-select v-model=\"inspectTaskForm.execClassgroupId\" :disabled=\"!inspectPointConfirm\" placeholder=\"请选择巡检班组\" class=\"input-add\">\r\n <el-option v-for=\"item in classGroup\" :key=\"item.id\" :value=\"item.id\" :label=\"item.groupName\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\" v-if=\"inspectTaskForm.workType === 2\">\r\n <el-form-item label=\"巡检周期\" prop=\"checkCycle\">\r\n <el-input v-model=\"inspectTaskForm.checkCycle\" @input=\"onVerifiyNumberInteger($event, 'checkCycle')\" :disabled=\"!inspectPointConfirm\" placeholder=\"请输入巡检周期\" class=\"input-add\">\r\n <template #append>\r\n <el-form-item prop=\"checkCycleUnit\">\r\n <el-select v-model=\"inspectTaskForm.checkCycleUnit\" :disabled=\"!inspectPointConfirm\" placeholder=\"选择单位\">\r\n <el-option v-for=\"item in timeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"提前通知时间\" prop=\"noticeTime\">\r\n <el-input @input=\"onVerifiyNumberInteger($event, 'noticeTime')\" v-model=\"inspectTaskForm.noticeTime\" :disabled=\"!inspectPointConfirm\" placeholder=\"请输入提前通知时间\" class=\"input-add\">\r\n <template #append>\r\n <el-form-item prop=\"noticeTimeUnit\">\r\n <el-select v-model=\"inspectTaskForm.noticeTimeUnit\" :disabled=\"!inspectPointConfirm\" placeholder=\"选择单位\">\r\n <el-option v-for=\"item in timeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"有效时间\" prop=\"validTime\">\r\n <el-input v-model=\"inspectTaskForm.validTime\" @input=\"onVerifiyNumberInteger($event, 'validTime')\" :disabled=\"!inspectPointConfirm\" placeholder=\"请输入有效时间\" class=\"input-add\">\r\n <template #append>\r\n <el-form-item prop=\"noticeTimeUnit\">\r\n <el-select v-model=\"inspectTaskForm.validTimeUnit\" :disabled=\"!inspectPointConfirm\" placeholder=\"选择单位\">\r\n <el-option v-for=\"item in timeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </template>\r\n </el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"12\" style=\"margin-bottom: 20px\">\r\n <el-form-item label=\"任务开始时间\" prop=\"firstStartTime\">\r\n <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\" />\r\n </el-form-item>\r\n </el-col>\r\n\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"创建巡检链\">\r\n <div style=\"width: 100%; margin-bottom: 20px\" v-show=\"inspectPointConfirm\">\r\n <el-button type=\"primary\" :icon=\"Plus\" size=\"default\" @click=\"openInspectPointDialog('新增', '')\">新增巡检点</el-button>\r\n </div>\r\n <div style=\"width: 100%; margin-left: -30px\">\r\n <div v-for=\"(item, index) in inspectTaskForm.points\" class=\"stepItem\">\r\n <div class=\"stepNum\">{{ index + 1 }}</div>\r\n <div class=\"stepCard\">\r\n <el-card class=\"box-card\">\r\n <template #header>\r\n <div class=\"card-header\" v-for=\"i in inspectPointAllList\">\r\n <div v-if=\"i.id == item.pointId\">\r\n <span>{{ i.code }}</span>\r\n </div>\r\n </div>\r\n </template>\r\n <div class=\"text item\" v-for=\"i in regionNameList\">\r\n <div v-if=\"i.id == item.regionId\">\r\n 所属设备区域:<span>{{ i.region }}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"text item\">-->\r\n <!-- 所属设备区域:<span>{{ item.regionId }}</span>-->\r\n <!-- </div>-->\r\n <div class=\"text item\" v-for=\"i in RFIDList\">\r\n <div v-if=\"i.id == item.rfidId\">\r\n 所属设备区域:<span>{{ i.rfidName }}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"text item\">-->\r\n <!-- 关联RFID:<span>{{ item.rfidId }}</span>-->\r\n <!-- </div>-->\r\n <div class=\"text item\" v-for=\"i in quotaList\">\r\n <div v-if=\"i.id == item.quotaId\">\r\n 所属设备区域:<span>{{ i.type }}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"text item\">-->\r\n <!-- 巡检指标:<span>{{ item.quotaId }}</span>-->\r\n <!-- </div>-->\r\n <div class=\"text item\" v-for=\"i in dataReportTypeList\">\r\n <div v-if=\"i.id == item.dataReportType\">\r\n 所属设备区域:<span>{{ i.name }}</span>\r\n </div>\r\n </div>\r\n <!-- <div class=\"text item\">-->\r\n <!-- 数据填报类型:<span>{{ item.dataReportType }}</span>-->\r\n <!-- </div>-->\r\n <div class=\"text item\">\r\n 数据参考值:<span>{{ item.firstReferenceValue ? item.firstReferenceValue : item.secondReferenceValue ? item.secondReferenceValue : item.thirdReferenceValue }}</span>\r\n </div>\r\n </el-card>\r\n </div>\r\n <div v-show=\"inspectPointConfirm\">\r\n <!--\t\t\t\t\t\t\t\t<el-button type=\"primary\" size=\"default\" @click=\"addFlow(index)\">新增下一区域</el-button>-->\r\n <el-button type=\"primary\" style=\"margin-left: 12px\" size=\"default\" @click=\"openInspectPointDialog('修改', item)\">修改</el-button>\r\n <el-button type=\"danger\" size=\"default\" @click=\"deleteFlow(index, item)\">删除</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <template #footer>\r\n <div v-if=\"inspectPointConfirm\" class=\"dialog-footer\">\r\n <el-button type=\"warning\" @click=\"ifShowInspectTaskDialog = false\" size=\"default\" plain>取消</el-button>\r\n <el-button type=\"primary\" @click=\"submitInspectTask()\" size=\"default\">确认</el-button>\r\n </div>\r\n </template>\r\n </el-dialog>\r\n <el-dialog v-model=\"inspectPointDialog\" :title=\"pointTitle\" :close-on-click-modal=\"false\">\r\n <el-form :model=\"inspectPointForm\" label-width=\"150px\" ref=\"inspectPointFormRef\" :rules=\"inspectPointFormRules\">\r\n <el-form-item label=\"选择巡检点\" prop=\"pointId\">\r\n <el-select v-model=\"inspectPointForm.pointId\" @change=\"giveRegionAndRFID\" class=\"input-add\">\r\n <el-option v-for=\"item in inspectPointAllList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.code\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"所属设备区域\" prop=\"regionId\">\r\n <el-input v-model=\"inspectPointForm.regionId\" class=\"input-add\" readonly />\r\n </el-form-item>\r\n <el-form-item label=\"关联RFID\" prop=\"rfidId\">\r\n <el-input v-model=\"inspectPointForm.rfidId\" class=\"input-add\" readonly />\r\n </el-form-item>\r\n <el-form-item label=\"选择巡检指标\" prop=\"quotaId\">\r\n <el-select v-model=\"inspectPointForm.quotaId\" @change=\"giveQuotaUnit\" placeholder=\"请选择巡检指标\" class=\"input-add\">\r\n <el-option v-for=\"item in quotaList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.type\"> </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"选择巡检指标单位\" prop=\"quotaUnit\">\r\n <el-input v-model=\"inspectPointForm.quotaUnit\" placeholder=\"单位\" class=\"input-add\"> </el-input>\r\n </el-form-item>\r\n <el-form-item label=\"数据填报类型\" prop=\"dataReportType\">\r\n <el-select v-model=\"inspectPointForm.dataReportType\" class=\"input-add\">\r\n <el-option v-for=\"item in dataReportTypeList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"> </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item v-if=\"inspectPointForm.dataReportType == '1' || inspectPointForm.dataReportType == '3'\" label=\"数据参考值\" prop=\"firstReferenceValue\">\r\n <el-select v-model=\"inspectPointForm.firstReferenceValue\" class=\"input-add\">\r\n <el-option v-for=\"item in firstReferenceValueList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"> </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item v-if=\"inspectPointForm.dataReportType == '2' || inspectPointForm.dataReportType == '3'\" label=\"数据参考值\">\r\n <el-input v-model=\"inspectPointForm.secondReferenceValue\" type=\"number\" class=\"input-add\" placeholder=\"请根据需求选择前方符号后再填写参考值,非必填\">\r\n <template #prepend>\r\n <el-select v-model=\"inspectPointForm.secondReferenceSign\" placeholder=\"Select\" style=\"width: 115px\">\r\n <el-option v-for=\"item in secondReferenceSignList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"> </el-option>\r\n </el-select>\r\n </template>\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item v-if=\"inspectPointForm.dataReportType == '2' || inspectPointForm.dataReportType == '3'\" label=\"\">\r\n <el-input v-model=\"inspectPointForm.thirdReferenceValue\" type=\"number\" class=\"input-add\" placeholder=\"请根据需求选择前方符号后再填写参考值,非必填\">\r\n <template #prepend>\r\n <el-select v-model=\"inspectPointForm.thirdReferenceSign\" placeholder=\"Select\" style=\"width: 115px\">\r\n <el-option v-for=\"item in thirdReferenceSignList\" :key=\"item.id\" :value=\"item.id\" :label=\"item.name\"> </el-option>\r\n </el-select>\r\n </template>\r\n </el-input>\r\n </el-form-item>\r\n <div align=\"right\">\r\n <el-button type=\"warning\" @click=\"inspectPointDialog = false\" size=\"default\" plain>取消</el-button>\r\n <el-button type=\"primary\" @click=\"submitInspectPoint()\" size=\"default\">确认</el-button>\r\n </div>\r\n </el-form>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { reactive, toRefs, ref } from 'vue';\r\nimport { ElMessage } from 'element-plus/es';\r\nimport { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask';\r\nimport { verifiyNumberInteger } from '/@/utils/toolsValidate';\r\n\r\ninterface dataState {\r\n title: string;\r\n pointTitle: string;\r\n inspectPointConfirm: boolean;\r\n inspectPointDialog: boolean;\r\n ifShowInspectTaskDialog: boolean;\r\n inspectPointForm: inspectPointForm;\r\n inspectTaskForm: {\r\n id: number | null;\r\n uuid: number | null;\r\n unitName: number | null;\r\n taskUnitStatus: number | null;\r\n workType: number | null;\r\n execClassgroupId: number | null;\r\n execDepId: number | null;\r\n checkCycle: number | null;\r\n checkCycleUnit: number | null;\r\n noticeTime: number | null;\r\n noticeTimeUnit: number | null;\r\n validTime: number | null;\r\n validTimeUnit: number | null;\r\n firstStartTime: number | null;\r\n points: Array<inspectPointForm>;\r\n };\r\n inspectTaskFormRules: {};\r\n inspectPointFormRules: {};\r\n workTypeList: [];\r\n departmentList: [];\r\n timeList: [];\r\n dataReportTypeList: Array<dataReport>;\r\n firstReferenceValueList: Array<dataReport>;\r\n secondReferenceSignList: Array<dataReport>;\r\n thirdReferenceSignList: Array<dataReport>;\r\n classGroupList: Array<classGroup>;\r\n classGroup: Array<classGroup>;\r\n quotaList: Array<quota>;\r\n inspectPointAllList: Array<inspectPointAllState>;\r\n regionNameList: Array<inspectPointAllState>;\r\n RFIDList: Array<inspectPointAllState>;\r\n}\r\ninterface inspectPointAllState {\r\n id: number;\r\n code: string;\r\n regionId: number;\r\n rfidId: number;\r\n rfidName: string;\r\n region: string;\r\n}\r\ninterface classGroup {\r\n depId: number;\r\n}\r\ninterface dataReport {\r\n id: number;\r\n name: string;\r\n}\r\ninterface quota {\r\n id: number;\r\n type: string;\r\n unit: string;\r\n}\r\ninterface inspectPointForm {\r\n id: number | null;\r\n unitId: number | null;\r\n unitUuid: string | null;\r\n pointId: number | null;\r\n pointUuid: string | null;\r\n regionId: number | null;\r\n regionUuid: string | null;\r\n rfidId: number | null;\r\n quotaId: number | null;\r\n quotaUnit: string | null;\r\n execSequence: number | null;\r\n dataReportType: number | null;\r\n firstReferenceValue: number | null;\r\n secondReferenceSign: number | null;\r\n secondReferenceValue: number | null;\r\n thirdReferenceSign: number | null;\r\n thirdReferenceValue: number | null;\r\n}\r\nexport default {\r\n name: 'inspectTaskDialog',\r\n setup(props: any, context: any) {\r\n const inspectTaskFormRef = ref();\r\n const inspectPointFormRef = ref();\r\n const data = reactive<dataState>({\r\n title: '',\r\n pointTitle: '',\r\n inspectPointConfirm: false,\r\n inspectPointDialog: false,\r\n ifShowInspectTaskDialog: false,\r\n inspectPointForm: {\r\n id: null,\r\n unitId: null,\r\n unitUuid: null,\r\n pointId: null,\r\n pointUuid: null,\r\n regionId: null,\r\n regionUuid: null,\r\n rfidId: null,\r\n quotaId: null,\r\n quotaUnit: null,\r\n execSequence: null,\r\n dataReportType: null,\r\n firstReferenceValue: null,\r\n secondReferenceSign: null,\r\n secondReferenceValue: null,\r\n thirdReferenceSign: null,\r\n thirdReferenceValue: null\r\n },\r\n inspectTaskForm: {\r\n id: null,\r\n uuid: null,\r\n unitName: null,\r\n taskUnitStatus: null,\r\n workType: null,\r\n execClassgroupId: null,\r\n execDepId: null,\r\n checkCycle: null,\r\n checkCycleUnit: null,\r\n noticeTime: null,\r\n noticeTimeUnit: null,\r\n validTime: null,\r\n validTimeUnit: null,\r\n firstStartTime: null,\r\n points: []\r\n },\r\n inspectTaskFormRules: {\r\n unitName: [{ required: true, message: '请填写巡检任务单元名称', trigger: 'blur' }],\r\n workType: [{ required: true, message: '请选择巡检任务类型', trigger: 'change' }],\r\n execClassgroupId: [{ required: true, message: '请选择巡检班组', trigger: 'change' }],\r\n execDepId: [{ required: true, message: '请选择巡检部门', trigger: 'blur' }],\r\n checkCycle: [{ required: true, message: '请填写巡检周期', trigger: 'blur' }],\r\n checkCycleUnit: [{ required: true, message: '请选择巡检周期单位', trigger: 'change' }],\r\n noticeTime: [{ required: true, message: '请填写提前通知时间', trigger: 'blur' }],\r\n noticeTimeUnit: [{ required: true, message: '请选择提前通知时间单位', trigger: 'change' }],\r\n validTime: [{ required: true, message: '请填写有效时间', trigger: 'blur' }],\r\n validTimeUnit: [{ required: true, message: '请选择有效时间单位', trigger: 'change' }],\r\n firstStartTime: [{ required: true, message: '请选择周期开始时间', trigger: 'change' }]\r\n },\r\n inspectPointFormRules: {\r\n pointId: [{ required: true, message: '请选择巡检点', trigger: 'change' }],\r\n regionId: [{ required: true, message: '', trigger: 'change' }],\r\n rfidId: [{ required: true, message: '', trigger: 'change' }],\r\n quotaId: [{ required: true, message: '请选择巡检指标', trigger: 'change' }],\r\n quotaUnit: [{ required: true, message: '请填写巡检指标单位', trigger: 'blur' }],\r\n dataReportType: [{ required: true, message: '请选择巡检指标单位', trigger: 'change' }]\r\n },\r\n workTypeList: [],\r\n departmentList: [],\r\n timeList: [],\r\n classGroupList: [],\r\n classGroup: [],\r\n quotaList: [],\r\n inspectPointAllList: [],\r\n regionNameList: [],\r\n RFIDList: [],\r\n dataReportTypeList: [\r\n { id: 1, name: '选择' },\r\n { id: 2, name: '填空' },\r\n { id: 3, name: '选择并填空' }\r\n ],\r\n firstReferenceValueList: [\r\n { id: 0, name: '正常' },\r\n { id: 1, name: '异常' }\r\n ],\r\n secondReferenceSignList: [\r\n { id: 1, name: '>' },\r\n { id: 2, name: '>=' }\r\n ],\r\n thirdReferenceSignList: [\r\n { id: 3, name: '<' },\r\n { id: 4, name: '<=' }\r\n ]\r\n });\r\n\r\n const openInspectPointDialog = (type: string, value: {}) => {\r\n data.inspectPointDialog = true;\r\n if (type === '新增') {\r\n data.pointTitle = '新增巡检点';\r\n data.inspectPointForm = {\r\n id: null,\r\n unitId: null,\r\n unitUuid: null,\r\n pointId: null,\r\n pointUuid: null,\r\n regionId: null,\r\n regionUuid: null,\r\n rfidId: null,\r\n quotaId: null,\r\n quotaUnit: null,\r\n execSequence: null,\r\n dataReportType: null,\r\n firstReferenceValue: null,\r\n secondReferenceSign: null,\r\n secondReferenceValue: null,\r\n thirdReferenceSign: null,\r\n thirdReferenceValue: null\r\n };\r\n } else {\r\n data.pointTitle = '修改巡检点';\r\n data.inspectPointForm = JSON.parse(JSON.stringify(value));\r\n }\r\n };\r\n\r\n const showInspectTaskDialog = (type: string, value: { id: number; uuid: string }, workTypeList: [], department: [], timeType: [], classGroupList: [], quotaList: [], inspectPointAllList: [], regionNameList: [], RFIDList: []) => {\r\n data.regionNameList = regionNameList;\r\n data.RFIDList = RFIDList;\r\n data.quotaList = JSON.parse(JSON.stringify(quotaList));\r\n data.timeList = JSON.parse(JSON.stringify(timeType));\r\n data.inspectPointAllList = JSON.parse(JSON.stringify(inspectPointAllList));\r\n data.workTypeList = JSON.parse(JSON.stringify(workTypeList));\r\n data.departmentList = JSON.parse(JSON.stringify(department));\r\n data.classGroupList = JSON.parse(JSON.stringify(classGroupList));\r\n data.ifShowInspectTaskDialog = true;\r\n if (type === '新增') {\r\n data.inspectPointConfirm = true;\r\n data.title = '新增巡检任务';\r\n data.inspectTaskForm = {\r\n id: null,\r\n uuid: null,\r\n unitName: null,\r\n taskUnitStatus: null,\r\n workType: null,\r\n execClassgroupId: null,\r\n execDepId: null,\r\n checkCycle: null,\r\n checkCycleUnit: null,\r\n noticeTime: null,\r\n noticeTimeUnit: null,\r\n validTime: null,\r\n validTimeUnit: null,\r\n firstStartTime: null,\r\n points: []\r\n };\r\n } else if (type === '修改') {\r\n data.inspectPointConfirm = true;\r\n data.title = '修改巡检任务';\r\n inspectTaskApi()\r\n .getInspectTaskById({ id: value.id, uuid: value.uuid })\r\n .then((res) => {\r\n if (res.data.code === '200') {\r\n data.inspectTaskForm.execDepId = res.data.data.execDepId;\r\n giveClassGroup();\r\n data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n })\r\n .catch((error) => {});\r\n } else {\r\n data.inspectPointConfirm = false;\r\n data.title = '查看巡检任务';\r\n inspectTaskApi()\r\n .getInspectTaskById({ id: value.id, uuid: value.uuid })\r\n .then((res) => {\r\n if (res.data.code === '200') {\r\n data.inspectTaskForm = JSON.parse(JSON.stringify(res.data.data));\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n })\r\n .catch((error) => {});\r\n }\r\n };\r\n\r\n const submitInspectPoint = () => {\r\n inspectPointFormRef.value.validate(async (valid: Boolean) => {\r\n if (valid) {\r\n if (data.title === '新增巡检任务' && data.pointTitle === '新增巡检点') {\r\n if (data.inspectTaskForm.points.length === 0) {\r\n data.inspectPointForm.execSequence = 1;\r\n } else {\r\n data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;\r\n }\r\n data.inspectTaskForm.points.push(data.inspectPointForm);\r\n data.inspectPointDialog = false;\r\n } else if (data.title === '新增巡检任务' && data.pointTitle === '修改巡检点') {\r\n let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence);\r\n data.inspectTaskForm.points[result] = data.inspectPointForm;\r\n data.inspectPointDialog = false;\r\n } else if (data.title === '修改巡检任务' && data.pointTitle === '新增巡检点') {\r\n data.inspectPointForm.unitId = data.inspectTaskForm.id;\r\n if (data.inspectTaskForm.points.length === 0) {\r\n data.inspectPointForm.execSequence = 1;\r\n } else {\r\n data.inspectPointForm.execSequence = (data.inspectTaskForm.points[data.inspectTaskForm.points.length - 1].execSequence as number) + 1;\r\n }\r\n let res = await inspectTaskApi().addChainOfInspectTask(data.inspectPointForm);\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n message: '巡检点新增成功',\r\n duration: 2000\r\n });\r\n data.inspectPointDialog = false;\r\n data.inspectTaskForm.points.push(data.inspectPointForm);\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n } else {\r\n data.inspectPointForm.unitId = data.inspectTaskForm.id;\r\n let res = await inspectTaskApi().modChainOfInspectTask(data.inspectPointForm);\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n message: '巡检点修改成功',\r\n duration: 2000\r\n });\r\n let result = data.inspectTaskForm.points.findIndex((item) => item.execSequence === data.inspectPointForm.execSequence);\r\n data.inspectTaskForm.points[result] = data.inspectPointForm;\r\n data.inspectPointDialog = false;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n }\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: '请完善基本信息'\r\n });\r\n }\r\n });\r\n };\r\n const deleteFlow = async (index: number, item: { id: number }) => {\r\n if (data.pointTitle === '新增巡检点') {\r\n data.inspectTaskForm.points.splice(index, 1);\r\n } else {\r\n let res = await inspectTaskApi().deleteChainOfInspectTask({ id: item.id, unitId: data.inspectTaskForm.id });\r\n if (res.data.code === '200') {\r\n data.inspectTaskForm.points.splice(index, 1);\r\n ElMessage({\r\n type: 'success',\r\n message: '巡检点删除成功'\r\n });\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n }\r\n };\r\n\r\n const giveRegionAndRFID = () => {\r\n data.inspectPointForm.regionId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.regionId as number;\r\n data.inspectPointForm.rfidId = data.inspectPointAllList.find((item) => item.id === data.inspectPointForm.pointId)?.rfidId as number;\r\n };\r\n\r\n const giveClassGroup = () => {\r\n data.inspectTaskForm.execClassgroupId = null;\r\n data.classGroup = data.classGroupList.filter((item) => item.depId === data.inspectTaskForm.execDepId);\r\n };\r\n\r\n const giveQuotaUnit = () => {\r\n data.inspectPointForm.quotaUnit = data.quotaList.find((item) => item.id === data.inspectPointForm.quotaId)?.unit as string;\r\n };\r\n\r\n const submitInspectTask = () => {\r\n inspectTaskFormRef.value.validate(async (valid: Boolean) => {\r\n if (valid) {\r\n if (data.title === '新增巡检任务') {\r\n let res = await inspectTaskApi().addInspectTask(data.inspectTaskForm);\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n message: '巡检任务新增成功',\r\n duration: 2000\r\n });\r\n data.ifShowInspectTaskDialog = false;\r\n context.emit('refreshInspectTask');\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n } else {\r\n let res = await inspectTaskApi().modInspectTask(data.inspectTaskForm);\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n message: '巡检指标修改成功',\r\n duration: 2000\r\n });\r\n data.ifShowInspectTaskDialog = false;\r\n context.emit('refreshInspectTask');\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n }\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: '请完善基本信息'\r\n });\r\n }\r\n });\r\n };\r\n\r\n const onVerifiyNumberInteger = (val: number, title: string) => {\r\n if (title === 'noticeTime') {\r\n data.inspectTaskForm.noticeTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));\r\n } else if (title === 'checkCycle') {\r\n data.inspectTaskForm.checkCycle = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));\r\n } else {\r\n data.inspectTaskForm.validTime = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));\r\n }\r\n };\r\n\r\n return {\r\n ...toRefs(data),\r\n inspectTaskFormRef,\r\n deleteFlow,\r\n giveQuotaUnit,\r\n giveClassGroup,\r\n inspectPointFormRef,\r\n onVerifiyNumberInteger,\r\n submitInspectTask,\r\n submitInspectPoint,\r\n giveRegionAndRFID,\r\n showInspectTaskDialog,\r\n openInspectPointDialog\r\n };\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n height: calc(100vh - 144px);\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n .homeCard {\r\n width: 100%;\r\n padding: 20px;\r\n box-sizing: border-box;\r\n background: #fff;\r\n border-radius: 4px;\r\n\r\n .main-card {\r\n width: 100%;\r\n height: 100%;\r\n .cardTop {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 20px;\r\n .mainCardBtn {\r\n margin: 0;\r\n }\r\n }\r\n .pageBtn {\r\n height: 60px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: right;\r\n\r\n .demo-pagination-block + .demo-pagination-block {\r\n margin-top: 10px;\r\n }\r\n .demo-pagination-block .demonstration {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n height: calc(100% - 100px);\r\n }\r\n }\r\n .el-row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n .grid-content {\r\n align-items: center;\r\n min-height: 36px;\r\n }\r\n\r\n .topInfo {\r\n display: flex;\r\n align-items: center;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n & > div {\r\n white-space: nowrap;\r\n margin-right: 20px;\r\n }\r\n }\r\n }\r\n}\r\n.stepItem {\r\n width: 100%;\r\n display: flex;\r\n align-items: flex-start;\r\n margin-bottom: 30px;\r\n margin-left: 30px;\r\n padding-bottom: 30px;\r\n border-left: 2px solid #ccc;\r\n &:first-of-type {\r\n margin-top: 30px;\r\n }\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n border-left: none;\r\n }\r\n .stepNum {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 15px;\r\n box-sizing: border-box;\r\n color: #333;\r\n border: 1px solid #999;\r\n line-height: 28px;\r\n text-align: center;\r\n margin-right: 10px;\r\n margin-left: -16px;\r\n margin-top: -30px;\r\n }\r\n .stepCard {\r\n width: 100%;\r\n margin-top: -30px;\r\n\r\n .box-card {\r\n width: 100%;\r\n &:deep(.el-card__header) {\r\n padding: 10px 15px;\r\n }\r\n .card-header {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n & > div:first-of-type {\r\n margin-right: 80px;\r\n font-size: 18px;\r\n font-weight: bold;\r\n }\r\n }\r\n }\r\n }\r\n &:hover .card-header {\r\n color: #0098f5;\r\n }\r\n &:hover .stepNum {\r\n border: 2px solid #0098f5;\r\n color: #0098f5;\r\n }\r\n}\r\n:deep(.el-date-editor) {\r\n width: 100%;\r\n}\r\n</style>\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue +--- a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue (revision 624a145dcb9959e769fa635a4b9e2fe4758772ed) ++++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue (date 1661218095819) +@@ -27,7 +27,7 @@ + </el-select> + </el-form-item> + </el-col> +- <el-col :span="12" style="margin-bottom: 20px" v-if="inspectTaskForm.workType === 2"> ++ <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> +Index: src/views/specialWorkSystem/workTicket/myApproval/index.vue +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP +<+><template>\r\n <div class=\"home-container\">\r\n<!-- <el-tabs v-model=\"activeName\" class=\"demo-tabs\" @tab-click=\"handleClick\">-->\r\n<!-- <el-tab-pane label=\"申请中\" name=\"1\">-->\r\n <div style=\"height: 100%\">\r\n <el-row class=\"homeCard\">\r\n <el-col :span=\"8\">\r\n <div class=\"grid-content topInfo\">\r\n <el-select v-model=\"searchWord\">\r\n <el-option\r\n v-for=\"item in workType\"\r\n :key=\"item.id\"\r\n :label=\"item.name\"\r\n :value=\"item.id\"\r\n />\r\n </el-select>\r\n <el-button type=\"primary\" @click=\"searchRecord\">查询</el-button>\r\n <el-button plain @click=\"clearSearch\">重置</el-button>\r\n </div>\r\n </el-col>\r\n </el-row>\r\n <div class=\"homeCard\">\r\n <div class=\"main-card\">\r\n <el-row class=\"cardTop\">\r\n <el-col :span=\"12\" class=\"mainCardBtn\">\r\n <el-button type=\"primary\" :icon=\"Plus\" size=\"default\" @click=\"toApply()\">申请</el-button>\r\n <!--\t\t\t\t\t\t\t\t\t<el-button type=\"danger\" :icon=\"Delete\" size=\"default\">删除</el-button>-->\r\n <!--\t\t\t\t\t\t\t\t\t<el-button type=\"success\" size=\"default\">设置分类</el-button>-->\r\n </el-col>\r\n <el-button type=\"primary\" :icon=\"Refresh\" size=\"default\" @click=\"reLoadData()\" />\r\n </el-row>\r\n <el-table ref=\"multipleTableRef\" :data=\"applyData\" style=\"width: 100%\" height=\"calc(100% - 100px)\" :header-cell-style=\"{ background: '#fafafa' }\">\r\n <el-table-column property=\"applyUname\" label=\"申请人\" />\r\n <el-table-column property=\"depName\" label=\"部门名称\" />\r\n <el-table-column property=\"operators\" label=\"作业人\" />\r\n <el-table-column property=\"workTypeDesc\" label=\"作业类型\" />\r\n <el-table-column property=\"workLevelDesc\" label=\"作业等级\" />\r\n <el-table-column property=\"applyTime\" label=\"申请时间\" width=\"180\" />\r\n <el-table-column label=\"申请状态\" width=\"180\">\r\n <template #default=\"scope\">\r\n <el-tag type=\"success\">{{ scope.row.statusDesc }}</el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column fixed=\"right\" label=\"操作\" align=\"center\" width=\"250\">\r\n <template #default=\"scope\">\r\n <el-button link type=\"primary\" size=\"small\" :icon=\"View\" @click=\"viewRecord(scope.row)\">查看</el-button>\r\n <el-button link type=\"success\" size=\"small\" :icon=\"Finished\" @click=\"viewStatus(scope.row)\">进度</el-button>\r\n <el-button link type=\"warning\" size=\"small\" :icon=\"Delete\" @click=\"deleteRecordBtn(scope.row)\">终止</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"pageBtn\">\r\n <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\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <el-dialog v-model=\"dialogDetails\" title=\"作业审批详情\" center>\r\n <fire v-if=\"dialogType == 1\" :details = details></fire>\r\n <space v-else-if=\"dialogType == 2\" :details = details></space>\r\n <hoist v-else-if=\"dialogType == 3\" :details = details></hoist>\r\n <ground v-else-if=\"dialogType == 4\" :details = details></ground>\r\n <broken v-else-if=\"dialogType == 5\" :details = details></broken>\r\n <height v-else-if=\"dialogType == 6\" :details = details></height>\r\n <power v-else-if=\"dialogType == 7\" :details = details></power>\r\n <plate v-else :details = details></plate>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button type=\"primary\" @click=\"dialogDetails = false\"\r\n >确认</el-button\r\n >\r\n </span>\r\n </template>\r\n </el-dialog>\r\n <el-dialog v-model=\"dialogStatus\" title=\"作业审批进度\" center width=\"60%\">\r\n <el-form v-if=\"approveInfo.operators.length > 0\" style=\"margin-bottom: 40px\">\r\n <el-form-item label=\"申请作业人\">\r\n <el-input v-model=\"approveInfo.operators\" readonly type=\"textarea\" />\r\n </el-form-item>\r\n </el-form>\r\n <div style=\"display: flex; flex-direction: column-reverse\">\r\n <div v-for=\"(item, index) in approveInfo.approvalSteps\" class=\"stepItem\">\r\n <div class=\"stepNum\">{{ item.stepSerial }}</div>\r\n <div class=\"stepCard\">\r\n <el-card class=\"box-card\" shadow=\"always\">\r\n <div class=\"text\">\r\n 审批结果:<span>{{ item.approvalResultDesc }}</span>\r\n </div>\r\n <div class=\"text\">\r\n 审批类型:<span>{{ item.typeDesc }}</span>\r\n </div>\r\n <div class=\"text\" v-show=\"item.startApprovalTime != null\">\r\n 开始时间:<span>{{ item.startApprovalTime }}</span>\r\n </div>\r\n <div class=\"approveUnit\">\r\n <div class=\"item-tit\"><span>审批人</span><span>审批状态</span></div>\r\n <div class=\"item-cont\" v-for=\"i in item.stepUnits\">\r\n <span>{{ i.approvalUname }}</span\r\n ><span>{{ i.resultDesc }}</span>\r\n </div>\r\n </div>\r\n <div class=\"approveItem\">\r\n <div class=\"item-tit\">\r\n <span>审批项目</span>\r\n<!-- <span>类型</span>-->\r\n <div>措施标准</div>\r\n </div>\r\n <div class=\"item-cont\" v-for=\"i in item.stepItems\">\r\n <span>{{ i.itemName }}</span>\r\n<!-- <span>{{ i.typeDesc }}</span>-->\r\n <div v-if=\"i.measure !== null\">\r\n <div>\r\n <span>作业类型:</span><span>{{ i.measure.workTypeDesc }}</span>\r\n </div>\r\n <div>\r\n <span>措施内容:</span><span>{{ i.measure.context }}</span>\r\n </div>\r\n </div>\r\n <div v-if=\"i.stand !== null\">\r\n <div>\r\n <span>标题名称:</span><span>{{ i.stand.title }}</span>\r\n </div>\r\n <div>\r\n <span>标准内容:</span><span>{{ i.stand.typeDesc }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"text\" v-show=\"item.expFinishApprovalTime != null\">\r\n 期望结束时间:<span>{{ item.expFinishApprovalTime }}</span>\r\n </div>\r\n <div class=\"text\" v-show=\"item.finishApprovalTime != null\">\r\n 结束时间:<span>{{ item.finishApprovalTime }}</span>\r\n </div>\r\n </el-card>\r\n </div>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n <el-dialog v-model=\"deleteDialog\" title=\"提示\" width=\"30%\" center @close=\"indexClear\">\r\n <span>您确定要终止该条审批吗?</span>\r\n <template #footer>\r\n <span class=\"dialog-footer\">\r\n <el-button @click=\"deleteDialog = false\" size=\"default\">取消</el-button>\r\n <el-button type=\"primary\" @click=\"conFirmDelete\" size=\"default\">确认</el-button>\r\n </span>\r\n </template>\r\n </el-dialog>\r\n<!-- </el-tab-pane>-->\r\n<!-- <el-tab-pane label=\"已通过\" name=\"2\">-->\r\n<!-- <div style=\"height: 100%\">-->\r\n<!-- <el-row class=\"homeCard\">-->\r\n<!-- <el-col :span=\"8\">-->\r\n<!-- <div class=\"grid-content topInfo\">-->\r\n<!-- <el-input v-model=\"searchWord\" placeholder=\"作业证名称\"></el-input>-->\r\n<!-- <el-button type=\"primary\">查询</el-button>-->\r\n<!-- <el-button plain>重置</el-button>-->\r\n<!-- </div>-->\r\n<!-- </el-col>-->\r\n<!-- </el-row>-->\r\n<!-- <div class=\"homeCard\">-->\r\n<!-- <div class=\"main-card\">-->\r\n<!-- <el-table ref=\"multipleTableRef\" :data=\"passedData\" style=\"width: 100%\" height=\"calc(100% - 48px)\" :header-cell-style=\"{ background: '#fafafa' }\" @selection-change=\"handleSelectionChange\">-->\r\n<!-- <el-table-column type=\"selection\" width=\"55\" />-->\r\n<!-- <el-table-column type=\"index\" label=\"编号\" width=\"200\" />-->\r\n<!-- <el-table-column property=\"level\" label=\"作业证等级\" width=\"180\" sortable />-->\r\n<!-- <el-table-column property=\"applyDate\" label=\"申请日期\" sortable />-->\r\n<!-- <el-table-column property=\"name\" label=\"申请人\" width=\"180\" />-->\r\n<!-- <el-table-column property=\"department\" label=\"申请部门\" width=\"180\" />-->\r\n<!-- <el-table-column label=\"申请状态\" width=\"180\">-->\r\n<!-- <template #default=\"scope\">-->\r\n<!-- <el-tag type=\"success\">{{ scope.row.status }}</el-tag>-->\r\n<!-- </template>-->\r\n<!-- </el-table-column>-->\r\n<!-- </el-table>-->\r\n<!-- <div class=\"pageBtn\">-->\r\n<!-- <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\" />-->\r\n<!-- </div>-->\r\n<!-- </div>-->\r\n<!-- </div>-->\r\n<!-- </div>-->\r\n<!-- </el-tab-pane>-->\r\n<!-- </el-tabs>-->\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent} from 'vue';\r\nimport { storeToRefs } from 'pinia';\r\nimport { initBackEndControlRoutes } from '/@/router/backEnd';\r\nimport { useUserInfo } from '/@/stores/userInfo';\r\nimport { Session } from '/@/utils/storage';\r\nimport { useRouter } from 'vue-router';\r\nimport { Edit, View, Plus, Delete, Refresh, Search, Finished } from '@element-plus/icons-vue';\r\nimport { ElTable } from 'element-plus';\r\nimport { FormInstance, FormRules, ElMessage } from 'element-plus';\r\nimport { workApprovalApi } from '/@/api/specialWorkSystem/workApproval';\r\nimport type { TabsPaneContext } from 'element-plus';\r\nimport {teamManageApi} from \"/@/api/systemManage/basicDateManage/personShiftManage/teamManage\";\r\n\r\n// 定义接口来定义对象的类型\r\ninterface stateType {\r\n applyData: Array<string>;\r\n workTimeList: Array<string>;\r\n multipleSelection: Array<any>;\r\n deleteArr: Array<any>;\r\n approveInfo: Object;\r\n dialogDetails: boolean;\r\n dialogStatus: boolean;\r\n deleteDialog: boolean;\r\n pageIndex1: number;\r\n pageSize1: number;\r\n chosenIndex: null | number;\r\n deleteId: null | number;\r\n searchWord: string;\r\n totalSize1: number;\r\n activeName: string;\r\n addRecord: {};\r\n details: {};\r\n statusInfo: {};\r\n workType: Array<type>;\r\n dialogType: number | null;\r\n departmentList: Array<any>;\r\n departmentRecursionList: Array<DepartmentState>;\r\n}\r\ninterface type {\r\n id: number;\r\n name: string;\r\n}\r\ninterface DepartmentState {\r\n depId: number;\r\n depName: string;\r\n}\r\nexport default defineComponent({\r\n name: 'myApproval',\r\n components: {\r\n fire: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/fireLog.vue')),\r\n space: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/spaceLog.vue')),\r\n hoist: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/hoistLog.vue')),\r\n ground: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/groundLog.vue')),\r\n broken: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/brokenLog.vue')),\r\n height: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/heightLog.vue')),\r\n power: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/powerLog.vue')),\r\n plate: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workTicket/myApproval/components/plateLog.vue'))\r\n },\r\n setup() {\r\n const userInfo = useUserInfo();\r\n const { userInfos } = storeToRefs(userInfo);\r\n const router = useRouter();\r\n const state = reactive<stateType>({\r\n pageIndex1: 1,\r\n pageSize1: 10,\r\n totalSize1: 0,\r\n dialogType: null,\r\n activeName: '1',\r\n departmentList: [],\r\n departmentRecursionList: [],\r\n chosenIndex: null,\r\n searchWord: '',\r\n applyData: [],\r\n workTimeList: [],\r\n multipleSelection: [],\r\n approveInfo: {\r\n approvalSteps: [],\r\n operators: []\r\n },\r\n dialogDetails: false,\r\n dialogStatus: false,\r\n deleteDialog: false,\r\n addRecord: {},\r\n details: {},\r\n statusInfo: {},\r\n deleteId: null,\r\n deleteArr: [],\r\n workType: [\r\n { id: 1, name: '动火作业' },\r\n { id: 2, name: '受限空间作业' },\r\n { id: 3, name: '吊装作业' },\r\n { id: 4, name: '动土作业' },\r\n { id: 5, name: '断路作业' },\r\n { id: 6, name: '高处作业' },\r\n { id: 7, name: '临时用电作业' },\r\n { id: 8, name: '盲板抽堵作业' }\r\n ]\r\n });\r\n interface User {\r\n name: string;\r\n list: [];\r\n info: string;\r\n }\r\n\r\n // 刷新\r\n const reLoadData = async () => {\r\n getListByPage();\r\n };\r\n\r\n // 填写表单\r\n const toApply = () => {\r\n router.push({\r\n path: 'workApply'\r\n });\r\n };\r\n\r\n const handleClick = (tab: TabsPaneContext, event: Event) => {\r\n console.log(tab, event);\r\n };\r\n\r\n // 获取部门列表\r\n const getAllDepartment = async () => {\r\n let res = await teamManageApi().getAllDepartment();\r\n if (res.data.code === '200') {\r\n state.departmentList = JSON.parse(JSON.stringify(res.data.data))\r\n recursion(state.departmentList);\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n // 获取层级审批数据\r\n // const getApprovalData = async (id) => {\r\n // let res = await workApprovalApi().getApprovalData({workApplyId: id});\r\n // if (res.data.code === '200') {\r\n // console.log(res.data.data,'层级数据')\r\n // // state.departmentList = JSON.parse(JSON.stringify(res.data.data))\r\n // // recursion(state.departmentList);\r\n // } else {\r\n // ElMessage({\r\n // type: 'warning',\r\n // message: res.data.msg\r\n // });\r\n // }\r\n // };\r\n\r\n const recursion = (value: any) => {\r\n for (let i of value) {\r\n if (i.children.length !== 0) {\r\n state.departmentRecursionList.push(i);\r\n recursion(i.children);\r\n } else {\r\n state.departmentRecursionList.push(i);\r\n }\r\n }\r\n };\r\n\r\n // 分页获取工作时间组列表\r\n const getListByPage = async () => {\r\n const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } };\r\n let res = await workApprovalApi().getApprovalListPage(data);\r\n if (res.data.code === '200') {\r\n console.log(res.data.data,'approval')\r\n state.applyData = JSON.parse(JSON.stringify(res.data.data));\r\n state.applyData = state.applyData.map((item) => {\r\n if (item.operators == null || item.operators == []) {\r\n item.operators = [];\r\n } else {\r\n item.operators = Array.from(item.operators, ({ operatorUname }) => operatorUname);\r\n }\r\n return item;\r\n });\r\n state.totalSize1 = res.data.total;\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n // 关键词查询记录\r\n const searchRecord = async () => {\r\n if (state.searchWord == '') {\r\n ElMessage({\r\n type: 'warning',\r\n message: '请输入查询关键词'\r\n });\r\n } else {\r\n getListByPage();\r\n }\r\n };\r\n // 重置搜索\r\n const clearSearch = async () => {\r\n state.searchWord = '';\r\n getListByPage();\r\n };\r\n\r\n // 查看进度\r\n const viewStatus = (row) => {\r\n getStatus({ workApplyId: row.workApplyId });\r\n state.dialogStatus = true;\r\n };\r\n\r\n // 查询进度方法\r\n const getStatus = async (data: any) => {\r\n let res = await workApprovalApi().getApprovalStatus(data);\r\n if (res.data.code === '200') {\r\n state.approveInfo = JSON.parse(JSON.stringify(res.data.data));\r\n state.approveInfo.operators = Array.from(state.approveInfo.operators, ({ operatorUname }) => operatorUname);\r\n console.log(state.approveInfo, '我的审批');\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n const deleteRecordBtn = (row) => {\r\n state.deleteId = row.workApplyId;\r\n state.deleteDialog = true;\r\n };\r\n\r\n // 取消申请方法\r\n const deleteRecord = async (data: any) => {\r\n let res = await workApprovalApi().postAbord(data);\r\n if (res.data.code === '200') {\r\n ElMessage({\r\n type: 'success',\r\n message: res.data.msg\r\n });\r\n getListByPage();\r\n } else {\r\n ElMessage({\r\n type: 'warning',\r\n message: res.data.msg\r\n });\r\n }\r\n };\r\n\r\n const conFirmDelete = () => {\r\n deleteRecord({ workApplyId: state.deleteId });\r\n state.deleteDialog = false;\r\n };\r\n\r\n const handleSizeChange1 = (val: number) => {\r\n state.pageSize1 = val;\r\n getListByPage();\r\n };\r\n const handleCurrentChange1 = (val: number) => {\r\n state.pageIndex1 = val;\r\n getListByPage();\r\n };\r\n\r\n // 查看记录\r\n const viewRecord = (row: any) => {\r\n state.dialogType = row.workType\r\n state.details = JSON.parse(JSON.stringify(row));\r\n console.log(state.details,'details')\r\n // getApprovalData(state.details.workApplyId)\r\n if(state.details.workDetail.otherSpecialWork == '' || !state.details.workDetail.otherSpecialWork){\r\n state.details.workDetail.otherSpecialWork=[]\r\n }\r\n else {\r\n console.log(state.details.workDetail.otherSpecialWork,'split')\r\n const a = state.details.workDetail.otherSpecialWork\r\n state.details.workDetail.otherSpecialWork = a.split(',').map((item) => {\r\n return state.workType.find((i: { id: number }) => i.id === Number(item))?.name;\r\n });\r\n }\r\n if(state.details.workDetail.involvedDepIds == '' || !state.details.workDetail.involvedDepIds){\r\n state.details.workDetail.involvedDepIds=[]\r\n }\r\n else {\r\n const a = state.details.workDetail.involvedDepIds\r\n state.details.workDetail.involvedDepIds = a.split(',').map((item) => {\r\n return state.departmentRecursionList.find((i: { depId: number }) => i.depId === Number(item))?.depName;\r\n });\r\n }\r\n state.dialogDetails = true;\r\n };\r\n\r\n // 折线图\r\n const renderMenu = async (value: string) => {\r\n Session.set('projectId', value);\r\n userInfos.value.projectId = value;\r\n await initBackEndControlRoutes();\r\n };\r\n\r\n // 页面载入时执行方法\r\n onMounted(() => {\r\n getListByPage();\r\n getAllDepartment()\r\n });\r\n\r\n return {\r\n View,\r\n Edit,\r\n Delete,\r\n Refresh,\r\n Plus,\r\n Finished,\r\n reLoadData,\r\n toApply,\r\n handleClick,\r\n searchRecord,\r\n clearSearch,\r\n viewRecord,\r\n viewStatus,\r\n deleteRecordBtn,\r\n conFirmDelete,\r\n getListByPage,\r\n handleSizeChange1,\r\n handleCurrentChange1,\r\n ...toRefs(state)\r\n };\r\n }\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n$homeNavLengh: 8;\r\n.home-container {\r\n height: calc(100vh - 144px);\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n .demo-tabs {\r\n width: 100%;\r\n height: 100%;\r\n\r\n &::v-deep(.el-tabs__content) {\r\n height: calc(100% - 60px);\r\n }\r\n\r\n .el-tab-pane {\r\n height: 100%;\r\n }\r\n }\r\n .homeCard {\r\n width: 100%;\r\n padding: 20px;\r\n box-sizing: border-box;\r\n background: #fff;\r\n border-radius: 4px;\r\n\r\n .main-card {\r\n width: 100%;\r\n height: 100%;\r\n .cardTop {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 20px;\r\n .mainCardBtn {\r\n margin: 0;\r\n }\r\n }\r\n .pageBtn {\r\n height: 60px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: right;\r\n\r\n .demo-pagination-block + .demo-pagination-block {\r\n margin-top: 10px;\r\n }\r\n .demo-pagination-block .demonstration {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n height: calc(100% - 100px);\r\n }\r\n }\r\n .stepItem {\r\n display: flex;\r\n align-items: flex-start;\r\n margin-top: 30px;\r\n margin-left: 30px;\r\n padding-bottom: 30px;\r\n padding-left: 40px;\r\n border-left: 1px solid #a0cfff;\r\n position: relative;\r\n &:first-of-type {\r\n margin-top: 30px;\r\n }\r\n &:first-of-type {\r\n margin-bottom: 0;\r\n border-left: none;\r\n }\r\n .stepNum {\r\n position: absolute;\r\n width: 40px;\r\n height: 40px;\r\n border-radius: 20px;\r\n box-sizing: border-box;\r\n font-size: 18px;\r\n color: #333;\r\n border: 1px solid #a0cfff;\r\n line-height: 38px;\r\n text-align: center;\r\n left: -20px;\r\n top: -30px;\r\n background: #d9ecff;\r\n }\r\n .stepCard {\r\n width: 100%;\r\n margin-top: -30px;\r\n\r\n .box-card {\r\n width: 100%;\r\n\r\n .card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n span {\r\n font-weight: bold;\r\n margin-left: 10px;\r\n }\r\n }\r\n\r\n .text {\r\n width: 100%;\r\n font-size: 14px;\r\n margin-bottom: 10px;\r\n padding-left: 10px;\r\n\r\n span {\r\n font-weight: bolder;\r\n color: #409eff;\r\n }\r\n\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n }\r\n }\r\n .approveUnit {\r\n width: 100%;\r\n font-size: 14px;\r\n margin-bottom: 20px;\r\n padding: 10px 15px;\r\n border: 1px solid #fff;\r\n background: #ecf8ff;\r\n border-radius: 6px;\r\n .item-tit {\r\n width: 100%;\r\n display: flex;\r\n color: #409eff;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n padding-bottom: 10px;\r\n border-bottom: 1px solid #a0cfff;\r\n\r\n & > span {\r\n flex: 1;\r\n &:last-of-type{\r\n text-align: center;\r\n }\r\n }\r\n & > div {\r\n flex: 1;\r\n text-align: center;\r\n }\r\n }\r\n .item-cont {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 10px 0;\r\n border-bottom: 1px solid #c6e2ff;\r\n\r\n & > span {\r\n flex: 1;\r\n &:last-of-type{\r\n text-align: center;\r\n }\r\n }\r\n & > div {\r\n flex: 1;\r\n text-align: center;\r\n\r\n & > div {\r\n text-align: left;\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n span {\r\n width: 45%;\r\n &:first-of-type {\r\n width: 30%;\r\n }\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n border-bottom: 0;\r\n }\r\n }\r\n }\r\n .approveItem {\r\n width: 100%;\r\n font-size: 14px;\r\n margin-bottom: 20px;\r\n padding: 10px 15px;\r\n background: #ecf8ff;\r\n border: 1px solid #fff;\r\n border-radius: 6px;\r\n .item-tit {\r\n width: 100%;\r\n display: flex;\r\n color: #409eff;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n padding-bottom: 10px;\r\n border-bottom: 1px solid #a0cfff;\r\n\r\n & > span {\r\n flex: 1;\r\n }\r\n & > div {\r\n flex: 2;\r\n text-align: center;\r\n }\r\n }\r\n .item-cont {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 10px 0;\r\n border-bottom: 1px solid #c6e2ff;\r\n\r\n & > span {\r\n flex: 1;\r\n }\r\n & > div {\r\n flex: 2;\r\n text-align: center;\r\n\r\n & > div {\r\n text-align: left;\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: flex-start;\r\n margin-bottom: 10px;\r\n span {\r\n width: 50%;\r\n &:first-of-type {\r\n width: 25%;\r\n }\r\n }\r\n }\r\n }\r\n &:last-of-type {\r\n border-bottom: 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n &:hover .card-header {\r\n color: #0098f5;\r\n }\r\n &:hover .stepNum {\r\n border: 2px solid #0098f5;\r\n color: #0098f5;\r\n }\r\n }\r\n .el-row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n .grid-content {\r\n align-items: center;\r\n min-height: 36px;\r\n }\r\n\r\n .topInfo {\r\n display: flex;\r\n align-items: center;\r\n font-size: 16px;\r\n font-weight: bold;\r\n\r\n & > div {\r\n white-space: nowrap;\r\n margin-right: 20px;\r\n }\r\n }\r\n }\r\n .el-card {\r\n border: 0;\r\n }\r\n}\r\n</style>\r\n +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/views/specialWorkSystem/workTicket/myApproval/index.vue b/src/views/specialWorkSystem/workTicket/myApproval/index.vue +--- a/src/views/specialWorkSystem/workTicket/myApproval/index.vue (revision 624a145dcb9959e769fa635a4b9e2fe4758772ed) ++++ b/src/views/specialWorkSystem/workTicket/myApproval/index.vue (date 1661164944383) +@@ -1,191 +1,184 @@ + <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="8"> +- <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="申请状态" width="180"> +- <template #default="scope"> +- <el-tag type="success">{{ 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>{{ item.approvalResultDesc }}</span> +- </div> +- <div class="text"> +- 审批类型:<span>{{ item.typeDesc }}</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>--> ++ <!-- <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="8"> ++ <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="申请状态" width="180"> ++ <template #default="scope"> ++ <el-tag type="success">{{ 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>{{ item.approvalResultDesc }}</span> ++ </div> ++ <div class="text"> ++ 审批类型:<span>{{ item.typeDesc }}</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 { toRefs, reactive, defineComponent, ref, onMounted, defineAsyncComponent } from 'vue'; + import { storeToRefs } from 'pinia'; + import { initBackEndControlRoutes } from '/@/router/backEnd'; + import { useUserInfo } from '/@/stores/userInfo'; +@@ -196,7 +189,7 @@ + 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"; ++import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage'; + + // 定义接口来定义对象的类型 + interface stateType { +@@ -309,7 +302,7 @@ + const getAllDepartment = async () => { + let res = await teamManageApi().getAllDepartment(); + if (res.data.code === '200') { +- state.departmentList = JSON.parse(JSON.stringify(res.data.data)) ++ state.departmentList = JSON.parse(JSON.stringify(res.data.data)); + recursion(state.departmentList); + } else { + ElMessage({ +@@ -350,7 +343,7 @@ + const data = { pageSize: state.pageSize1, pageIndex: state.pageIndex1, searchParams: { workType: state.searchWord } }; + let res = await workApprovalApi().getApprovalListPage(data); + if (res.data.code === '200') { +- console.log(res.data.data,'approval') ++ console.log(res.data.data, 'approval'); + state.applyData = JSON.parse(JSON.stringify(res.data.data)); + state.applyData = state.applyData.map((item) => { + if (item.operators == null || item.operators == []) { +@@ -445,25 +438,23 @@ + + // 查看记录 + const viewRecord = (row: any) => { +- state.dialogType = row.workType ++ state.dialogType = row.workType; + state.details = JSON.parse(JSON.stringify(row)); +- console.log(state.details,'details') ++ 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 ++ 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 ++ 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; + }); +@@ -481,7 +472,7 @@ + // 页面载入时执行方法 + onMounted(() => { + getListByPage(); +- getAllDepartment() ++ getAllDepartment(); + }); + + return { +@@ -647,7 +638,7 @@ + + & > span { + flex: 1; +- &:last-of-type{ ++ &:last-of-type { + text-align: center; + } + } +@@ -666,7 +657,7 @@ + + & > span { + flex: 1; +- &:last-of-type{ ++ &:last-of-type { + text-align: center; + } + } diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26__Default_Changelist_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26__Default_Changelist_.xml new file mode 100644 index 0000000..3a6c087 --- /dev/null +++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26__Default_Changelist_.xml @@ -0,0 +1,4 @@ +<changelist name="Uncommitted_changes_before_Update_at_2022_8_23_11_26_[Default_Changelist]" date="1661225223369" recycled="true" deleted="true"> + <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2022_8_23_11_26_[Default_Changelist]/shelved.patch" /> + <option name="DESCRIPTION" value="Uncommitted changes before Update at 2022/8/23 11:26 [Default Changelist]" /> +</changelist> \ No newline at end of file diff --git a/src/views/intellectInspect/inspectIndex/index.vue b/src/views/intellectInspect/inspectIndex/index.vue index 80b5cbb..41c9c8e 100644 --- a/src/views/intellectInspect/inspectIndex/index.vue +++ b/src/views/intellectInspect/inspectIndex/index.vue @@ -2,32 +2,42 @@ <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"> + <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">当日超期未巡检任务<span @click="toOverTime(4)">{{unchecked}}</span>个</div><span v-if="unchecked!=0&&unusual!=0">,</span> - <div v-if="unusual!=0">存在异常任务<span @click="toUnusual(1)">{{unusual}}</span>个</div>。 + <div v-if="unchecked != 0"> + 当日超期未巡检任务<span @click="toOverTime(4)">{{ unchecked }}</span + >个 + </div> + <span v-if="unchecked != 0 && unusual != 0">,</span> + <div v-if="unusual != 0"> + 存在异常任务<span @click="toUnusual(1)">{{ unusual }}</span + >个 + </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="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> + <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> + 任务状态:<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 v-else class="reviewBtn" @click="toDetails('查看', item)">[查看巡检记录]</div> </div> </div> </div> @@ -53,14 +63,14 @@ import { inspectRecordApi } from '/@/api/intellectInspectSystem/inspectRecord'; import { useRouter } from 'vue-router'; import inspectRecordDialog from './components/inspectRecordDialog.vue'; -import {departmentApi} from "/@/api/systemManage/department"; +import { departmentApi } from '/@/api/systemManage/department'; // 定义接口来定义对象的类型 interface stateType { tableData: Array<string>; - unchecked: null | number, - unusual: null | number, - uncheckedList: [], - abnormalList: [], + unchecked: null | number; + unusual: null | number; + uncheckedList: []; + abnormalList: []; pageIndex: number; pageSize: number; totalSize: number; @@ -121,16 +131,16 @@ onMounted(() => { getInspectRecord(); getDayData(); - getDepartmentData() + getDepartmentData(); }); // 分页获取工作时段列表 const getInspectRecord = async () => { - const data = { pageSize: state.pageSize, pageIndex: state.pageIndex}; + 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 + if (res.data.code === '200') { + state.tableData = res.data.data.records; + state.totalSize = res.data.data.total; } else { ElMessage({ type: 'warning', @@ -155,11 +165,11 @@ 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 - state.uncheckedList = res.data.data.noCheckTasks - console.log(state.uncheckedList,'555555555555555') - state.abnormalList = JSON.parse(JSON.stringify(res.data.data.abnormalTasks)) + state.unchecked = res.data.data.noCheckTaskCount; + state.unusual = res.data.data.abnormalTaskCount; + state.uncheckedList = JSON.parse(JSON.stringify(res.data.data.noCheckTasks)); + console.log(state.uncheckedList, '555555555555555'); + state.abnormalList = JSON.parse(JSON.stringify(res.data.data.abnormalTasks)); } else { ElMessage({ type: 'warning', @@ -177,27 +187,28 @@ getInspectRecord(); }; - const toLine = (item) =>{ - let id = JSON.parse(JSON.stringify(item)).id + const toLine = (item) => { + let id = JSON.parse(JSON.stringify(item)).id; router.push({ path: 'intelligentLine', query: { id: id } }); - } + }; - const toOverTime = (id) =>{ - console.log(state.uncheckedList,'list') + const toOverTime = (id) => { + console.log(state.uncheckedList, 'list'); + debugger; router.push({ path: 'inspectRecord', query: { id: id, - dataList: state.uncheckedList, + dataList: JSON.stringify(state.uncheckedList), total: state.uncheckedList.length } }); - } + }; // const toUnusual = (status) =>{ // router.push({ @@ -211,7 +222,7 @@ // } 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, @@ -234,27 +245,27 @@ <style scoped lang="scss"> $homeNavLengh: 8; @media screen and (min-width: 1366px) { - .topCard{ + .topCard { display: flex; align-items: center; justify-content: space-between; font-weight: bolder; - .top-info{ + .top-info { display: flex; font-size: 16px; align-items: center; padding: 10px 15px; - background: #FFD057; + background: #ffd057; border-radius: 8px; - border: 1px solid #F3001E; + border: 1px solid #f3001e; - &>div{ + & > div { vertical-align: middle; white-space: nowrap; - span{ + span { font-size: 22px; - color: #F3001E; + color: #f3001e; margin: 0 4px; cursor: pointer; } @@ -269,14 +280,14 @@ font-size: 18px; color: #333; overflow-x: auto; - &>span{ + & > span { white-space: nowrap; } - p{ + p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - &>span{ + & > span { white-space: nowrap; } } @@ -294,7 +305,7 @@ font-size: 16px; color: #fff; - div{ + div { white-space: nowrap; } } @@ -308,14 +319,14 @@ font-size: 15px; color: #333; overflow-x: auto; - &>span{ + & > span { white-space: nowrap; } - p{ + p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - &>span{ + & > span { white-space: nowrap; } } @@ -332,7 +343,7 @@ align-items: center; font-size: 13px; color: #fff; - div{ + div { white-space: nowrap; } } @@ -346,14 +357,14 @@ font-size: 12px; color: #333; overflow-x: auto; - &>span{ + & > span { white-space: nowrap; } - p{ + p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - &>span{ + & > span { white-space: nowrap; } } @@ -370,7 +381,7 @@ align-items: center; font-size: 12px; color: #fff; - div{ + div { white-space: nowrap; } } @@ -387,7 +398,7 @@ background: #fff; border-radius: 4px; - .title{ + .title { font-size: 20px; font-weight: bolder; } @@ -403,62 +414,58 @@ padding: 10px 15px; border-radius: 8px; - .left-info{ - - .num{ + .left-info { + .num { font-weight: bolder; margin-right: 10px; } - .place{ + .place { font-weight: bolder; } - .time{ + .time { font-weight: bolder; margin-right: 5px; } - .name{ + .name { font-weight: bolder; margin: 0 5px; font-weight: bolder; } } - .mid-info{ - - span{ + .mid-info { + span { font-weight: bolder; } - .grey{ + .grey { color: #999; } - .green{ + .green { color: #44b100; } - .blue{ + .blue { color: #409eff; } - .red{ + .red { color: red; } } - .right-info{ - - - .checkBtn{ + .right-info { + .checkBtn { padding: 10px 15px; background: #409eff; border-radius: 4px; cursor: pointer; } - .reviewBtn{ + .reviewBtn { margin: 10px 15px; cursor: pointer; color: #44b100; } } } - .list{ + .list { height: calc(100% - 60px); overflow-y: auto; } diff --git a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue b/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue index fb2865d..70255ce 100644 --- a/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue +++ b/src/views/intellectInspect/inspectRecordManage/inspectRecord/index.vue @@ -100,7 +100,7 @@ import { teamManageApi } from '/@/api/systemManage/personShiftManage/teamManage'; import { inspectPointApi } from '/@/api/intellectInspectSystem/inspectPointManage'; import { inspectTaskApi } from '/@/api/intellectInspectSystem/inspectTask'; -import {useRoute} from "vue-router"; +import { useRoute } from 'vue-router'; let global: any = { homeChartOne: null, homeChartTwo: null, @@ -172,8 +172,8 @@ } }, workTypeList: [ - { id: 1, name: '单次任务' }, - { id: 2, name: '周期任务' } + { id: 1, name: '周期任务' }, + { id: 2, name: '单次任务' } ], resultStatusList: [ { id: 0, name: '正常' }, @@ -312,11 +312,10 @@ // 页面加载时 onMounted(() => { - if(route.query.id){ - console.log(route.query.dataList,'list') - state.tableData.params.taskStatus = Number(route.query.id) - state.tableData.inspectRecordData = route.query.dataList - state.tableData.total = Number(route.query.total) + if (route.query.id) { + state.tableData.params.taskStatus = Number(route.query.id); + state.tableData.inspectRecordData = JSON.parse(route.query.dataList); + state.tableData.total = Number(route.query.total); } // getInspectRecord(); getQuotaList(); diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue index caac038..642567c 100644 --- a/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue +++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/components/inspectTaskDialog.vue @@ -27,7 +27,7 @@ </el-select> </el-form-item> </el-col> - <el-col :span="12" style="margin-bottom: 20px" v-if="inspectTaskForm.workType === 2"> + <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> diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue index af20c4e..f5c4e63 100644 --- a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue +++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue @@ -80,7 +80,22 @@ <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="status" label="状态" width="60" /> + <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> @@ -175,8 +190,8 @@ } }, workTypeList: [ - { id: 1, name: '单次任务' }, - { id: 2, name: '周期任务' } + { id: 1, name: '周期任务' }, + { id: 2, name: '单次任务' } ], quotaList: [], departmentList: [], -- Gitblit v1.9.2