tangning hai 3 semanas
pai
achega
49bb937bea

+ 1 - 1
src/constant/scene.ts

@@ -9,7 +9,7 @@ export const SceneTypeDesc: { [key in SceneType]: string } = {
   [SceneType.SWSSMX]: "激光转台",
   [SceneType.SWYDSS]: "激光移动",
   [SceneType.SWYDMX]: "激光移动",
-  [SceneType.SWSX]: "深",
+  [SceneType.SWSX]: "深",
   // [SceneType.QJKK]: '全景看看',
 };
 

+ 5 - 2
src/request/index.ts

@@ -102,6 +102,8 @@ axios.interceptors.request.use(async (config) => {
     const offline = isOfflineMode();
     if (!offline) {
       if (!token && !~notLoginUrls.indexOf(config.url) && !shareBypassLogin) {
+        console.log('RouteName.login2')
+
         const buildRedirect = (): string => {
           try {
             const current = router.currentRoute?.value;
@@ -180,6 +182,7 @@ const responseInterceptor = (res: AxiosResponse<any, any>) => {
         ~unAuthCode.indexOf(res.data.code) ||
         errMsg === "token已经失效,请重新登录"
       ) {
+        console.log('RouteName.login1')
         getAuth().clear();
         const buildRedirect = (): string => {
           try {
@@ -198,10 +201,10 @@ const responseInterceptor = (res: AxiosResponse<any, any>) => {
         router.replace({ name: RouteName.login, query: { redirect } });
       }
     }
-    throw res.data.msg;
+    throw res.data.msg || res.data.message;
   }
 
-  return res.data;
+  return res.data || res;
 };
 
 axios.interceptors.response.use(responseInterceptor, (error) => {

+ 1 - 0
src/store/case.ts

@@ -130,6 +130,7 @@ export const getCaseScenesBySceneType = (scenes: Scene[]) => {
     { type: SceneType.SWSSMX, numList: [] },
     { type: SceneType.SWYDSS, numList: [] },
     { type: SceneType.SWYDMX, numList: [] },
+    { type: SceneType.SWSX, numList: [] },
   ] as CaseScenes;
 
   for (const scene of scenes) {

+ 1 - 1
src/store/scene.ts

@@ -310,7 +310,7 @@ const SceneTypeDesc: { [key in SceneType]: string } = {
 
 export const getSWKKSyncLink = async (scene: Scene, caseId: number) => {
   console.log('scene', scene)
-  const supportTypes = [SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX];
+  const supportTypes = [SceneType.SWKK, SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX];
   const kkScenes = supportTypes.includes(scene.sceneType)
 
   let msg: string | null = null;

+ 3 - 1
src/view/case/newphotos/draggable.vue

@@ -104,6 +104,7 @@ async function getList() {
   emit("changeList", list.value);
 }
 async function handleDet(index: Number, id: Number) {
+  console.log("handleDet", index, id, list);
   const res = await ElMessageBox.confirm(
     "删除图像后会重新排版并清空标记数据,是否继续?",
     "温馨提示",
@@ -116,7 +117,8 @@ async function handleDet(index: Number, id: Number) {
   if (res) {
     caseDel(id).then((res) => {
       emit("delImage", [id]);
-      list.value.splice(index, 1);
+      let idIndex = list.value.findIndex((item) => item.id === id);
+      list.value.splice(idIndex, 1);
       emit("changeList", list.value);
     });
   }

+ 15 - 4
src/view/newFireCase/newFireDetails/components/otherFiles.vue

@@ -66,8 +66,8 @@
   <!-- 图片全屏预览(查看非右侧区域时用) -->
   <el-image-viewer
     v-if="showViewer"
-    :url-list="[previewUrl]"
-    :initial-index="0"
+    :url-list="preview.list"
+    :initial-index="preview.index"
     @close="showViewer = false"
   />
 </template>
@@ -96,7 +96,10 @@ const otherTypeId = ref<number | null>(null);
 
 // 文件列表与预览
 const files = ref<CaseFile[]>([]);
-const previewUrl = ref<string>('');
+const preview = ref({
+  list: [],
+  index: 0
+});
 const showViewer = ref(false);
 
 // 上传限制:100MB,支持 pdf、doc、docx、jpg、jpeg、png、raw、dcm
@@ -127,6 +130,13 @@ const getFileDisplayName = (file: CaseFile) => {
 const refresh = async () => {
   if (!caseId.value || !otherTypeId.value) return;
   files.value = await getCaseFiles({ caseId: caseId.value!, filesTypeId: otherTypeId.value! });
+  const previewList = files.value.filter(file => {
+    const ext = file.filesUrl.substring(file.filesUrl.lastIndexOf('.')).toLocaleLowerCase();
+    const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp', '.svg'];
+    return imageExts.includes(ext)
+  }) || [];
+  preview.value.list = previewList.map(file => file.filesUrl) || [];
+
 };
 
 // 上传请求:直接入库并刷新列表
@@ -156,7 +166,8 @@ const handleView = (file: CaseFile) => {
   };
   const viewUrl = isOfflineMode() ? toOfflineAbs(file.filesUrl) : file.filesUrl;
   if (imageExts.includes(ext)) {
-    previewUrl.value = viewUrl;
+
+    preview.value.index = preview.value.list.findIndex(item => item == file.filesUrl);
     showViewer.value = true;
   } else if ([".raw", ".dcm"].includes(ext)) {
     const fileParam = encodeURIComponent(viewUrl);

+ 1 - 1
src/view/newFireCase/newFireDetails/components/siteInspection.vue

@@ -261,7 +261,7 @@
             <el-image :src="currentSceneImageUrl" loading="lazy" fit="contain" class="inline-image" />
             <!-- <div class="click-tip">点击图片放大</div> -->
           </div>
-          <div class="viewer-placeholder" v-else>选择左侧图片进行查看</div>
+          <div class="viewer-placeholder" v-else>暂无数据</div>
           <el-image-viewer
             v-if="showViewer"
             :url-list="viewerUrls"

+ 1 - 1
src/view/newFireCase/newFireDetails/index.vue

@@ -91,7 +91,7 @@ const loadCaseInfo = async () => {
       currentRecord.value = caseInfo;
     }
   } catch (error) {
-    console.error(error);
+    console.error('getCaseInfo', error);
     const msg = typeof error === 'string' ? error : (error?.msg || error?.message || '');
     if (!msg || msg.includes('未登录') || msg.includes('失效') || msg.includes('token')) {
       // 离线模式下不跳转登录,直接留在当前页