Kaynağa Gözat

fix: 修改bug

bill 1 yıl önce
ebeveyn
işleme
1985d5e68a

+ 17 - 6
src/request/index.ts

@@ -122,23 +122,34 @@ export const updateRelicsFetch = (relics: Relics) =>
     body: JSON.stringify(relics),
   });
 
-export const relicsScenesFetch = (relicsId: number) =>
-  sendFetch<Scene[]>(
+export const relicsScenesFetch = async (relicsId: number) => {
+  const scenes = await sendFetch<Scene[]>(
     URL.getRelicsScenes,
     { method: "post", body: JSON.stringify({}) },
     { paths: { relicsId } }
   );
 
-export const addRelicsSceneFetch = (relicsId: number, sceneCode: string) =>
+  scenes.forEach((scene) => {
+    scene.sceneId = scene.id;
+  });
+  return scenes;
+};
+export const addRelicsScenesFetch = (
+  relicsId: number,
+  scenes: Pick<Scene, "sceneCode" | "id">[]
+) =>
   sendFetch(
     URL.addRelicsScene,
-    { method: "post", body: JSON.stringify({ sceneCode }) },
+    { method: "post", body: JSON.stringify(scenes) },
     { paths: { relicsId } }
   );
-export const delRelicsSceneFetch = (relicsId: number, sceneId: number) =>
+export const delRelicsScenesFetch = (
+  relicsId: number,
+  scenes: Pick<Scene, "sceneCode" | "id">[]
+) =>
   sendFetch(
     URL.delRelicsScene,
-    { method: "post", body: JSON.stringify({ id: sceneId }) },
+    { method: "post", body: JSON.stringify(scenes) },
     { paths: { relicsId } }
   );
 export const updateRelicsScenePosNameFetch = (posId: number, name: string) =>

+ 2 - 15
src/store/scene.ts

@@ -1,9 +1,4 @@
-import {
-  addRelicsSceneFetch,
-  delRelicsSceneFetch,
-  relicsScenesFetch,
-  updateRelicsScenePosNameFetch,
-} from "@/request";
+import { relicsScenesFetch, updateRelicsScenePosNameFetch } from "@/request";
 import { computed, ref } from "vue";
 import { Scene, ScenePoint } from "@/request/type";
 import { gHeaders } from "@/request/state";
@@ -18,6 +13,7 @@ export const scenePoints = computed(() =>
     t.push(
       ...scene.scenePos.map((point) => ({
         ...point,
+
         cameraType: scene.cameraType,
       }))
     );
@@ -45,15 +41,6 @@ export const refreshScenes = async () => {
   scenes.value = await relicsScenesFetch(relicsId.value);
 };
 
-export const addRelicsScene = async (sceneCode: string) => {
-  await addRelicsSceneFetch(relicsId.value, sceneCode);
-  await refreshScenes();
-};
-export const delRelicsScene = async (scene: Scene) => {
-  await delRelicsSceneFetch(relicsId.value, scene.id);
-  await refreshScenes();
-};
-
 export const updateScenePointName = async (
   point: ScenePoint,
   newName: string

+ 2 - 2
src/view/login.vue

@@ -122,8 +122,8 @@ const verify = ref<any>();
 const isPassing2 = ref(false);
 // 表单
 const form = reactive({
-  phone: import.meta.env.DEV ? "15915816041" : "",
-  psw: import.meta.env.DEV ? "4DAge123456" : "",
+  phone: import.meta.env.DEV ? "13631262926" : "",
+  psw: import.meta.env.DEV ? "Junpeng123" : "",
 });
 const verification = reactive({ phone: "", psw: "" });
 // 验证

+ 26 - 29
src/view/map/map-right.vue

@@ -54,7 +54,7 @@
                 <template v-if="router.currentRoute.value.name === 'map'">
                   <template v-if="data.type === 'scene'">
                     <el-icon color="#409efc" v-if="data.raw.creationMethod !== 2">
-                      <Delete @click.stop="delRelicsScene(data.raw)" />
+                      <Delete @click.stop="delRelicsScenes([data.raw])" />
                     </el-icon>
                   </template>
                   <el-icon v-else color="#409efc">
@@ -128,7 +128,6 @@ import {
   Scene,
   scenes,
   ScenePoint,
-  delRelicsScene,
   updateScenePointName,
   gotoScene,
   relicsId,
@@ -136,10 +135,9 @@ import {
 } from "@/store/scene";
 import { relics } from "@/store/relics";
 import SingleInput from "@/components/single-input.vue";
-import { ElMessage } from "element-plus";
 import { router } from "@/router";
 import { selectScenes } from "../quisk";
-import { addRelicsSceneFetch, delRelicsSceneFetch } from "@/request";
+import { addRelicsScenesFetch, delRelicsScenesFetch } from "@/request";
 import { exportFile, exportImage } from "./pc4Helper";
 
 const emit = defineEmits<{
@@ -187,38 +185,37 @@ const getSelectPoints = () =>
 const addHandler = async () => {
   const sceneCodes = scenes.value.map((scene) => scene.sceneCode);
   await selectScenes({
-    sceneCodes: sceneCodes,
-    selfSceneCodes: scenes.value
-      .filter((scene) => scene.creationMethod === 2)
-      .map((scene) => scene.sceneCode),
-    submit: async (nSceneCodes) => {
+    scenes: scenes.value,
+    selfScenes: scenes.value.filter((scene) => scene.creationMethod === 2),
+    submit: async (nScene) => {
       const requests: Promise<any>[] = [];
-      for (let i = 0; i < sceneCodes.length; i++) {
-        if (!nSceneCodes.includes(sceneCodes[i])) {
-          requests.push(delRelicsSceneFetch(relicsId.value, scenes.value[i].id));
-        }
-      }
-      for (let i = 0; i < nSceneCodes.length; i++) {
-        if (!sceneCodes.includes(nSceneCodes[i])) {
-          requests.push(addSceneHandler(nSceneCodes[i]));
-        }
-      }
+      const delScenes = sceneCodes
+        .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));
+      addScenes.length && requests.push(addSceneHandler(addScenes));
 
       await Promise.all(requests);
+      requests.length && (await refreshScenes());
     },
   });
-  await refreshScenes();
 };
 
-const addSceneHandler = async (sceneCode: string) => {
-  const sceneTypes = ["SS", "KJ", "SG"];
-  if (sceneTypes.every((type) => !sceneCode.startsWith(type))) {
-    ElMessage.error("场景码不正确");
-    throw "场景码不正确";
-  } else {
-    await addRelicsSceneFetch(relicsId.value!, sceneCode);
-  }
-};
+const delRelicsScenes = (scenes: Pick<Scene, "sceneId" | "sceneCode">[]) =>
+  delRelicsScenesFetch(
+    relicsId.value,
+    scenes.map((item) => ({ sceneCode: item.sceneCode, id: item.sceneId }))
+  );
+
+const addSceneHandler = async (scenes: Pick<Scene, "sceneId" | "sceneCode">[]) =>
+  await addRelicsScenesFetch(
+    relicsId.value!,
+    scenes.map((item) => ({ sceneCode: item.sceneCode, id: item.sceneId }))
+  );
 </script>
 
 <style lang="scss" scoped>

+ 28 - 18
src/view/scene-select.vue

@@ -15,15 +15,18 @@ import { ElMessage, ElTable } from "element-plus";
 import { QuiskExpose } from "@/helper/mount";
 import { Scene, SceneStatus } from "@/store/scene";
 
+type SimpleScene = Pick<Scene, "sceneId" | "sceneCode">;
 const props = defineProps<{
-  submit: (sceneCodes: string[]) => Promise<any>;
-  sceneCodes: string[];
-  selfSceneCodes?: string[];
+  submit: (scenes: SimpleScene[]) => Promise<any>;
+  scenes: SimpleScene[];
+  selfScenes?: SimpleScene[];
 }>();
-const sceneCodes = ref([...props.sceneCodes]);
+const simpleScenes = ref([...props.scenes]);
 const originScenes = ref<Scene[]>([]);
 const scenes = computed(() =>
-  originScenes.value.filter((scene) => sceneCodes.value.includes(scene.sceneCode))
+  originScenes.value.filter((scene) =>
+    simpleScenes.value.some(({ sceneCode }) => scene.sceneCode === sceneCode)
+  )
 );
 
 const loaded = ref(false);
@@ -31,11 +34,13 @@ const tableProps = {
   selectionChange(val: Scene[]) {
     if (!loaded.value) return;
     const originSceneCodes = originScenes.value.map((scene) => scene.sceneCode);
-    sceneCodes.value = sceneCodes.value.filter(
-      (code) => !originSceneCodes.includes(code)
+
+    simpleScenes.value = simpleScenes.value.filter(
+      ({ sceneCode }) => !originSceneCodes.includes(sceneCode)
     );
+
     let tip = false;
-    sceneCodes.value.push(
+    simpleScenes.value.push(
       ...val
         .filter((scene) => {
           if (scene.calcStatus !== SceneStatus.SUCCESS) {
@@ -47,21 +52,21 @@ const tableProps = {
             return true;
           }
         })
-        .map((scene) => scene.sceneCode)
+        .map((scene) => ({ sceneCode: scene.sceneCode, sceneId: scene.sceneId }))
     );
 
-    sceneCodes.value.filter;
-
-    if (props.selfSceneCodes) {
-      const foreChecks = props.selfSceneCodes.filter(
-        (selfCode) => !sceneCodes.value.includes(selfCode)
+    if (props.selfScenes) {
+      const foreChecks = props.selfScenes.filter(
+        ({ sceneCode }) =>
+          !simpleScenes.value.some((scene) => scene.sceneCode === sceneCode)
       );
-      console.log(props.selfSceneCodes, foreChecks);
+
       if (foreChecks.length) {
         tip || ElMessage.error({ message: "自动场景无法取消!", repeatNum: 1 });
-        sceneCodes.value.push(...foreChecks);
+
+        simpleScenes.value.push(...foreChecks);
         originScenes.value.forEach((scene) => {
-          if (foreChecks.includes(scene.sceneCode)) {
+          if (foreChecks.some(({ sceneCode }) => sceneCode === scene.sceneCode)) {
             tableProps.tableRef.value!.toggleRowSelection(scene, true);
           }
         });
@@ -96,7 +101,12 @@ watch(tableProps.tableRef, checkedTable);
 defineExpose<QuiskExpose>({
   async submit() {
     if (scenes.value) {
-      await props.submit(scenes.value.map((scene) => scene.sceneCode));
+      await props.submit(
+        scenes.value.map((scene) => ({
+          sceneCode: scene.sceneCode,
+          sceneId: scene.sceneId,
+        }))
+      );
     }
   },
 });