bill 8 månader sedan
förälder
incheckning
c1220f4687
7 ändrade filer med 130 tillägg och 154 borttagningar
  1. 59 57
      src/api/constant.ts
  2. 7 6
      src/api/floder.ts
  3. 3 2
      src/api/offline.ts
  4. 1 1
      src/env/index.ts
  5. 23 24
      src/hook/notice.ts
  6. 36 64
      src/views/fire/index.vue
  7. 1 0
      src/views/folder/index.vue

+ 59 - 57
src/api/constant.ts

@@ -1,3 +1,5 @@
+import {namespace} from '@/env'
+
 export enum ResCode {
   TOKEN_INVALID = 4008,
   SUCCESS = 0
@@ -12,93 +14,93 @@ export const UPLOAD_HEADS = {
   'Content-Type': 'multipart/form-data'
 }
 
-export const CASE_INFO = `/fusion/case/getInfo`
+export const CASE_INFO = `${namespace}/case/getInfo`
 // 校验密码
-export const AUTH_PWD = `/fusion/web/fireProject/getDetailWithoutAuth`
+export const AUTH_PWD = `${namespace}/web/fireProject/getDetailWithoutAuth`
 
 // 融合模型列表
-export const FUSE_MODEL_LIST = `/fusion/caseFusion/list`
-export const FUSE_INSERT_MODEL = `/fusion/caseFusion/add`
-export const FUSE_UPDATE_MODEL = `/fusion/caseFusion/update`
-export const FUSE_DELETE_MODEL = `/fusion/caseFusion/delete`
+export const FUSE_MODEL_LIST = `${namespace}/caseFusion/list`
+export const FUSE_INSERT_MODEL = `${namespace}/caseFusion/add`
+export const FUSE_UPDATE_MODEL = `${namespace}/caseFusion/update`
+export const FUSE_DELETE_MODEL = `${namespace}/caseFusion/delete`
 // 场景列表
-export const SCENE_LIST_ALL = `/fusion/api/scene/list`
-export const MODEL_LIST = `/fusion/case/sceneList`
-export const MODEL_SIGN = `/fusion/model/getInfo`
+export const SCENE_LIST_ALL = `${namespace}/api/scene/list`
+export const MODEL_LIST = `${namespace}/case/sceneList`
+export const MODEL_SIGN = `${namespace}/model/getInfo`
 
 // 标签列表
-export const TAGGING_LIST = `/fusion/caseTag/allList`
-export const INSERT_TAGGING = `/fusion/caseTag/add`
-export const UPDATE_TAGGING = `/fusion/caseTag/update`
-export const DELETE_TAGGING = `/fusion/caseTag/delete`
+export const TAGGING_LIST = `${namespace}/caseTag/allList`
+export const INSERT_TAGGING = `${namespace}/caseTag/add`
+export const UPDATE_TAGGING = `${namespace}/caseTag/update`
+export const DELETE_TAGGING = `${namespace}/caseTag/delete`
 
 // 路线列表
-export const PATH_LIST = `/fusion/path/allList`
-export const INSERT_PATH = `/fusion/path/add`
-export const UPDATE_PATH = `/fusion/path/update`
-export const DELETE_PATH = `/fusion/path/delete`
+export const PATH_LIST = `${namespace}/path/allList`
+export const INSERT_PATH = `${namespace}/path/add`
+export const UPDATE_PATH = `${namespace}/path/update`
+export const DELETE_PATH = `${namespace}/path/delete`
 
 // 标签放置列表
-export const TAGGING_POINT_LIST = `/fusion/caseTagPoint/allList`
-export const INSERT_TAGGING_POINT = `/fusion/caseTagPoint/place`
-export const UPDATE_TAGGING_POINT = `/fusion/caseTagPoint/update`
-export const DELETE_TAGGING_POINT = `/fusion/caseTagPoint/delete`
+export const TAGGING_POINT_LIST = `${namespace}/caseTagPoint/allList`
+export const INSERT_TAGGING_POINT = `${namespace}/caseTagPoint/place`
+export const UPDATE_TAGGING_POINT = `${namespace}/caseTagPoint/update`
+export const DELETE_TAGGING_POINT = `${namespace}/caseTagPoint/delete`
 
 // 标签样式类型列表
-export const TAGGING_STYLE_LIST = '/fusion/edit/hotIcon/list'
-export const INSERT_TAGGING_STYLE = '/fusion/edit/hotIcon/add'
-export const DELETE_TAGGING_STYLE = '/fusion/edit/hotIcon/delete'
+export const TAGGING_STYLE_LIST = `${namespace}/edit/hotIcon/list`
+export const INSERT_TAGGING_STYLE = `${namespace}/edit/hotIcon/add`
+export const DELETE_TAGGING_STYLE = `${namespace}/edit/hotIcon/delete`
 
 // 测量线
-export const MESASURE_LIST = `/fusion/fusionMeter/allList`
-export const INSERT_MESASURE = `/fusion/fusionMeter/add`
-export const UPDATE_MESASURE = `/fusion/fusionMeter/updateMeter`
-export const DELETE_MESASURE = `/fusion/fusionMeter/delete`
+export const MESASURE_LIST = `${namespace}/fusionMeter/allList`
+export const INSERT_MESASURE = `${namespace}/fusionMeter/add`
+export const UPDATE_MESASURE = `${namespace}/fusionMeter/updateMeter`
+export const DELETE_MESASURE = `${namespace}/fusionMeter/delete`
 
 // 导览
-export const GUIDE_LIST = `/fusion/fusionGuide/allList`
-export const INSERT_GUIDE = `/fusion/fusionGuide/add`
-export const UPDATE_GUIDE = `/fusion/fusionGuide/update`
-export const DELETE_GUIDE = `/fusion/fusionGuide/delete`
+export const GUIDE_LIST = `${namespace}/fusionGuide/allList`
+export const INSERT_GUIDE = `${namespace}/fusionGuide/add`
+export const UPDATE_GUIDE = `${namespace}/fusionGuide/update`
+export const DELETE_GUIDE = `${namespace}/fusionGuide/delete`
 
 // 导览路线
-export const GUIDE_PATH_LIST = `/fusion/fusionGuidePath/allList`
-export const INSERT_GUIDE_PATH = `/fusion/fusionGuidePath/add`
-export const UPDATE_GUIDE_PATH = `/fusion/fusionGuidePath/update`
-export const DELETE_GUIDE_PATH = `/fusion/fusionGuidePath/delete`
+export const GUIDE_PATH_LIST = `${namespace}/fusionGuidePath/allList`
+export const INSERT_GUIDE_PATH = `${namespace}/fusionGuidePath/add`
+export const UPDATE_GUIDE_PATH = `${namespace}/fusionGuidePath/update`
+export const DELETE_GUIDE_PATH = `${namespace}/fusionGuidePath/delete`
 
 // 屏幕录制
-export const RECORD_LIST = `/fusion/caseVideoFolder/allList`
-export const RECORD_STATUS = `/fusion/caseVideo/uploadAddVideoProgress`
-export const INSERT_RECORD = `/fusion/caseVideo/uploadAddVideo`
-export const MERGE_RECORD = `/fusion/caseVideo/uploadAddVideo`
-export const UPDATE_RECORD = `/fusion/caseVideoFolder/updateNameOrSort`
-export const DELETE_RECORD = `/fusion/caseVideoFolder/delete`
+export const RECORD_LIST = `${namespace}/caseVideoFolder/allList`
+export const RECORD_STATUS = `${namespace}/caseVideo/uploadAddVideoProgress`
+export const INSERT_RECORD = `${namespace}/caseVideo/uploadAddVideo`
+export const MERGE_RECORD = `${namespace}/caseVideo/uploadAddVideo`
+export const UPDATE_RECORD = `${namespace}/caseVideoFolder/updateNameOrSort`
+export const DELETE_RECORD = `${namespace}/caseVideoFolder/delete`
 
 // 录制片段
-export const RECORD_FRAGMENT_LIST = `/fusion/caseVideo/allList`
-export const DELETE_RECORD_FRAGMENT = `/fusion/caseVideo/delete`
+export const RECORD_FRAGMENT_LIST = `${namespace}/caseVideo/allList`
+export const DELETE_RECORD_FRAGMENT = `${namespace}/caseVideo/delete`
 
 // 视图提取
-export const VIEW_LIST = `/fusion/caseView/allList`
-export const INSERT_VIEW = `/fusion/caseView/add`
-export const UPDATE_VIEW = `/fusion/caseView/updateNameOrSort`
-export const DELETE_VIEW = `/fusion/caseView/delete`
+export const VIEW_LIST = `${namespace}/caseView/allList`
+export const INSERT_VIEW = `${namespace}/caseView/add`
+export const UPDATE_VIEW = `${namespace}/caseView/updateNameOrSort`
+export const DELETE_VIEW = `${namespace}/caseView/delete`
 
-export const GET_SETTING = `/fusion/caseSettings/info`
-export const UPDATE_SETTING = `/fusion/caseSettings/saveOrUpdate`
+export const GET_SETTING = `${namespace}/caseSettings/info`
+export const UPDATE_SETTING = `${namespace}/caseSettings/saveOrUpdate`
 
 // 卷宗类型
-export const FOLDER_TYPE_LIST = `/fusion/caseFilesType/allList`
+export const FOLDER_TYPE_LIST = `${namespace}/caseFilesType/allList`
 
 // 卷宗
-export const FLODER_LIST = `/fusion/caseFiles/allList`
+export const FLODER_LIST = `${namespace}/caseFiles/allList`
 
 // 文件上传
-export const UPLOAD_FILE = `/fusion/upload/file`
+export const UPLOAD_FILE = `${namespace}/upload/file`
 
 // 素材库分页
-export const MATERIAL_PAG = `/fusion/material/allList`
-export const ADD_MATERIAL = `/fusion/material/add`
-export const DEL_MATERIAL = `/fusion/material/del`
-export const MATERIAL_GROUP_LIST = `/fusion/material/allList`
+export const MATERIAL_PAG = `${namespace}/material/allList`
+export const ADD_MATERIAL = `${namespace}/material/add`
+export const DEL_MATERIAL = `${namespace}/material/del`
+export const MATERIAL_GROUP_LIST = `${namespace}/material/allList`

+ 7 - 6
src/api/floder.ts

@@ -1,6 +1,7 @@
 import { params } from '@/env'
 import { FLODER_LIST } from './constant'
 import { addUnsetResErrorURLS,axios } from './instance'
+import {namespace} from '@/env'
 
 export interface Floder {
   filesId:	number,
@@ -13,23 +14,23 @@ export interface Floder {
 export type Floders = Floder[]
 
 
-addUnsetResErrorURLS('/fusion/caseInquest/downDocx', '/fusion/caseExtractDetail/downDocx', '/fusion/caseImg/getFfmpegImage')
+addUnsetResErrorURLS(`${namespace}/caseInquest/downDocx`, `${namespace}/caseExtractDetail/downDocx`, `${namespace}/caseImg/getFfmpegImage`)
 export const fetchFloders = async () => {
   const floders = await axios.get<Floders>(FLODER_LIST, { params: { caseId: params.caseId } })
   const otherFloders = [{
     filesId: 88,
     filesTypeId: 100,
     filesTitle: '勘验笔录',
-    ex: '/fusion/caseInquest/info',
-    bex: '/fusion/caseInquest/downDocx'
+    ex: `${namespace}/caseInquest/info`,
+    bex: `${namespace}/caseInquest/downDocx`
   }, {
     filesId: 89,
     filesTypeId: 100,
     filesTitle: '提取清单',
-    ex: '/fusion/caseExtractDetail/info',
-    bex: '/fusion/caseExtractDetail/downDocx'
+    ex: `${namespace}/caseExtractDetail/info`,
+    bex: `${namespace}/caseExtractDetail/downDocx`
   }, ]
-  const res = await axios.get('/fusion/caseImg/getFfmpegImage', {params: {caseId: params.caseId}})
+  const res = await axios.get(`${namespace}/caseImg/getFfmpegImage`, {params: {caseId: params.caseId}})
   if (res.data.data.length) {
     res.data.data.forEach((item:any, ndx: any) => {
       floders.push({

+ 3 - 2
src/api/offline.ts

@@ -1,6 +1,7 @@
 import { params as envParams } from "@/env";
 import { paramsToStr, strToParams } from "@/utils/params";
 import { AxiosInstance } from "axios";
+import {namespace} from '@/env'
 import Axios from 'axios'
 
 export const setOfflineAxios = (axios: AxiosInstance) => {
@@ -13,8 +14,8 @@ export const setOfflineAxios = (axios: AxiosInstance) => {
 
   // 流接口
   const files = {
-    '/fusion-xj/caseExtractDetail/downDocx': './package/resource/caseExtractDetail.doc',
-    '/fusion-xj/caseInquest/downDocx': './package/resource/caseInquest.doc',
+    [`${namespace}/caseExtractDetail/downDocx`]: './package/resource/caseExtractDetail.doc',
+    [`${namespace}/caseInquest/downDocx`]: './package/resource/caseInquest.doc',
   } as any
 
 

+ 1 - 1
src/env/index.ts

@@ -2,7 +2,7 @@ import { stackFactory, flatStacksValue, strToParams } from '@/utils'
 import { reactive, ref } from 'vue'
 
 import type { FuseModel, TaggingPosition, View } from '@/store'
-
+export const namespace = '/fusion'
 export const viewModeStack = stackFactory(ref<'full' | 'auto'>('auto'))
 export const showToolbarStack = stackFactory(ref<boolean>(false))
 export const showHeadBarStack = stackFactory(ref<boolean>(true))

+ 23 - 24
src/hook/notice.ts

@@ -1,58 +1,57 @@
 import { params } from "@/env";
 import { ref } from "vue";
-import type {ResData} from '@/api'
+import type { ResData } from "@/api";
+import { namespace } from "@/env";
 
-console.log('scoke 测试')
-const socketUrl = `wss://test-mix3d.4dkankan.com/fusion/ws/${params.caseId}`;
+const socketUrl = `wss://test-mix3d.4dkankan.com${namespace}/ws/${params.caseId}`;
 
 let websocket: WebSocket | null = null;
 function createWebSocket() {
   websocket = new WebSocket(socketUrl);
-  websocket.onopen = function() {
-    console.log('WebSocket 连接已打开');
+  websocket.onopen = function () {
+    console.log("WebSocket 连接已打开");
   };
 
-  websocket.onmessage = function(event) {
+  websocket.onmessage = function (event) {
     try {
-      const res = JSON.parse(event.data) as {command: string, content: ResData<any>}
-      switch(res.command) {
-        case 'ping':
+      const res = JSON.parse(event.data) as {
+        command: string;
+        content: ResData<any>;
+      };
+      switch (res.command) {
+        case "ping":
           break;
 
-        case 'notice':
+        case "notice":
           break;
       }
     } catch {
-      console.log('收到错误消息格式:', event.data);  
+      console.log("收到错误消息格式:", event.data);
     }
   };
 
-  websocket.onerror = function(event) {
-    console.error('WebSocket 出错:', event);
+  websocket.onerror = function (event) {
+    console.error("WebSocket 出错:", event);
   };
 
-  websocket.onclose = function(event) {
-    console.log('WebSocket 连接已关闭,将在 5 秒后重连');
+  websocket.onclose = function (event) {
+    console.log("WebSocket 连接已关闭,将在 5 秒后重连");
     setTimeout(createWebSocket, 5000);
   };
 }
 
-export const notity = ref({})
+export const notity = ref({});
 const handler = {
-  ping() {
-
-  },
-  notity() {
-
-  }
-}
+  ping() {},
+  notity() {},
+};
 
 // 发送数据到服务器
 function sendData(command: string, message: string) {
   if (websocket && websocket.readyState === WebSocket.OPEN) {
     websocket.send(message);
   } else {
-    console.log('WebSocket 连接未打开,无法发送消息');
+    console.log("WebSocket 连接未打开,无法发送消息");
   }
 }
 

+ 36 - 64
src/views/fire/index.vue

@@ -2,76 +2,48 @@
   <LeftPano>
     <div class="info" v-if="caseProject?.tmProject">
       <h2>案件信息</h2>
-      <p>
-        <span>项目编号:</span>
-        {{ caseProject.tmProject.projectSn }}
-      </p>
-      <p>
-        <span>起火地址:</span>
-        {{ caseProject.tmProject.projectAddress }}
-      </p>
-      <p>
-        <span>起火场所:</span>
-        {{ caseProject.tmProject.projectSite }}
-      </p>
-      <p>
-        <span>承办单位:</span>
-        {{ caseProject.tmProject.organizerDeptName }}
-      </p>
-      <p>
-        <span>起火对象:</span>
-        {{ caseProject.tmProject.projectName }}
-      </p>
-      <p>
-        <span>承办人员:</span>
-        {{ caseProject.tmProject.organizerUsers }}
-      </p>
-      <p>
-        <span>事故日期:</span>
-        {{ caseProject.tmProject.accidentDate }}
-      </p>
-      <p>
-        <span>火灾原因:</span>
-        {{ caseProject.tmProject.fireReason }}
-      </p>
-      <p>
-        <span>项目状态:</span>
-        {{ caseProject.tmProject.statusDesc }}
-      </p>
-      <p>
-        <span>教学项目:</span>
-        {{ caseProject.tmProject.isTeached ? '是' : '否' }}
-      </p>
-      <p>
-        <span>创建人:</span>
-        {{ caseProject.tmProject.creatorName }}
-      </p>
-      <p>
-        <span>编辑人:</span>
-        {{ caseProject.tmProject.editorName }}
-      </p>
-      <p>
-        <span>创建时间:</span>
-        {{ caseProject.tmProject.createTime }}
-      </p>
-      <p>
-        <span>最新编辑:</span>
-        {{ caseProject.tmProject.editTime }}
+      <p v-for="(label, key) in labelMap">
+        <span>{{ typeof label === "string" ? label : label[0] }}:</span>
+        {{
+          typeof label === "string"
+            ? caseProject.tmProject[key]
+            : label[1](caseProject.tmProject[key])
+        }}
       </p>
     </div>
   </LeftPano>
 </template>
 
-
 <script setup lang="ts">
-import { showRightPanoStack } from '@/env';
-import { useViewStack } from '@/hook';
-import { LeftPano } from '@/layout'
-import { caseProject } from '@/store/case'
-import { ref } from 'vue';
+import { FireProject } from "@/api";
+import { showRightPanoStack } from "@/env";
+import { useViewStack } from "@/hook";
+import { LeftPano } from "@/layout";
+import { caseProject } from "@/store/case";
+import { ref } from "vue";
+
+type LabelMap<T extends object> = {
+  [k in keyof Required<T>]: string | [string, (v: any) => any];
+};
 
+const labelMap = {
+  projectSn: "项目编号",
+  projectAddress: "起火地址",
+  projectSite: "起火场所",
+  organizerDeptName: "承办单位",
+  projectName: "起火对象",
+  organizerUsers: "承办人员",
+  accidentDate: "事故日期",
+  fireReason: "火灾原因",
+  statusDesc: "项目状态",
+  isTeached: ["教学项目", (v: any) => (v ? "是" : "否")],
+  creatorName: "创建人",
+  editorName: "编辑人",
+  createTime: "创建时间",
+  editTime: "最新编辑",
+} as LabelMap<FireProject>;
 
-useViewStack(() => showRightPanoStack.push(ref(false)))
+useViewStack(() => showRightPanoStack.push(ref(false)));
 </script>
 
 <style lang="scss" scoped>
@@ -100,8 +72,8 @@ useViewStack(() => showRightPanoStack.push(ref(false)))
       width: 70px;
       height: 100%;
       margin-right: 20px;
-      color: rgba(255, 255, 255, 0.70);
+      color: rgba(255, 255, 255, 0.7);
     }
   }
 }
-</style>
+</style>

+ 1 - 0
src/views/folder/index.vue

@@ -52,6 +52,7 @@ const typeIcons = {
   [MetaType.image]: "pic",
   [MetaType.video]: "a-film",
   [MetaType.other]: "nav-edit",
+  [MetaType.audio]: "nav-edit",
 };
 
 const currentFile = ref<MediaItem | null>(null);