Przeglądaj źródła

修改一部分bug

wangfumin 1 miesiąc temu
rodzic
commit
b1b382fe6e

+ 1 - 1
src/app/criminal/routeConfig.ts

@@ -13,11 +13,11 @@ export const menuRouteNames = [
   CriminalRouteName.mix3dManager,
   // CriminalRouteName.vrmodel,
   CriminalRouteName.mediaLibrary,
-  CriminalRouteName.camera,
   CriminalRouteName.organization,
   CriminalRouteName.role,
   CriminalRouteName.user,
   CriminalRouteName.downloadLog,
+  CriminalRouteName.camera,
 ];
 
 export const routes: Routes = [

Plik diff jest za duży
+ 1 - 0
src/assets/svg/data_s.svg


Plik diff jest za duży
+ 1 - 0
src/assets/svg/fire_organization.svg


Plik diff jest za duży
+ 1 - 0
src/assets/svg/multi_m.svg


Plik diff jest za duży
+ 1 - 0
src/assets/svg/point_c.svg


+ 4 - 4
src/constant/scene.ts

@@ -4,11 +4,11 @@ import { ModelSceneStatus, QuoteSceneStatus, SceneType } from "@/store/scene";
 export const SceneTypeDesc: { [key in SceneType]: string } = {
   [SceneType.SWKK]: "八目",
   [SceneType.SWKJ]: "双目转台",
-  [SceneType.SWSS]: "激光转台点云场景",
+  [SceneType.SWSS]: "激光转台",
   [SceneType.SWMX]: "三维模型",
-  [SceneType.SWSSMX]: "激光转台Mesh场景",
-  [SceneType.SWYDSS]: "激光移动点云场景",
-  [SceneType.SWYDMX]: "激光移动Mesh场景",
+  [SceneType.SWSSMX]: "激光转台",
+  [SceneType.SWYDSS]: "激光移动",
+  [SceneType.SWYDMX]: "激光移动",
   // [SceneType.QJKK]: '全景看看',
 };
 

+ 4 - 4
src/router/config.ts

@@ -89,7 +89,7 @@ export const routes: Routes = [
         name: RouteName.organization,
         path: "organization",
         component: () => import("@/view/organization/index.vue"),
-        meta: { title: "组织架构", icon: "iconfire_organization" },
+        meta: { title: "组织架构", iconSrc: 'svg/fire_organization.svg', icon: "" },
       },
       {
         name: RouteName.role,
@@ -113,7 +113,7 @@ export const routes: Routes = [
         name: RouteName.statistics,
         path: "/statistics",
         component: () => import("@/view/statistics/index.vue"),
-        meta: { title: "数据统计", icon: "iconfire_user" },
+        meta: { title: "数据统计", iconSrc: 'svg/data_s.svg', icon: "" },
       },
       {
         name: RouteName.setting,
@@ -131,13 +131,13 @@ export const routes: Routes = [
         name: RouteName.dyManager,
         path: "dyManager",
         component: () => import("@/view/newFireCase/dyManager/index.vue"),
-        meta: { title: "点云场景", icon: "iconfire_scenes" },
+        meta: { title: "点云场景", iconSrc: 'svg/point_c.svg', icon: "" },
       },
       {
         name: RouteName.mix3dManager,
         path: "mix3dManager",
         component: () => import("@/view/newFireCase/mix3dManager/index.vue"),
-        meta: { title: "多元融合", icon: "iconfire_scenes" },
+        meta: { title: "多元融合", iconSrc: 'svg/multi_m.svg', icon: "" },
       },
     ],
   },

+ 1 - 1
src/view/layout/slide/submenu.vue

@@ -1,7 +1,7 @@
 <template>
   <el-menu-item :index="name" :key="name">
     <i :class="'iconfont ' + meta.icon" v-if="meta.icon"></i>
-    <img style="margin-right: 8px;" v-else :src="getAssetsFile(meta.iconSrc)" alt="">
+    <img style="margin-right: 8px;width: 16px;height: 16px;" v-else :src="getAssetsFile(meta.iconSrc)" alt="">
     <span>{{ meta.title }}</span>
   </el-menu-item>
 </template>

+ 14 - 2
src/view/newFireCase/newFireDetails/components/basicInfo.vue

@@ -155,6 +155,7 @@ watch(() => props.fire, (newVal, oldVal) => {
 const showMapDialog = ref(false)
 const fireReason = genCascaderValue(bindFire, "fireReason");
 const projectSite = genCascaderValue(bindFire, "projectSite");
+const firstReload = ref(0)
 
 // ========== 自动保存(有变化就保存,无需按钮) ==========
 // 仅在数据满足基本必填项时才触发保存;使用防抖避免频繁请求
@@ -194,7 +195,7 @@ const autoSave = async () => {
   // criminal 路由不触发 fire 自动保存
   if (props.fromRoute === 'criminal') return;
   if (props.editOrShow === 'show') return;
-  if (!isValidForAutoSave()) return;
+  // if (!isValidForAutoSave()) return;
   const snapshot = getSnapshot();
   if (snapshot === lastSavedSnapshot) return;
 
@@ -204,9 +205,15 @@ const autoSave = async () => {
 
   try {
     if (bindFire.value.id) {
+      console.log('auto-save update', bindFire.value);
       await setFire(bindFire.value);
+      if (firstReload.value != 0) {
+        ElMessage.success('保存成功');
+      }
+      firstReload.value += 1;
     } else {
       await addFire(bindFire.value as any);
+      ElMessage.success('新增成功');
     }
     lastSavedSnapshot = snapshot;
     // 保存成功后派发标题更新事件,供父组件同步 currentRecord
@@ -249,15 +256,20 @@ const getSnapshotCriminal = () => {
 const autoSaveCriminal = async () => {
   if (props.fromRoute !== 'criminal') return;
   if (props.editOrShow === 'show') return;
-  if (!isValidForAutoSaveCriminal()) return;
+  // if (!isValidForAutoSaveCriminal()) return;
   const snapshot = getSnapshotCriminal();
   if (snapshot === lastSavedSnapshotCriminal) return;
 
   try {
     if ((bindFire.value as any).caseId) {
       await setCriminalExample(bindFire.value as any);
+      if (firstReload.value != 0) {
+        ElMessage.success('保存成功');
+      }
+      firstReload.value += 1;
     } else {
       await addCriminalExample(bindFire.value as any);
+      ElMessage.success('新增成功');
     }
     lastSavedSnapshotCriminal = snapshot;
     // 保存成功后派发标题更新事件,附带地图信息,供父组件同步 currentRecord

+ 10 - 6
src/view/newFireCase/newFireDetails/components/mix3d.vue

@@ -1,14 +1,14 @@
 <template>
   <div class="scene-3dmix">
-    <div class="no-detail" v-if="false">
+    <div class="no-detail" v-if="scenes.length == 0">
       <div class="no-card" @click="handleImportClick">
         <el-icon :size="26" style="color: var(--primaryColor);"><DocumentAdd /></el-icon>
         <span>导入</span>
       </div>
-      暂无场景数据
+      暂无数据
     </div>
     <!-- 场景数据展示区域 -->
-     <div class="scene-detail">
+     <div class="scene-detail" v-else>
       <div class="let-bar">
         <div class="import-row">
           <div class="import-btn" v-if="editOrShow === 'edit'" @click="handleImportClick">
@@ -50,6 +50,7 @@
         暂无数据
       </div>
      </div>
+     </div>
      <!-- 导入多元融合弹窗 -->
      <el-dialog
        v-model="editVisible"
@@ -117,7 +118,6 @@
          <el-button type="primary" @click="onConfirmEdit">确定</el-button>
        </template>
      </el-dialog>
-     </div>
   </div>
 </template>
 <script setup lang="ts">
@@ -180,8 +180,11 @@ const onEdit = (scene: Scene) => {
 const onDelete = async (scene: any) => {
   // 若仅剩一个融合场景,提示并阻止删除
   if ((scenes.value || []).length <= 1) {
-    ElMessage.error('至少保留一个多元融合场景');
-    return;
+    const sceneList = (await getFusionAndSceneList({ caseId: caseId.value, type: 'scene' })) as unknown as any[];
+    if (!sceneList || sceneList.length === 0) {
+      ElMessage.error('至少保留一个实景三维/多元融合场景');
+      return;
+    }
   }
   if (await confirm('确定要移除当前融合场景吗?')) {
     const delId = String((scene as any)?.fusionId || '');
@@ -356,6 +359,7 @@ onMounted(async () => {
       border-radius: 2px 2px 2px 2px;
       border: 1px solid #D9D9D9;
       margin-bottom: 16px;
+      cursor: pointer;
       span{
         margin-top: 8px;
       }

+ 13 - 4
src/view/newFireCase/newFireDetails/components/scene.vue

@@ -48,7 +48,7 @@
         </el-menu>
      </div>
      <div class="right-bar" :class="{ fullscreen: isFullscreen }" ref="rightBarRef">
-        <div class="exit-tip" v-if="isFullscreen && showExitTip">按Esc退出全屏</div>
+        <div class="exit-tip" v-if="isFullscreen && showExitTip"></div>
         <div v-if="activeWebSite" class="iframe-container">
           <iframe :src="`${activeWebSite}`" width="100%" height="100%" frameborder="0"></iframe>
         </div>
@@ -259,8 +259,11 @@ const onEdit = (scene: Scene) => {
 const onDelete = async (scene: Scene) => {
   // 若仅剩一个场景,提示并阻止删除
   if ((scenes.value || []).length <= 1) {
-    ElMessage.error('至少保留一个实景三维场景');
-    return;
+    const fusionList = (await getFusionAndSceneList({ caseId: caseId.value, type: 'fusion' })) as unknown as any[];
+    if (!fusionList || fusionList.length === 0) {
+      ElMessage.error('至少保留一个实景三维/多元融合场景');
+      return;
+    }
   }
   if (await confirm('确定要移除当前场景吗?')) {
     const newList = scenes.value.filter(s => getSceneKey(s) !== getSceneKey(scene));
@@ -277,7 +280,13 @@ const onDelete = async (scene: Scene) => {
   }
 };
 const onOpen = (scene: Scene) => {
-  window.open(scene.webSite, '_blank');
+  let newUrl = ''
+  if(window.location.host.includes('localhost') || window.location.host.includes('test')){
+    newUrl = `https://test.4dkankan.com/epg.html?m=${scene.num}`
+  } else {
+    newUrl = `https://4dkankan.com/epg.html?m=${scene.num}`
+  }
+  window.open(newUrl, '_blank');
 };
 const onFullscreen = () => {
   if (screenfull.isEnabled && rightBarRef.value) {