Browse Source

fix: 添加四维看看平面图绘制入口

bill 2 weeks ago
parent
commit
3adaef8c9a

+ 1 - 1
package.json

@@ -4,7 +4,7 @@
   "version": "1.1.0",
   "type": "module",
   "scripts": {
-    "dev:fuse": "vite --mode=criminaldev",
+    "dev:fuse": "vite --mode=firedev",
     "build:fusetest": "vite build --mode=firetest && vite build --mode=criminaltest && vite build --mode=cjzfiretest && vite build --mode=xmfiretest",
     "build:fuse": "vite build --mode=fire && vite build --mode=criminal && vite build --mode=cjzfire && vite build --mode=xmfire",
     "dev:hx": "vite --mode=hxdev",

+ 1 - 1
profile/.env.firedev

@@ -2,7 +2,7 @@ VITE_PRIMARY='#D8000A'
 VITE_TITLE='绘图'
 VITE_ENTRY='/example/fuse/enter-mix.ts'
 VITE_ENTRY_EXAMPLE='./main.ts'
-VITE_MOCK_ENV=firetest
+VITE_MOCK_ENV=fire
 
 VITE_MESH_OSS='/meshOSS/'
 VITE_MESH_API='/meshAPI/'

+ 34 - 31
src/example/fuse/enter-case.ts

@@ -2,9 +2,9 @@ import { ElMessage } from "element-plus";
 import type { Scene } from "../../example/platform/platform-resource";
 import { token, params } from "../env";
 import { genLoading } from "../loadding";
-import * as shadred from './enter-shared'
+import * as shadred from "./enter-shared";
 
-window.platform = { ...shadred }
+window.platform = { ...shadred };
 
 window.platform.getHeaders = () => ({
   ...shadred.getHeaders(),
@@ -17,42 +17,45 @@ window.platform.login = (isBack = true) => {
     throw "登录中";
   }
   isLoging = true;
-  if (import.meta.env.DEV && params.value.caseId) {
-    shadred.post("/service/manage/login", {
-      password: "JwiuK95dExMjM0NTY=7nHGf5ySQWSuC4G1An",
-      username: "super-admin",
-      userName: "super-admin",
-    }).then((res) => {
-      params.value.token = res.token;
-      console.error(res.token);
-      // console.log(res.token, {...params.value})
-      setTimeout(() => location.reload(), 1000);
-      isLoging = false;
-    });
+  if (import.meta.env.DEV) {
+    if (params.value.caseId) {
+      shadred
+        .post("/service/manage/login", {
+          password: "JwiuK95dExMjM0NTY=7nHGf5ySQWSuC4G1An",
+          username: "super-admin",
+          userName: "super-admin",
+        })
+        .then((res) => {
+          params.value.token = res.token;
+          setTimeout(() => location.reload(), 1000);
+          isLoging = false;
+        });
+    }
     return;
   }
-  return shadred.login(isBack)
-}
+  return shadred.login(isBack);
+};
 
-window.platform.getSceneList = genLoading(async (keyword: string): Promise<Scene[]> => {
-  const list = await shadred.post(`fusion/case/sceneListPost`, {
-    caseId: params.value.caseId,
-    isMesh: 1,
-    sceneName: keyword,
-  });
-  return list.map((item: any) => ({
-    type: shadred.SCENE_TYPE.mesh,
-    m: item.num,
-    title: item.name,
-    id: item.id.toString(),
-    token,
-  }));
-});
+window.platform.getSceneList = genLoading(
+  async (keyword: string): Promise<Scene[]> => {
+    const list = await shadred.post(`fusion/case/sceneListPost`, {
+      caseId: params.value.caseId,
+      isMesh: 1,
+      sceneName: keyword,
+    });
+    return list.map((item: any) => ({
+      type: shadred.SCENE_TYPE.mesh,
+      m: item.num,
+      title: item.name,
+      id: item.id.toString(),
+      token,
+    }));
+  }
+);
 
 /* @vite-ignore */
 import(import.meta.env.VITE_ENTRY_EXAMPLE);
 
-
 setTimeout(() => {
   if (!params.value.caseId || !token) {
     ElMessage.error("当前项目号不存在!");

+ 12 - 1
src/example/fuse/enter-mix.ts

@@ -1,6 +1,7 @@
-import { params } from "../env";
+import { params, token } from "../env";
 import { post, login } from "./enter-shared";
 import './enter-case'
+import { ElMessage } from "element-plus";
 
 let isLoging = false;
 window.platform.login = (isBack = true) => {
@@ -25,3 +26,13 @@ window.platform.login = (isBack = true) => {
   }
   return login(isBack)
 };
+
+
+setTimeout(() => {
+  if (!params.value.caseId || !token) {
+    ElMessage.error("当前项目号不存在!");
+    window.platform.login(!!params.value.caseId);
+  } else {
+    window.platform.getSceneList("");
+  }
+}, 500);

+ 7 - 8
src/example/fuse/enter-shared.ts

@@ -63,7 +63,7 @@ export const postFile = (url: string, data: Record<string, any>) => {
   const l = `${resourceURLS[SCENE_TYPE.fuse]}${url}`;
   return after(
     fetch(l, {
-      headers: getHeaders(),
+      headers: window.platform.getHeaders(),
       method: "post",
       body: formData,
     })
@@ -98,19 +98,18 @@ export const login = (isBack = true) => {
 
 const after = async (fet: Promise<Response>) => {
   const res = await fet.then((res) => res.json());
-  if (import.meta.env.DEV && res.code !== 0) {
-    throw res.message
-  }
-
   if (res.code === 8034) {
-    setTimeout(() => {
-      history.back();
-    }, 1000);
+    if (!import.meta.env.DEV) {
+      setTimeout(() => {
+        history.back();
+      }, 1000);
+    }
     throw `${res.message},即将退出`;
   }
 
   if ([4008, 4010, 7012].includes(res.code)) {
     setTimeout(() => {
+      
       window.platform.login(res.code !== 7012);
     }, 1000);
     throw res.message;

+ 42 - 6
src/example/fuse/enter.ts

@@ -1,9 +1,48 @@
 import { ElMessage } from "element-plus";
-import { token } from "../env";
-import * as platform from './enter-shared'
+import { params, preventReload, token } from "../env";
+import * as platform from "./enter-shared";
+import { asyncTimeout } from "@/utils/shared";
 
-window.platform = platform
+window.platform = platform;
 
+// 场景码+楼层 转绘图id
+const sceneTransform = async (m: string, subGroup: string = "0") => {
+  const data = await platform.get("fusion/caseOverview/info", {
+    num: m,
+    subGroup,
+  });
+  preventReload();
+  if (data.id) {
+    params.value.overviewId = data.id;
+    delete params.value.m;
+    delete params.value.floor;
+  }
+  await asyncTimeout(10);
+};
+
+const m = params.value.m;
+const subgroup = params.value.floor;
+window.platform.sceneDraw = m && !!params.value.sceneDraw;
+
+if (window.platform.sceneDraw) {
+  sceneTransform(m, subgroup).then(() => {
+    /* @vite-ignore */
+    import(import.meta.env.VITE_ENTRY_EXAMPLE);
+  });
+
+  window.platform.saveOverviewData = (id: any, data: any) => {
+    return platform.saveOverviewData(id, {
+      ...data,
+      num: m,
+      subGroup: subgroup,
+    });
+  };
+} else {
+  /* @vite-ignore */
+  import(import.meta.env.VITE_ENTRY_EXAMPLE);
+}
+
+// 登录检测
 setTimeout(() => {
   if (!token) {
     ElMessage.error("当前用户未登录");
@@ -12,6 +51,3 @@ setTimeout(() => {
     platform.getSceneList("");
   }
 }, 500);
-
-/* @vite-ignore */
-import(import.meta.env.VITE_ENTRY_EXAMPLE);

+ 9 - 6
src/example/fuse/router.ts

@@ -1,17 +1,20 @@
 import { createRouter, createWebHashHistory } from "vue-router";
 
-
 import Overview from "./views/overview/index.vue";
 import Tabulation from "./views/tabulation/index.vue";
 
 export const history = createWebHashHistory();
+const routes = [{ path: "/overview", name: "overview", component: Overview }];
+
+if (!window.platform.sceneDraw) {
+  routes.push({ path: "/tabulation", name: "tabulation", component: Tabulation })
+}
+
+
 export const router = createRouter({
   history,
   routes: [
-    { path: "/overview", name: "overview", component: Overview },
-    // { path: "/query/overview", name: "query-overview", component: OverviewQuery },
-    { path: "/tabulation", name: "tabulation", component: Tabulation },
-    // { path: "/query/tabulation", name: "query-tabulation", component: QueryTabulation },
-    { path: '/:pathMatch(.*)*',  redirect: '/overview' } 
+   ...routes,
+    { path: "/:pathMatch(.*)*", redirect: "/overview" },
   ],
 });

+ 7 - 1
src/example/fuse/views/overview/header.vue

@@ -4,7 +4,12 @@
       <el-button type="primary" @click="saveHandler" :disabled="draw.drawing">
         保存
       </el-button>
-      <el-button @click="gotoTabulation" color="#E6E6E6" :disabled="draw.drawing">
+      <el-button
+        @click="gotoTabulation"
+        color="#E6E6E6"
+        :disabled="draw.drawing"
+        v-if="showTabulation"
+      >
         图纸
       </el-button>
     </template>
@@ -44,6 +49,7 @@ const emit = defineEmits<{
   (e: "saveAfter"): void;
 }>();
 
+const showTabulation = !window.platform.sceneDraw;
 const baseActions = getHeaderActions(draw);
 const actions = [
   [baseActions.undo, baseActions.redo],

+ 8 - 3
src/example/fuse/views/overview/index.vue

@@ -33,7 +33,7 @@ import Container from "../../../components/container/container.vue";
 import ShowVR from "../../../components/show-vr.vue";
 import { computed, ref, shallowRef, watch, watchEffect } from "vue";
 import { Draw } from "../../../components/container/use-draw";
-import { Scene } from "../../../platform/platform-resource";
+import { Scene, SCENE_TYPE } from "../../../platform/platform-resource";
 import Dialog from "../../../dialog/dialog.vue";
 import { refreshOverviewData, overviewData } from "../../store";
 import { overviewCustomStyle } from "../defStyle";
@@ -69,9 +69,14 @@ const initScene = async (draw: Draw) => {
   };
   saveAfterHandlers.push(delHandler);
 
-  const scenes = await window.platform.getSceneList("");
-  const scene = scenes.find((scene: any) => scene.m === m);
+  // const scenes = await window.platform.getSceneList("");
+  // const scene = scenes.find((scene: any) => scene.m === m);
+  // const floors = await getFloors(scene);
+
+  // 目前只支持看看平台
+  const scene = { m, type: SCENE_TYPE["mesh"] } as any;
   const floors = await getFloors(scene);
+
   let floor =
     subgroup && floors.find((floor: any) => floor.subgroup.toString() === subgroup);
   floor = floor || floors[0];

+ 1 - 1
src/example/platform/resource-swkk.ts

@@ -42,7 +42,7 @@ const fetchResource = genCache(
         get("/data/floorplan/info.json", { floors: [] }),
         get("/data/floorplan_cad.json", { floors: [] }),
       ]);
-
+      
     return {
       userFloorpan,
       hots,