From b330e57051e54789eb83d10dc58c4d9d10c608e1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 17 九月 2025 09:55:19 +0800
Subject: [PATCH] 2025.9.17 数据产品模块(待完成)

---
 src/views/fysp/check/ProCheck.vue |  232 ++++++++++++++++++++--------------------------------------
 1 files changed, 80 insertions(+), 152 deletions(-)

diff --git a/src/views/fysp/check/ProCheck.vue b/src/views/fysp/check/ProCheck.vue
index 9cda78a..a7dfec4 100644
--- a/src/views/fysp/check/ProCheck.vue
+++ b/src/views/fysp/check/ProCheck.vue
@@ -3,7 +3,12 @@
     <template #header>
       <SearchBar @on-submit="search">
         <template #summary>
-          <CompSubTaskStatistic :subtasks="subtasks" />
+          <CompSubTaskStatistic
+            :loading="sideLoading"
+            :sceneType="sceneTypeId"
+            :subtasks="subtasks"
+            :monitorObjList="curMonitorObjList"
+          />
         </template>
       </SearchBar>
     </template>
@@ -16,29 +21,31 @@
       ></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
-          :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>
+        <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
@@ -65,38 +72,51 @@
     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 problemApi from '@/api/fysp/problemApi';
 import ProCheckProxy from './ProCheckProxy';
 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,
     CompProblemAddOrUpd,
     ArbitraryPhoto,
-    CompDeviceShowTest
+    CompDeviceShowTest,
+    SceneEditDialog
   },
   data() {
     return {
-      // 璁惧鍥�
+      // 璁惧鍥惧璇濇
       deviceShowDialog: false,
-      // 浠绘剰鍥�
+      // 浠绘剰鍥惧璇濇
       anyPhotoDialog: false,
-      // 鏂板闂
+      // 鏂板闂瀵硅瘽妗�
       proAddOrUpdDialogVisible: false,
+      // 鍩烘湰淇℃伅瀵硅瘽妗�
+      sceneInfoDialog: false,
       //宸︿晶鑿滃崟鏍忓姞杞界姸鎬�
       sideLoading: false,
       //鍙充晶鍐呭鏍忓姞杞界姸鎬�
       mainLoading: false,
       // 鎬讳换鍔�
       topTask: {},
+      // 鍦烘櫙绫诲瀷id
+      sceneTypeId: undefined,
+      // 鎬讳换鍔″贰鏌ヨ鍒掓竻鍗�
+      curMonitorObjList: [],
       //瀛愪换鍔″垪琛�
       subtasks: [],
       //褰撳墠閫変腑鐨勪换鍔�
@@ -105,6 +125,14 @@
       curProList: [],
       //鎿嶄綔鎸夐挳
       buttons: [
+        {
+          name: '鍦烘櫙淇℃伅',
+          color: 'success',
+          // color: 'primary',
+          click: () => {
+            this.sceneInfoDialog = true;
+          }
+        },
         {
           name: '鏂板闂',
           // color: 'success',
@@ -140,81 +168,6 @@
     //闂鐘舵��
     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: {
@@ -232,6 +185,7 @@
       this.mainLoading = true;
       this.curProList = [];
       this.curSubtask = {};
+      this.sceneTypeId = formSearch.sceneTypeId;
       const param = {
         topTaskId: formSearch.topTask.tguid,
         sceneTypeId: formSearch.sceneTypeId
@@ -239,7 +193,7 @@
       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,
@@ -254,39 +208,9 @@
           this.mainLoading = false;
         }
       });
-    },
-    //鑾峰彇浠诲姟闂鐨勫鏍告儏鍐�
-    getSubtaskType(s) {
-      let type = 0;
-      // 鏃犻棶棰�
-      if (s.proNum == 0) {
-        type = 0;
-      } 
-      // 闂鏈鏍�
-      else if (s.proCheckedNum == 0) {
-        type = 1;
-      }
-      // 闂閮ㄥ垎瀹℃牳
-      else if (s.proCheckedNum < s.proNum) {
-        type = 2;
-      }
-      // 鏈暣鏀� 
-      else if (s.changeNum < s.proNum) {
-        type = 3;
-      }
-      // 鏁存敼鏈鏍�
-      else if (s.changeCheckedNum == 0) {
-        type = 4;
-      }
-      // 鏁存敼閮ㄥ垎瀹℃牳
-      else if (s.changeCheckedNum < s.changeNum) {
-        type = 5;
-      }
-      // 瀹屽叏瀹℃牳
-      else {
-        type = 6;
-      }
-      return type;
+      taskApi.fetchMonitorObjectVersion(param.topTaskId).then((res) => {
+        this.curMonitorObjList = res;
+      });
     },
     //鐐瑰嚮宸︿晶鑿滃崟浠诲姟浜嬩欢
     chooseSubtask(s) {
@@ -294,7 +218,7 @@
       this.sideLoading = false;
       this.mainLoading = true;
       // const controller = new AbortController();
-      taskApi
+      problemApi
         .getProBySubtask(s.data.stGuid)
         .then((res) => {
           this.curProList = res;
@@ -304,12 +228,11 @@
           this.mainLoading = false;
         });
     },
-    onAddProCanceled() {
-    },
+    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;
       }
@@ -318,9 +241,9 @@
     // 鍒锋柊褰撳墠閫変腑瀛愪换鍔�
     refreshCurrSubtask(refresh) {
       this.sideLoading = false;
-      // this.mainLoading = true;
       setTimeout(() => {
-        taskApi
+        this.mainLoading = true;
+        problemApi
           .getProBySubtask(this.curSubtask.data.stGuid)
           .then((res) => {
             if (refresh) {
@@ -340,18 +263,18 @@
             // this.curSubtask = s;
           })
           .finally(() => {
-            // this.mainLoading = false;
+            this.mainLoading = false;
           });
-      }, 150);
+      }, 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 = this.getSubtaskType(this.curSubtask.data)
+    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() {}
@@ -359,7 +282,12 @@
 </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