tangning 5 meses atrás
pai
commit
1483f3770c

+ 1 - 0
program/lang/weblate/zh.json

@@ -1104,6 +1104,7 @@
     "mediaLibrary": {
         "title": "媒体库",
         "add": "添加文件",
+        "file": "文件",
         "photography": "单体建模",
         "Modeling": "倾斜摄影",
         "addFolder": "新建文件夹",

+ 2 - 0
src/App.vue

@@ -8,5 +8,7 @@
 </template>
 
 <script setup lang="ts">
+import { setUrlData } from "@/store/user";
 import Locale from "@/config/locale.vue";
+setUrlData()
 </script>

+ 8 - 8
src/components/viewImg/index.vue

@@ -33,7 +33,7 @@
           <div  class="zoomInImg" v-if="TypeFilter(item.filesUrl) == '.mp4'" @click="showVideoView(urlFilter(item.filesUrl))">
             <el-icon color="#fff"><VideoPlay /></el-icon>
           </div>
-          <div v-else class="zoomInImg" @click="showImgView(getUrlSrc({type: 102}) +'/' + item.filesUrl, item.showImgView)">
+          <div v-else class="zoomInImg" @click="showImgView(getUrlSrc({type: 102}) +'/' + item.filesUrl, item.filesTitle)">
             <el-icon color="#fff"><zoom-in /></el-icon>
           </div>
           <div
@@ -48,7 +48,7 @@
             class="downloadImg"
             @click="handleItem('delete', item)"
           >
-            <el-icon color="red"><Delete /></el-icon>
+            <el-icon color="#FA3D47"><Delete /></el-icon>
           </div>
           <!-- <div v-if="!close" class="close" @click="handleItem('close', item)">
             <el-icon color="red"><CircleCloseFilled /></el-icon>
@@ -71,6 +71,7 @@ import { ElMessage, ElMessageBox } from "element-plus";
 import fileImg from "@/assets/svg/file.svg";
 import { delCaseFile, } from "@/store/caseFile";
 import { getUrlSrc } from "@/store/case";
+import saveAs from "@/util/file-serve";
 import { windowOpen } from "@/util";
 const caseId = computed(() => {
   const caseId = router.currentRoute.value.params.caseId;
@@ -155,10 +156,9 @@ watchEffect(() => {
     let newlist = props.list.map(item => {
       return getUrlSrc({type: 102}) +'/' + item.filesUrl || item.fileUrl
     });
-    initFileList.value = newlist
-    // newlist.filter(item => {
-    //   return verifySuffix(item)
-    // });
+    initFileList.value = newlist.filter(item => {
+      return verifySuffix(item)
+    });
     console.log(newlist, "newlist", initFileList.value);
   }
 });
@@ -179,7 +179,7 @@ const showVideoView = (src) => {
   console.log(fileType, fileList.value.includes(fileType), "urlFilter");
   if(fileList.value.includes(fileType)){
     let fileName = filesTitle + fileType
-    downloadFile(src, fileName)
+    saveAs(src, fileName)
     // windowOpen();
     return;
   }
@@ -195,7 +195,7 @@ function downloadFile(sourceUrl, fileName,) {
   const link = document.createElement('a');
   // link.style.display = 'none';
   // 设置下载地址
-  link.href = getUrlSrc({type: 102}) + '/' + sourceUrl;
+  link.href = sourceUrl;
   link.download = fileName + getExtension(sourceUrl);
   link.click();
   link.remove();

+ 1 - 1
src/i18n/index.ts

@@ -51,7 +51,7 @@ const getAllParams = () => {
   return obj;
 };
 const params = getAllParams()
-export const lang = (params.ga == 'true'?'zh':params.lang || window.lang || local.get(localKey))
+export const lang = (params.ga == 'true'?'zh':params.lang || localStorage.getItem('lang') || local.get(localKey))
 console.log('strToParams',params, lang, local.get(localKey))
 
 if (lang !== local.get(localKey)) {

+ 26 - 14
src/i18n/weblate/zh.json

@@ -49,7 +49,8 @@
             "trapLocalPoint": "请在场景中鼠标右键设置控制点的本地坐标",
             "whyTrapLocalPoint": "为什么要设置本地坐标?",
             "userUseMouse": "自定义(场景中右键选择)"
-        }
+        },
+        "zoomLevel": "缩放级别"
     },
     "program": {
         "rocre": {
@@ -137,7 +138,7 @@
         "errMsg": {
             "calcSync": "正在计算,无法进行同步",
             "resetGen": "当前场景需要重算后才能生成Obj场景。确定要重算吗?",
-            "repeatGen": "存在计算任务,请待计算完成再下载离线包。避免打包失败。",
+            "repeatGen": "当前有计算任务运行中,同时开启多个任务可能导致计算失败,是否继续?",
             "calcFree": "当前场景所在硬盘空间不足30GB,请及时清理空间避免计算失败。",
             "genObjTip": "Mesh场景正在计算中,请耐心等待",
             "genE57Tip": "e57正在计算中,请耐心等待"
@@ -176,15 +177,15 @@
             },
             "msgStatus": {
                 "un": "计算",
-                "ing": "停",
+                "ing": "停",
                 "err": "重算",
                 "pause": "重算",
-                "lineup": "停",
+                "lineup": "停",
                 "com": "编辑",
                 "copy": "正在复制"
             },
             "delMsg": "删除后不可恢复,确定要删除此数据?",
-            "recalcMsg": "确定新计算?",
+            "recalcMsg": "确定重算?部分此操作无法撤销。 注意:重算点云场景会清空部分数据如合并的数据集、热点等,请谨慎操作。",
             "e57GenIng": "生成e57中",
             "e57Gen": "生成e57",
             "e57Down": "下载e57"
@@ -326,7 +327,7 @@
             "obj_title": "OBJ",
             "offline_title": "离线包",
             "floorplan_title": "平面图",
-            "migrageS_title": "迁移场景",
+            "migrageS_title": "场景迁移",
             "calc_done_time": "计算完成时间",
             "upload_done_time": "上传完成时间",
             "upload_time": "计算时长",
@@ -354,7 +355,9 @@
             "import": "导入",
             "updateAt": "更新于",
             "exportingOut": "导出中",
-            "isCopyExist": "场景已存在,是否保存为副本?"
+            "isCopyExist": "场景已存在,是否保存为副本?",
+            "reFirstPacking": "重新打包",
+            "stoping": "停止"
         },
         "multiLang": "多语言",
         "migrateScene": {
@@ -372,11 +375,15 @@
             "status_-1": "计算失败",
             "status_0": "计算中",
             "status_4": "重算中",
-            "status_3": "封存",
+            "status_3": "未计算",
             "updateTime": "更新时间",
             "miss_case_title": "请填写案件名称!",
             "miss_case": "请选择场景!",
-            "add_case": "新增案件"
+            "add_case": "新增案件",
+            "status_5": "停止",
+            "status_6": " 排队中",
+            "status_7": "复制中",
+            "status_1": "计算失败"
         },
         "calcFailureTip": "确定重算?部分此操作无法撤销。 注意:重算点云场景会清空部分数据如合并的数据集、热点等,请谨慎操作。",
         "path_no_exist": "该路径不存在。"
@@ -1008,7 +1015,9 @@
         "exitWarmTip": "现在退出程序将中断正在同步或计算的任务,确定退出吗?",
         "sysFailAndUdriveTip": "同步失败,请勿在同步时拔出u盘,或修改同步的目录!",
         "noAppWarmTip": "未检测到该程序,请将按照操作说明,将程序文件放到以下目录:",
-        "noAppUnknownError": "操作失败。建议检查以下应用程序是否已授权:"
+        "noAppUnknownError": "操作失败。建议检查以下应用程序是否已授权:",
+        "retract": "收起",
+        "expand": "展开"
     },
     "tool": {
         "magnify": "放大镜",
@@ -1070,7 +1079,7 @@
         "NoGuided": "暂无导览",
         "Extractor": "提取人",
         "tips": "您有操作未保存,确定要退出吗?",
-        "NoFilesSelected": "未选择任何文件",
+        "NoFilesSelected": "请上传文件",
         "ClearScreen": "清空画面",
         "splicing": "拼接",
         "add": "新增",
@@ -1116,8 +1125,11 @@
         "delTops": "确定删除?",
         "ycTips": "确定要移除当前场景吗?",
         "sceneName": "场景名称",
+        "nameSearch": "输入名称搜索",
+        "searchData": "搜索结果",
         "yctips": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试",
-        "yctipsErr": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试"
+        "yctipsErr": "无法移除,场景已加入多元融合,请进入多元融合删除场景后再试",
+        "selectAdd": "选择地址"
     },
     "mediaLibrary": {
         "title": "媒体库",
@@ -1162,9 +1174,9 @@
             "placeholderName": "请输入名称",
             "uplooad": "上传中",
             "uplooadfiletype": "支持jpg、png、jpeg、mp4、wav、mp3 、shp、zip格式文件上传。",
-            "uplooadSize": "上传文件不能超过 2G!",
+            "uplooadSize": "文件大小 ≤ 2G!",
             "uplooadSuccess": "上传成功",
-            "objtips": "obj:需使用zip包上传。包含贴图、模型、mtl文件,包内不得包含文件夹,文件名不得使用中文。如图:",
+            "objtips": "上传 obj:需使用zip包上传。包含贴图、模型、mtl文件,包内不得包含文件夹,文件名不得使用中文。如图:",
             "osgbtips": "上传 osgb:需使用zip包上传。包含 Data 文件夹、xml文件,包内不得包含文件夹,文件名不得使用中文。如图:",
             "noName": "请输入名称"
         }

+ 15 - 15
src/request/index.ts

@@ -113,28 +113,28 @@ const responseInterceptor = (res: AxiosResponse<any, any>) => {
   //   });
   // };
   // console.log("responseInterceptor", res);
-  // if (!successCode.includes(res.data.code) && res.config.responseType != "blob") {
-  //   let errMsg = res.data.msg || res.data.message;
-  //   openErrorMsg(errMsg);
+  if (!successCode.includes(res.data.code) && res.config.responseType != "blob") {
+    let errMsg = res.data.msg || res.data.message;
+    openErrorMsg(errMsg);
 
-  //   if (
-  //     ~unAuthCode.indexOf(res.data.code) ||
-  //     errMsg === "token已经失效,请重新登录"
-  //   ) {
-  //     let redirect = encodeURIComponent(`${window.location.href}`);
-  //     window.location.href = window.location.origin + "/admin/#/login?redirect=" + redirect;
-  //     // router.replace({ name: RouteName.login });
-  //     getAuth().clear();
-  //   }
-  //   throw res.data.msg;
-  // }
+    if (
+      ~unAuthCode.indexOf(res.data.code) ||
+      errMsg === "token已经失效,请重新登录"
+    ) {
+      let redirect = encodeURIComponent(`${window.location.href}`);
+      window.location.href = window.location.origin + "/admin/#/login?redirect=" + redirect;
+      // router.replace({ name: RouteName.login });
+      getAuth().clear();
+    }
+    throw res.data.msg;
+  }
 
   return res.data;
 };
 
 axios.interceptors.response.use(responseInterceptor, (error) => {
   closeLoading();
-  console.log("请求失败", error.response);
+  console.log("请求失败", error);
   if (error.response && error.response.data) {
     // error.response.code == '8030' && openErrorMsg(ui18n.t('sceneHome.yctiyctipsErrps'));
     return responseInterceptor(error.response);

+ 8 - 6
src/store/case.ts

@@ -114,6 +114,7 @@ export const getSceneListData = async (params) =>
 // (await axios.get<string>(info, { params:params })).data;
 
 export const getCaseInfo = async (caseId) => {
+  if(!caseId) return {}
   caseInfoData.value = (await axios.get<Case>(caseInfo, { params: { caseId } })).data
   return caseInfoData.value;
 }
@@ -133,6 +134,7 @@ export const updateCaseInfo = async (caseFile: CaseFile) =>
   });
 
 export const getCaseSceneList = async (caseId: number): Promise<Scene[]> => {
+  if (!caseId) return [];
   let mylist = (await axios.get(caseSceneList, { params: { caseId } })).data;
   sceneList.value = mylist && mylist.filter(item => item.type != 3);
   return sceneList.value;
@@ -350,15 +352,15 @@ export const getUrlSrc = (item, caseId) => {
   let params = getUrlData();
   let langKey = params.lang || "zh";
   const ip = params.ip ? params.ip + ":" : "";
-  param.root = `${ip}:${params.laserServicePort}`;
-  param.ossRoot = `${ip}:${params.laserServicePort}${params.static}`;
-  param.serviceUrl = `${ip}:${params.servicePort}/fusion`;
+  param.root = `${ip}${params.laserServicePort || ''}`;
+  param.ossRoot = `${ip}${params.laserServicePort}${params.static}`;
+  param.serviceUrl = `${ip}${params.servicePort}/fusion`;
   param.laserRoot = param.root;
-
+  console.log('param', param, ip);
   param.swssUrl = `${params.swssUrl}?lang=${langKey}&serve_link=${param.laserRoot}&basePath=${param.laserRoot}&m=${item.num}`;
   param.swssmxUrl = `${params.swssUrl}?lang=${langKey}&serve_link=${param.laserRoot}&basePath=${param.laserRoot}&m=${item.num}`;
-  param.swkkUrl = `${params.swkkUrl}?lang=${langKey}&app_server=${params.ip}:${params.swkkPort}&m=${item.num}`;
-  param.fuse = `${params.fuse}?caseId=${caseId}&ip=${params.ip}&swkkPort=${params.swkkPort}&swssUrl=${params.swssUrl }&swkkUrl=${params.swkkUrl.replace('epg','spg')}&laserServicePort=${params.laserServicePort}&servicePort=${params.servicePort}&lang=${langKey}&app_server=${ip}${params.swkkPort}&testMap=1&static=${params.static||''}&`;
+  param.swkkUrl = `${params.swkkUrl}?lang=${langKey}&app_server=${params.ip}:${params.swkkPort}&m=${item.num}&app_resource=${param.root}/${item.mapping}`;
+  param.fuse = `${params.fuse}?caseId=${caseId}&ip=${params.ip}&swkkPort=${params.swkkPort}&swssUrl=${params.swssUrl }&swkkUrl=${params.swkkUrl && params.swkkUrl.replace('epg','spg')}&laserServicePort=${params.laserServicePort}&servicePort=${params.servicePort}&lang=${langKey}&app_server=${ip}${params.swkkPort}&testMap=1&static=${params.static||''}&`;
   let SceneType = {
     0: param.swkkUrl,//`/spg.html?m=${item.num}`,
     1: param.swkkUrl,//`/spg.html?m=${item.num}`,

+ 22 - 10
src/store/user.ts

@@ -1,5 +1,6 @@
 import { getLocal, changSaveLocal } from "@/util/localUtil";
 import { ref, watchEffect } from "vue";
+import { changeLang } from "@/i18n";
 import {
   PaggingReq,
   PaggingRes,
@@ -86,14 +87,14 @@ export const urlData = ref<urlData>({
   lang: querys.lang || "zh",
   photography: '0',
   modeling: '0',
-  appServer: querys.appServer || localStorage.getItem('appServer')||'http://localhost/:8808',
-  ip: querys.ip ||'http://localhost/',
-  laserServicePort: querys.laserServicePort || '9008',
-  servicePort: querys.laserServiceservicePortPort ||'9250',
-  swssUrl: '',
-  fuse: decodeURIComponent('file%3A%2F%2F%2FD%3A%2F4DMega%2Fbin%2Fresources%2Fstatic%2Flib%2Ffuse%2Findex.html'),
-  swkkUrl: './index.html',
-  swkkPort: querys.swkkPort || '9008',
+  appServer: localStorage.getItem('appServer') || querys.appServer || localStorage.getItem('appServer')||'http://localhost/:8808',
+  ip: localStorage.getItem('ip') || querys.ip || "http://localhost",
+  laserServicePort: localStorage.getItem('laserServicePort') || querys.laserServicePort || '9008',
+  servicePort: localStorage.getItem('servicePort') || querys.laserServiceservicePortPort ||'9250',
+  swssUrl: localStorage.getItem('swssUrl') || '',
+  fuse: localStorage.getItem('fuse') || decodeURIComponent('file%3A%2F%2F%2FD%3A%2F4DMega%2Fbin%2Fresources%2Fstatic%2Flib%2Ffuse%2Findex.html'),
+  swkkUrl: localStorage.getItem('swkkUrl') || '',
+  swkkPort: localStorage.getItem('swkkPort') || querys.swkkPort || '9008',
   // static: '',
   testMap: '',
 });
@@ -108,9 +109,20 @@ export const getUrlData = () => {
   return urlData.value
 };
 
-export const setUrlData = async (objData = {}) => {
+export const setUrlData = async (backFun) => {
+  let objData = getAllParams() || {};
+  objData.appServer && localStorage.setItem('appServer', objData.appServer);
+  objData.swkkPort && localStorage.setItem('swkkPort', objData.swkkPort);
+  objData.fuse && localStorage.setItem('fuse', objData.fuse);
+  objData.laserServicePort && localStorage.setItem('laserServicePort', objData.laserServicePort);
+  objData.servicePort && localStorage.setItem('servicePort', objData.servicePort);
+  objData.swkkUrl && localStorage.setItem('swkkUrl', objData.swkkUrl);
+  objData.swssUrl && localStorage.setItem('swssUrl', objData.swssUrl);
+  if(objData.lang){
+    localStorage.setItem('lang', objData.swssUrl)
+    changeLang(objData.lang, false)
+  }
   if(objData.appServer && objData.appServer != urlData.value.appServer){
-    localStorage.setItem('appServer', objData.appServer);
     !import.meta.env.DEV && window.location.reload();
   }
   for (const key in objData) {

+ 1 - 1
src/util/index.ts

@@ -379,7 +379,7 @@ export const getDomMatrix = (dom: HTMLElement) => {
 export const windowOpen = (param) => {
   if(param.url) {
     // iframe发送消息到 父页面
-    let data = JSON.stringify({type:"link", data:param.url, library: param.library, title: param.title||''});
+    let data = JSON.stringify({type:"link", data:param.url, library: param.library, title: param.title||'', icon: param.icon ||''});
       window.parent.postMessage(data, '*');
   } else if(param.type) {//按钮事件
     // iframe发送消息到 父页面

+ 14 - 2
src/view/abstract/index.vue

@@ -332,17 +332,29 @@ const rules = reactive({
   ],
 });
 const showModal = ref(false);
+function validateCoordinates(latAndLongs) {  
+    const [lng, lat] = latAndLongs.split(',');  
+    console.log('validateCoordinates', lat, lng);  
+    const latitudeRegex = /^-?([1-8]?\d(\.\d+)?|90(\.0+)?)$/;  
+    const longitudeRegex = /^-?(1[0-7]\d(\.\d+)?|[1-9]?\d(\.\d+)?|180(\.0+)?)$/;  
+
+    return latitudeRegex.test(lat) && longitudeRegex.test(lng);  
+}  
 const submit = async () => {
   if(activeName.value == "1") {
     if (!bindExample.value.caseTitle || !bindExample.value.caseTitle.trim()) {
       ElMessage.error("案件名称不能为空");
       throw "案件名称不能为空";
     }
+    if (bindExample.value.latAndLongs && !validateCoordinates(bindExample.value.latAndLongs)) {
+      ElMessage.error("经纬度无效");
+      throw "经纬度无效";
+    }
     let latAndLong = bindExample.value.latAndLongs?.split(',').reverse().join(',')
-    await setExample({...bindExample.value, latAndLong, caseId :caseId.value })
+    await setExample({...bindExample.value, latAndLong, caseId :caseId.value, updateTime: undefined })
     await getCaseInfo(caseId.value)
   }else{
-    await casesaveOrUpDate({...ruleForm.value, caseId :caseId.value })
+    await casesaveOrUpDate({...ruleForm.value, caseId :caseId.value, updateTime: undefined })
   }
   windowOpen({type: 'fresh', data: '页面刷新' })
   ElMessage.success("保存成功");

+ 1 - 1
src/view/case/draw/board/editCAD/Controls/MoveWall.js

@@ -340,7 +340,7 @@ export default class MoveWall {
         return MoveState
     }
 
-    //拖拽墙角/墙面,被其他墙角吸附
+    //拖拽墙角/墙面,被其他墙角吸附  
     updateForAbsorbWallPoints() {
         if (Object.keys(this.adsorbPointWalls).length == 0) {
             return

+ 5 - 0
src/view/case/draw/board/editCAD/Layer.js

@@ -60,9 +60,14 @@ export default class Layer {
     this.canvas = canvas;
     draw.initContext(this.canvas);
     this.bindEvents();
+    console.log('load vectorData: ', vectorData)
+
     return this.load.load(vectorData).then(() => {
       //。。。
       this.renderer.autoRedraw();
+    }).catch((err) => {
+      console.log('load error: ');
+      this.renderer.autoRedraw();
     });
   }
 

+ 1 - 0
src/view/case/draw/board/editCAD/Load.js

@@ -111,6 +111,7 @@ export default class Load {
             floorplanService.addCompass(compass)
             
             if (floor.bgImage && floor.bgImage.url) {
+                
                 const bgImage = await bgImageService.createBgImage(floor.bgImage.url,floor.bgImage.center)
                 if(floor.bgImage.hasOwnProperty('scale'))
                 {

+ 3 - 0
src/view/case/draw/board/editCAD/Service/FloorplanService.js

@@ -527,6 +527,9 @@ export class FloorplanService {
             img.onload = function () {
                 resolve(img)
             }.bind(this)
+            img.onerror = (e) => {
+                reject(e)
+            }
         })
         return imageData
     }

+ 2 - 10
src/view/case/draw/board/useBoard.ts

@@ -74,11 +74,7 @@ const getStore = async (caseId: number, fileId: number, type: BoardType) => {
         ognFilesUrl: fileInfo.ognFilesUrl,
         id: fileInfo.filesId,
       };
-<<<<<<< HEAD
       console.log("fileInfo", data, fileInfo.content);
-=======
-      console.log('fileInfo', fileInfo, data);
->>>>>>> master
     } else {
       router.replace({ name: RouteName.caseFile, params: { caseId } });
       throw "该图不存在!";
@@ -113,11 +109,11 @@ export const useBoard = (props: Ref<BoardProps | null>) => {
   });
 
   watchEffect(async (onCleanup) => {
+    console.log("watchEffect11", props.value, );
     if (!props.value) {
       board.value = undefined;
       return;
     }
-
     const store = await getStore(
       props.value.caseId,
       props.value.fileId,
@@ -125,11 +121,7 @@ export const useBoard = (props: Ref<BoardProps | null>) => {
     );
     console.log('store', store);
     const boardRaw = (board.value = await boardFactory(store, props.value.dom));
-<<<<<<< HEAD
-    console.log("watchEffect", props, boardRaw);
-=======
-    console.log('boardRaw', boardRaw);
->>>>>>> master
+    console.log('boardRaw', boardRaw)
     state.value.exixtsBgImage = !!(store as any).floors[0].bgImage
     onCleanup(() => {
       boardRaw && boardRaw.destroy();

+ 26 - 4
src/view/case/draw/index.vue

@@ -42,7 +42,7 @@
 import Header from "./header.vue";
 import Slider from "./slider.vue";
 import Eshape from "./eshape.vue";
-import { computed, nextTick, ref } from "vue";
+import { computed, nextTick, ref, watch } from "vue";
 import { RouteName, router } from "@/router";
 import { useBoard, title } from "./board/useBoard";
 import { selectFuseImage, selectMapImage } from "@/view/case/quisk";
@@ -65,6 +65,8 @@ const list = ref({
 });
 const fmtId = ref(0);
 const pmtId = ref(0);
+// const board = ref(null);
+// const state = ref({});
 const ognFilesUrl = ref('')
 const dom = ref<HTMLCanvasElement>();
 const props = computed(() => {
@@ -92,6 +94,7 @@ function getList() {
     console.log('list.value', list.value)
   })
 }
+const { board, state } = useBoard(props);
 getList()
 const backPageHandler = () => {
   board.value && board.value.clear();
@@ -100,6 +103,7 @@ const backPageHandler = () => {
 };
 
 const setBackImage = (blob: Blob) => {
+  console.log('setBackImage', blob, board.value);
   board.value!.setImage(URL.createObjectURL(blob));
 };
 
@@ -132,7 +136,15 @@ const trackImage = async () => {
     }
   }
 };
-const { board, state } = useBoard(props);
+// watch(props, (newValue) => {
+//   if(!newValue) return;
+//   const BoardData = useBoard(props)
+//   board.value = BoardData.board;
+//   state.value = BoardData.state;
+//   console.log('watchEffect111', newValue, props, board.value)
+// // const board = ref(null);
+// // const state = ref(null);
+// })
 console.log('useBoard', board, state)
 
 // 获取通用数据
@@ -144,14 +156,24 @@ const getStore = async () => {
   ) as TitleShapeData;
   return { store, titleShape, ognFilesUrl: store.ognFilesUrl };
 };
-
+const isUrl = (string) => {
+        try {
+          new URL(string);
+          return true;
+        } catch (err) {
+          return false;
+        }
+      }
 //裁剪
 const handleCropping = async (data) => {
   const appStore = await getStore();
   const args = props.value!;
   let imgUrl = args.inAdd ? ognFilesUrl.value : appStore.store.ognFilesUrl;
+  console.log('handleCropping11', imgUrl,ognFilesUrl.value, appStore.store.ognFilesUrl, state.value.selectShape.data.url)
   const {width, height } = appStore.store.floors?.[0].bgImage;
-  const blob = await fetch(imgUrl || state.value.selectShape.data.url).then(res => res.blob());
+  const selectShapeUrl = isUrl(state.value.selectShape?.data?.url) ? state.value.selectShape?.data?.url : (getUrlSrc({type: 102}) + '/' + state.value.selectShape?.data?.url)
+;
+  const blob = await fetch(imgUrl || selectShapeUrl).then(res => res.blob());
   const cropBlob = await imageCropper({
       img: blob,
       fixed: [width, height]

+ 108 - 44
src/view/case/draw/selectMapImages.vue

@@ -2,7 +2,7 @@
   <div class="search-layout">
     <el-input
       v-model="keyword"
-      placeholder="输入名称搜索"
+      :placeholder="$t('sceneHome.nameSearch')"
       style="width: 350px"
       clearable
     >
@@ -10,6 +10,20 @@
         <el-button :icon="Search" />
       </template>
     </el-input>
+    <el-select
+      v-model="mapType"
+      placeholder="Select"
+      @change="handleMapTypeChange"
+      style="width: 160px;float: right;"
+
+    >
+      <el-option
+        v-for="item in mapOptions"
+        :key="item.value"
+        :label="item.label"
+        :value="item.value"
+      />
+    </el-select>
     <div class="rrr">
       <div
         class="search-result"
@@ -18,7 +32,7 @@
       ></div>
       <div class="search-sh" v-show="keyword">
         <el-button style="width: 100%" @click="showSearch = !showSearch">
-          {{ showSearch ? "收起" : "展开" }}搜索结果
+          {{ showSearch ? $t('sys.retract') : $t('sys.expand') }}{{$t('sys.searchData')}}
         </el-button>
       </div>
     </div>
@@ -27,18 +41,26 @@
     <GoogleMap v-if="mapType=='google'"
     :api-key="ggMapKey"
     class="def-select-map"
+    :zoomControl="false"
+    ref="GoogleMapEl"
+    :mapTypeControl="false"
+    :scaleControl="false"
+    :streetViewControl="false"
+    :overviewMapControl="false"
+    :rotateControl="false"
+    @click="handleMapClick" 
     :center="center"
-    :zoom="15"
+    :zoom="13"
     >
-        <Marker :options="{ position: center }" />
+        <Marker ref="markerRef" :key="center && center.lat" :options="{ position: center }" />
     </GoogleMap>
     <div v-else class="def-select-map" ref="mapEl"></div>
   </div>
 
-  <div class="def-map-info" v-if="info">
-    <p><span>纬度</span>{{ info.lat }}</p>
-    <p><span>经度</span>{{ info.lng }}</p>
-    <p><span>缩放级别</span>{{ info.zoom }}</p>
+  <div class="def-map-info" v-if="info || center.lat">
+    <p><span>{{$t("coord.lat")}}</span>{{ info && info.lat || center.lat }}</p>
+    <p><span>{{$t("coord.lng")}}</span>{{ info && info.lng || center.lng}}</p>
+    <p v-if="info && info.zoom"><span>{{$t("coord.zoomLevel")}}</span>{{ info.zoom }}</p>
   </div>
 </template>
 
@@ -52,22 +74,31 @@ import { QuiskExpose } from "@/helper/mount";
 import { debounce } from "@/util";
 import html2canvas from "html2canvas";
 import { router } from "@/router";
+import { ui18n } from "@/i18n";
 import L from "leaflet";
 import "leaflet/dist/leaflet.css";
 export type MapImage = { blob: Blob | null; search: MapInfo | null };
 type MapInfo = { lat: number; lng: number; zoom: number; text: string };
-
+let AMap = null;
 const keyword = ref("");
 const ggMapKey = ref("AIzaSyBGUvCR1bppO9pfuS0MUWzuftiZ127y4Os");
 const showSearch = ref(true);
 const info = ref<MapInfo>();
 const searchInfo = ref<MapInfo>();
+const markerRef = ref(null);
 const caseInfoData = ref<any>(null);
 const mapType = ref("gaode");
 const center = ref({
-  lat: 113.0,
-  lng: 22.61,
+  lat: 22.61,
+  lng: 113.0,
 });
+const mapOptions = [{
+  label: ui18n.t("coord.edit.gmap"),
+  value: "gaode",
+}, {
+  label: ui18n.t("coord.edit.ggmap"),
+  value: "google",
+}];
 const caseId = computed(() => {
   const caseId = router.currentRoute.value.params.caseId;
   if (caseId) {
@@ -81,12 +112,21 @@ watchEffect(() => {
   }
 });
 
+const GoogleMapEl = ref<HTMLDivElement>();
 const mapEl = ref<HTMLDivElement>();
 const resultEl = ref<HTMLDivElement>();
 const searchAMap = ref<any>();
-
+const handleMapTypeChange = () => {
+  console.log(mapType.value);
+  if (mapType.value === "google") {
+    renderGgMapGd()
+  } else {
+    renderMapGd();
+  }
+}
 const renderMapGd = async () => {
-  const AMap = await AMapLoader.load({
+  let clickMarker;
+  AMap = await AMapLoader.load({
     plugins: ["AMap.PlaceSearch", "AMap.Event"],
     key: "e661b00bdf2c44cccf71ef6070ef41b8",
     version: "2.0",
@@ -96,9 +136,15 @@ const renderMapGd = async () => {
       preserveDrawingBuffer: true,
     },
     resizeEnable: true,
-    center: [center.value.lat, center.value.lng], //中心坐标
-    zoom: 10, //缩放级别
+    center: [center.value.lng, center.value.lat], //中心坐标
+    zoom: 13, //缩放级别
   });
+  clickMarker = new AMap.Marker({
+      position: [center.value.lng, center.value.lat],
+      title: "点击位置",
+    });
+
+    map.add(clickMarker);
   const placeSearch = new AMap.PlaceSearch({
     pageSize: 5,
     showCover: false,
@@ -125,7 +171,6 @@ const renderMapGd = async () => {
     setSearch(e.data);
     showSearch.value = false;
   });
-  let clickMarker;
   //绑定地图移动与缩放事件
   map.on("moveend", () => {
     info.value = getMapInfo();
@@ -169,7 +214,19 @@ const renderMapGd = async () => {
       }
     }, 500);
   });
-  async function regeocoder(lnglatXY) {
+  const getMapInfo = (): MapInfo => {
+    var zoom = map.getZoom(); //获取当前地图级别
+    var centers = map.getCenter();
+    return {
+      text: "",
+      zoom,
+      lat: centers.lat,
+      lng: centers.lng,
+    };
+  };
+  searchAMap.value = placeSearch;
+};
+async function regeocoder(lnglatXY) {
     return AMap.plugin("AMap.Geocoder", function () {
       var geocoder = new AMap.Geocoder({
         radius: 1000,
@@ -192,18 +249,22 @@ const renderMapGd = async () => {
       // marker.setPosition(lnglatXY);
     });
   }
-  const getMapInfo = (): MapInfo => {
-    var zoom = map.getZoom(); //获取当前地图级别
-    var centers = map.getCenter();
-    return {
+const handleMapClick = (e) => {
+  center.value.lng = e.latLng.lng();
+  center.value.lat = e.latLng.lat();
+  searchInfo.value = {
       text: "",
-      zoom,
-      lat: centers.lat,
-      lng: centers.lng,
+      lat: center.value.lat,
+      lng: center.value.lng,
+      zoom: 0,
     };
-  };
-  searchAMap.value = placeSearch;
-};
+  regeocoder([center.value.lng, center.value.lat]);
+  console.log(markerRef.value.marker, "handleMapClick")
+  markerRef.value.marker.position = center.value;
+  console.log( center.value, "handleMapClick", e)
+  // info.value.lat = center.value.lat
+  // info.value.lng = center.value.lng
+}
 const renderGgMapGd = async () => {
   // const map = new google.maps.Map(mapEl.value, {
   //   zoom: 10,
@@ -215,11 +276,11 @@ onMounted(async () => {
   caseInfoData.value = await getCaseInfo(caseId.value);
   if (caseInfoData.value?.latAndLong) {
     let centerObj = caseInfoData.value.latAndLong.split(",").reverse()
-    center.value.lat = parseFloat(centerObj[0]);
-    center.value.lng = parseFloat(centerObj[1]);
+    center.value.lat = parseFloat(centerObj[1]);
+    center.value.lng = parseFloat(centerObj[0]);
   }
-  renderMapGd()
-  renderGgMapGd()
+  console.log(caseInfoData.value, "centerObj", center.value)
+  handleMapTypeChange()
 });
 watchEffect(async (onCleanup) => {
   if (!mapEl.value || !resultEl.value) {
@@ -252,25 +313,27 @@ watchEffect(() => {
 defineExpose<QuiskExpose>({
   submit() {
     return new Promise<MapImage>((resolve) => {
-      console.log("searchInfo", searchInfo.value, mapEl.value);
-      if (mapEl.value) {
-        const canvas = mapEl.value.querySelector("canvas") as HTMLCanvasElement;
-        console.log(canvas, "canvas");
-        canvas &&
-          canvas.toBlob((blob) => resolve({ blob, search: searchInfo.value! })); // || resolve({ search: searchInfo.value! });
-        if (!canvas) {
+      const mapDivEl = mapType.value === "google" ? GoogleMapEl.value.mapRef : mapEl.value;
+
+      console.log("searchInfo", mapDivEl);
+      // if (mapDivEl) {
+      //   const canvas = mapDivEl.querySelector("canvas") as HTMLCanvasElement;
+      //   console.log(canvas, "canvas");
+      //   canvas &&
+      //     canvas.toBlob((blob) => resolve({ blob, search: searchInfo.value! })); // || resolve({ search: searchInfo.value! });
+      //   if (!canvas) {
           //div内容生成图片
-          html2canvas(mapEl.value, {
+          html2canvas(mapDivEl, {
             useCORS: true, // 添加这个选项以解决跨域问题
           }).then((canvas) => {
             let imgUrl = canvas.toDataURL("image/png");
             let blob = dataURLtoBlob(imgUrl);
             resolve({ blob, search: searchInfo.value! });
           });
-        }
-      } else {
-        resolve({ blob: null, search: null });
-      }
+      //   }
+      // } else {
+      //   resolve({ blob: null, search: null });
+      // }
     });
   },
 });
@@ -278,9 +341,10 @@ defineExpose<QuiskExpose>({
 
 <style lang="scss" scoped>
 .search-layout {
-  display: inline-block;
+  // display: inline-block;
   position: relative;
   margin-bottom: 15px;
+  width: 100%;
   z-index: 2;
 }
 

+ 25 - 29
src/view/case/help.ts

@@ -189,10 +189,6 @@ export const getFuseImage = async (
   const typeMap = await getIframeSceneType(iframe);
   let blob: Blob | null = null;
   let newUrl: string | null = null;
-<<<<<<< HEAD
-=======
-
->>>>>>> master
   switch (typeMap?.type) {
     case FuseImageType.FUSE:
       console.error(width, height);
@@ -202,36 +198,36 @@ export const getFuseImage = async (
       break;
     case FuseImageType.KANKAN:
       console.error("截图尺寸", width, height);
-      if(typeMap.sdk.Camera.mode == 'floorplan') {//判断户型图模式是否为平面图模式,如果是则获取平面图的截图进行裁剪处理
-        if(typeMap.sdk.store?.getValue('metadata')?.floorPlanUser) {
-          let num = typeMap.sdk.store?.getValue('metadata').num
-          let floorId = typeMap.sdk.core.get('Player').model.currentFloor.floorIndex
-          let img = ''
-          if (typeMap.sdk.store.getValue('flooruser').type === 'image') {
-              img = `floor-upload-${floorId}.jpg`
-          } else {
-              img = `cad-style-3-${floorId}.jpg`
-          }
-          newUrl = `${getUrlSrc({type: 102})}/profile/scene_view_data/${num}/user/${img}?t=${Date.now()}`
-         // /oss/scene_view_data/YZL-jm-3EOpLfZxim9/user/cad-style-3.jpg
-         let newBlob = await urlToBlob(newUrl)
-         if(newBlob.type != 'text/html'){
-          blob = await imageCropper({
-            img: newBlob,
-            fixed: [width, height]
-           })
-         }
-         console.error("截图尺寸2", blob);
-        } else {
-          alert("暂未获取到平面图,请前往三维场景制作并保存");
-        }
-      } else {
+      // if(typeMap.sdk.Camera.mode == 'floorplan') {//判断户型图模式是否为平面图模式,如果是则获取平面图的截图进行裁剪处理
+      //   if(typeMap.sdk.store?.getValue('metadata')?.floorPlanUser) {
+      //     let num = typeMap.sdk.store?.getValue('metadata').num
+      //     let floorId = typeMap.sdk.core.get('Player').model.currentFloor.floorIndex
+      //     let img = ''
+      //     if (typeMap.sdk.store.getValue('flooruser').type === 'image') {
+      //         img = `floor-upload-${floorId}.jpg`
+      //     } else {
+      //         img = `cad-style-3-${floorId}.jpg`
+      //     }
+      //     newUrl = `${getUrlSrc({type: 102})}/profile/scene_view_data/${num}/user/${img}?t=${Date.now()}`
+      //    // /oss/scene_view_data/YZL-jm-3EOpLfZxim9/user/cad-style-3.jpg
+      //    let newBlob = await urlToBlob(newUrl)
+      //    if(newBlob.type != 'text/html'){
+      //     blob = await imageCropper({
+      //       img: newBlob,
+      //       fixed: [width, height]
+      //      })
+      //    }
+      //    console.error("截图尺寸2", blob);
+      //   } else {
+      //     alert("暂未获取到平面图,请前往三维场景制作并保存");
+      //   }
+      // } else {
         const result = await typeMap.sdk.Camera.screenshot(
           [{ width: width, height: height, name: "2k", bgOpacity: 0 }],
           false
         );
         blob = base64ToBlob(result[0].data);
-      }
+      // }
      
       break;
       break;

+ 1 - 1
src/view/case/quisk.ts

@@ -56,7 +56,7 @@ export const selectFuseImage = quiskMountFactory(SelectFuseImage, {
 })<FuseImage>;
 
 export const selectMapImage = quiskMountFactory(SelectMapImage, {
-  title: "选择地址",
+  title: ui18n.t('sceneHome.selectAdd'),
   width: 588,
 })<MapImage>;
 

+ 12 - 9
src/view/layout/index.vue

@@ -71,18 +71,19 @@ const getAllParams = () => {
 let querys = getAllParams() || {};
 setUrlData(querys)
 if(querys.ga == 'true'){
-  router.replace('/home/'+caseId.value as number)
-}
-if(querys.path){
-  router.replace(querys.path)
-}
-if(querys.appServer){
-  router.replace(querys.path)
-}
+    router.replace('/home/'+caseId.value as number)
+  }
+  if(querys.path){
+    router.replace(querys.path)
+  }
+  if(querys.appServer){
+    router.replace(querys.path)
+  }
+
 // const qpisceneList = ref(getCaseSceneListData() as any[]);
 console.log('caseIdgetUrlSrc', getUrlSrc({ type: 99 }, querys.caseId || caseId.value));
 const sceneList = ref([]);
-const sceneURL = ref( getUrlSrc({ type: 99 }, querys.caseId || caseId.value) || `/code/index.html?caseId=${caseId.value}#/show`)
+const sceneURL = ref(null)
 const sceneListName = ref('')
 const modeList = ref([])
 const init = async () => {
@@ -116,6 +117,8 @@ watch(() => qpisceneList.value, () => {
 })
 onMounted(() => {
   // setupSDK(document.querySelector('iframe') as HTMLIFrameElement)
+  sceneURL.value = getUrlSrc({ type: 99 }, querys.caseId || caseId.value) || `/code/index.html?caseId=${caseId.value}#/show`
+
 })
 updateByTreeFileLists()
 const hiddenSlide = computed(

+ 3 - 3
src/view/layout/top/index.vue

@@ -9,7 +9,7 @@
     <div class="oper-btns">
       <el-input
         v-model="bindExample.caseAddress"
-        placeholder="输入名称搜索"
+        :placeholder="$t('sceneHome.nameSearch')"
         clearable
         maxlength="100"
         disabled
@@ -19,10 +19,10 @@
         </template>
       </el-input>
       <el-button style="padding: 5px 10px;margin-left: 12px;" type="primary" @click="handlemtk"
-        >媒体库</el-button
+        >{{$t('sceneHome.library')}}</el-button
       >
       <el-button style="padding: 5px 10px" type="primary" @click="handleSee"
-        >预览案件</el-button
+        >{{$t('sceneHome.caseView')}}</el-button
       >
     </div>
     <!-- <div class="oper-btns" v-if="user.info">

+ 15 - 73
src/view/mediaLibrary/TableComponent.vue

@@ -82,6 +82,7 @@
         prop="name"
         :label="$t('program.case.title')"
         min-width="300px"
+        show-overflow-tooltip
       >
         <template #default="scope">
           <a
@@ -149,7 +150,7 @@
       <el-form label-position="top" :model="form" label-width="110">
         <el-form-item
           v-if="dialogData.title == $t('sys.upload')"
-          label="文件"
+          :label="$t('mediaLibrary.file')"
           :label-width="formLabelWidth"
         >
           <!-- <el-input v-model="addForm.name" autocomplete="off" /> -->
@@ -237,7 +238,8 @@
         >
           <el-input
             v-model="dialogData.fzName"
-            maxLength="100"
+            maxlength="50"
+            show-word-limit
             style="width: 278px"
           />
           <el-button
@@ -279,7 +281,7 @@
     <!-- //查看资源下载 -->
     <el-dialog
       v-model="dialogDowm.show"
-      :title="$t("sys.query")"
+      :title="$t('sys.query')"
       :width="dialogDowm.type == 4 ? 800 : 600"
       @close="handleClose"
     >
@@ -293,7 +295,7 @@
         <video
           ref="audio"
           controls
-          style="width: 100%; object-fit: cover; max-height: 300px"
+          style="width: 100%; max-height: 300px"
           :style="{ height: dialogDowm.type == 2 ? '50px' : 'auto' }"
           :src="dialogDowm.url"
           alt=""
@@ -316,7 +318,7 @@
             type="primary"
             @click="hanleDown"
           >
-            下载
+            {{$t("sys.download")}}
           </el-button>
         </div>
       </template>
@@ -409,6 +411,7 @@ const hanleFzDle = (item) => {
   ).then(async () => {
     await getfzdel(item);
     dictIdList.value = dictIdList.value.filter((item1) => item1.id !== item.id);
+    searchForm.value.dictId = "0";
     initData();
     ElMessage({
       type: "success",
@@ -498,7 +501,8 @@ const handleuploadAdd = async () => {
       loading.setText(loadingText.value)
     }).then((res) => {
       loading.close();
-      if (res?.status == 1) {
+      console.log("上传进度", res);
+      if (res.data?.status == 1) {
         initData();
         dialogData.value.show = false;
         ElMessage({
@@ -693,15 +697,9 @@ initData();
 </script>
 
 <style lang="scss">
-:root {
-  // --el-bg-color: #151515;
-  // --colorColor: #fff;
-}
-// /* 覆盖 Element Plus 的 CSS 变量 */
-// --el-color-primary: #1890ff;
-// --el-bg-color: #141414;
-// --el-text-color-primary: #ffffff;
-// /* 可以根据需要覆盖更多变量 */
+.upload-demo .el-upload-list__item.is-success:focus:not(:hover){
+            display: none !important;
+        }
 .mb-3 {
   margin-bottom: 1rem;
 }
@@ -711,18 +709,6 @@ initData();
 .mymediaLibrary {
   background-color: #292929;
   text-align: left;
-  // .el-form-item{
-  //   margin-bottom: 30px;
-  // }
-  // .el-table th.el-table__cell{
-  //   background-color: #1d1d1d;
-  //   color: #fff;
-  // }
-  // width: 100%;
-  // --el-input-bg-color: #535353;
-  // .el-table{
-  //   background-color: #535353;
-  // }
   .grouping {
     padding: 7px 10px;
     background-color: var(--el-fill-color-blank);
@@ -743,50 +729,6 @@ initData();
   .el-form--inline .el-form-item {
     margin-right: 20px;
   }
-  // .el-form-item, .el-select__wrapper{
-  //   background-color: #535353;
-  // }
-  // .el-input__wrapper, .el-select__wrapper{
-  //   background-color: #535353;
-  //   box-shadow: none;
-  // }
-  // .el-input__inner, .el-select__selected-item{
-  //   color: #fff;
-  // }
-  //     /* 局部修改具有 custom-table 类名的 el-table 的背景颜色 */
-  //     .custom-table.el-table {
-  //     background-color: #535353;
-  //   }
-
-  //   /* 修改表头背景颜色 */
-  //   .custom-table.el-table__header-wrapper th {
-  //     background-color: #535353;
-  //   }
-
-  //   /* 修改表格行的背景颜色 */
-  //   .el-table tr {
-  //     background-color: #535353;
-  //   }
-
-  //   /* 修改表格行悬停时的背景颜色 */
-  //   .custom-table.el-table__body tr:hover>td {
-  //     background-color: #535353;
-  //   }
-  //   .el-table th.el-table__cell{
-  //     background-color: #1d1d1d
-  //   }
-  //   .el-table .el-table__cell{
-  //     border-color: #303030 !important;
-  //   }
-  //   .el-table--fit .el-table__inner-wrapper:before{
-  //     background-color: none;
-  //   }
-  //   .el-table .warning-row {
-  //     --el-table-tr-bg-color: var(--el-color-warning-light-9);
-  //   }
-  //   .el-table .success-row {
-  //     --el-table-tr-bg-color: var(--el-color-success-light-9);
-  //   }
   .itemTitle {
     width: 100%;
     margin: 0 0 10px 0;
@@ -815,8 +757,8 @@ initData();
         white-space: nowrap; //溢出不换行
       }
       .del {
-        color: red;
-        width: 40px;
+        color: #FA3D47;
+        // width: 40px;
 
         cursor: pointer;
       }

+ 2 - 2
src/view/originalPhoto/addLibrary.vue

@@ -101,11 +101,11 @@ onMounted(async () => {
 
 const { size, fileList, upload, removeFile, previewFile, file, accept } = useUpload({
   maxSize: 2000 * 1024 * 1024,
-  formats: [".jpg", ".png", ".jpeg", ".mp4", ".wav", ".mp3", ".shp"],
+  formats: [".jpg", ".png", ".jpeg", ".mp4", ".wav", ".mp3", ".shp", ".zip"],
 });
 
 const formatDesc = computed(() =>
-  'jpg、png、jpeg、mp4、wav、mp3、shp上传'
+  'jpg、png、jpeg、mp4、wav、mp3、shp、zip上传'
 );
 
 // 上传请求

+ 5 - 3
src/view/vrmodel/index.vue

@@ -51,6 +51,7 @@ import {
   getUrlSrc,
   getSceneListTree,
   setCaseaddOrUpdate,
+  getCaseInfoData,
 } from "@/store/case";
 // import { router } from "@/router";
 import comSelect from "@/components/company-select/index.vue";
@@ -73,6 +74,8 @@ const router = useRouter();
 const route = useRoute();
 const params = useScenePaggingParams();
 const caseId = computed(() => router.currentRoute.value?.params?.caseId);
+const title = computed(() => getCaseInfoData()?.caseTitle);
+
 onMounted(() => {
   geiList();
 });
@@ -107,12 +110,11 @@ function handlegotoEdit(record) {
     // record.type == 2 || record.type == 5
     //   ? `/mega/index.html?m=${record.num}`
     //   : `/epg.html?m=${record.num}`;
-      windowOpen({url: url.replace("spg", "epg"),title: ui18n.t('sceneHome.edit')});
+      // windowOpen({url: url.replace("spg", "epg"),title:record.name || ui18n.t('common.edit'), icon: 'scene' });
 }
 function handleAdddyrh(record) {
-  
   let url = getUrlSrc({ type: 100 }, caseId.value)
-  windowOpen({url, title: ui18n.t('sceneHome.dyrh')});
+  windowOpen({url, title: title.value || ui18n.t('sceneHome.dyrh')});
 }
 async function handlegotoelT(record) {
   isEdit.value = true;

+ 11 - 2
src/view/vrmodel/sceneContent.vue

@@ -23,7 +23,7 @@
       {{ row.shootTime }}
     </el-table-column>
     <el-table-column :label="$t('program.auth.status')" v-slot:default="{ row }: { row: QuoteScene }">
-      {{ renderStatus(row.status) }}
+      {{ renderStatus(row) }}
     </el-table-column>
     <!-- <el-table-column label="所属架构" prop="deptName"></el-table-column> -->
     <!-- <el-table-column label="操作" v-slot:default="{ row }: { row: QuoteScene }">
@@ -186,7 +186,16 @@ watchEffect(() => {
   console.log(tableRef.value!.getSelectionRows())
   // console.log('watchEffect', props.pagging.state.table.rows);
 }, { flush: 'post' });
-const renderStatus = (status) => {
+const renderStatus = ({status,isLaser}) => {
+  // 状态,-1:场景被删 0:计算中 1计算失败 2计算成功 3待计算 4生成OBJ中 5 暂停 6排队中
+  // let meshStatus = {
+  //   '-1': 1,
+  //   '0': 3,
+  //   '1': 2,
+  //   '2': 0,
+  //   '3': 6,
+  //   '4': 5
+  // }
   return QuoteSceneStatusDesc[status];
 };
 const changeSelection = async (selectScenes) => {

+ 2 - 2
vite.config.ts

@@ -51,12 +51,12 @@ export default defineConfig({
     host: "0.0.0.0",
     proxy: {
       "/api": {
-        target: dev ? "http://192.168.0.62:8808" : "mix3d.4dkankan.com",
+        target: dev ? "http://192.168.0.108:8808" : "mix3d.4dkankan.com",
         changeOrigin: true,
         rewrite: (path) => path.replace(new RegExp(`^/api`), ""),
       },
       "/fusion": {
-        target: dev ? "http://192.168.0.62:8808" : "mix3d.4dkankan.com",
+        target: dev ? "http://192.168.0.108:8808" : "mix3d.4dkankan.com",
         changeOrigin: true,
         rewrite: (path) => path.replace(new RegExp(`^/api`), "/fusion"),
       },