import { addRelicsSceneFetch, delRelicsSceneFetch, relicsInfoFetch, relicsScenesFetch, updateRelicsFetch, updateRelicsScenePosNameFetch, } from "@/request"; import { computed, ref } from "vue"; import { Relics, RelicsScene, RelicsScenePoint } from "@/request/type"; import { gHeaders } from "@/request/state"; export type { RelicsScene, RelicsScenePoint }; export const relics = ref(); export const scenes = ref([]); export const scenePoints = computed(() => scenes.value.reduce((t, scene) => { t.push(...scene.scenePos); return t; }, [] as RelicsScenePoint[]) ); const fileNames = new Array(6).fill(0); export const getPointPano = (sceneCode: string, pid: number) => fileNames.map( (_, i) => `https://4dkk.4dage.com/scene_view_data/${sceneCode}/images/tiles/4k/${pid}_skybox${i}.jpg` ); const refreshScenes = async (relicsId: number) => { scenes.value = await relicsScenesFetch(relicsId); }; export const initRelics = async (relicsId: number) => { const data = await Promise.all([ relicsInfoFetch(relicsId), refreshScenes(relicsId), ]); [relics.value] = data; }; export const updateRelicsName = async (name: string) => { await updateRelicsFetch({ ...relics.value!, name }); relics.value!.name = name; }; export const addScene = async (sceneCode: string) => { await addRelicsSceneFetch(relics.value!.relicsId, sceneCode); await refreshScenes(relics.value!.relicsId); }; export const delScene = async (scene: RelicsScene) => { await delRelicsSceneFetch(relics.value!.relicsId, scene.id); await refreshScenes(relics.value!.relicsId); }; export const updateScenePointName = async ( point: RelicsScenePoint, newName: string ) => { await updateRelicsScenePosNameFetch(point.id, newName); if (relics.value) { await refreshScenes(relics.value.relicsId); } }; export const gotoScene = (scene: RelicsScene) => { const params = new URLSearchParams(); params.set("m", scene.sceneCode); params.set("token", gHeaders.token); params.set("lang", "zh"); if (scene.sceneCode.startsWith("KJ")) { window.open(`https://test.4dkankan.com/spg.html?` + params.toString()); } else { window.open(`https://uat-laser.4dkankan.com/uat/?` + params.toString()); } };