From 6f3fac4493995e16ee0f37c6cf2b06e5de2a6a72 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 02 七月 2025 16:27:37 +0800
Subject: [PATCH] 1. 将场景图片的分类修改为从服务端动态获取; 2. 问题整改节目中的问题复现功能修改为可拖动对话框且移除背景模态框;

---
 src/views/fysp/check/components/CompProRecent.vue |  140 +++++++++++++++++++++++++---------------------
 1 files changed, 75 insertions(+), 65 deletions(-)

diff --git a/src/views/fysp/check/components/CompProRecent.vue b/src/views/fysp/check/components/CompProRecent.vue
index 54d51ff..81be92d 100644
--- a/src/views/fysp/check/components/CompProRecent.vue
+++ b/src/views/fysp/check/components/CompProRecent.vue
@@ -1,15 +1,24 @@
 <template>
-  <div>
-    <el-tabs v-model="activeName" type="card">
-      <el-tab-pane v-for="(item, i) in ranges" :key="i" :label="item" :name="item"> </el-tab-pane>
-    </el-tabs>
-    <div class="proList">
-      <el-card class="card-style" shadow="hover">
-        <el-descriptions v-loading="loading">
-          <el-descriptions-item label="鎬诲嚭鐜版鏁�">{{ curProList.length }}</el-descriptions-item>
-          <!-- <el-descriptions-item label="澶嶇幇鐜�">{{ repeteRate }}%</el-descriptions-item> -->
-        </el-descriptions>
-        <!-- <el-descriptions v-loading="loading" column="3">
+  <CompGenericWrapper type="dialog" draggable :modal="false">
+    <template #content>
+      <el-tabs v-model="activeName" type="card">
+        <el-tab-pane
+          v-for="(item, i) in ranges"
+          :key="i"
+          :label="item"
+          :name="item"
+        >
+        </el-tab-pane>
+      </el-tabs>
+      <div class="proList">
+        <el-card class="card-style" shadow="hover" v-loading="loading">
+          <el-descriptions>
+            <el-descriptions-item label="鎬诲嚭鐜版鏁�">{{
+              curProList.length
+            }}</el-descriptions-item>
+            <!-- <el-descriptions-item label="澶嶇幇鐜�">{{ repeteRate }}%</el-descriptions-item> -->
+          </el-descriptions>
+          <!-- <el-descriptions v-loading="loading" column="3">
           <div v-for="pro in curProList">
             <el-descriptions-item>{{ pro.problemname }}</el-descriptions-item>
             <el-descriptions-item label="浠诲姟鍚嶇О">{{ pro._stName }}</el-descriptions-item>
@@ -18,43 +27,42 @@
             </el-descriptions-item>
           </div>
         </el-descriptions> -->
-        <el-table :data="curProList" style="width: 100%">
-          <el-table-column type="index" width="50" />
-          <el-table-column prop="problemname" label="闂"/>
-          <el-table-column prop="_time" label="鏃堕棿" width="250" />
-          <el-table-column label="鎿嶄綔" width="180">
-            <template v-slot="scope">
-              <el-button link type="primary" @click="info(scope.row)">璇︽儏</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </el-card>
-      <el-dialog
+          <el-table :data="curProList" style="width: 100%">
+            <el-table-column type="index" width="50" />
+            <el-table-column prop="problemname" label="闂" />
+            <el-table-column prop="_time" label="鏃堕棿" width="250" />
+            <el-table-column label="鎿嶄綔" width="180">
+              <template v-slot="scope">
+                <el-button link type="primary" @click="info(scope.row)"
+                  >璇︽儏</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </div>
+      <CompProblemAddOrUpd
+        v-model:visible="proAddOrUpdDialogVisible"
         title="棰勮"
-        v-model="proAddOrUpdDialogVisible"
-        :before-close="proAddOrUpdDialogClose"
-        width="80%"
-      >
-        <CompProblemAddOrUpd
-          v-if="proAddOrUpdDialogVisible"
-          :subtask="subtask"
-          :topTask="topTask"
-          :problem="previewPro"
-          :readonly="true"
-          ref="compProblemAddOrUpdRef"
-        />
-      </el-dialog>
-    </div>
-  </div>
+        :subtask="subtask"
+        :topTask="topTask"
+        :problem="previewPro"
+        :readonly="true"
+        ref="compProblemAddOrUpdRef"
+      />
+      <el-dialog destroy-on-close> </el-dialog>
+    </template>
+  </CompGenericWrapper>
 </template>
 <script>
 import CompProblemAddOrUpd from './CompProblemAddOrUpd.vue';
 import taskApi from '@/api/fysp/taskApi';
 import { useCloned } from '@vueuse/core';
