Преглед на файлове

Merge branch 'master' of http://192.168.0.115:3000/tangning/SichuanDaily

gemercheung преди 9 месеца
родител
ревизия
bee90a1d23
променени са 9 файла, в които са добавени 142 реда и са изтрити 90 реда
  1. 2 0
      .env
  2. 1 0
      .env.development
  3. 2 3
      src/App.vue
  4. 50 27
      src/sdk.js
  5. 2 1
      src/views/basicSettings/index.vue
  6. 3 3
      src/views/message/index.vue
  7. 27 16
      src/views/topicNavigation/index.vue
  8. 10 0
      vite-env.d.ts
  9. 45 40
      vite.config.ts

+ 2 - 0
.env

@@ -0,0 +1,2 @@
+VITE_KANKAN_PROXY=https://vr-test.scdjw.com.cn
+VITE_KANKAN_PREFIX=

+ 1 - 0
.env.development

@@ -0,0 +1 @@
+VITE_KANKAN_PREFIX=/kankan

+ 2 - 3
src/App.vue

@@ -123,8 +123,7 @@ import { RouterLink } from 'vue-router'
 import { NIcon } from 'naive-ui'
 import { useUrlSearchParams } from '@vueuse/core'
 
-const params = useUrlSearchParams('hash')
-
+const params = useUrlSearchParams('history')
 const route = useRoute()
 const activeKey = ref(route.name)
 
@@ -273,7 +272,7 @@ onMounted(() => {
   const sceneCode = params.m ? String(params.m) : 'KJ-t-3Y6dxgyehDk'
   main.setSceneCode(sceneCode)
   main.getSceneInfo()
-  setSceneLink(`/page/spg.html?m=${main.sceneCode}`)
+  setSceneLink(`${import.meta.env.VITE_KANKAN_PREFIX}/spg.html?m=${main.sceneCode}`)
   setSceneRef(sceneRef.value)
 })
 

+ 50 - 27
src/sdk.js

@@ -6,52 +6,75 @@ let __mount_list = []
 
 const deferred = Deferred()
 
+const unloadHandler = function() {
+   __sdk = null
+   __doc = null
+}
+
 export const sdk = deferred.promise()
 export const sdk_mounted = (cb) => {
-  __mount_list.push(cb)
   if (__sdk) {
     cb(__sdk)
+  } else {
+    __mount_list.push(cb)
   }
 }
+export const sdk_unmounted = ()=>[
+  unloadHandler()
+]
 
 export function setupSDK(iframe) {
   __sdk = iframe.contentWindow.__sdk
   __doc = iframe.contentDocument
-  __mount_list.forEach((cb) => cb(__sdk))
+
+  iframe.contentWindow.removeEventListener("unload", unloadHandler);
+  iframe.contentWindow.addEventListener("unload", unloadHandler);
+
+  let cb = null
+  while((cb = __mount_list.shift()) && cb) {
+    cb(__sdk)
+  }
   deferred.resolveValue(__sdk)
 }
 
 export function insertStyle(style) {
-    __doc.body.insertAdjacentHTML('beforeend', style)
+  __doc.body.insertAdjacentHTML('beforeend', style)
 }
 
