Browse Source

fix: 修改bug

bill 1 year ago
parent
commit
3d62b0fbc0

+ 3 - 3
src/App.vue

@@ -1,9 +1,9 @@
 <template>
   <Locale>
     <RouterView v-slot="{ Component }">
-      <KeepAlive>
-        <component :is="Component" />
-      </KeepAlive>
+      <!-- <KeepAlive> -->
+      <component :is="Component" />
+      <!-- </KeepAlive> -->
     </RouterView>
 
     <div id="dialog"></div>

+ 3 - 2
src/components/tex-tooltip.vue

@@ -12,9 +12,9 @@
 </template>
 
 <script setup lang="ts">
-import { onMounted, onUnmounted, ref } from "vue";
+import { onMounted, onUnmounted, ref, watch } from "vue";
 
-defineProps<{ text?: any }>();
+const props = defineProps<{ text?: any }>();
 
 const dom = ref<HTMLSpanElement>();
 const sample = ref(false);
@@ -27,6 +27,7 @@ const initSample = () => {
     }, 100);
   }
 };
+watch(props, initSample);
 
 onMounted(initSample);
 onUnmounted(() => {

+ 1 - 1
src/view/layout/nav.vue

@@ -26,7 +26,7 @@
       <ly-slide class="slide" v-if="user && !['pano', 'map'].includes(name)" />
       <div class="view">
         <RouterView v-slot="{ Component }">
-          <KeepAlive>
+          <KeepAlive :include="['pano', 'map', 'query-map', 'query-pano']">
             <component :is="Component" />
           </KeepAlive>
         </RouterView>

+ 44 - 32
src/view/map/map-right.vue

@@ -44,13 +44,21 @@
                   <span class="tree-scene-name">{{ node.label }}</span>
                 </span>
               </el-tooltip>
-              <span :class="{ disable: data.disable }" class="title" v-else>
-                <el-icon>
-                  <LocationInformation v-if="!data.disable" />
-                  <DeleteLocation v-else />
-                </el-icon>
-                {{ node.label }}
-              </span>
+              <el-tooltip
+                v-else
+                class="box-item"
+                effect="dark"
+                :content="node.label"
+                placement="top"
+              >
+                <span :class="{ disable: data.disable }" class="title">
+                  <el-icon>
+                    <LocationInformation v-if="!data.disable" />
+                    <DeleteLocation v-else />
+                  </el-icon>
+                  {{ node.label }}
+                </span>
+              </el-tooltip>
               <span class="oper">
                 <template v-if="router.currentRoute.value.name === 'map'">
                   <template v-if="data.type === 'scene'">
@@ -76,31 +84,33 @@
       </div>
     </div>
 
-    <el-button
-      type="primary"
-      :icon="Download"
-      style="width: 100%"
-      @click="exportFile(getSelectPoints(), 2)"
-    >
-      导出本体边界坐标
-    </el-button>
-    <el-button
-      type="primary"
-      :icon="Download"
-      style="width: 100%; margin-top: 20px; margin-left: 0"
-      @click="exportFile(getSelectPoints(), 1)"
-    >
-      导出绘制矢量数据
-    </el-button>
+    <template v-if="router.currentRoute.value.name === 'map'">
+      <el-button
+        type="primary"
+        :icon="Download"
+        style="width: 100%"
+        @click="exportFile(getSelectPoints(), 2)"
+      >
+        导出本体边界坐标
+      </el-button>
+      <el-button
+        type="primary"
+        :icon="Download"
+        style="width: 100%; margin-top: 20px; margin-left: 0"
+        @click="exportFile(getSelectPoints(), 1)"
+      >
+        导出绘制矢量数据
+      </el-button>
 
-    <el-button
-      type="primary"
-      :icon="Download"
-      style="width: 100%; margin-top: 20px; margin-left: 0"
-      @click="exportImage(getSelectPoints(), relics?.name)"
-    >
-      下载全景图
-    </el-button>
+      <el-button
+        type="primary"
+        :icon="Download"
+        style="width: 100%; margin-top: 20px; margin-left: 0"
+        @click="exportImage(getSelectPoints(), relics?.name)"
+      >
+        下载全景图
+      </el-button>
+    </template>
   </div>
 
   <SingleInput
@@ -193,7 +203,6 @@ const addHandler = async () => {
         .filter((sceneCode) => !nScene.some((scene) => scene.sceneCode === sceneCode))
         .map((sceneCode) => scenes.value.find((scene) => scene.sceneCode === sceneCode)!);
 
-      console.log(nScene, delScenes);
       delScenes.length && requests.push(delRelicsScenes(delScenes));
 
       const addScenes = nScene.filter(({ sceneCode }) => !sceneCodes.includes(sceneCode));
@@ -240,6 +249,9 @@ const addSceneHandler = async (scenes: Pick<Scene, "sceneId" | "sceneCode">[]) =
     flex: none;
   }
 }
+.disable {
+  pointer-events: all;
+}
 
 .tree-layout {
   p {

+ 29 - 6
src/view/map/map.vue

@@ -92,6 +92,7 @@ const gotoPoint = (point: ScenePoint) => {
 };
 
 const flyUserCenter = () => {
+  mapManage.setCenter([116.412611, 39.908866]);
   navigator.geolocation.getCurrentPosition(
     (pos) => {
       mapManage.setCenter([pos.coords.longitude, pos.coords.latitude]);
@@ -196,12 +197,7 @@ watch(
         if (!relics.value) {
           router.replace({ name: "relics" });
         }
-        const scene = scenes.value.find(
-          (scene) => !scene.scenePos.every((pos) => !pos.pos || pos.pos.length === 0)
-        );
-        if (scene) {
-          flyScene(scene);
-        } else {
+        if (!autoInitPos()) {
           flyUserCenter();
         }
       });
@@ -209,6 +205,33 @@ watch(
   },
   { immediate: true }
 );
+
+const autoInitPos = () => {
+  const scene = scenes.value.find(
+    (scene) => !scene.scenePos.every((pos) => !pos.pos || pos.pos.length === 0)
+  );
+  if (scene) {
+    flyScene(scene);
+    return true;
+  } else {
+    return false;
+  }
+};
+
+watch(
+  () => {
+    const scene = scenes.value.find(
+      (scene) => !scene.scenePos.every((pos) => !pos.pos || pos.pos.length === 0)
+    );
+    return scene?.sceneCode;
+  },
+  (firstCode) => {
+    if (firstCode) {
+      autoInitPos();
+    }
+  }
+);
+
 watchEffect(() => {
   if (
     ["map", "query-map"].includes(router.currentRoute.value.name as string) &&

+ 1 - 1
src/view/map/pc4Helper.ts

@@ -30,7 +30,7 @@ export const exportFile = async (points: ScenePoint[], type: number) => {
   } else if (type === 2) {
     await downloadPointsXLSL2(
       points.map((point) => point.pos),
-      points.map((point) => ({ title: point.name, desc: point.name })),
+      points.map((point) => ({ title: point.name, desc: "无" })),
       "本体边界坐标"
     );
   } else {

+ 6 - 7
src/view/scene-select.vue

@@ -21,6 +21,7 @@ const props = defineProps<{
   scenes: SimpleScene[];
   selfScenes?: SimpleScene[];
 }>();
+
 const simpleScenes = ref([...props.scenes]);
 const originScenes = ref<Scene[]>([]);
 const scenes = computed(() =>
@@ -36,7 +37,9 @@ const tableProps = {
     const originSceneCodes = originScenes.value.map((scene) => scene.sceneCode);
 
     simpleScenes.value = simpleScenes.value.filter(
-      ({ sceneCode }) => !originSceneCodes.includes(sceneCode)
+      ({ sceneCode }) =>
+        !originSceneCodes.includes(sceneCode) ||
+        !val.some((scene) => scene.sceneCode === sceneCode)
     );
 
     let tip = false;
@@ -73,6 +76,7 @@ const tableProps = {
       }
     }
 
+    console.log([...simpleScenes.value]);
     tip = false;
   },
   tableDataChange(val: Scene[]) {
@@ -101,12 +105,7 @@ watch(tableProps.tableRef, checkedTable);
 defineExpose<QuiskExpose>({
   async submit() {
     if (scenes.value) {
-      await props.submit(
-        scenes.value.map((scene) => ({
-          sceneCode: scene.sceneCode,
-          sceneId: scene.sceneId,
-        }))
-      );
+      await props.submit(simpleScenes.value);
     }
   },
 });