+import dayjs from 'dayjs';
 export default {
   computed: {
     // repeteRate() {
-    //   return this.curProList.length !== 0 ? (this.curProList.length - 1) / this.subtaskCount * 1.0 : 0 
+    //   return this.curProList.length !== 0 ? (this.curProList.length - 1) / this.subtaskCount * 1.0 : 0
     // },
   },
   props: {
@@ -80,16 +88,19 @@
       handler(newObj, oldObj) {
         this.handleClick();
       }
+    },
+    problem: {
+      handler(nv, ov) {
+        this.deepCopyPro = useCloned(this.problem).cloned.value;
+        this.getRecentPros();
+      },
+      immediate: true
     }
   },
   components: {
     CompProblemAddOrUpd
   },
-  mounted() {
-
-    this.deepCopyPro = useCloned(this.problem).cloned.value;
-    this.getRecentPros();
-  },
+  mounted() {},
   data() {
     return {
       proAddOrUpdDialogVisible: false,
@@ -115,10 +126,6 @@
       this.previewPro = pro;
       this.proAddOrUpdDialogVisible = true;
     },
-    // 鍏抽棴璇︽儏寮圭獥
-    proAddOrUpdDialogClose() {
-      this.proAddOrUpdDialogVisible = false;
-    },
     // 鍒囨崲鏃堕棿鑼冨洿
     handleClick() {
       this.getRecentPros();
@@ -126,16 +133,13 @@
     updateSubtask() {},
     generateQueryParam() {
       // 浠婂ぉ鐨勬棩鏈�
-      const today = new Date();
+      const today = dayjs(this.subtask.stPlanTime);
       // 涓変釜鏈堝墠
-      const threeMonthsAgo = new Date(today);
-      threeMonthsAgo.setMonth(today.getMonth() - 3);
+      const threeMonthsAgo = today.subtract(3, 'month');
       // 璁$畻鍗婂勾鍓嶇殑鏃ユ湡
-      const sixMonthsAgo = new Date(today);
-      sixMonthsAgo.setMonth(today.getMonth() - 6);
+      const sixMonthsAgo = today.subtract(6, 'month');
       // 璁$畻涓�骞村墠鐨勬棩鏈�
-      const oneYearAgo = new Date(today);
-      oneYearAgo.setFullYear(today.getFullYear() - 1);
+      const oneYearAgo = today.subtract(1, 'year');
 
       return {
         startTime:
@@ -151,31 +155,37 @@
     /**
      * 鑾峰彇杩戞湡鎯呭喌
      * */
-    async getRecentPros() {
+    getRecentPros() {
       this.loading = true;
-      this.subtaskCount = 0
+      this.subtaskCount = 0;
       // 鑾峰彇瀛愪换鍔″垪琛�
-      await taskApi.getSubtaskByScene(this.generateQueryParam()).then((subtasks) => {
+      taskApi.getSubtaskByScene(this.generateQueryParam()).then((subtasks) => {
         this.curProList = [];
         if (subtasks) {
+          const promiseList = [];
           subtasks.forEach((subtask) => {
             // 鑾峰彇闂鍒楄〃
-            this.getProBySubtask(subtask);
+            promiseList.push(this.getProBySubtask(subtask));
           });
+          Promise.all(promiseList)
+            .then(() => {
+              // 棰濆澶勭悊
+              this.curProList.sort((o1, o2) => {
+                return o2._time > o1._time;
+              });
+            })
+            .finally(() => (this.loading = false));
         }
       });
-      // 棰濆澶勭悊
-      this.curProList.sort((o1, o2) => o2.getTime() - o1.getTime());
-      this.loading = false;
     },
     // 鏍规嵁瀛愪换鍔¤幏鍙栭噷闈㈢殑闂鍒楄〃
-    async getProBySubtask(subtask) {
-      taskApi.getProBySubtask(subtask.stGuid).then((pros) => {
+    getProBySubtask(subtask) {
+      return taskApi.getProBySubtask(subtask.stGuid).then((pros) => {
         if (pros) {
           pros.forEach((pro) => {
             if (pro.ptguid == this.deepCopyPro.ptguid) {
               pro._stName = subtask.stName;
-              pro._time = this.$fm.formatYMD(subtask.stPlanTime)
+              pro._time = this.$fm.formatYMD(subtask.stPlanTime);
               this.curProList.push(pro);
             }
           });

--
Gitblit v1.9.3