app.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import { defineStore } from 'pinia';
  2. import { useTourStore } from './tour';
  3. import { getApp, useApp } from '/@/hooks/userApp';
  4. interface AppState {
  5. panoId: Nullable<string>;
  6. isLoaded: boolean;
  7. mode: string;
  8. flying: boolean;
  9. floorId: Nullable<string>;
  10. player: {
  11. lang: string;
  12. showVR: boolean;
  13. showMore: boolean;
  14. showDescription: boolean;
  15. showToolbar: boolean;
  16. showMap: boolean;
  17. showShare: boolean;
  18. showUserGuide: boolean;
  19. showWidgets: boolean;
  20. };
  21. router: any;
  22. controlsBottom: string;
  23. isTourMode: boolean; // 自由观看模式
  24. ttl: number;
  25. passWordConfirm: boolean;
  26. showIntroPanel: boolean;
  27. }
  28. export const useAppStore = defineStore({
  29. id: 'app',
  30. state: (): AppState => ({
  31. isLoaded: false,
  32. panoId: null,
  33. mode: 'panorama',
  34. flying: false,
  35. floorId: null,
  36. player: {
  37. lang: 'zh',
  38. showVR: false,
  39. showMore: false,
  40. showDescription: false,
  41. showToolbar: true,
  42. showMap: true,
  43. showShare: false,
  44. showUserGuide: false,
  45. showWidgets: true,
  46. },
  47. router: {},
  48. controlsBottom: '20px',
  49. isTourMode: true,
  50. ttl: -1,
  51. passWordConfirm: false,
  52. showIntroPanel: false,
  53. }),
  54. getters: {
  55. isPassWordConfirm(): boolean {
  56. return this.passWordConfirm;
  57. },
  58. isShowIntroPanel(): boolean {
  59. return this.showIntroPanel;
  60. },
  61. },
  62. actions: {
  63. setRoomValidTime(ttl: number): void {
  64. this.ttl = ttl;
  65. },
  66. setIsTourMode(payload: boolean): void {
  67. this.isTourMode = payload;
  68. const searchParams = new URLSearchParams(location.search);
  69. if (!searchParams.has('isTour')) {
  70. const isTour = payload ? '1' : '0';
  71. searchParams.set('isTour', isTour);
  72. location.search = searchParams.toString();
  73. }
  74. },
  75. setMode(payload: string): void {
  76. console.log('setMode', payload);
  77. if (payload == this.mode) {
  78. return;
  79. }
  80. this.flying = true;
  81. useApp().then((sdk) => {
  82. sdk.Camera[payload]()
  83. .then(() => {
  84. this.flying = false;
  85. })
  86. .catch(() => {
  87. this.flying = false;
  88. });
  89. });
  90. // if (payload == 'dollhouse') {
  91. // // setTimeout(() => {
  92. // // this.setFloor('all');
  93. // // }, 500);
  94. // }
  95. this.mode = payload;
  96. },
  97. setFloorId(id: string): void {
  98. console.log('setFloor-2', id);
  99. this.floorId = id;
  100. },
  101. setFlying(payload: boolean): void {
  102. this.flying = payload;
  103. },
  104. setFloor(id: string): void {
  105. this.floorId = id;
  106. console.log('setFloor-1', id);
  107. getApp().Scene.gotoFloor(id);
  108. },
  109. showVR(): void {
  110. this.player.showVR = !this.player.showVR;
  111. this.player.showWidgets = !this.player.showWidgets;
  112. getApp().Camera.vr();
  113. },
  114. showUserGuide(payload: boolean): void {
  115. this.player.showUserGuide = payload;
  116. },
  117. setControlsBottom(payload: string): void {
  118. this.controlsBottom = payload;
  119. },
  120. setPanoId(id: string) {
  121. this.panoId = id;
  122. },
  123. setPlayerOptions(payload) {
  124. for (const key in payload) {
  125. this.player[key] = payload[key];
  126. if (key == 'showSplit') {
  127. this.player.showWidgets = !payload[key];
  128. }
  129. }
  130. if (!this.player.showToolbar || this.player.showVR) {
  131. const tourStore = useTourStore();
  132. console.log('tourStore', tourStore);
  133. // debugger
  134. // this.commit('tour/setData', { showTours: false })
  135. // tourStore.setData({ showTours: false })
  136. }
  137. },
  138. isLoad() {
  139. this.isLoaded = true;
  140. },
  141. unLoad() {
  142. this.isLoaded = false;
  143. },
  144. setPasswordConfirm(status: boolean) {
  145. console.log('设置输入密码状态', status);
  146. this.passWordConfirm = status;
  147. },
  148. setShowIntroPanel(status: boolean) {
  149. this.showIntroPanel = status;
  150. },
  151. },
  152. });