-export function clearScreen(clear) {
+export function clearScreen(clear,retry=0) {
   if (__doc) {
-    const button = __doc.body.querySelector('.clear-screen-btn')
-    if (button) {
-      if (clear) {
-        if (button.querySelector('i').classList.contains('icon-hide_y')) {
-          button.style.visibility = 'hidden'
-          button.click()
-        }
-      } else {
-        button.style.visibility = 'visible'
-        if (button.querySelector('i').classList.contains('icon-hide_n')) {
-          button.click()
-        }
+    let button = __doc.body.querySelector('.clear-screen-btn')
+    if (button == void 0) {
+      if(retry > 50) {
+        return
+      }
+      return setTimeout(() => {
+        clearScreen(clear,++retry)
+      }, 200);
+    }
+    if (clear) {
+      if (button.querySelector('i').classList.contains('icon-hide_y')) {
+        button.style.visibility = 'hidden'
+        button.click()
+      }
+    } else {
+      button.style.visibility = 'visible'
+      if (button.querySelector('i').classList.contains('icon-hide_n')) {
+        button.click()
       }
     }
   }
 }
 
-sdk_mounted(()=>{
-    insertStyle(
-        `<style>
-            .kankan-app__split .player[name='main'] {
-                width:100% !important;
-            }
-            .kankan-app__split .player[name='copy'] {
-                display:none !important;
-            }
-        </style>`)
-})
+// sdk_mounted(() => {
+//   insertStyle(
+//     `<style>
+//         .kankan-app__split .player[name='main'] {
+//             width:100% !important;
+//         }
+//         .kankan-app__split .player[name='copy'] {
+//             display:none !important;
+//         }
+//     </style>`
+//   )
+// })

+ 2 - 1
src/views/basicSettings/index.vue

@@ -66,7 +66,7 @@ import {
   onUnmounted
 } from 'vue'
 import { useMainStore } from '@/store'
-import { sdk } from '@/sdk'
+import { sdk, sdk_unmounted } from '@/sdk'
 // import { useMessage } from 'naive-ui'
 defineProps<{ msg: string }>()
 
@@ -146,6 +146,7 @@ onMounted(() => {
 })
 onUnmounted(() => {
   if (basicConfig.value.mode == 'mobile') {
+    sdk_unmounted()
     main.setSceneMode('pc')
   }
 })

+ 3 - 3
src/views/message/index.vue

@@ -71,7 +71,7 @@ import {
   delMessage
 } from '@/api/module/message'
 import type { MessageItem } from './type'
-import { sdk } from '@/sdk'
+import { sdk, sdk_mounted } from '@/sdk'
 
 const show = ref(true)
 defineProps<{ msg: string }>()
@@ -101,7 +101,7 @@ const refresh = async () => {
 const handleMessageClick = async (ms: MessageItem) => {
   const sid = ms.content.sid
   console.log('sid', sid)
-  sdk.then((sdk) => {
+  sdk_mounted((sdk) => {
     sdk.TagManager.openTag(sid) // 打开热点
   })
 }
@@ -144,7 +144,7 @@ const handleSelect = async (key: string, ms: MessageItem) => {
             id: Number(ms.id),
             num: main.sceneCode
           })
-          sdk.then((sdk) => {
+          sdk_mounted((sdk) => {
             sdk.TagManager.removeTag(ms.content.sid) // 打开热点
           })
           await refresh()

+ 27 - 16
src/views/topicNavigation/index.vue

@@ -124,7 +124,7 @@
 
 <script setup lang="ts">
 import { computed, ref, watch, watchEffect } from 'vue'
-import { sdk, clearScreen } from '@/sdk'
+import { sdk, clearScreen, sdk_mounted } from '@/sdk'
 import { onMounted, onUnmounted } from 'vue'
 import {
   // NRadio,
@@ -152,19 +152,14 @@ const dataList = ref<
   }[]
 >([])
 
-sdk.then((sdk) => {
-  sdk.PanoCheckManager.on('changed', (list: any) => {
-    panos.value = list
-    console.log('panos', panos.value)
-  })
-})
-
 const handleAdd = () => {
   dataList.value.push({
     title: '新增路线',
     panos: []
   })
 
+  handleSelect("1",dataList.value.length-1)
+
   main.syncNavigation(dataList.value)
 }
 watchEffect(() => {
@@ -172,18 +167,13 @@ watchEffect(() => {
     dataList.value = naviData.value
   }
 })
+
 onMounted(() => {
-  sdk.then((sdk) => {
-    sdk.Scene.whenLoaded(() => {
-      sdk.PanoCheckManager.enter()
-      // debugger
-      clearScreen(true)
-    })
-  })
+ 
 })
 
 onUnmounted(() => {
-  sdk.then((sdk) => {
+  sdk_mounted((sdk) => {
     sdk.PanoCheckManager.leave()
     clearScreen(false)
   })
@@ -223,6 +213,16 @@ const handleListEdit = (index: number) => {
   console.log('handleListEdit', index)
   currentPanoEditing.value = index
   isPanoEditing.value = true
+  
+  sdk_mounted((sdk) => {
+    sdk.Scene.whenLoaded(() => {
+      sdk.PanoCheckManager.enter(dataList.value[index].panos)
+      sdk.PanoCheckManager.echo((list: any) => {
+        panos.value = list
+      })
+      clearScreen(true)
+    })
+  })
 }
 
 const handleListDel = (index: number) => {
@@ -240,10 +240,21 @@ const handleItem = (index: number) => {
 const handleItemSubmit = () => {
   isPanoEditing.value = false
   main.syncNavigation(dataList.value)
+  sdk_mounted((sdk) => {
+    // 重置状态
+    sdk.PanoCheckManager.leave()
+  })
 }
 const handlePanoDel = (index: number) => {
   const origin = dataList.value[currentPanoEditing.value].panos
+  const panoId = origin[index]
   origin && origin.splice(index, 1)
+  sdk_mounted((sdk) => {
+    sdk.Scene.whenLoaded(() => {
+      sdk.PanoCheckManager.setPanoChecked(panoId,false)
+    })
+  })
+ 
 }
 watch(
   [panos, isPanoEditing],

+ 10 - 0
vite-env.d.ts

@@ -0,0 +1,10 @@
+/// <reference types="vite/client" />
+
+interface ImportMetaEnv {
+    readonly VITE_KANKAN_PROXY: string
+    readonly VITE_KANKAN_PREFIX: string
+  }
+  
+  interface ImportMeta {
+    readonly env: ImportMetaEnv
+  }

+ 45 - 40
vite.config.ts

@@ -1,6 +1,6 @@
 /// <reference types="vitest" />
 
-import { defineConfig, Plugin } from 'vite'
+import { defineConfig, Plugin,loadEnv } from 'vite'
 import vue from '@vitejs/plugin-vue'
 import tsconfigPaths from 'vite-tsconfig-paths'
 import vueJsx from '@vitejs/plugin-vue-jsx'
@@ -21,49 +21,54 @@ if (process.env.CYPRESS_TEST === 'true') {
   // )
 }
 
+
+
 // https://vitejs.dev/config/
 //@ts-ignore
-export default defineConfig(({ mode }) => ({
-  plugins,
-  test: {
-    server: {
-      deps: {
-        inline: ['date-fns']
+export default defineConfig(({ mode }) => {
+  const viteEnv = loadEnv(mode, process.cwd())
+  const { VITE_KANKAN_PROXY } = viteEnv
+  return {
+    plugins,
+    test: {
+      server: {
+        deps: {
+          inline: ['date-fns']
+        }
+      },
+      environment: 'happy-dom',
+      globals: true,
+      coverage: {
+        all: true,
+        exclude: [
+          '*.config.{ts,js}',
+          '**/*.d.ts',
+          'src/main.ts',
+          'dist',
+          'test'
+        ],
+        functions: 80,
+        branches: 80,
+        statements: 80
       }
     },
-    environment: 'happy-dom',
-    globals: true,
-    coverage: {
-      all: true,
-      exclude: ['*.config.{ts,js}', '**/*.d.ts', 'src/main.ts', 'dist', 'test'],
-      functions: 80,
-      branches: 80,
-      statements: 80
-    }
-  },
-  build: {
-    sourcemap: mode === 'production' ? false : 'inline'
-  },
-  server: {
-    port: 3600,
-    proxy: {
-      // '/service': {
-      //   target: 'https://vr-test.scdjw.com.cn',
-      //   changeOrigin: true
-      // },
-      // '/scene_view_data': {
-      //   target: 'https://djqk-vr.obsv3.scrb-cd-1.sichuandaily.com.cn',
-      //   changeOrigin: true
-      // },
-      '/service': {
-        target: 'https://vr-test.scdjw.com.cn',
-        changeOrigin: true
-      },
-      '/page': {
-        target: 'https://vr-test.scdjw.com.cn',
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/page/, '')
+    publicDir:"",
+    build: {
+      sourcemap: mode === 'production' ? false : 'inline'
+    },
+    server: {
+      port: 3600,
+      proxy: {
+        '/service': {
+          target: 'https://vr-test.scdjw.com.cn',
+          changeOrigin: true
+        },
+        '/kankan': {
+          target: VITE_KANKAN_PROXY,
+          changeOrigin: true,
+          rewrite: (path) => path.replace(/^\/kankan/, '')
+        }
       }
     }
   }
-}))
+})