bill 1 year ago
parent
commit
c705f24cb0

+ 4 - 2
src/request/index.ts

@@ -26,7 +26,7 @@ export type AuthHook = () => {
   clear: () => void;
 };
 export const setAuthHook = (hook: AuthHook) => (getAuth = hook);
-let getAuth: AuthHook = () => ({ token: "", userId: "0", clear: () => { } });
+let getAuth: AuthHook = () => ({ token: "", userId: "0", clear: () => {} });
 
 axios.defaults.baseURL = baseURL;
 
@@ -83,7 +83,9 @@ axios.interceptors.request.use(async (config) => {
 
 const responseInterceptor = (res: AxiosResponse<any, any>) => {
   closeLoading();
-  const hasIgnore = res.config.params ? 'ingoreRes' in res.config.params : false
+  const hasIgnore = res.config.params
+    ? "ingoreRes" in res.config.params
+    : false;
   if (!successCode.includes(res.data.code) && !hasIgnore) {
     let errMsg = res.data.msg || res.data.message;
     openErrorMsg(errMsg);

+ 3 - 3
src/request/urls.ts

@@ -66,6 +66,7 @@ export const getCompanyList = "/web/department/getAll";
 export const getSceneList = "/fusion-xj/scene/list";
 export const delScene = "/fusion-xj/scene/deleteNum";
 export const copyScene = "/fusion-xj/scene/copyScene";
+export const downSceneHash = `/fusion-xj/scene/downMD5`;
 export const checkGenMeshScene = "/fusion-xj/scene/sceneDetail";
 export const genMeshSceneByCloud = "/fusion-xj/scene/buildSceneObj";
 
@@ -84,6 +85,7 @@ export const updateModelScene = `/fusion-xj/model/updateTitle`;
 export const cancelUModel = `/fusion-xj/model/cancelUpload`;
 export const deleteModel = `/fusion-xj/model/delete`;
 export const copyModel = `/fusion-xj/model/copyModel`;
+export const downModelHash = `/fusion-xj/model/downMD5`;
 export const uploadModel = `/fusion-xj/model/uploadObj`;
 export const getModelRunProgress = `/fusion-xj/model/uploadObjProgress`;
 
@@ -166,8 +168,7 @@ export const fireDetail = "/fusion-xj/web/fireProject/getDetailWithoutAuth";
 // export const fireDetailByPsw = '/web/fireProject/getDetailWithoutAuth'
 
 // 获取火调详情
-export const fireDetailByPsw =
-  "/fusion-xj/web/fireProject/getDetailWithoutAuth"; //wxAnonGetDetail
+export const fireDetailByPsw = "/fusion-xj/web/fireProject/getDetailWithoutAuth"; //wxAnonGetDetail
 /** ------------------------------------------ */
 
 // case相关
@@ -185,7 +186,6 @@ export const caseInquestInfo = "/fusion-xj/caseInquest/info";
 export const caseInquestOpt = "/fusion-xj/caseInquest/saveOrUpdate";
 export const caseInquestExport = "/fusion-xj/caseInquest/downDocx";
 
-
 // 火调链接地址设置密码
 export const setCasePsw = "/fusion-xj/web/fireProject/updateRandomCode";
 export const getCasePsw = "/fusion-xj/web/fireProject/getRandCode";

+ 27 - 0
src/store/scene.ts

@@ -9,6 +9,8 @@ import {
   copyScene,
   delScene,
   deleteModel,
+  downModelHash,
+  downSceneHash,
   downloadSceneList,
   genMeshSceneByCloud,
   getModelRunProgress,
@@ -17,6 +19,7 @@ import {
   updateModelScene,
   uploadModel,
 } from "@/request";
+import saveAs from "@/util/file-serve";
 import { ElMessage } from "element-plus";
 
 interface BaseScene {
@@ -91,6 +94,14 @@ export enum ModelSceneStatus {
   CANCEL = -2,
 }
 
+const downHash = async (res: string, name: string) => {
+  if (res.includes("code")) {
+    ElMessage.error(JSON.parse(res).message);
+  } else {
+    await saveAs(new Blob([res], { type: "text/plain" }), name + "-hash.txt");
+  }
+};
+
 export const setModelScene = (scene: ModelScene) =>
   axios.post(updateModelScene, {
     modelId: scene.modelId,
@@ -106,6 +117,14 @@ export const delModelScene = (scene: ModelScene) =>
 export const copyModelScene = (scene: ModelScene) =>
   axios.post(copyModel, { modelId: scene.modelId });
 
+export const downModelSceneHash = async (scene: ModelScene) => {
+  const res = (await axios.get(downModelHash, {
+    params: { modelId: scene.modelId, ingoreRes: true },
+    responseType: "text",
+  })) as string;
+  await downHash(res, scene.modelTitle);
+};
+
 export const uploadModelScene = (
   file: File,
   progressCallback: (progress: number) => void
@@ -166,6 +185,14 @@ export const delQuoteScene = (scene: QuoteScene) =>
 export const copyQuoteScene = (scene: QuoteScene) =>
   axios.post(copyScene, { num: scene.num });
 
+export const downQuoteSceneHash = async (scene: QuoteScene) => {
+  const res = (await axios.get(downSceneHash, {
+    params: { num: scene.num, ingoreRes: true },
+    responseType: "text",
+  })) as any;
+  await downHash(res, scene.sceneName);
+};
+
 export type QueryDownloadQuoteSceneParams = PaggingReq<{
   deptId: string;
   userName: string;

+ 24 - 24
src/view/statistics/statisticsInject.ts

@@ -162,30 +162,30 @@ export const statisticsConfigs: ConfigItem[] = reactive([
       ],
     },
   },
-  {
-    title: "火灾原因统计",
-    data: {
-      tooltip: {
-        trigger: "axis",
-      },
-      xAxis: {
-        type: "category",
-        data: [],
-      },
-      yAxis: {
-        type: "value",
-      },
-      series: [
-        {
-          label: {
-            show: true,
-          },
-          data: [],
-          type: "bar",
-        },
-      ],
-    },
-  },
+  // {
+  //   title: "火灾原因统计",
+  //   data: {
+  //     tooltip: {
+  //       trigger: "axis",
+  //     },
+  //     xAxis: {
+  //       type: "category",
+  //       data: [],
+  //     },
+  //     yAxis: {
+  //       type: "value",
+  //     },
+  //     series: [
+  //       {
+  //         label: {
+  //           show: true,
+  //         },
+  //         data: [],
+  //         type: "bar",
+  //       },
+  //     ],
+  //   },
+  // },
 ]);
 
 const numRotate = 8;

+ 12 - 0
src/view/vrmodel/modelContent.vue

@@ -46,6 +46,13 @@
     <el-table-column label="操作" v-slot:default="{ row }">
       <span
         class="oper-span"
+        @click="downHash(row)"
+        v-if="row.createStatus === ModelSceneStatus.SUCCESS"
+      >
+        下载Hash
+      </span>
+      <span
+        class="oper-span"
         @click="copyHanlder(row)"
         v-if="row.createStatus === ModelSceneStatus.SUCCESS"
       >
@@ -97,6 +104,7 @@ import {
   delModelScene,
   getModelSceneStatus,
   copyModelScene,
+  downModelSceneHash,
 } from "@/store/scene";
 import {
   ModelMaxSize,
@@ -111,6 +119,7 @@ import { watchPolling } from "@/hook/watchPolling";
 import { OpenType, openSceneUrl } from "../case/help";
 import { operateIsPermissionByPath } from "@/directive/permission";
 import { editModelScene } from "./quisk";
+import { downModelHash } from "@/request";
 
 const props = defineProps<{ pagging: ScenePagging }>();
 
@@ -145,6 +154,9 @@ const copyHanlder = async (scene: ModelScene) => {
     props.pagging.refresh();
   }
 };
+const downHash = async (scene: ModelScene) => {
+  downModelSceneHash(scene);
+};
 
 const {
   percentage,

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

@@ -28,6 +28,13 @@
     <el-table-column label="操作" v-slot:default="{ row }: { row: QuoteScene }">
       <span
         class="oper-span"
+        @click="downHash(row)"
+        v-if="row.status === QuoteSceneStatus.SUCCESS"
+      >
+        下载Hash
+      </span>
+      <span
+        class="oper-span"
         @click="copySceneHandler(row)"
         v-if="row.status === QuoteSceneStatus.SUCCESS"
       >
@@ -95,12 +102,14 @@ import {
   genMeshScene,
   LocationEnum,
   copyQuoteScene,
+  downQuoteSceneHash,
 } from "@/store/scene";
 import { ScenePagging } from "./pagging";
 import { QuoteSceneStatusDesc } from "@/constant/scene";
 import { OpenType, openSceneUrl } from "../case/help";
 import { confirm } from "@/helper/message";
 import { sceneDownload } from "./quisk";
+import { downSceneHash } from "@/request";
 
 const props = defineProps<{ pagging: ScenePagging }>();
 const delSceneHandler = async (scene: QuoteScene) => {
@@ -113,6 +122,9 @@ const copySceneHandler = async (scene: QuoteScene) => {
   await copyQuoteScene(scene);
   props.pagging.refresh();
 };
+const downHash = async (scene: QuoteScene) => {
+  downQuoteSceneHash(scene);
+};
 const sceneDownloadHandler = (scene: QuoteScene) => {
   sceneDownload({ scene });
 };