setting.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { GET_SETTING, UPDATE_SETTING } from "./constant";
  2. import defaultCover from "@/assets/cover.png";
  3. import { params } from "@/env";
  4. import axios from "./instance";
  5. import { fetchMapTiles } from "./map-tile";
  6. type ServeSetting = {
  7. settingsId?: string;
  8. pose?: string;
  9. cover?: string;
  10. mapType?: 'satellite' | 'standard',
  11. back?: string | null;
  12. mapId?: number | null
  13. locationModelName?: string | null
  14. };
  15. export type Setting = {
  16. id?: string;
  17. pose?: {
  18. position: SceneLocalPos;
  19. target: SceneLocalPos;
  20. panoInfo?: {
  21. panoId: any;
  22. modelId: string;
  23. posInModel: SceneLocalPos;
  24. rotInModel: SceneLocalPos;
  25. };
  26. };
  27. mapType: 'satellite' | 'standard',
  28. cover: string;
  29. back?: string | null;
  30. fov?: number;
  31. openCompass?: boolean;
  32. mapId?: number | null,
  33. locationModelName?: string
  34. };
  35. const toLocal = (serviceSetting: ServeSetting): Setting => ({
  36. id: serviceSetting.settingsId,
  37. pose: serviceSetting.pose && JSON.parse(serviceSetting.pose),
  38. cover: serviceSetting.cover || defaultCover,
  39. back: serviceSetting.back || undefined,
  40. mapType: serviceSetting.mapType || 'satellite',
  41. mapId: serviceSetting.mapId || undefined,
  42. locationModelName: serviceSetting.locationModelName || undefined,
  43. });
  44. const toService = (setting: Setting): ServeSetting => ({
  45. settingsId: setting.id,
  46. mapId: setting.mapId || null,
  47. pose: setting.pose && JSON.stringify(setting.pose),
  48. cover: setting.cover,
  49. back: setting.back || null,
  50. mapType: setting.mapType,
  51. locationModelName: setting.locationModelName || null,
  52. });
  53. export const fetchSetting = async () => {
  54. let data = await axios.get<ServeSetting[]>(GET_SETTING, {
  55. params: { caseId: params.caseId },
  56. });
  57. const tData = toLocal(data[0] || {})
  58. // if (!tData.back && !tData.mapId) {
  59. // const tiles = await fetchMapTiles()
  60. // tData.mapId = tiles[0].id
  61. // }
  62. return tData
  63. };
  64. export const updateSetting = async (setting: Setting) => {
  65. await axios.post(UPDATE_SETTING, {
  66. caseId: params.caseId,
  67. ...toService(setting),
  68. });
  69. };