From d1ce79c837650689ab47bbf587d076743fcb3a5f Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 19 五月 2025 17:25:38 +0800 Subject: [PATCH] 1. 问题审核界面新增场景信息编辑入口 2. 问题审核界面场景图片查询新增图片类型修改功能 --- src/views/fysp/check/ProCheck.vue | 320 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 191 insertions(+), 129 deletions(-) diff --git a/src/views/fysp/check/ProCheck.vue b/src/views/fysp/check/ProCheck.vue index f0c4e53..dedfd26 100644 --- a/src/views/fysp/check/ProCheck.vue +++ b/src/views/fysp/check/ProCheck.vue @@ -3,59 +3,119 @@ <template #header> <SearchBar @on-submit="search"> <template #summary> - <CompSubTaskStatistic :subtasks="subtasks"/> + <CompSubTaskStatistic + :loading="sideLoading" + :sceneType="sceneTypeId" + :subtasks="subtasks" + :monitorObjList="curMonitorObjList" + /> </template> </SearchBar> </template> <template #aside> <SideList + legend :items="subtasks" :loading="sideLoading" @item-click="chooseSubtask" ></SideList> </template> <template #main> - <ToolBar - :title="curSubtask.title" - :descriptions="proStatus" - :buttons="buttons" - :loading="mainLoading" - ></ToolBar> - <el-scrollbar - v-if="curProList.length > 0" - class="el-scrollbar" - v-loading="mainLoading" - > - <CompProblemCard - v-for="(p, i) in curProList" - :key="i" - :index="i+1" - :problem="p" - @submit="updateSubtask" - ></CompProblemCard> + <el-scrollbar> + <ToolBar + :title="curSubtask.title" + :descriptions="proStatus" + :buttons="buttons" + :loading="mainLoading" + ></ToolBar> + <el-scrollbar + v-if="curProList.length > 0" + class="scrollbar-inner" + v-loading="mainLoading" + > + <CompProblemCard + :key="i" + v-for="(p, i) in curProList" + :index="i + 1" + :problem="p" + :subtask="curSubtask.data" + :topTask="topTask" + @submit="updateSubtask" + @check="handleProblemCheck" + ></CompProblemCard> + </el-scrollbar> + <el-empty v-else description="鏆傛棤闂" v-loading="mainLoading" /> </el-scrollbar> - <el-empty v-else description="鏆傛棤璁板綍" v-loading="mainLoading" /> </template> </BaseContentLayout> + <CompProblemAddOrUpd + title="鏂板闂" + v-if="proAddOrUpdDialogVisible" + v-model:visible="proAddOrUpdDialogVisible" + :subtask="curSubtask.data" + :topTask="topTask" + ref="compProblemAddOrUpdRef" + @cancel="onAddProCanceled" + @submit="updateSubtask" + /> + <ArbitraryPhoto + v-if="anyPhotoDialog" + v-model:dialog-visible="anyPhotoDialog" + :readonly="true" + :subtask="curSubtask.data" + ref="arbitraryPhotoRef" + ></ArbitraryPhoto> + <CompDeviceShowTest + title="璁炬柦璁惧" + v-model:visible="deviceShowDialog" + v-if="deviceShowDialog" + ref="deviceShowRef" + > + </CompDeviceShowTest> + <SceneEditDialog + v-model="sceneInfoDialog" + :sceneId="curSubtask.data ? curSubtask.data.sceneId : undefined" + ></SceneEditDialog> </template> <script> +import ArbitraryPhoto from './components/ArbitraryPhoto.vue'; import taskApi from '@/api/fysp/taskApi'; import ProCheckProxy from './ProCheckProxy'; - -import { ElMessageBox, ElNotification, ElMessage } from 'element-plus'; - +import CompProblemAddOrUpd from './components/CompProblemAddOrUpd.vue'; import CompProblemCard from './components/CompProblemCard.vue'; import CompSubTaskStatistic from './components/CompSubTaskStatistic.vue'; - +import CompDeviceShowTest from './components/CompDeviceShowTest.vue'; +import SceneEditDialog from '@/views/fysp/scene/SceneEditDialog.vue'; export default { - components: { CompProblemCard, CompSubTaskStatistic }, + components: { + CompProblemCard, + CompSubTaskStatistic, + CompProblemAddOrUpd, + ArbitraryPhoto, + CompDeviceShowTest, + SceneEditDialog + }, data() { return { + // 璁惧鍥惧璇濇 + deviceShowDialog: false, + // 浠绘剰鍥惧璇濇 + anyPhotoDialog: false, + // 鏂板闂瀵硅瘽妗� + proAddOrUpdDialogVisible: false, + // 鍩烘湰淇℃伅瀵硅瘽妗� + sceneInfoDialog: false, //宸︿晶鑿滃崟鏍忓姞杞界姸鎬� sideLoading: false, //鍙充晶鍐呭鏍忓姞杞界姸鎬� mainLoading: false, + // 鎬讳换鍔� + topTask: {}, + // 鍦烘櫙绫诲瀷id + sceneTypeId: undefined, + // 鎬讳换鍔″贰鏌ヨ鍒掓竻鍗� + curMonitorObjList: [], //瀛愪换鍔″垪琛� subtasks: [], //褰撳墠閫変腑鐨勪换鍔� @@ -65,117 +125,80 @@ //鎿嶄綔鎸夐挳 buttons: [ { - name: '鏂板闂', + name: '鍦烘櫙淇℃伅', color: 'success', + // color: 'primary', + click: () => { + this.sceneInfoDialog = true; + } }, { - name: '浠绘剰鍥剧墖', - color: 'warning', - }, - { - name: '鎵归噺瀹℃牳', + name: '鏂板闂', + // color: 'success', color: 'primary', + click: () => { + this.proAddOrUpdDialogVisible = true; + } }, - ], + { + name: '鍦烘櫙鍥剧墖', + // color: 'warning', + color: 'primary', + click: () => { + this.anyPhotoDialog = true; + } + }, + { + name: '璁炬柦璁惧', + color: 'primary', + click: () => { + this.openDeviceShowDialog(); + } + } + // { + // name: '鎵归噺瀹℃牳', + // color: 'primary', + // click: () => {} + // } + ] }; }, computed: { //闂鐘舵�� proStatus() { return ProCheckProxy.proStatusArray(this.curProList); - }, - //浠诲姟闂瀹℃牳鎯呭喌缁熻淇℃伅 - summary() { - const _summary = [ - { - name: '浠诲姟鎬昏', - value: 0, - type: 'info', - }, - { - name: '闂鏈鏍�', - value: 0, - type: 'success', - icon: 'SuccessFilled', - }, - { - name: '闂閮ㄥ垎瀹℃牳', - value: 0, - type: 'success', - icon: 'SuccessFilled', - }, - { - name: '闂鍏ㄩ儴瀹℃牳', - value: 0, - type: 'success', - icon: 'SuccessFilled', - }, - { - name: '鏈暣鏀�', - value: 0, - type: 'info', - icon: 'WarningFilled', - }, - { - name: '鏁存敼鏈鏍�', - value: 0, - type: 'info', - icon: 'WarningFilled', - }, - { - name: '鏁存敼閮ㄥ垎瀹℃牳', - value: 0, - type: 'warning', - icon: 'WarningFilled', - }, - { - name: '鏁存敼鍏ㄩ儴瀹℃牳', - value: 0, - type: 'warning', - icon: 'WarningFilled', - }, - ]; - - this.subtasks.forEach((s) => { - _summary[0].value++; - - if (s.data.proNum == 0) { - _summary[1].value++; - } else if (s.data.proCheckedNum == 0) { - _summary[3].value++; - } else if (s.data.proCheckedNum < s.data.proNum) { - _summary[2].value++; - } else { - _summary[1].value++; - } - }); - _summary.forEach((s, i) => { - if (i > 0) { - let per = Math.round((s.value / _summary[0].value) * 1000) / 10; - if (isNaN(per)) per = 0; - s.value = `${s.value}(${per}%)`; - } - }); - - return _summary; - }, + } }, methods: { + // 鎵撳紑璁惧鍥� + openDeviceShowDialog() { + this.deviceShowDialog = true; + this.$nextTick(() => { + this.$refs.deviceShowRef.init(this.curSubtask.data.scene); + }); + }, //鏌ヨ瀛愪换鍔$粺璁′俊鎭� search(formSearch) { + this.topTask = formSearch.topTask; this.sideLoading = true; this.mainLoading = true; this.curProList = []; this.curSubtask = {}; - taskApi.getSubtaskSummary(formSearch).then((res) => { + this.sceneTypeId = formSearch.sceneTypeId; + const param = { + topTaskId: formSearch.topTask.tguid, + sceneTypeId: formSearch.sceneTypeId + }; + taskApi.getSubtaskSummary(param).then((res) => { const list = []; res.forEach((s) => { - const t = this.getSubtaskType(s); + const t = ProCheckProxy.getSubtaskType(s); list.push({ + status: s.subtask.status, type: t, title: s.stName, categoly: s.stPlanTime.split('T')[0], - data: s, + data: s }); }); this.subtasks = list; @@ -184,23 +207,13 @@ this.mainLoading = false; } }); - }, - //鑾峰彇浠诲姟闂鐨勫鏍告儏鍐� - getSubtaskType(s) { - let type = 0; - if (s.proNum == 0) { - type = 2; - } else if (s.proCheckedNum == 0) { - type = 0; - } else if (s.proCheckedNum < s.proNum) { - type = 1; - } else { - type = 2; - } - return type; + taskApi.fetchMonitorObjectVersion(param.topTaskId).then((res) => { + this.curMonitorObjList = res; + }); }, //鐐瑰嚮宸︿晶鑿滃崟浠诲姟浜嬩欢 chooseSubtask(s) { + // this.currInsGuid = s.data.insGuid this.sideLoading = false; this.mainLoading = true; // const controller = new AbortController(); @@ -214,17 +227,66 @@ this.mainLoading = false; }); }, - updateSubtask() { + onAddProCanceled() {}, + // 闂鍗$墖缁勪欢涓诲姩鍙戣捣鍒锋柊鐖剁粍浠舵暟鎹� + updateSubtask(refresh = false) { this.curSubtask.data.proCheckedNum++; - this.curSubtask.type = this.getSubtaskType(this.curSubtask.data); + this.curSubtask.type = ProCheckProxy.getSubtaskType(this.curSubtask.data); + if (this.proAddOrUpdDialogVisible) { + this.proAddOrUpdDialogVisible = false; + } + this.refreshCurrSubtask(refresh); + }, + // 鍒锋柊褰撳墠閫変腑瀛愪换鍔� + refreshCurrSubtask(refresh) { + this.sideLoading = false; + setTimeout(() => { + this.mainLoading = true; + taskApi + .getProBySubtask(this.curSubtask.data.stGuid) + .then((res) => { + if (refresh) { + this.curProList = res; + return; + } + const currProLen = this.curProList.length; + // 涓嶆敼鍙樻暟缁勫鍍忓紩鐢ㄧ殑鍓嶆彁涓嬮噸鏂拌祴鍊� + for (let index = 0; index < res.length; index++) { + const element = res[index]; + if (currProLen < index + 1) { + this.curProList.push(element); + } else { + this.curProList[index] = element; + } + } + // this.curSubtask = s; + }) + .finally(() => { + this.mainLoading = false; + }); + }, 500); + }, + // 闂瀹℃牳瀹屾垚鍚庯紝鏇存柊宸︿晶鍒楄〃瀵瑰簲瀛愪换鍔$姸鎬� + handleProblemCheck() { + const status = ProCheckProxy.calProStatus(this.curProList); + this.curSubtask.data.proNum = status.proNum; + this.curSubtask.data.proCheckedNum = status.proCheckedNum; + this.curSubtask.data.changeNum = status.changeNum; + this.curSubtask.data.changeCheckedNum = status.changeCheckedNum; + this.curSubtask.type = ProCheckProxy.getSubtaskType(this.curSubtask.data); } }, - mounted() {}, + mounted() {} }; </script> <style scoped> -.el-scrollbar { +.scrollbar-outer { + height: calc(100vh - 60px * 2 - 24px); + background-color: aliceblue; +} + +.scrollbar-inner { height: calc(100vh - 60px * 2 - 20px * 2 - var(--height-toolbar)); } </style> -- Gitblit v1.9.3