gemercheung 2 tahun lalu
induk
melakukan
bb92dfdc03

+ 2 - 2
src/components/chatRoom/controls/actions.ts

@@ -4,7 +4,7 @@ import Dialog from '/@/components/basic/dialog';
 import { useApp } from '/@/hooks/userApp';
 import consola from 'consola';
 import { useSocket } from '/@/hooks/userSocket';
-import { useRoom } from '/@/hooks/useRoom';
+import { useRoom, SceneItemType } from '/@/hooks/useRoom';
 
 interface ActionDataType {
   type: string;
@@ -170,7 +170,7 @@ async function handleUserPaint(open: boolean | undefined) {
   }
 }
 
-const handleChangeScene = (data) => {
+const handleChangeScene = (data: SceneItemType) => {
   const { changeScene } = useRoom();
   changeScene(data);
 };

+ 16 - 3
src/components/chatRoom/index.vue

@@ -110,7 +110,17 @@
 </template>
 
 <script lang="ts" setup>
-  import { computed, nextTick, onMounted, onUnmounted, ref, unref, watch, watchEffect } from 'vue';
+  import {
+    computed,
+    nextTick,
+    onMounted,
+    onUnmounted,
+    Ref,
+    ref,
+    unref,
+    watch,
+    watchEffect,
+  } from 'vue';
   import { getApp, useApp } from '/@/hooks/userApp';
   import { initSocketEvent } from './roomControl';
   import { createSocket, useSocket } from '/@/hooks/userSocket';
@@ -123,7 +133,7 @@
   import chat from './chat.vue';
   import memberList from './memberList.vue';
   import SceneList from './sceneList.vue';
-  import { useRoom } from '/@/hooks/useRoom';
+  import { useRoom, SceneItemType } from '/@/hooks/useRoom';
   import consola from 'consola';
   // import Dialog from '../basic/dialog';
   import CloseDialog from './dialog/close.vue';
@@ -338,8 +348,11 @@
     shareLink.value = location.href;
   };
 
-  const changeScene = () => {
+  const changeScene = (scene: Ref<SceneItemType>) => {
+    const { changeScene } = useRoom();
     console.log('changeScene');
+
+    changeScene(unref(scene));
   };
 </script>
 

+ 21 - 3
src/hooks/useRoom.ts

@@ -1,11 +1,29 @@
 import browser from '/@/utils/browser';
 import axios from 'axios';
-import { ref, computed, unref } from 'vue';
+import { ref, computed, unref, Ref } from 'vue';
 
 const roomParam = browser.getURLParam('roomId');
 
 interface roomDataType {
-  sceneData: any[];
+  sceneData: SceneItemType[];
+}
+export interface SceneItemType {
+  id: number;
+  buildObjStatus: number;
+  createTime: string;
+  name: string;
+  num: string;
+  payStatus: number;
+  sceneName: string;
+  snCode: string;
+  status: number;
+  thumb: string;
+  title: string;
+  viewCount: number;
+  isLaser: boolean;
+  type: number;
+  phone: Nullable<string>;
+  bind: boolean;
 }
 
 export const room = ref<Nullable<roomDataType>>(null);
@@ -29,7 +47,7 @@ export const currentScene = computed(() => {
   return sceneList.value.find((scene) => scene.num === num);
 });
 
-export const changeScene = (scene) => {
+export const changeScene = (scene: SceneItemType) => {
   if (currentScene.value?.num !== scene.num) {
     console.log(scene, currentScene.value);
     const params = new URLSearchParams(location.search);

+ 22 - 22
src/utils/browser.ts

@@ -44,15 +44,15 @@ const browser = {
     dom.requestFullscreen
       ? dom.requestFullscreen()
       : dom.mozRequestFullScreen
-        ? dom.mozRequestFullScreen()
-        : dom.webkitRequestFullscreen
-          ? dom.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
-          : dom.msRequestFullscreen && dom.msRequestFullscreen(),
+      ? dom.mozRequestFullScreen()
+      : dom.webkitRequestFullscreen
+      ? dom.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)
+      : dom.msRequestFullscreen && dom.msRequestFullscreen(),
       t &&
-      $(document).on(
-        'fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange',
-        browser.requestPointerLock,
-      );
+        $(document).on(
+          'fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange',
+          browser.requestPointerLock,
+        );
   },
   requestPointerLock: function () {
     let e;
@@ -80,19 +80,19 @@ const browser = {
     document.exitFullscreen
       ? document.exitFullscreen()
       : document.msExitFullscreen
-        ? document.msExitFullscreen()
-        : document.mozCancelFullScreen
-          ? document.mozCancelFullScreen()
-          : document.webkitExitFullscreen && document.webkitExitFullscreen();
+      ? document.msExitFullscreen()
+      : document.mozCancelFullScreen
+      ? document.mozCancelFullScreen()
+      : document.webkitExitFullscreen && document.webkitExitFullscreen();
   },
   details: function () {
     const e = navigator.userAgent.match('(Firefox|Chrome|Safari)/([\\d]+)');
     return e
       ? {
-        name: e[1],
-        version: parseInt(e[2]),
-        platform: navigator.platform,
-      }
+          name: e[1],
+          version: parseInt(e[2]),
+          platform: navigator.platform,
+        }
       : {};
   },
   is: function (e) {
@@ -197,8 +197,8 @@ const browser = {
     const e = $.Deferred();
     return this.detectWebVR()
       ? (navigator.getVRDisplays().then(function (t) {
-        t.length >= 1 && e.resolve(t[0]), e.reject(null);
-      }),
+          t.length >= 1 && e.resolve(t[0]), e.reject(null);
+        }),
         e)
       : e.reject(null);
   },
@@ -222,8 +222,8 @@ const browser = {
     return 'boolean' == typeof t
       ? 'true' === n || '1' === n
       : 'number' == typeof t
-        ? parseFloat(n)
-        : n;
+      ? parseFloat(n)
+      : n;
   },
   valueFromHash: function (e, t) {
     const i = new RegExp('[#&?]' + e + '=([^#&?]*)'),
@@ -233,8 +233,8 @@ const browser = {
     return 'boolean' == typeof t
       ? 'true' === r || '1' === r
       : 'number' == typeof t
-        ? parseFloat(r)
-        : window.decodeURIComponent(r);
+      ? parseFloat(r)
+      : window.decodeURIComponent(r);
   },
   //-------许钟文:-------------------------------------------------