scene.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {
  2. addRelicsSceneFetch,
  3. delRelicsSceneFetch,
  4. relicsInfoFetch,
  5. relicsScenesFetch,
  6. updateRelicsFetch,
  7. updateRelicsScenePosNameFetch,
  8. } from "@/request";
  9. import { computed, ref } from "vue";
  10. import { Relics, RelicsScene, RelicsScenePoint } from "@/request/type";
  11. import { gHeaders } from "@/request/state";
  12. export type { RelicsScene, RelicsScenePoint };
  13. export const relics = ref<Relics>();
  14. export const scenes = ref<RelicsScene[]>([]);
  15. export const scenePoints = computed(() =>
  16. scenes.value.reduce((t, scene) => {
  17. t.push(...scene.scenePos);
  18. return t;
  19. }, [] as RelicsScenePoint[])
  20. );
  21. const fileNames = new Array(6).fill(0);
  22. export const getPointPano = (sceneCode: string, pid: number) =>
  23. fileNames.map(
  24. (_, i) =>
  25. `https://4dkk.4dage.com/scene_view_data/${sceneCode}/images/tiles/4k/${pid}_skybox${i}.jpg`
  26. );
  27. const refreshScenes = async (relicsId: number) => {
  28. scenes.value = await relicsScenesFetch(relicsId);
  29. };
  30. export const initRelics = async (relicsId: number) => {
  31. const data = await Promise.all([
  32. relicsInfoFetch(relicsId),
  33. refreshScenes(relicsId),
  34. ]);
  35. [relics.value] = data;
  36. };
  37. export const updateRelicsName = async (name: string) => {
  38. await updateRelicsFetch({ ...relics.value!, name });
  39. relics.value!.name = name;
  40. };
  41. export const addScene = async (sceneCode: string) => {
  42. await addRelicsSceneFetch(relics.value!.relicsId, sceneCode);
  43. await refreshScenes(relics.value!.relicsId);
  44. };
  45. export const delScene = async (scene: RelicsScene) => {
  46. await delRelicsSceneFetch(relics.value!.relicsId, scene.id);
  47. await refreshScenes(relics.value!.relicsId);
  48. };
  49. export const updateScenePointName = async (
  50. point: RelicsScenePoint,
  51. newName: string
  52. ) => {
  53. await updateRelicsScenePosNameFetch(point.id, newName);
  54. if (relics.value) {
  55. await refreshScenes(relics.value.relicsId);
  56. }
  57. };
  58. export const gotoScene = (scene: RelicsScene) => {
  59. const params = new URLSearchParams();
  60. params.set("m", scene.sceneCode);
  61. params.set("token", gHeaders.token);
  62. params.set("lang", "zh");
  63. if (scene.sceneCode.startsWith("KJ")) {
  64. window.open(`https://test.4dkankan.com/spg.html?` + params.toString());
  65. } else {
  66. window.open(`https://uat-laser.4dkankan.com/uat/?` + params.toString());
  67. }
  68. };