1
0
bill vor 1 Jahr
Ursprung
Commit
79b4e0fcc2
3 geänderte Dateien mit 45 neuen und 9 gelöschten Zeilen
  1. 16 8
      src/store/scene.ts
  2. 26 1
      src/view/vrmodel/pagging.ts
  3. 3 0
      src/view/vrmodel/sceneContent.vue

+ 16 - 8
src/store/scene.ts

@@ -44,6 +44,7 @@ export type QuoteScene = BaseScene & {
   snCode: string;
   location: LocationEnum;
   viewCount: number;
+  step?: number;
   status: QuoteSceneStatus;
 };
 
@@ -145,6 +146,12 @@ type ScenePaggingParams = PaggingReq<
     snCode: string;
   }
 >;
+
+export const getSceneStep = async (scene: QuoteScene) => {
+  const data = await axios.post<{ step: number }>("xxx", { sceneId: scene.id });
+  return data.step;
+};
+
 export const getScenePagging = async (params: ScenePaggingParams) => {
   const urls = {
     [SceneType.SWMX]: getModelSceneList,
@@ -152,18 +159,19 @@ export const getScenePagging = async (params: ScenePaggingParams) => {
   };
   const url = urls[params.type] || getSceneList;
   if (params.type === SceneType.QJKK) {
-    const data = (await axios.post(url, params)).data as PaggingRes<any>;
-
+    let data = (await axios.post(url, params)).data as PaggingRes<any>;
+    data = data || { list: [], total: 0 };
+    // calc_status;
     data.list.forEach((item) => {
       item.type = SceneType.QJKK;
-      item.status =
-        item.status === 1
+      item.calcStatus =
+        item.calcStatus === 1
           ? QuoteSceneStatus.SUCCESS
-          : item.status === 0
-          ? QuoteSceneStatus.ARCHIVE
-          : item.status === -1
+          : item.calcStatus === 0
+          ? QuoteSceneStatus.RUN
+          : item.calcStatus === -1
           ? QuoteSceneStatus.ERR
-          : QuoteSceneStatus.RUN;
+          : QuoteSceneStatus.ARCHIVE;
     });
 
     return data;

+ 26 - 1
src/view/vrmodel/pagging.ts

@@ -1,5 +1,10 @@
 import { usePagging } from "@/hook/pagging";
-import { SceneType, getScenePagging } from "@/store/scene";
+import {
+  QuoteScene,
+  QuoteSceneStatus,
+  SceneType,
+  getScenePagging,
+} from "@/store/scene";
 import { computed, reactive, watch, watchEffect } from "vue";
 
 export const useScenePaggingParams = () => {
@@ -43,6 +48,26 @@ export const useScenePaggingParams = () => {
     }
   );
 
+  watch(
+    () => pagging.state.table.rows as QuoteScene[],
+    (scenes, _, onCleanup) => {
+      const getSteps = () => {
+        const runs = scenes.filter(
+          (scene) => scene.status === QuoteSceneStatus.RUN
+        );
+        if (!runs.length) return clearInterval(interval);
+
+        for (const scene of runs) {
+          // 请求进度
+          scene.step = 10;
+        }
+      };
+      const interval = setInterval(getSteps, 1000);
+      getSteps();
+      onCleanup(() => clearInterval(interval));
+    }
+  );
+
   const queryResetRaw = pagging.queryReset;
   pagging.queryReset = () => {
     const type = pagging.state.query.type;

+ 3 - 0
src/view/vrmodel/sceneContent.vue

@@ -23,6 +23,9 @@
     </el-table-column>
     <el-table-column label="状态" v-slot:default="{ row }: { row: QuoteScene }">
       {{ QuoteSceneStatusDesc[row.status] }}
+      <template v-if="row.status === QuoteSceneStatus.RUN">
+        进度:{{ row.step || 0 }}
+      </template>
     </el-table-column>
     <el-table-column label="所属架构" prop="deptName"></el-table-column>
     <el-table-column label="操作" v-slot:default="{ row }: { row: QuoteScene }">