tangning 1 год назад
Родитель
Сommit
a4ac3d2543
100 измененных файлов с 0 добавлено и 11699 удалено
  1. 0 19
      packages/qjkankan-kankan-view/.env
  2. 0 21
      packages/qjkankan-kankan-view/.env.development
  3. 0 21
      packages/qjkankan-kankan-view/.env.eurprod
  4. 0 21
      packages/qjkankan-kankan-view/.env.eurtestprod
  5. 0 21
      packages/qjkankan-kankan-view/.env.prod
  6. 0 21
      packages/qjkankan-kankan-view/.env.testprod
  7. 0 21
      packages/qjkankan-kankan-view/.env.testserve
  8. 0 23
      packages/qjkankan-kankan-view/.gitignore
  9. 0 24
      packages/qjkankan-kankan-view/README.md
  10. 0 3
      packages/qjkankan-kankan-view/babel.config.js
  11. 0 1
      packages/qjkankan-kankan-view/jsconfig.json
  12. 0 32
      packages/qjkankan-kankan-view/package.json
  13. BIN
      packages/qjkankan-kankan-view/public/favicon.png
  14. 0 50
      packages/qjkankan-kankan-view/public/smg.html
  15. 0 26
      packages/qjkankan-kankan-view/public/spg.html
  16. BIN
      packages/qjkankan-kankan-view/public/viewer/favicon.ico
  17. BIN
      packages/qjkankan-kankan-view/public/viewer/marker.png
  18. 0 11
      packages/qjkankan-kankan-view/public/viewer/static/lib/animate/animate.min.css
  19. 0 109
      packages/qjkankan-kankan-view/public/viewer/static/lib/flexible.min.js
  20. 0 7
      packages/qjkankan-kankan-view/public/viewer/static/lib/flv.min.js
  21. 0 539
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/demo.css
  22. 0 3385
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/demo_index.html
  23. 0 571
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.css
  24. 0 1
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.js
  25. 0 982
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.json
  26. BIN
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.ttf
  27. BIN
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.woff
  28. BIN
      packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.woff2
  29. 0 1
      packages/qjkankan-kankan-view/public/viewer/static/lib/jweixin-1.0.0.js
  30. 0 1
      packages/qjkankan-kankan-view/public/viewer/static/lib/jweixin-1.6.0.js
  31. 0 22
      packages/qjkankan-kankan-view/public/viewer/static/lib/mobile-detect.js
  32. 0 13
      packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper-bundle.min.css
  33. 0 14
      packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper-bundle.min.js
  34. 0 13
      packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.css
  35. 0 14
      packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.js
  36. 0 1
      packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.js.map
  37. 0 10
      packages/qjkankan-kankan-view/public/viewer/static/lib/vconsole.js
  38. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/01.mp3
  39. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/02.mp3
  40. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/03.mp3
  41. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/04.mp3
  42. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/05.mp3
  43. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/06.mp3
  44. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/07.mp3
  45. BIN
      packages/qjkankan-kankan-view/public/viewer/static/music/08.mp3
  46. 0 42
      packages/qjkankan-kankan-view/src/apis/index.js
  47. 0 73
      packages/qjkankan-kankan-view/src/app.js
  48. BIN
      packages/qjkankan-kankan-view/src/assets/favicon.png
  49. BIN
      packages/qjkankan-kankan-view/src/assets/images/browser/browser_Chrome.png
  50. BIN
      packages/qjkankan-kankan-view/src/assets/images/browser/browser_Edge.png
  51. BIN
      packages/qjkankan-kankan-view/src/assets/images/browser/browser_Firefox.png
  52. BIN
      packages/qjkankan-kankan-view/src/assets/images/browser/browser_Safari.png
  53. BIN
      packages/qjkankan-kankan-view/src/assets/images/browser/pic_update.png
  54. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/0.png
  55. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/1.png
  56. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/2.png
  57. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/0.png
  58. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/1.png
  59. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/2.png
  60. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-default.png
  61. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-down.png
  62. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-up.png
  63. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/icon-corner-24.png
  64. BIN
      packages/qjkankan-kankan-view/src/assets/images/floorlogo/icon-corner.png
  65. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button@2x.png
  66. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button@3x.png
  67. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button_empty@2x.png
  68. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button_empty@3x.png
  69. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_text@2x.png
  70. BIN
      packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_text@3x.png
  71. 0 17
      packages/qjkankan-kankan-view/src/assets/images/icon/1.svg
  72. 0 17
      packages/qjkankan-kankan-view/src/assets/images/icon/2.svg
  73. 0 17
      packages/qjkankan-kankan-view/src/assets/images/icon/3.svg
  74. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/bg.png
  75. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/bofang.png
  76. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/gifts_off.png
  77. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/gifts_on.png
  78. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/logo.png
  79. BIN
      packages/qjkankan-kankan-view/src/assets/images/icon/top5.png
  80. BIN
      packages/qjkankan-kankan-view/src/assets/images/loading.jpg
  81. BIN
      packages/qjkankan-kankan-view/src/assets/images/tag/style-tag.png
  82. 0 333
      packages/qjkankan-kankan-view/src/assets/theme.editor.scss
  83. 0 86
      packages/qjkankan-kankan-view/src/components/Controls/BottomControl.vue
  84. 0 471
      packages/qjkankan-kankan-view/src/components/Controls/Control.Mobile.vue
  85. 0 286
      packages/qjkankan-kankan-view/src/components/Controls/FloorSwitch.vue
  86. 0 461
      packages/qjkankan-kankan-view/src/components/Controls/LeftButtons.vue
  87. 0 456
      packages/qjkankan-kankan-view/src/components/Controls/Panel/Guide.vue
  88. 0 460
      packages/qjkankan-kankan-view/src/components/Controls/Panel/Main.vue
  89. 0 131
      packages/qjkankan-kankan-view/src/components/Controls/RightButtons.vue
  90. 0 64
      packages/qjkankan-kankan-view/src/components/Controls/rules/index.vue
  91. 0 551
      packages/qjkankan-kankan-view/src/components/Controls/tours.mobile.vue
  92. 0 555
      packages/qjkankan-kankan-view/src/components/Controls/tours.vue
  93. 0 77
      packages/qjkankan-kankan-view/src/components/Header/index.vue
  94. 0 118
      packages/qjkankan-kankan-view/src/components/Header/state.js
  95. 0 761
      packages/qjkankan-kankan-view/src/components/Information/View.Mobile.vue
  96. 0 159
      packages/qjkankan-kankan-view/src/components/Information/View.Pc.vue
  97. 0 68
      packages/qjkankan-kankan-view/src/components/Information/index.vue
  98. 0 57
      packages/qjkankan-kankan-view/src/components/Tags/constant.js
  99. 0 441
      packages/qjkankan-kankan-view/src/components/Tags/index.vue
  100. 0 0
      packages/qjkankan-kankan-view/src/components/Tags/metas/image-view.vue

+ 0 - 19
packages/qjkankan-kankan-view/.env

@@ -1,19 +0,0 @@
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
-# sdk文件地址
-VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4-test/www/sdk/
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://www.4dkankan.com/
-

+ 0 - 21
packages/qjkankan-kankan-view/.env.development

@@ -1,21 +0,0 @@
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
-# sdk文件地址
-# VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4/www/sdk/
-VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4-test/www/sdk/
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://test.4dkankan.com/
-

+ 0 - 21
packages/qjkankan-kankan-view/.env.eurprod

@@ -1,21 +0,0 @@
-NODE_ENV=production
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://eurs3.4dkankan.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://eurs3.4dkankan.com/v4/www/
-# sdk文件地址
-VUE_APP_SDK_DIR=https://eurs3.4dkankan.com/v4/www/sdk/
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://eur.4dkankan.com/
-

+ 0 - 21
packages/qjkankan-kankan-view/.env.eurtestprod

@@ -1,21 +0,0 @@
-NODE_ENV=production
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://testeurs3.4dkankan.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://testeurs3.4dkankan.com/v4/www/
-# sdk文件地址
-VUE_APP_SDK_DIR=https://testeurs3.4dkankan.com/v4/www/sdk/
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://testeur.4dkankan.com/
-

+ 0 - 21
packages/qjkankan-kankan-view/.env.prod

@@ -1,21 +0,0 @@
-NODE_ENV=production
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
-# sdk文件地址
-VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4/www/sdk/
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://www.4dkankan.com/
-

+ 0 - 21
packages/qjkankan-kankan-view/.env.testprod

@@ -1,21 +0,0 @@
-NODE_ENV=production
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
-# sdk 正式服
-VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4/www/sdk/
-# sdk 测试服
-# VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4-test/www/sdk/ 
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://test.4dkankan.com/

+ 0 - 21
packages/qjkankan-kankan-view/.env.testserve

@@ -1,21 +0,0 @@
-
-# 场景资源地址
-VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
-# 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
-# sdk文件地址
-# VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4/www/sdk/
-VUE_APP_SDK_DIR=https://4dkk.4dage.com/v4-test/www/sdk/
-
-
-
-# 静态资源目录
-VUE_APP_STATIC_DIR=viewer
-
-
-# 云存储环境
-VUE_APP_REGION_URL=
-
-# 接口请求地址
-VUE_APP_APIS_URL=https://test.4dkankan.com/
-

+ 0 - 23
packages/qjkankan-kankan-view/.gitignore

@@ -1,23 +0,0 @@
-.DS_Store
-node_modules
-/dist
-
-
-# local env files
-.env.local
-.env.*.local
-
-# Log files
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-
-# Editor directories and files
-.idea
-.vscode
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?

+ 0 - 24
packages/qjkankan-kankan-view/README.md

@@ -1,24 +0,0 @@
-# cdfg_vue3
-
-## Project setup
-```
-npm install
-```
-
-### Compiles and hot-reloads for development
-```
-npm run serve
-```
-
-### Compiles and minifies for production
-```
-npm run build
-```
-
-### Lints and fixes files
-```
-npm run lint
-```
-
-### Customize configuration
-See [Configuration Reference](https://cli.vuejs.org/config/).

+ 0 - 3
packages/qjkankan-kankan-view/babel.config.js

@@ -1,3 +0,0 @@
-module.exports = {
-  presets: ["@vue/cli-plugin-babel/preset"],
-};

+ 0 - 1
packages/qjkankan-kankan-view/jsconfig.json

@@ -1 +0,0 @@
-{}

+ 0 - 32
packages/qjkankan-kankan-view/package.json

@@ -1,32 +0,0 @@
-{
-  "name": "@qjkankan/kankan-view",
-  "version": "1.2.0",
-  "private": true,
-  "scripts": {
-    "serve": "vue-cli-service serve --mode testserve",
-    "serve-prod": "vue-cli-service serve --mode prod",
-    "build-testprod": "vue-cli-service build --mode testprod",
-    "build": "vue-cli-service build --mode prod",
-    "build-eurtestprod": "vue-cli-service build --mode eurtestprod",
-    "build-eurprod": "vue-cli-service build --mode eurprod",
-    "lint": "vue-cli-service lint"
-  },
-  "dependencies": {
-    "axios": "^0.21.1",
-    "clipboard": "^2.0.8",
-    "core-js": "^3.8.3",
-    "qrcode": "^1.5.3",
-    "vue": "^3.2.36",
-    "vue-i18n": "9",
-    "vue-router": "4.0.12",
-    "vuex": "^4.0.2"
-  },
-  "devDependencies": {
-    "@intlify/vue-i18n-loader": "^4.2.0",
-    "@vue/cli-plugin-babel": "~5.0.0",
-    "@vue/cli-service": "~5.0.0",
-    "@vue/compiler-sfc": "^3.0.0",
-    "sass": "^1.26.5",
-    "sass-loader": "^8.0.2"
-  }
-}

BIN
packages/qjkankan-kankan-view/public/favicon.png


+ 0 - 50
packages/qjkankan-kankan-view/public/smg.html

@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html lang="">
-    <head>
-        <meta charset="utf-8" />
-        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
-        <link rel="icon" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/favicon.png" />
-        <!-- <link rel="stylesheet" href="//at.alicdn.com/t/font_2596172_ejg30arrayu.css" />
-        <link rel="stylesheet" href="//at.alicdn.com/t/font_3423899_m7c62apktz.css" /> -->
-        <link rel="stylesheet" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/iconfont/iconfont.css" />
-        <link rel="stylesheet" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/animate/animate.min.css" />
-        <link rel="stylesheet" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/swiper/swiper-bundle.min.css" />
-
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/mobile-detect.js"></script>
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/flexible.min.js"></script>
-        <title>四维全景</title>
-    </head>
-
-    <body>
-        <noscript>
-            <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-        </noscript>
-        <div id="app"></div>
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/flv.min.js"></script>
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/vconsole.js"></script>
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/swiper/swiper-bundle.min.js"></script>
-
-
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/jweixin-1.6.0.js"></script>
-
-        <!-- <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js?v=4.10.0-alpha.43"></script>
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js?v=4.10.0-alpha.43"></script> -->
-
-
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js"></script>
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js"></script>
-
-        <!-- <script src="https://4dkk.4dage.com/v4/www/sdk/kankan-sdk-deps.js?v=4.0.0-alpha.44"></script>
-        <script src="https://4dkk.4dage.com/v4/www/sdk/kankan-sdk.js?v=4.0.0-alpha.44"></script> -->
-
-        <!-- <script src="https://eurs3.4dkankan.com/v4/cdfg/sdk/kankan-sdk-deps.js?v=4.0.0-alpha.45"></script>
-        <script src="https://eurs3.4dkankan.com/v4/cdfg/sdk/kankan-sdk.js?v=4.0.0-alpha.45"></script> -->
-        <!-- built files will be auto injected -->
-        <!-- <script>
-            if ((query = window.location.href.indexOf('vlog') != -1)) {
-                var vConsole = new window.VConsole()
-            }
-        </script> -->
-    </body>
-</html>

+ 0 - 26
packages/qjkankan-kankan-view/public/spg.html

@@ -1,26 +0,0 @@
-<!DOCTYPE html>
-<html lang="">
-    <head>
-        <meta charset="utf-8" />
-        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
-        <link rel="icon" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/favicon.png" />
-        <link rel="stylesheet" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/iconfont/iconfont.css" />
-        <!-- <link rel="stylesheet" href="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/animate/animate.min.css" /> -->
-        <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/mobile-detect.js"></script>
-        <title>四维全景</title>
-    </head>
-
-    <body>
-        <noscript>
-            <strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-        </noscript>
-        <div id="app"></div>
-        <!-- <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js?v=v=4.10.0-alpha.43"></script>
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js?v=v=4.10.0-alpha.43"></script>    -->
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js"></script>
-        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js"></script>
-
-        <!-- built files will be auto injected -->
-    </body>
-</html>

BIN
packages/qjkankan-kankan-view/public/viewer/favicon.ico


BIN
packages/qjkankan-kankan-view/public/viewer/marker.png


Разница между файлами не показана из-за своего большого размера
+ 0 - 11
packages/qjkankan-kankan-view/public/viewer/static/lib/animate/animate.min.css


+ 0 - 109
packages/qjkankan-kankan-view/public/viewer/static/lib/flexible.min.js

@@ -1,109 +0,0 @@
-(function(win, lib) {
-    var doc = win.document;
-    var docEl = doc.documentElement;
-    var metaEl = doc.querySelector('meta[name="viewport"]');
-    var flexibleEl = doc.querySelector('meta[name="flexible"]');
-    var dpr = 0;
-    var scale = 0;
-    var tid;
-    var flexible = lib.flexible || (lib.flexible = {});
-     
-    if (metaEl) {
-        console.warn('将根据已有的meta标签来设置缩放比例');
-        var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/);
-        if (match) {
-            scale = parseFloat(match[1]);
-            dpr = parseInt(1 / scale);
-        }
-    } else if (flexibleEl) {
-        var content = flexibleEl.getAttribute('content');
-        if (content) {
-            var initialDpr = content.match(/initial\-dpr=([\d\.]+)/);
-            var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/);
-            if (initialDpr) {
-                dpr = parseFloat(initialDpr[1]);
-                scale = parseFloat((1 / dpr).toFixed(2));   
-            }
-            if (maximumDpr) {
-                dpr = parseFloat(maximumDpr[1]);
-                scale = parseFloat((1 / dpr).toFixed(2));   
-            }
-        }
-    }
-    if (!dpr && !scale) {
-        var isAndroid = win.navigator.appVersion.match(/android/gi);
-        var isIPhone = win.navigator.appVersion.match(/iphone/gi);
-        var devicePixelRatio = win.devicePixelRatio;
-        if (isIPhone) {
-            // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
-            if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {               
-                dpr = 3;
-            } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
-                dpr = 2;
-            } else {
-                dpr = 1;
-            }
-        } else {
-            // 其他设备下,仍旧使用1倍的方案
-            dpr = 1;
-        }
-        scale = 1 / dpr;
-    }
-    docEl.setAttribute('data-dpr', dpr);
-    if (!metaEl) {
-        metaEl = doc.createElement('meta');
-        metaEl.setAttribute('name', 'viewport');
-        metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
-        if (docEl.firstElementChild) {
-            docEl.firstElementChild.appendChild(metaEl);
-        } else {
-            var wrap = doc.createElement('div');
-            wrap.appendChild(metaEl);
-            doc.write(wrap.innerHTML);
-        }
-    }
-    function refreshRem(){
-        var width = docEl.getBoundingClientRect().width;
-        if (width / dpr > 540) {
-            width = 540 * dpr;
-        }
-        var rem = width / 10;
-        docEl.style.fontSize = rem + 'px';
-        flexible.rem = win.rem = rem;
-    }
-    win.addEventListener('resize', function() {
-        clearTimeout(tid);
-        tid = setTimeout(refreshRem, 300);
-    }, false);
-    win.addEventListener('pageshow', function(e) {
-        if (e.persisted) {
-            clearTimeout(tid);
-            tid = setTimeout(refreshRem, 300);
-        }
-    }, false);
-    if (doc.readyState === 'complete') {
-        doc.body.style.fontSize = 12 * dpr + 'px';
-    } else {
-        doc.addEventListener('DOMContentLoaded', function(e) {
-            doc.body.style.fontSize = 12 * dpr + 'px';
-        }, false);
-    }
-     
-    refreshRem();
-    flexible.dpr = win.dpr = dpr;
-    flexible.refreshRem = refreshRem;
-    flexible.rem2px = function(d) {
-        var val = parseFloat(d) * this.rem;
-        if (typeof d === 'string' && d.match(/rem$/)) {
-            val += 'px';
-        }
-        return val;
-    }
-    flexible.px2rem = function(d) {
-        var val = parseFloat(d) / this.rem;
-        if (typeof d === 'string' && d.match(/px$/)) {
-            val += 'rem';
-        }
-        return val;
-    }
-})(window, window['lib'] || (window['lib'] = {}));

Разница между файлами не показана из-за своего большого размера
+ 0 - 7
packages/qjkankan-kankan-view/public/viewer/static/lib/flv.min.js


+ 0 - 539
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/demo.css

@@ -1,539 +0,0 @@
-/* Logo 字体 */
-@font-face {
-  font-family: "iconfont logo";
-  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
-  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
-    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
-    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
-    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
-}
-
-.logo {
-  font-family: "iconfont logo";
-  font-size: 160px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-/* tabs */
-.nav-tabs {
-  position: relative;
-}
-
-.nav-tabs .nav-more {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  height: 42px;
-  line-height: 42px;
-  color: #666;
-}
-
-#tabs {
-  border-bottom: 1px solid #eee;
-}
-
-#tabs li {
-  cursor: pointer;
-  width: 100px;
-  height: 40px;
-  line-height: 40px;
-  text-align: center;
-  font-size: 16px;
-  border-bottom: 2px solid transparent;
-  position: relative;
-  z-index: 1;
-  margin-bottom: -1px;
-  color: #666;
-}
-
-
-#tabs .active {
-  border-bottom-color: #f00;
-  color: #222;
-}
-
-.tab-container .content {
-  display: none;
-}
-
-/* 页面布局 */
-.main {
-  padding: 30px 100px;
-  width: 960px;
-  margin: 0 auto;
-}
-
-.main .logo {
-  color: #333;
-  text-align: left;
-  margin-bottom: 30px;
-  line-height: 1;
-  height: 110px;
-  margin-top: -50px;
-  overflow: hidden;
-  *zoom: 1;
-}
-
-.main .logo a {
-  font-size: 160px;
-  color: #333;
-}
-
-.helps {
-  margin-top: 40px;
-}
-
-.helps pre {
-  padding: 20px;
-  margin: 10px 0;
-  border: solid 1px #e7e1cd;
-  background-color: #fffdef;
-  overflow: auto;
-}
-
-.icon_lists {
-  width: 100% !important;
-  overflow: hidden;
-  *zoom: 1;
-}
-
-.icon_lists li {
-  width: 100px;
-  margin-bottom: 10px;
-  margin-right: 20px;
-  text-align: center;
-  list-style: none !important;
-  cursor: default;
-}
-
-.icon_lists li .code-name {
-  line-height: 1.2;
-}
-
-.icon_lists .icon {
-  display: block;
-  height: 100px;
-  line-height: 100px;
-  font-size: 42px;
-  margin: 10px auto;
-  color: #333;
-  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
-  -moz-transition: font-size 0.25s linear, width 0.25s linear;
-  transition: font-size 0.25s linear, width 0.25s linear;
-}
-
-.icon_lists .icon:hover {
-  font-size: 100px;
-}
-
-.icon_lists .svg-icon {
-  /* 通过设置 font-size 来改变图标大小 */
-  width: 1em;
-  /* 图标和文字相邻时,垂直对齐 */
-  vertical-align: -0.15em;
-  /* 通过设置 color 来改变 SVG 的颜色/fill */
-  fill: currentColor;
-  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
-      normalize.css 中也包含这行 */
-  overflow: hidden;
-}
-
-.icon_lists li .name,
-.icon_lists li .code-name {
-  color: #666;
-}
-
-/* markdown 样式 */
-.markdown {
-  color: #666;
-  font-size: 14px;
-  line-height: 1.8;
-}
-
-.highlight {
-  line-height: 1.5;
-}
-
-.markdown img {
-  vertical-align: middle;
-  max-width: 100%;
-}
-
-.markdown h1 {
-  color: #404040;
-  font-weight: 500;
-  line-height: 40px;
-  margin-bottom: 24px;
-}
-
-.markdown h2,
-.markdown h3,
-.markdown h4,
-.markdown h5,
-.markdown h6 {
-  color: #404040;
-  margin: 1.6em 0 0.6em 0;
-  font-weight: 500;
-  clear: both;
-}
-
-.markdown h1 {
-  font-size: 28px;
-}
-
-.markdown h2 {
-  font-size: 22px;
-}
-
-.markdown h3 {
-  font-size: 16px;
-}
-
-.markdown h4 {
-  font-size: 14px;
-}
-
-.markdown h5 {
-  font-size: 12px;
-}
-
-.markdown h6 {
-  font-size: 12px;
-}
-
-.markdown hr {
-  height: 1px;
-  border: 0;
-  background: #e9e9e9;
-  margin: 16px 0;
-  clear: both;
-}
-
-.markdown p {
-  margin: 1em 0;
-}
-
-.markdown>p,
-.markdown>blockquote,
-.markdown>.highlight,
-.markdown>ol,
-.markdown>ul {
-  width: 80%;
-}
-
-.markdown ul>li {
-  list-style: circle;
-}
-
-.markdown>ul li,
-.markdown blockquote ul>li {
-  margin-left: 20px;
-  padding-left: 4px;
-}
-
-.markdown>ul li p,
-.markdown>ol li p {
-  margin: 0.6em 0;
-}
-
-.markdown ol>li {
-  list-style: decimal;
-}
-
-.markdown>ol li,
-.markdown blockquote ol>li {
-  margin-left: 20px;
-  padding-left: 4px;
-}
-
-.markdown code {
-  margin: 0 3px;
-  padding: 0 5px;
-  background: #eee;
-  border-radius: 3px;
-}
-
-.markdown strong,
-.markdown b {
-  font-weight: 600;
-}
-
-.markdown>table {
-  border-collapse: collapse;
-  border-spacing: 0px;
-  empty-cells: show;
-  border: 1px solid #e9e9e9;
-  width: 95%;
-  margin-bottom: 24px;
-}
-
-.markdown>table th {
-  white-space: nowrap;
-  color: #333;
-  font-weight: 600;
-}
-
-.markdown>table th,
-.markdown>table td {
-  border: 1px solid #e9e9e9;
-  padding: 8px 16px;
-  text-align: left;
-}
-
-.markdown>table th {
-  background: #F7F7F7;
-}
-
-.markdown blockquote {
-  font-size: 90%;
-  color: #999;
-  border-left: 4px solid #e9e9e9;
-  padding-left: 0.8em;
-  margin: 1em 0;
-}
-
-.markdown blockquote p {
-  margin: 0;
-}
-
-.markdown .anchor {
-  opacity: 0;
-  transition: opacity 0.3s ease;
-  margin-left: 8px;
-}
-
-.markdown .waiting {
-  color: #ccc;
-}
-
-.markdown h1:hover .anchor,
-.markdown h2:hover .anchor,
-.markdown h3:hover .anchor,
-.markdown h4:hover .anchor,
-.markdown h5:hover .anchor,
-.markdown h6:hover .anchor {
-  opacity: 1;
-  display: inline-block;
-}
-
-.markdown>br,
-.markdown>p>br {
-  clear: both;
-}
-
-
-.hljs {
-  display: block;
-  background: white;
-  padding: 0.5em;
-  color: #333333;
-  overflow-x: auto;
-}
-
-.hljs-comment,
-.hljs-meta {
-  color: #969896;
-}
-
-.hljs-string,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-strong,
-.hljs-emphasis,
-.hljs-quote {
-  color: #df5000;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-type {
-  color: #a71d5d;
-}
-
-.hljs-literal,
-.hljs-symbol,
-.hljs-bullet,
-.hljs-attribute {
-  color: #0086b3;
-}
-
-.hljs-section,
-.hljs-name {
-  color: #63a35c;
-}
-
-.hljs-tag {
-  color: #333333;
-}
-
-.hljs-title,
-.hljs-attr,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
-  color: #795da3;
-}
-
-.hljs-addition {
-  color: #55a532;
-  background-color: #eaffea;
-}
-
-.hljs-deletion {
-  color: #bd2c00;
-  background-color: #ffecec;
-}
-
-.hljs-link {
-  text-decoration: underline;
-}
-
-/* 代码高亮 */
-/* PrismJS 1.15.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
-  color: black;
-  background: none;
-  text-shadow: 0 1px white;
-  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
-  text-align: left;
-  white-space: pre;
-  word-spacing: normal;
-  word-break: normal;
-  word-wrap: normal;
-  line-height: 1.5;
-
-  -moz-tab-size: 4;
-  -o-tab-size: 4;
-  tab-size: 4;
-
-  -webkit-hyphens: none;
-  -moz-hyphens: none;
-  -ms-hyphens: none;
-  hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
-  text-shadow: none;
-  background: #b3d4fc;
-}
-
-@media print {
-
-  code[class*="language-"],
-  pre[class*="language-"] {
-    text-shadow: none;
-  }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
-  padding: 1em;
-  margin: .5em 0;
-  overflow: auto;
-}
-
-:not(pre)>code[class*="language-"],
-pre[class*="language-"] {
-  background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre)>code[class*="language-"] {
-  padding: .1em;
-  border-radius: .3em;
-  white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
-  color: slategray;
-}
-
-.token.punctuation {
-  color: #999;
-}
-
-.namespace {
-  opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
-  color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
-  color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
-  color: #9a6e3a;
-  background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
-  color: #07a;
-}
-
-.token.function,
-.token.class-name {
-  color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
-  color: #e90;
-}
-
-.token.important,
-.token.bold {
-  font-weight: bold;
-}
-
-.token.italic {
-  font-style: italic;
-}
-
-.token.entity {
-  cursor: help;
-}

Разница между файлами не показана из-за своего большого размера
+ 0 - 3385
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/demo_index.html


+ 0 - 571
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.css

@@ -1,571 +0,0 @@
-@font-face {
-  font-family: "iconfont"; /* Project id 2596172 */
-  src: url('iconfont.woff2?t=1659061669448') format('woff2'),
-       url('iconfont.woff?t=1659061669448') format('woff'),
-       url('iconfont.ttf?t=1659061669448') format('truetype');
-}
-
-.iconfont {
-  font-family: "iconfont" !important;
-  font-size: 16px;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-show_share:before {
-  content: "\e690";
-}
-
-.icon-show_more_ruler:before {
-  content: "\e67b";
-}
-
-.icon-transparency:before {
-  content: "\e6d7";
-}
-
-.icon-mosaic_e:before {
-  content: "\e6d2";
-}
-
-.icon-eraser:before {
-  content: "\e6d3";
-}
-
-.icon-video2:before {
-  content: "\e6d4";
-}
-
-.icon-down:before {
-  content: "\e6d5";
-}
-
-.icon-qingkong-copy-copy:before {
-  content: "\e68f";
-}
-
-.icon-_qq:before {
-  content: "\e64b";
-}
-
-.icon-_friend:before {
-  content: "\e64c";
-}
-
-.icon-link1:before {
-  content: "\e6ff";
-}
-
-.icon-icon_share_facebook:before {
-  content: "\e745";
-}
-
-.icon-icon_share_whatsapp:before {
-  content: "\e746";
-}
-
-.icon-_wechat:before {
-  content: "\e64a";
-}
-
-.icon-watermark:before {
-  content: "\e6cb";
-}
-
-.icon-camera_h:before {
-  content: "\e6c7";
-}
-
-.icon-a-1V1:before {
-  content: "\e6c8";
-}
-
-.icon-hengbiaoEN:before {
-  content: "\e6b9";
-}
-
-.icon-hot_spot:before {
-  content: "\e6b8";
-}
-
-.icon-foot:before {
-  content: "\e6ba";
-}
-
-.icon-music-t:before {
-  content: "\e6b7";
-}
-
-.icon-yes:before {
-  content: "\e6b5";
-}
-
-.icon-no:before {
-  content: "\e6b6";
-}
-
-.icon-floor_rename:before {
-  content: "\e75b";
-}
-
-.icon-play_stop:before {
-  content: "\e6b4";
-}
-
-.icon-scene_auto:before {
-  content: "\e721";
-}
-
-.icon-compass:before {
-  content: "\e6b3";
-}
-
-.icon-h-d:before {
-  content: "\e6b2";
-}
-
-.icon-scene_screen:before {
-  content: "\e717";
-}
-
-.icon-scene_full:before {
-  content: "\e712";
-}
-
-.icon-scene_window:before {
-  content: "\e713";
-}
-
-.icon-_back:before {
-  content: "\e609";
-}
-
-.icon-show_back:before {
-  content: "\e678";
-}
-
-.icon-show_more_share:before {
-  content: "\e680";
-}
-
-.icon-show_more_finish:before {
-  content: "\e67a";
-}
-
-.icon-show_more_music:before {
-  content: "\e67c";
-}
-
-.icon-show_map_collect:before {
-  content: "\e679";
-}
-
-.icon-data-j:before {
-  content: "\e6b1";
-}
-
-.icon-cancel:before {
-  content: "\e688";
-}
-
-.icon-affirm:before {
-  content: "\e689";
-}
-
-.icon-checkbox_p:before {
-  content: "\e6b0";
-}
-
-.icon-left:before {
-  content: "\e6ae";
-}
-
-.icon-right:before {
-  content: "\e6af";
-}
-
-.icon-_loading_:before {
-  content: "\e627";
-}
-
-.icon-show_function_collect:before {
-  content: "\e687";
-}
-
-.icon-show_more:before {
-  content: "\e67e";
-}
-
-.icon-d-r:before {
-  content: "\e68d";
-}
-
-.icon-up-a:before {
-  content: "\e68e";
-}
-
-.icon-fanzhuan:before {
-  content: "\e6fa";
-}
-
-.icon-cad-neiqiang:before {
-  content: "\e698";
-}
-
-.icon-cad-waiqiang:before {
-  content: "\e69a";
-}
-
-.icon-cad-shuangkaimen:before {
-  content: "\e69b";
-}
-
-.icon-cad-zimumen:before {
-  content: "\e69c";
-}
-
-.icon-cad-men:before {
-  content: "\e69d";
-}
-
-.icon-cad-yimen:before {
-  content: "\e69e";
-}
-
-.icon-cad-zhediemen:before {
-  content: "\e69f";
-}
-
-.icon-cad-luodichuang:before {
-  content: "\e6a0";
-}
-
-.icon-cad-chuang:before {
-  content: "\e6a1";
-}
-
-.icon-cad-piaochuang:before {
-  content: "\e6a2";
-}
-
-.icon-cad-uxingchuang:before {
-  content: "\e6a4";
-}
-
-.icon-cad-lxingchuang:before {
-  content: "\e6a5";
-}
-
-.icon-cad-lpiaochuang:before {
-  content: "\e6a6";
-}
-
-.icon-cad-upiaochuang:before {
-  content: "\e6a7";
-}
-
-.icon-cad-liang:before {
-  content: "\e6a8";
-}
-
-.icon-cad-yandao:before {
-  content: "\e6a9";
-}
-
-.icon-cad-zhuzi:before {
-  content: "\e6aa";
-}
-
-.icon-cad-dianti:before {
-  content: "\e6ab";
-}
-
-.icon-cad-loudao:before {
-  content: "\e6ac";
-}
-
-.icon-cad-dange:before {
-  content: "\e6ad";
-}
-
-.icon-cad-yakou:before {
-  content: "\e699";
-}
-
-.icon-more:before {
-  content: "\e600";
-}
-
-.icon-mosaic1:before {
-  content: "\e697";
-}
-
-.icon-hengbiaoCN:before {
-  content: "\e6a3";
-}
-
-.icon-nor:before {
-  content: "\e696";
-}
-
-.icon-checkbox1:before {
-  content: "\e65d";
-}
-
-.icon-rotate:before {
-  content: "\e695";
-}
-
-.icon-adapt:before {
-  content: "\e692";
-}
-
-.icon-recover:before {
-  content: "\e693";
-}
-
-.icon-repeal:before {
-  content: "\e694";
-}
-
-.icon-reset:before {
-  content: "\e65a";
-}
-
-.icon-course1:before {
-  content: "\e68c";
-}
-
-.icon-publish:before {
-  content: "\e68a";
-}
-
-.icon-save:before {
-  content: "\e68b";
-}
-
-.icon-checkbox:before {
-  content: "\e649";
-}
-
-.icon-mosaic:before {
-  content: "\e646";
-}
-
-.icon-media:before {
-  content: "\e647";
-}
-
-.icon-pic:before {
-  content: "\e648";
-}
-
-.icon-eye_f:before {
-  content: "\e644";
-}
-
-.icon-eye_c:before {
-  content: "\e645";
-}
-
-.icon-size-o:before {
-  content: "\e640";
-}
-
-.icon-size-f:before {
-  content: "\e641";
-}
-
-.icon-magnify:before {
-  content: "\e642";
-}
-
-.icon-reduce:before {
-  content: "\e643";
-}
-
-.icon-video1:before {
-  content: "\e63b";
-}
-
-.icon-uploading_s:before {
-  content: "\e63c";
-}
-
-.icon-path:before {
-  content: "\e63d";
-}
-
-.icon-record:before {
-  content: "\e63e";
-}
-
-.icon-clear:before {
-  content: "\e63f";
-}
-
-.icon-pause:before {
-  content: "\e636";
-}
-
-.icon-preview:before {
-  content: "\e63a";
-}
-
-.icon-full:before {
-  content: "\e638";
-}
-
-.icon-add:before {
-  content: "\e631";
-}
-
-.icon-del:before {
-  content: "\e632";
-}
-
-.icon-close:before {
-  content: "\e633";
-}
-
-.icon-web:before {
-  content: "\e635";
-}
-
-.icon-music:before {
-  content: "\e637";
-}
-
-.icon-uploading1:before {
-  content: "\e639";
-}
-
-.icon-state_e:before {
-  content: "\e624";
-}
-
-.icon-state_f:before {
-  content: "\e625";
-}
-
-.icon-state_s:before {
-  content: "\e626";
-}
-
-.icon-vip_uploading:before {
-  content: "\e623";
-}
-
-.icon-eye-n:before {
-  content: "\e621";
-}
-
-.icon-eye-s:before {
-  content: "\e622";
-}
-
-.icon-course:before {
-  content: "\e620";
-}
-
-.icon-edit:before {
-  content: "\e61f";
-}
-
-.icon-help:before {
-  content: "\e615";
-}
-
-.icon-rule:before {
-  content: "\e617";
-}
-
-.icon-link:before {
-  content: "\e618";
-}
-
-.icon-uploading:before {
-  content: "\e619";
-}
-
-.icon-vr:before {
-  content: "\e61a";
-}
-
-.icon-complete:before {
-  content: "\e61b";
-}
-
-.icon-download:before {
-  content: "\e61c";
-}
-
-.icon-pull-down:before {
-  content: "\e61d";
-}
-
-.icon-pull-up:before {
-  content: "\e61e";
-}
-
-.icon-updown:before {
-  content: "\e613";
-}
-
-.icon-scene:before {
-  content: "\e614";
-}
-
-.icon-message:before {
-  content: "\e60c";
-}
-
-.icon-basic:before {
-  content: "\e60d";
-}
-
-.icon-hotspot:before {
-  content: "\e60e";
-}
-
-.icon-guide:before {
-  content: "\e60f";
-}
-
-.icon-wander:before {
-  content: "\e610";
-}
-
-.icon-house:before {
-  content: "\e611";
-}
-
-.icon-video:before {
-  content: "\e612";
-}
-
-.icon-show_3d_normal:before {
-  content: "\e677";
-}
-
-.icon-show_plane_normal:before {
-  content: "\e67d";
-}
-
-.icon-show_roaming_selected:before {
-  content: "\e682";
-}
-
-.icon-show_plane_selected:before {
-  content: "\e684";
-}
-
-.icon-show_3d_selected:before {
-  content: "\e685";
-}
-
-.icon-show_roaming_normal:before {
-  content: "\e686";
-}
-

Разница между файлами не показана из-за своего большого размера
+ 0 - 1
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.js


+ 0 - 982
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.json

@@ -1,982 +0,0 @@
-{
-  "id": "2596172",
-  "name": "四维看看编辑器V4",
-  "font_family": "iconfont",
-  "css_prefix_text": "icon-",
-  "description": "四维看看编辑器设计优化",
-  "glyphs": [
-    {
-      "icon_id": "20600368",
-      "name": "show_share",
-      "font_class": "show_share",
-      "unicode": "e690",
-      "unicode_decimal": 59024
-    },
-    {
-      "icon_id": "19543928",
-      "name": "show_more_ruler",
-      "font_class": "show_more_ruler",
-      "unicode": "e67b",
-      "unicode_decimal": 59003
-    },
-    {
-      "icon_id": "30499411",
-      "name": "transparency",
-      "font_class": "transparency",
-      "unicode": "e6d7",
-      "unicode_decimal": 59095
-    },
-    {
-      "icon_id": "30490892",
-      "name": "mosaic_e",
-      "font_class": "mosaic_e",
-      "unicode": "e6d2",
-      "unicode_decimal": 59090
-    },
-    {
-      "icon_id": "30490893",
-      "name": "eraser",
-      "font_class": "eraser",
-      "unicode": "e6d3",
-      "unicode_decimal": 59091
-    },
-    {
-      "icon_id": "30490894",
-      "name": "video",
-      "font_class": "video2",
-      "unicode": "e6d4",
-      "unicode_decimal": 59092
-    },
-    {
-      "icon_id": "30490946",
-      "name": "down",
-      "font_class": "down",
-      "unicode": "e6d5",
-      "unicode_decimal": 59093
-    },
-    {
-      "icon_id": "3141534",
-      "name": "清空",
-      "font_class": "qingkong-copy-copy",
-      "unicode": "e68f",
-      "unicode_decimal": 59023
-    },
-    {
-      "icon_id": "7878582",
-      "name": "QQ",
-      "font_class": "_qq",
-      "unicode": "e64b",
-      "unicode_decimal": 58955
-    },
-    {
-      "icon_id": "7878584",
-      "name": "朋友",
-      "font_class": "_friend",
-      "unicode": "e64c",
-      "unicode_decimal": 58956
-    },
-    {
-      "icon_id": "14887802",
-      "name": "link",
-      "font_class": "link1",
-      "unicode": "e6ff",
-      "unicode_decimal": 59135
-    },
-    {
-      "icon_id": "26296900",
-      "name": "icon_share_facebook",
-      "font_class": "icon_share_facebook",
-      "unicode": "e745",
-      "unicode_decimal": 59205
-    },
-    {
-      "icon_id": "26296901",
-      "name": "icon_share_whatsapp",
-      "font_class": "icon_share_whatsapp",
-      "unicode": "e746",
-      "unicode_decimal": 59206
-    },
-    {
-      "icon_id": "7878583",
-      "name": "微信",
-      "font_class": "_wechat",
-      "unicode": "e64a",
-      "unicode_decimal": 58954
-    },
-    {
-      "icon_id": "30230568",
-      "name": "watermark",
-      "font_class": "watermark",
-      "unicode": "e6cb",
-      "unicode_decimal": 59083
-    },
-    {
-      "icon_id": "30230353",
-      "name": "camera_h",
-      "font_class": "camera_h",
-      "unicode": "e6c7",
-      "unicode_decimal": 59079
-    },
-    {
-      "icon_id": "30230374",
-      "name": "1V1",
-      "font_class": "a-1V1",
-      "unicode": "e6c8",
-      "unicode_decimal": 59080
-    },
-    {
-      "icon_id": "12324810",
-      "name": "横标EN",
-      "font_class": "hengbiaoEN",
-      "unicode": "e6b9",
-      "unicode_decimal": 59065
-    },
-    {
-      "icon_id": "22788718",
-      "name": "hot_spot",
-      "font_class": "hot_spot",
-      "unicode": "e6b8",
-      "unicode_decimal": 59064
-    },
-    {
-      "icon_id": "29982018",
-      "name": "foot",
-      "font_class": "foot",
-      "unicode": "e6ba",
-      "unicode_decimal": 59066
-    },
-    {
-      "icon_id": "29365471",
-      "name": "music-t",
-      "font_class": "music-t",
-      "unicode": "e6b7",
-      "unicode_decimal": 59063
-    },
-    {
-      "icon_id": "29346730",
-      "name": "yes",
-      "font_class": "yes",
-      "unicode": "e6b5",
-      "unicode_decimal": 59061
-    },
-    {
-      "icon_id": "29346731",
-      "name": "no",
-      "font_class": "no",
-      "unicode": "e6b6",
-      "unicode_decimal": 59062
-    },
-    {
-      "icon_id": "20764383",
-      "name": "floor_rename",
-      "font_class": "floor_rename",
-      "unicode": "e75b",
-      "unicode_decimal": 59227
-    },
-    {
-      "icon_id": "29255507",
-      "name": "play_stop",
-      "font_class": "play_stop",
-      "unicode": "e6b4",
-      "unicode_decimal": 59060
-    },
-    {
-      "icon_id": "16303117",
-      "name": "scene_auto",
-      "font_class": "scene_auto",
-      "unicode": "e721",
-      "unicode_decimal": 59169
-    },
-    {
-      "icon_id": "28895680",
-      "name": "compass",
-      "font_class": "compass",
-      "unicode": "e6b3",
-      "unicode_decimal": 59059
-    },
-    {
-      "icon_id": "28351771",
-      "name": "h-d",
-      "font_class": "h-d",
-      "unicode": "e6b2",
-      "unicode_decimal": 59058
-    },
-    {
-      "icon_id": "16270567",
-      "name": "scene_screen",
-      "font_class": "scene_screen",
-      "unicode": "e717",
-      "unicode_decimal": 59159
-    },
-    {
-      "icon_id": "15936377",
-      "name": "scene_full",
-      "font_class": "scene_full",
-      "unicode": "e712",
-      "unicode_decimal": 59154
-    },
-    {
-      "icon_id": "15936378",
-      "name": "scene_window",
-      "font_class": "scene_window",
-      "unicode": "e713",
-      "unicode_decimal": 59155
-    },
-    {
-      "icon_id": "7857935",
-      "name": "返回",
-      "font_class": "_back",
-      "unicode": "e609",
-      "unicode_decimal": 58889
-    },
-    {
-      "icon_id": "20066553",
-      "name": "show_back",
-      "font_class": "show_back",
-      "unicode": "e678",
-      "unicode_decimal": 59000
-    },
-    {
-      "icon_id": "20066555",
-      "name": "show_more_share",
-      "font_class": "show_more_share",
-      "unicode": "e680",
-      "unicode_decimal": 59008
-    },
-    {
-      "icon_id": "19543927",
-      "name": "show_more_finish",
-      "font_class": "show_more_finish",
-      "unicode": "e67a",
-      "unicode_decimal": 59002
-    },
-    {
-      "icon_id": "19543929",
-      "name": "show_more_music",
-      "font_class": "show_more_music",
-      "unicode": "e67c",
-      "unicode_decimal": 59004
-    },
-    {
-      "icon_id": "19543926",
-      "name": "show_map_collect",
-      "font_class": "show_map_collect",
-      "unicode": "e679",
-      "unicode_decimal": 59001
-    },
-    {
-      "icon_id": "27985200",
-      "name": "data-j",
-      "font_class": "data-j",
-      "unicode": "e6b1",
-      "unicode_decimal": 59057
-    },
-    {
-      "icon_id": "26690641",
-      "name": "cancel",
-      "font_class": "cancel",
-      "unicode": "e688",
-      "unicode_decimal": 59016
-    },
-    {
-      "icon_id": "26690677",
-      "name": "affirm",
-      "font_class": "affirm",
-      "unicode": "e689",
-      "unicode_decimal": 59017
-    },
-    {
-      "icon_id": "27896904",
-      "name": "checkbox_p",
-      "font_class": "checkbox_p",
-      "unicode": "e6b0",
-      "unicode_decimal": 59056
-    },
-    {
-      "icon_id": "27765016",
-      "name": "left",
-      "font_class": "left",
-      "unicode": "e6ae",
-      "unicode_decimal": 59054
-    },
-    {
-      "icon_id": "27765017",
-      "name": "right",
-      "font_class": "right",
-      "unicode": "e6af",
-      "unicode_decimal": 59055
-    },
-    {
-      "icon_id": "7858065",
-      "name": "loading",
-      "font_class": "_loading_",
-      "unicode": "e627",
-      "unicode_decimal": 58919
-    },
-    {
-      "icon_id": "20066572",
-      "name": "show_function_collect",
-      "font_class": "show_function_collect",
-      "unicode": "e687",
-      "unicode_decimal": 59015
-    },
-    {
-      "icon_id": "19543931",
-      "name": "show_more",
-      "font_class": "show_more",
-      "unicode": "e67e",
-      "unicode_decimal": 59006
-    },
-    {
-      "icon_id": "26914809",
-      "name": "d-r",
-      "font_class": "d-r",
-      "unicode": "e68d",
-      "unicode_decimal": 59021
-    },
-    {
-      "icon_id": "26914810",
-      "name": "up-a",
-      "font_class": "up-a",
-      "unicode": "e68e",
-      "unicode_decimal": 59022
-    },
-    {
-      "icon_id": "14510564",
-      "name": "edit_mirror",
-      "font_class": "fanzhuan",
-      "unicode": "e6fa",
-      "unicode_decimal": 59130
-    },
-    {
-      "icon_id": "27294582",
-      "name": "neiqiang",
-      "font_class": "cad-neiqiang",
-      "unicode": "e698",
-      "unicode_decimal": 59032
-    },
-    {
-      "icon_id": "27294583",
-      "name": "waiqiang",
-      "font_class": "cad-waiqiang",
-      "unicode": "e69a",
-      "unicode_decimal": 59034
-    },
-    {
-      "icon_id": "27294616",
-      "name": "shuangkaimen",
-      "font_class": "cad-shuangkaimen",
-      "unicode": "e69b",
-      "unicode_decimal": 59035
-    },
-    {
-      "icon_id": "27294617",
-      "name": "zimumen",
-      "font_class": "cad-zimumen",
-      "unicode": "e69c",
-      "unicode_decimal": 59036
-    },
-    {
-      "icon_id": "27294618",
-      "name": "men",
-      "font_class": "cad-men",
-      "unicode": "e69d",
-      "unicode_decimal": 59037
-    },
-    {
-      "icon_id": "27294620",
-      "name": "yimen",
-      "font_class": "cad-yimen",
-      "unicode": "e69e",
-      "unicode_decimal": 59038
-    },
-    {
-      "icon_id": "27294621",
-      "name": "zhediemen",
-      "font_class": "cad-zhediemen",
-      "unicode": "e69f",
-      "unicode_decimal": 59039
-    },
-    {
-      "icon_id": "27294699",
-      "name": "luodichuang",
-      "font_class": "cad-luodichuang",
-      "unicode": "e6a0",
-      "unicode_decimal": 59040
-    },
-    {
-      "icon_id": "27294700",
-      "name": "chuang",
-      "font_class": "cad-chuang",
-      "unicode": "e6a1",
-      "unicode_decimal": 59041
-    },
-    {
-      "icon_id": "27294701",
-      "name": "piaochuang",
-      "font_class": "cad-piaochuang",
-      "unicode": "e6a2",
-      "unicode_decimal": 59042
-    },
-    {
-      "icon_id": "27294702",
-      "name": "uxingchuang",
-      "font_class": "cad-uxingchuang",
-      "unicode": "e6a4",
-      "unicode_decimal": 59044
-    },
-    {
-      "icon_id": "27294703",
-      "name": "lxingchuang",
-      "font_class": "cad-lxingchuang",
-      "unicode": "e6a5",
-      "unicode_decimal": 59045
-    },
-    {
-      "icon_id": "27294704",
-      "name": "lpiaochuang",
-      "font_class": "cad-lpiaochuang",
-      "unicode": "e6a6",
-      "unicode_decimal": 59046
-    },
-    {
-      "icon_id": "27294705",
-      "name": "upiaochuang",
-      "font_class": "cad-upiaochuang",
-      "unicode": "e6a7",
-      "unicode_decimal": 59047
-    },
-    {
-      "icon_id": "27294743",
-      "name": "liang",
-      "font_class": "cad-liang",
-      "unicode": "e6a8",
-      "unicode_decimal": 59048
-    },
-    {
-      "icon_id": "27294744",
-      "name": "yandao",
-      "font_class": "cad-yandao",
-      "unicode": "e6a9",
-      "unicode_decimal": 59049
-    },
-    {
-      "icon_id": "27294745",
-      "name": "zhuzi",
-      "font_class": "cad-zhuzi",
-      "unicode": "e6aa",
-      "unicode_decimal": 59050
-    },
-    {
-      "icon_id": "27294746",
-      "name": "dianti",
-      "font_class": "cad-dianti",
-      "unicode": "e6ab",
-      "unicode_decimal": 59051
-    },
-    {
-      "icon_id": "27294747",
-      "name": "loudao",
-      "font_class": "cad-loudao",
-      "unicode": "e6ac",
-      "unicode_decimal": 59052
-    },
-    {
-      "icon_id": "27297593",
-      "name": "dange",
-      "font_class": "cad-dange",
-      "unicode": "e6ad",
-      "unicode_decimal": 59053
-    },
-    {
-      "icon_id": "27294584",
-      "name": "yakou",
-      "font_class": "cad-yakou",
-      "unicode": "e699",
-      "unicode_decimal": 59033
-    },
-    {
-      "icon_id": "11304931",
-      "name": "more read",
-      "font_class": "more",
-      "unicode": "e600",
-      "unicode_decimal": 58880
-    },
-    {
-      "icon_id": "27264933",
-      "name": "mosaic",
-      "font_class": "mosaic1",
-      "unicode": "e697",
-      "unicode_decimal": 59031
-    },
-    {
-      "icon_id": "12324809",
-      "name": "横标CN",
-      "font_class": "hengbiaoCN",
-      "unicode": "e6a3",
-      "unicode_decimal": 59043
-    },
-    {
-      "icon_id": "27200779",
-      "name": "nor",
-      "font_class": "nor",
-      "unicode": "e696",
-      "unicode_decimal": 59030
-    },
-    {
-      "icon_id": "25671886",
-      "name": "checkbox",
-      "font_class": "checkbox1",
-      "unicode": "e65d",
-      "unicode_decimal": 58973
-    },
-    {
-      "icon_id": "27198807",
-      "name": "rotate",
-      "font_class": "rotate",
-      "unicode": "e695",
-      "unicode_decimal": 59029
-    },
-    {
-      "icon_id": "27198774",
-      "name": "adapt",
-      "font_class": "adapt",
-      "unicode": "e692",
-      "unicode_decimal": 59026
-    },
-    {
-      "icon_id": "27198776",
-      "name": "recover",
-      "font_class": "recover",
-      "unicode": "e693",
-      "unicode_decimal": 59027
-    },
-    {
-      "icon_id": "27198777",
-      "name": "repeal",
-      "font_class": "repeal",
-      "unicode": "e694",
-      "unicode_decimal": 59028
-    },
-    {
-      "icon_id": "25654903",
-      "name": "reset",
-      "font_class": "reset",
-      "unicode": "e65a",
-      "unicode_decimal": 58970
-    },
-    {
-      "icon_id": "26971297",
-      "name": "course",
-      "font_class": "course1",
-      "unicode": "e68c",
-      "unicode_decimal": 59020
-    },
-    {
-      "icon_id": "26950708",
-      "name": "publish",
-      "font_class": "publish",
-      "unicode": "e68a",
-      "unicode_decimal": 59018
-    },
-    {
-      "icon_id": "26950711",
-      "name": "save",
-      "font_class": "save",
-      "unicode": "e68b",
-      "unicode_decimal": 59019
-    },
-    {
-      "icon_id": "23842269",
-      "name": "sel",
-      "font_class": "checkbox",
-      "unicode": "e649",
-      "unicode_decimal": 58953
-    },
-    {
-      "icon_id": "23786361",
-      "name": "mosaic",
-      "font_class": "mosaic",
-      "unicode": "e646",
-      "unicode_decimal": 58950
-    },
-    {
-      "icon_id": "23786362",
-      "name": "media",
-      "font_class": "media",
-      "unicode": "e647",
-      "unicode_decimal": 58951
-    },
-    {
-      "icon_id": "23786363",
-      "name": "pic",
-      "font_class": "pic",
-      "unicode": "e648",
-      "unicode_decimal": 58952
-    },
-    {
-      "icon_id": "23783948",
-      "name": "eye_f",
-      "font_class": "eye_f",
-      "unicode": "e644",
-      "unicode_decimal": 58948
-    },
-    {
-      "icon_id": "23783949",
-      "name": "eye_c",
-      "font_class": "eye_c",
-      "unicode": "e645",
-      "unicode_decimal": 58949
-    },
-    {
-      "icon_id": "23783512",
-      "name": "size-o",
-      "font_class": "size-o",
-      "unicode": "e640",
-      "unicode_decimal": 58944
-    },
-    {
-      "icon_id": "23783513",
-      "name": "size-f",
-      "font_class": "size-f",
-      "unicode": "e641",
-      "unicode_decimal": 58945
-    },
-    {
-      "icon_id": "23783514",
-      "name": "magnify",
-      "font_class": "magnify",
-      "unicode": "e642",
-      "unicode_decimal": 58946
-    },
-    {
-      "icon_id": "23783515",
-      "name": "reduce",
-      "font_class": "reduce",
-      "unicode": "e643",
-      "unicode_decimal": 58947
-    },
-    {
-      "icon_id": "23781429",
-      "name": "video",
-      "font_class": "video1",
-      "unicode": "e63b",
-      "unicode_decimal": 58939
-    },
-    {
-      "icon_id": "23781430",
-      "name": "uploading_s",
-      "font_class": "uploading_s",
-      "unicode": "e63c",
-      "unicode_decimal": 58940
-    },
-    {
-      "icon_id": "23781431",
-      "name": "path",
-      "font_class": "path",
-      "unicode": "e63d",
-      "unicode_decimal": 58941
-    },
-    {
-      "icon_id": "23781432",
-      "name": "record",
-      "font_class": "record",
-      "unicode": "e63e",
-      "unicode_decimal": 58942
-    },
-    {
-      "icon_id": "23781433",
-      "name": "clear",
-      "font_class": "clear",
-      "unicode": "e63f",
-      "unicode_decimal": 58943
-    },
-    {
-      "icon_id": "23773343",
-      "name": "pause",
-      "font_class": "pause",
-      "unicode": "e636",
-      "unicode_decimal": 58934
-    },
-    {
-      "icon_id": "23773344",
-      "name": "preview",
-      "font_class": "preview",
-      "unicode": "e63a",
-      "unicode_decimal": 58938
-    },
-    {
-      "icon_id": "23773141",
-      "name": "full",
-      "font_class": "full",
-      "unicode": "e638",
-      "unicode_decimal": 58936
-    },
-    {
-      "icon_id": "23773068",
-      "name": "add",
-      "font_class": "add",
-      "unicode": "e631",
-      "unicode_decimal": 58929
-    },
-    {
-      "icon_id": "23773069",
-      "name": "del",
-      "font_class": "del",
-      "unicode": "e632",
-      "unicode_decimal": 58930
-    },
-    {
-      "icon_id": "23773070",
-      "name": "close",
-      "font_class": "close",
-      "unicode": "e633",
-      "unicode_decimal": 58931
-    },
-    {
-      "icon_id": "23773072",
-      "name": "web",
-      "font_class": "web",
-      "unicode": "e635",
-      "unicode_decimal": 58933
-    },
-    {
-      "icon_id": "23773074",
-      "name": "music",
-      "font_class": "music",
-      "unicode": "e637",
-      "unicode_decimal": 58935
-    },
-    {
-      "icon_id": "23773076",
-      "name": "uploading",
-      "font_class": "uploading1",
-      "unicode": "e639",
-      "unicode_decimal": 58937
-    },
-    {
-      "icon_id": "22132762",
-      "name": "state_e",
-      "font_class": "state_e",
-      "unicode": "e624",
-      "unicode_decimal": 58916
-    },
-    {
-      "icon_id": "22132763",
-      "name": "state_f",
-      "font_class": "state_f",
-      "unicode": "e625",
-      "unicode_decimal": 58917
-    },
-    {
-      "icon_id": "22132764",
-      "name": "state_s",
-      "font_class": "state_s",
-      "unicode": "e626",
-      "unicode_decimal": 58918
-    },
-    {
-      "icon_id": "22130256",
-      "name": "vip_uploading",
-      "font_class": "vip_uploading",
-      "unicode": "e623",
-      "unicode_decimal": 58915
-    },
-    {
-      "icon_id": "22099675",
-      "name": "eye-n",
-      "font_class": "eye-n",
-      "unicode": "e621",
-      "unicode_decimal": 58913
-    },
-    {
-      "icon_id": "22099676",
-      "name": "eye-s",
-      "font_class": "eye-s",
-      "unicode": "e622",
-      "unicode_decimal": 58914
-    },
-    {
-      "icon_id": "22099634",
-      "name": "course",
-      "font_class": "course",
-      "unicode": "e620",
-      "unicode_decimal": 58912
-    },
-    {
-      "icon_id": "22099525",
-      "name": "edit",
-      "font_class": "edit",
-      "unicode": "e61f",
-      "unicode_decimal": 58911
-    },
-    {
-      "icon_id": "22099475",
-      "name": "help",
-      "font_class": "help",
-      "unicode": "e615",
-      "unicode_decimal": 58901
-    },
-    {
-      "icon_id": "22099478",
-      "name": "rule",
-      "font_class": "rule",
-      "unicode": "e617",
-      "unicode_decimal": 58903
-    },
-    {
-      "icon_id": "22099479",
-      "name": "link",
-      "font_class": "link",
-      "unicode": "e618",
-      "unicode_decimal": 58904
-    },
-    {
-      "icon_id": "22099480",
-      "name": "uploading",
-      "font_class": "uploading",
-      "unicode": "e619",
-      "unicode_decimal": 58905
-    },
-    {
-      "icon_id": "22099481",
-      "name": "vr",
-      "font_class": "vr",
-      "unicode": "e61a",
-      "unicode_decimal": 58906
-    },
-    {
-      "icon_id": "22099484",
-      "name": "complete",
-      "font_class": "complete",
-      "unicode": "e61b",
-      "unicode_decimal": 58907
-    },
-    {
-      "icon_id": "22099499",
-      "name": "download",
-      "font_class": "download",
-      "unicode": "e61c",
-      "unicode_decimal": 58908
-    },
-    {
-      "icon_id": "22099518",
-      "name": "pull-down",
-      "font_class": "pull-down",
-      "unicode": "e61d",
-      "unicode_decimal": 58909
-    },
-    {
-      "icon_id": "22099519",
-      "name": "pull-up",
-      "font_class": "pull-up",
-      "unicode": "e61e",
-      "unicode_decimal": 58910
-    },
-    {
-      "icon_id": "22099070",
-      "name": "updown",
-      "font_class": "updown",
-      "unicode": "e613",
-      "unicode_decimal": 58899
-    },
-    {
-      "icon_id": "22099071",
-      "name": "scene",
-      "font_class": "scene",
-      "unicode": "e614",
-      "unicode_decimal": 58900
-    },
-    {
-      "icon_id": "22099025",
-      "name": "message",
-      "font_class": "message",
-      "unicode": "e60c",
-      "unicode_decimal": 58892
-    },
-    {
-      "icon_id": "22099028",
-      "name": "basic",
-      "font_class": "basic",
-      "unicode": "e60d",
-      "unicode_decimal": 58893
-    },
-    {
-      "icon_id": "22099032",
-      "name": "hotspot",
-      "font_class": "hotspot",
-      "unicode": "e60e",
-      "unicode_decimal": 58894
-    },
-    {
-      "icon_id": "22099035",
-      "name": "guide",
-      "font_class": "guide",
-      "unicode": "e60f",
-      "unicode_decimal": 58895
-    },
-    {
-      "icon_id": "22099060",
-      "name": "wander",
-      "font_class": "wander",
-      "unicode": "e610",
-      "unicode_decimal": 58896
-    },
-    {
-      "icon_id": "22099068",
-      "name": "house",
-      "font_class": "house",
-      "unicode": "e611",
-      "unicode_decimal": 58897
-    },
-    {
-      "icon_id": "22099069",
-      "name": "video",
-      "font_class": "video",
-      "unicode": "e612",
-      "unicode_decimal": 58898
-    },
-    {
-      "icon_id": "20066551",
-      "name": "show_3d_normal",
-      "font_class": "show_3d_normal",
-      "unicode": "e677",
-      "unicode_decimal": 58999
-    },
-    {
-      "icon_id": "20066554",
-      "name": "show_plane_normal",
-      "font_class": "show_plane_normal",
-      "unicode": "e67d",
-      "unicode_decimal": 59005
-    },
-    {
-      "icon_id": "20066556",
-      "name": "show_roaming_selected",
-      "font_class": "show_roaming_selected",
-      "unicode": "e682",
-      "unicode_decimal": 59010
-    },
-    {
-      "icon_id": "20066557",
-      "name": "show_plane_selected",
-      "font_class": "show_plane_selected",
-      "unicode": "e684",
-      "unicode_decimal": 59012
-    },
-    {
-      "icon_id": "20066558",
-      "name": "show_3d_selected",
-      "font_class": "show_3d_selected",
-      "unicode": "e685",
-      "unicode_decimal": 59013
-    },
-    {
-      "icon_id": "20066559",
-      "name": "show_roaming_normal",
-      "font_class": "show_roaming_normal",
-      "unicode": "e686",
-      "unicode_decimal": 59014
-    }
-  ]
-}

BIN
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.ttf


BIN
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.woff


BIN
packages/qjkankan-kankan-view/public/viewer/static/lib/iconfont/iconfont.woff2


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
packages/qjkankan-kankan-view/public/viewer/static/lib/jweixin-1.0.0.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
packages/qjkankan-kankan-view/public/viewer/static/lib/jweixin-1.6.0.js


+ 0 - 22
packages/qjkankan-kankan-view/public/viewer/static/lib/mobile-detect.js

@@ -1,22 +0,0 @@
-(function(win) {
-    var orgLink = win.location.href
-    var newLink = ''
-    if (orgLink.indexOf('&mobile=true') != -1) {
-        Object.defineProperty(navigator, 'userAgent', {
-            value: "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",
-            writable: false
-        })
-    }
-    else if (/iPhone|iPad|Android/i.test(win.navigator.userAgent)) {
-        if (orgLink.indexOf('pc.html') !== -1) {
-            newLink = orgLink.replace('pc.html', 'mobile.html')
-        }
-    } else {
-        if (orgLink.indexOf('mobile.html') !== -1) {
-            newLink = orgLink.replace('mobile.html', 'pc.html')
-        }
-    }
-    if (newLink) {
-        win.location.href = newLink
-    }
-}(window))

Разница между файлами не показана из-за своего большого размера
+ 0 - 13
packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper-bundle.min.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 14
packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper-bundle.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 13
packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 14
packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
packages/qjkankan-kankan-view/public/viewer/static/lib/swiper/swiper.min.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 10
packages/qjkankan-kankan-view/public/viewer/static/lib/vconsole.js


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/01.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/02.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/03.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/04.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/05.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/06.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/07.mp3


BIN
packages/qjkankan-kankan-view/public/viewer/static/music/08.mp3


+ 0 - 42
packages/qjkankan-kankan-view/src/apis/index.js

@@ -1,42 +0,0 @@
-import { http } from "@/utils/request";
-import browser from "@/utils/browser";
-
-export const get_goods_list = (data) => {
-  return http.get("/back/product/list", data);
-};
-
-export const get_category_list = (data) => {
-  return http.get("/api/getShopCategory", data);
-};
-
-export const get_shop_list = (data) => {
-  return http.get("/api/getShopByCategory", data);
-};
-
-export const get_tags_list = (data) => {
-  return http.get("/service/scene/edit/tag/getHotJson", data);
-};
-
-export const get_product_info = (data) => {
-  return http.get("/api/getProductInfo", data);
-};
-
-export const get_video = (data) => {
-  return http.get("/api/getVideo", data);
-};
-
-export const inCat = (data) => {
-  return http.get("/api/inCat", data);
-};
-
-export const burying_point = (data) => {
-  let url = encodeURI(window.location.href)
-  return http.get("/api/Point", {
-    userId: browser.getURLParam("userId") || 1,
-    accessToken: browser.getURLParam("accessToken")||'none',
-    cookieId: browser.getURLParam("cookieId")||'none',
-    isMiniApp: browser.getURLParam("isMiniApp")||'h5',
-    whereUrl: url,
-    type: data.type,
-  });
-};

+ 0 - 73
packages/qjkankan-kankan-view/src/app.js

@@ -1,73 +0,0 @@
-let _app
-let _num
-let deferred = KanKan.Deferred()
-
-export function createApp(opitons = {}, forceNew = false) {
-    if (_app) {
-        return
-    }
-    opitons.deploy = process.env.VUE_APP_DEPLOY
-    opitons.region = process.env.VUE_APP_REGION_URL
-    opitons.resource = process.env.VUE_APP_RESOURCE_URL
-    opitons.link = {
-        target: 'self',
-        onAction: function (url) {
-            const newUrl = new URL(url);
-            const isV4 = newUrl.pathname.indexOf('spg.html') > -1 || newUrl.pathname.indexOf('smg.html') > -1;
-            console.log('场景原Link:', url, isV4);
-            let result
-            if (isV4) {
-                const newPathname = '/panorama' + newUrl.pathname;
-                result = newUrl.origin + newPathname + newUrl.search;
-                // var result = newUrl.protocol + part1 + '/panorama/' + part2;
-                console.log('场景V4Link:', result);
-            } else {
-                result = url
-                console.log('场景V3Link:', result);
-            }
-            return result
-        }
-    }
-    _num = opitons.num
-    _app = new KanKan(opitons)
-    deferred.resolve(_app)
-    window.__sdk = _app
-    if (opitons.mobile) {
-        document.body.setAttribute('is-mobile', true)
-    }
-    return _app
-}
-
-export function createAppSingle(opitons = {}) {
-    opitons.deploy = process.env.VUE_APP_DEPLOY
-    opitons.region = process.env.VUE_APP_REGION_URL
-    opitons.resource = process.env.VUE_APP_RESOURCE_URL
-    if (opitons.mobile) {
-        document.body.setAttribute('is-mobile', true)
-    }
-
-    var app = new KanKan(opitons)
-
-    if (!_app) {
-        _app = app
-        deferred.resolve(_app)
-        window.__sdk = _app
-    }
-
-    return app
-}
-
-export function useApp() {
-    if (_app) {
-        return Promise.resolve(_app)
-    }
-    return deferred
-}
-
-export function getApp() {
-    return _app
-}
-
-export function getNum() {
-    return _num
-}

BIN
packages/qjkankan-kankan-view/src/assets/favicon.png


BIN
packages/qjkankan-kankan-view/src/assets/images/browser/browser_Chrome.png


BIN
packages/qjkankan-kankan-view/src/assets/images/browser/browser_Edge.png


BIN
packages/qjkankan-kankan-view/src/assets/images/browser/browser_Firefox.png


BIN
packages/qjkankan-kankan-view/src/assets/images/browser/browser_Safari.png


BIN
packages/qjkankan-kankan-view/src/assets/images/browser/pic_update.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/0.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/1.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/2.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/0.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/1.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/en/2.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-default.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-down.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/enter-style-up.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/icon-corner-24.png


BIN
packages/qjkankan-kankan-view/src/assets/images/floorlogo/icon-corner.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button@2x.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button@3x.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button_empty@2x.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_button_empty@3x.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_text@2x.png


BIN
packages/qjkankan-kankan-view/src/assets/images/guide/novice_guide_text@3x.png


Разница между файлами не показана из-за своего большого размера
+ 0 - 17
packages/qjkankan-kankan-view/src/assets/images/icon/1.svg


Разница между файлами не показана из-за своего большого размера
+ 0 - 17
packages/qjkankan-kankan-view/src/assets/images/icon/2.svg


Разница между файлами не показана из-за своего большого размера
+ 0 - 17
packages/qjkankan-kankan-view/src/assets/images/icon/3.svg


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/bg.png


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/bofang.png


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/gifts_off.png


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/gifts_on.png


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/logo.png


BIN
packages/qjkankan-kankan-view/src/assets/images/icon/top5.png


BIN
packages/qjkankan-kankan-view/src/assets/images/loading.jpg


BIN
packages/qjkankan-kankan-view/src/assets/images/tag/style-tag.png


+ 0 - 333
packages/qjkankan-kankan-view/src/assets/theme.editor.scss

@@ -1,333 +0,0 @@
-// 资源图片目录地址(必要)
-$img-base-path: '~@/global_components/assets/img/';
-@import '~@/global_components/assets/scss/theme-editor.scss';
-
-:root {
-    --editor-main-color: #0076f6;
-    --editor-font-color: #999;
-
-    --editor-toolbox-top: 0;
-    --editor-toolbox-left: 0;
-    --editor-toolbox-width: 240px;
-    --editor-toolbox-padding: 0 10px;
-    --editor-menu-active: rgba(0, 200, 175, 0.16);
-
-    --colors-primary-base: var(--editor-main-color);
-    --colors-primary-click: #005046;
-}
-
-::-webkit-scrollbar {
-    width: 4px;
-    height: 1px;
-}
-
-::-webkit-scrollbar-thumb {
-    border-radius: 4px;
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    background: #ccc;
-}
-
-::-webkit-scrollbar-thumb:hover {
-    background: #999;
-}
-
-::-webkit-scrollbar-track {
-    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-    border-radius: 4px;
-    background: #000000;
-}
-ul,
-li {
-    margin: 0;
-    padding: 0;
-    list-style: none;
-}
-html {
-    line-height: 1.15;
-    -webkit-text-size-adjust: 100%;
-}
-html,
-body {
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    font-size: 14px;
-    overflow: hidden;
-    user-select: none;
-}
-#app {
-    width: 100%;
-    height: 100%;
-    overflow: hidden;
-    color: #fff;
-    background-color: #232323;
-}
-
-.disable * {
-    opacity: 0.85;
-    pointer-events: none;
-}
-
-.enable {
-    opacity: 1 !important;
-    pointer-events: all !important;
-    * {
-        opacity: 1 !important;
-        pointer-events: all !important;
-    }
-}
-
-.hidden {
-    visibility: hidden !important;
-    pointer-events: none !important;
-    z-index: -1;
-}
-
-.scene {
-    position: absolute;
-    left: 0;
-    top: 0;
-    width: 100%;
-    height: 100%;
-    overflow: hidden;
-    z-index: 1;
-}
-.slide-right-enter-active,
-.slide-right-leave-active {
-    will-change: transform;
-    transition: all 0.2s ease-in-out;
-}
-.slide-right-enter-from {
-    opacity: 0;
-    transform: translate3d(100%, 0, 0);
-}
-.slide-right-enter {
-    opacity: 1;
-    transform: translate3d(-100%, 0, 0);
-}
-.slide-right-leave-active {
-    opacity: 0;
-    transform: translate3d(100%, 0, 0);
-}
-// .slide-right-enter-active,
-// .slide-right-leave-active,
-// .slide-left-enter-active,
-// .slide-left-leave-active {
-//     will-change: transform;
-//     transition: all 0.35s ease-in-out;
-//     position: absolute;
-// }
-
-.fade-enter,
-.fade-leave-to {
-    opacity: 0;
-}
-.fade-enter-to,
-.fade-leave {
-    opacity: 1;
-}
-.fade-enter-active,
-.fade-leave-active {
-    transition: all 3s;
-}
-
-.slide-right-enter {
-    opacity: 1;
-    transform: translate3d(-100%, 0, 0);
-}
-.slide-right-leave-active {
-    opacity: 1;
-    transform: translate3d(100%, 0, 0);
-}
-.slide-left-enter {
-    opacity: 1;
-    transform: translate3d(-100%, 0, 0);
-}
-.slide-left-leave-active {
-    opacity: 1;
-    transform: translate3d(100%, 0, 0);
-}
-
-.ui-view-layout {
-    width: 100%;
-    height: 100%;
-    visibility: hidden;
-    position: relative;
-    &.show {
-        visibility: visible;
-    }
-}
-input[type="password"]::-ms-reveal{
-  display:none
-}
-.ui-editor-toolbox {
-    .edit-list {
-        li {
-            margin-top: 20px;
-            color: var(--editor-font-color);
-            border-bottom: solid 1px rgba(255, 255, 255, 0.16);
-            &:last-child {
-                border-bottom: none;
-            }
-            > div {
-                margin-bottom: 14px;
-            }
-            label {
-                color: #fff;
-                i {
-                    cursor: pointer;
-                }
-            }
-            .title {
-                display: flex;
-                justify-content: space-between;
-                align-items: center;
-                span {
-                    font-weight: bold;
-                    font-size: 16px;
-                }
-            }
-
-            .between {
-                display: flex;
-                align-items: center;
-                justify-content: space-between;
-            }
-        }
-    }
-}
-
-.ql-editor {
-    padding: 0;
-}
-a {
-    color: #ED5D18;
-}
-
-[xui_min_map] {
-    top: 20px !important;
-    right: 20px !important;
-}
-.slider-box {
-    position: fixed;
-    top: 0;
-    right: 0;
-    width: var(--editor-toolbox-width);
-    height: 100%;
-    background: rgba(20, 20, 20, 1);
-    z-index: 1;
-    .slider-content {
-        color: rgba(255, 255, 255, 0.6);
-        .content-item {
-            padding: 20px 10px;
-            box-sizing: border-box;
-            border-bottom: 1px solid rgba(255, 255, 255, 0.16);
-            box-sizing: border-box;
-            &:last-of-type {
-                border-bottom: 1px solid transparent;
-            }
-        }
-
-        .item-title {
-            font-size: 16px;
-            font-weight: bold;
-            color: #999;
-            margin-bottom: 14px;
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-        }
-    }
-    .slider-title {
-        height: 64px;
-        border-bottom: 1px solid rgba(255, 255, 255, 0.16);
-        color: #999;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        padding: 20px 10px;
-        box-sizing: border-box;
-        span {
-            font-size: 18px;
-            color: #999;
-            font-weight: bold;
-        }
-        i {
-            cursor: pointer;
-        }
-    }
-}
-
-[is-mobile] {
-    [xui_min_map] {
-        width: 100px;
-        height: 100px;
-        top: 2.3rem !important;
-        right: 15px !important;
-        background-color: rgba(0, 0, 0, 0.2) !important;
-        border-radius: 4px 4px 0 0  !important;
-        border-top-left-radius: 0 !important;
-        transition: all .3s;
-        &.collapse{
-          transform: translateX(calc(100% + 15px));
-          .button-switch{
-            >.iconfont{
-              font-size: 12px;
-              transform: rotate(180deg) scale(.7);
-            }
-       
-          }
-        }
-        .button-switch {
-            position: absolute;
-            top: 0;
-            left: -18px;
-            background-color: rgba(0, 0, 0, 0.2);
-            height: 32px;
-            width: 18px;
-            border-radius: 4px 0 0 4px;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            transition: rotate .3s;
-            >.iconfont{
-              font-size: 12px;
-              transform: scale(.7);
-            }
-        }
-        .change{
-            position: absolute;
-            bottom: -29px;
-            left: 0;
-            height: 28px;
-            background-color: rgba(0, 0, 0, 0.2);
-            width: 100%;
-            text-align: center;
-            margin: 0;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            border-radius: 0 0 4px 4px!important;
-            >i{
-                margin-right: 4px;
-            }
-        }
-    }
-    .ui-dialog{
-        .ui-dialog__box{
-            min-width: 100px;
-            width: 90%;
-        }
-    }
-}
-
-.v-enter,
-.v-leave-to {
-    opacity: 0;
-    transform: translateY(100px);
-}
-
-.v-enter-active,
-.v-leave-active {
-    transition: all 0.25s ease;
-}

+ 0 - 86
packages/qjkankan-kankan-view/src/components/Controls/BottomControl.vue

@@ -1,86 +0,0 @@
-<template>
-    <div class="bottom-controls" :class="{ hidden: isHidden }" :style="{ bottom }" v-show="show">
-        <FloorSwitch />
-        <tours />
-    </div>
-</template>
-<script setup>
-import { computed } from 'vue'
-import { useStore } from 'vuex'
-import { ref } from 'vue'
-import { useApp, getApp } from '@/app'
-import FloorSwitch from './FloorSwitch'
-import tours from './tours'
-
-const store = useStore()
-const show = ref(false)
-const isHidden = ref(false)
-const bottom = computed(() => {
-    return store.getters.controlsBottom
-})
-useApp().then(app => {
-    app.Scene.on('loaded', () => (show.value = true))
-})
-
-</script>
-
-<style lang="scss" scoped>
-.bottom-controls {
-    width: 100%;
-    position: absolute;
-    left: 0;
-    right: var(--editor-toolbox-width);
-    bottom: 20px;
-    height: 34px;
-    display: flex;
-    justify-content: space-between;
-    transition: bottom 0.3s ease;
-    z-index: 100;
-}
-
-:deep(.buttons) {
-    pointer-events: all;
-    display: flex;
-    align-items: center;
-    justify-content: space-around;
-    height: 34px;
-    border-radius: 17px;
-    background-color: rgba(0, 0, 0, 0.3);
-    > div {
-        position: relative;
-        margin-left: 20px;
-        margin-right: 20px;
-        cursor: pointer;
-        &.active {
-            color: var(--editor-main-color);
-        }
-        > i {
-            font-size: 18px;
-        }
-        span {
-            cursor: pointer;
-            display: none;
-            position: absolute;
-            top: -20px;
-            right: -15px;
-            width: 24px;
-            height: 24px;
-            background-color: rgba(0, 0, 0, 0.5);
-            border-radius: 50%;
-            align-items: center;
-            justify-content: center;
-            color: var(--editor-main-color);
-            transition: all 0.1s;
-
-            &:hover {
-                transform: scale(1.2);
-            }
-            &.disable {
-                i {
-                    opacity: 0.5;
-                }
-            }
-        }
-    }
-}
-</style>

+ 0 - 471
packages/qjkankan-kankan-view/src/components/Controls/Control.Mobile.vue

@@ -1,471 +0,0 @@
-<template>
-  <div>
-    <FloorSwitch />
-    <tours />
-  </div>
-</template>
-<script setup>
-import { computed } from 'vue'
-import { useStore } from 'vuex'
-import { ref } from 'vue'
-import { useApp, getApp } from '@/app'
-import FloorSwitch from './FloorSwitch'
-import tours from './tours.mobile'
-
-const store = useStore()
-const show = ref(false)
-const isHidden = ref(false)
-const bottom = computed(() => {
-    return store.getters.controlsBottom
-})
-useApp().then(app => {
-    app.Scene.on('loaded', () => (show.value = true))
-})
-
-
-</script>
-<style lang="scss" scoped>
-.disable {
-  opacity: 1;
-}
-.toolbar {
-  position: absolute;
-  left: -1px;
-  right: auto;
-  bottom: 44px;
-  height: 36px;
-  padding-right: 1.31579rem;
-  background-color: rgba(0, 0, 0, 0.5);
-  border-top-right-radius: 18px;
-  border-bottom-right-radius: 18px;
-  border: 1px solid rgba(255, 255, 255, 0.1);
-  z-index: 10;
-  transition: all 0.3s;
-  font-size: 14px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  &.show {
-    display: block;
-  }
-  &.collapse {
-    transform: translateX(calc(-100% + 1.26316rem));
-    // left: calc(-100% + 1.6rem);
-    background-color: rgba(0, 0, 0, 0.2);
-    .switch {
-      //opacity: 0.5;
-      i {
-        transform: rotate(180deg);
-      }
-    }
-  }
-
-  i {
-    font-size: 0.45rem;
-  }
-  .tour-control {
-    margin-left: 0.4267rem;
-    padding-right: 0.2667rem;
-    position: relative;
-    ::-webkit-scrollbar {
-      display: none;
-    }
-    &.only {
-      padding-right: 0.5333rem;
-      border-right: 1px solid rgba(255, 255, 255, 0.16);
-    }
-    .btn-box {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      > i {
-        margin-right: 0.2667rem;
-      }
-      span {
-        margin-left: 0.10526rem;
-        white-space: nowrap;
-        margin-right: 0.1333rem;
-      }
-      .btn-text {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        .pull-icon {
-          font-size: 0.24rem;
-          transition: transform 0.3s;
-          display: block;
-          &.up {
-            transform: rotate(-180deg);
-          }
-        }
-      }
-    }
-
-    .part-content {
-      // position: fixed;
-      position: absolute;
-      max-width: calc(100vw - 0.8533rem);
-      height: 1.8667rem;
-      background: rgba(0, 0, 0, 0.5);
-      // border: 1px solid rgba(255, 255, 255, 0.1);
-      // bottom: 2.9867rem;
-      bottom: 1.4867rem;
-      // left: 3%;
-      left: 0;
-      // left: 50%;
-      // transform: translateX(-50%);
-      border-radius: 0.1333rem;
-
-      pointer-events: all;
-      padding: 0 0.1333rem;
-      display: flex;
-      align-items: center;
-      &.ban {
-        pointer-events: none;
-      }
-      &::before {
-        position: absolute;
-        content: "";
-        // left: 1.4rem;
-        left: 0.5rem;
-        bottom: -8px;
-        width: 0;
-        height: 0;
-        border-left: 12px solid transparent;
-        border-right: 12px solid transparent;
-        border-top: 8px solid rgba(0, 0, 0, 0.5);
-      }
-      .slide-box {
-        width: 100%;
-        border-radius: 0.08rem;
-        overflow: hidden;
-      }
-      .tour-list {
-        width: 100%;
-        height: 100%;
-        display: flex;
-        align-items: center;
-
-        .tour-item {
-          width: 2.4rem;
-          height: 1.6rem;
-          border-radius: 0.1067rem;
-          background: #fff;
-          margin-right: 0.1333rem;
-          float: left;
-          box-sizing: border-box;
-          overflow: hidden;
-          position: relative;
-          background-repeat: no-repeat;
-          background-size: cover;
-          background-position: center center;
-          &:last-of-type {
-            margin-right: 0;
-          }
-          .mask-item {
-            width: 100%;
-            height: 0.5333rem;
-            background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) 0%, rgba(0, 0, 0, 0.5) 100%);
-            position: absolute;
-            bottom: 0;
-            left: 0;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            span {
-              font-size: 0.32rem;
-              position: relative;
-              z-index: 2;
-            }
-            .precent {
-              width: 10%;
-              height: 0.5333rem;
-              position: absolute;
-              bottom: 0;
-              left: 0;
-              background: #00c8af;
-              opacity: 0.4;
-              z-index: 1;
-              transition: width 0.1s;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-.switch {
-  position: absolute;
-  right: 0;
-  top: 0;
-  display: flex;
-  width: 1rem;
-  height: 100%;
-  align-items: center;
-  i {
-    margin-left: 0.2rem;
-    font-size: 0.28rem;
-  }
-}
-.guide {
-  display: flex;
-  height: 100%;
-  width: calc(100vw - 2rem);
-  flex-shrink: 0;
-  &.flex {
-    width: auto;
-  }
-  > div {
-    height: 100%;
-    width: 100%;
-    &.play {
-      display: none;
-    }
-    &.play {
-      position: relative;
-      display: flex;
-      flex-direction: column;
-      align-items: center;
-      justify-content: center;
-      width: 0.8rem;
-      margin: 0 0.3rem;
-      &::after {
-        content: "";
-        position: absolute;
-        top: 50%;
-        right: -0.3rem;
-        width: 1px;
-        height: 35%;
-        transform: translateY(-50%);
-        background-color: rgba(255, 255, 255, 0.6);
-        box-shadow: 1px 0px 1px 0px rgba(0, 0, 0, 0.2);
-      }
-    }
-
-    &.rooms {
-      flex: 1;
-      width: 100%;
-      overflow: hidden;
-      padding: 4px 0;
-      margin-left: 0.3rem;
-    }
-  }
-}
-.ctrls {
-  display: flex;
-  height: 100%;
-  flex-shrink: 0;
-  align-items: center;
-  &.notzh {
-    &.noguide {
-      > div {
-        &:first-child {
-          span {
-            left: 10px;
-            transform: translateX(0);
-            &::after {
-              left: 5px;
-              transform: translateX(0) rotate(-180deg);
-            }
-          }
-        }
-      }
-    }
-    > div {
-      padding: 0.3rem 0.3rem;
-      &.play {
-        span {
-          display: flex;
-          left: auto;
-          bottom: auto;
-          width: 1rem;
-          background: transparent;
-          transform: none;
-          margin-bottom: 0;
-          &::after {
-            display: none;
-          }
-          em {
-            display: none;
-          }
-          i {
-            font-size: 12px;
-          }
-        }
-      }
-      &.rooms {
-        &::after {
-          left: 1rem;
-        }
-      }
-      span {
-        display: none;
-        margin: 0;
-        margin-bottom: 0.5rem;
-        padding: 5px 4px;
-        position: absolute;
-        left: 50%;
-        bottom: 100%;
-        border-radius: 4px;
-        background-color: rgba(0, 0, 0, 0.7);
-        transform: translateX(-50%);
-        z-index: 1000;
-        &::after {
-          content: "";
-          position: absolute;
-          bottom: -6px;
-          left: 50%;
-          width: 0;
-          height: 0;
-          border-width: 0 7px 6px;
-          border-style: solid;
-          border-color: transparent transparent rgba(0, 0, 0, 0.7);
-          transform: translateX(-50%) rotate(-180deg);
-        }
-        &.show {
-          display: block;
-        }
-      }
-    }
-  }
-  &.flex {
-    > div {
-      &.rooms {
-        right: auto;
-      }
-    }
-  }
-  > div {
-    position: relative;
-    padding: 0.3rem 0.18rem;
-    margin-left: 0.15rem;
-    display: flex;
-    align-items: center;
-    height: 0.89474rem;
-    border-radius: 5px;
-    margin-right: 0.1rem;
-    opacity: 0.5;
-    &.active {
-      opacity: 1;
-    }
-    &.play {
-      padding: 0.3rem 0;
-      opacity: 1;
-      b,
-      span {
-        height: 0.89474rem;
-      }
-
-      b {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        width: 0.8rem;
-      }
-      span {
-        position: relative;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        em {
-          font-style: normal;
-        }
-        i {
-          font-size: 12px;
-          transform: scale(0.6) rotate(-180deg);
-          &.down {
-            transform: scale(0.6) rotate(0);
-          }
-        }
-      }
-    }
-
-    &.rooms {
-      opacity: 0;
-      position: fixed;
-      margin: 0;
-      padding: 4px;
-      left: 15px;
-      right: 15px;
-      bottom: 2.7rem;
-      height: 1.31579rem;
-      background-color: rgba(0, 0, 0, 0.5);
-      border-radius: 0.17789rem;
-      pointer-events: none;
-      visibility: hidden;
-      transition: all 0.3s;
-      transform-origin: 1.5rem 100%;
-      &.init {
-        transform: scale(0);
-      }
-      &.show {
-        visibility: visible;
-        pointer-events: all;
-        transform: scale(1);
-        opacity: 1;
-      }
-      &.hide {
-        visibility: hidden;
-        transition: none;
-      }
-      &::after {
-        content: "";
-        position: absolute;
-        bottom: -9px;
-        left: 1.45rem;
-        width: 0;
-        height: 0;
-        transform: translateY(-50%) rotate(180deg);
-        border-width: 0 6px 6px;
-        border-style: solid;
-        border-color: transparent transparent rgba(0, 0, 0, 0.5);
-      }
-    }
-    span {
-      margin-left: 0.10526rem;
-      white-space: nowrap;
-    }
-  }
-}
-@media (orientation: landscape) {
-  .toolbar {
-    padding-left: 0.5rem;
-    bottom: 0.5rem;
-    height: 0.8rem;
-    font-size: 0.25rem;
-    i {
-      font-size: 0.25rem;
-    }
-  }
-  .guide {
-    width: calc(100vw - 4rem);
-  }
-  .ctrls {
-    > div {
-      height: 0.6rem;
-      &.play {
-        padding: 0.3rem 0;
-        b,
-        span {
-          height: 0.8rem;
-        }
-      }
-      &.rooms {
-        left: 1rem;
-        right: 1rem;
-        bottom: 1.6rem;
-        height: 0.8rem;
-        transform-origin: 1.2rem 100%;
-        &::after {
-          left: 1.12rem;
-        }
-      }
-    }
-  }
-  .switch {
-    i {
-      font-size: 0.2rem;
-    }
-  }
-}
-</style>

+ 0 - 286
packages/qjkankan-kankan-view/src/components/Controls/FloorSwitch.vue

@@ -1,286 +0,0 @@
-<template>
-    <div class="floor-switch" :class="{ disable: flying, showTours: showTours }" v-if="floors.length > 1 && mode != 'panorama'">
-        <ul>
-            <li v-if="mode != 'floorplan'" :class="{ active: 'all' == floorId }" @click.stop="onGotoFloor('all')">
-                <b></b><span>{{ $t('common.all') }}</span>
-            </li>
-            <li v-for="item in floors" :key="item.id" :class="{ active: item.id == floorId }" @click.stop="onGotoFloor(item.id)">
-                <b></b><span>{{ item.name }}</span>
-            </li>
-        </ul>
-    </div>
-</template>
-<script setup>
-import { computed } from 'vue'
-import { useStore } from 'vuex'
-import { useApp } from '@/app'
-const store = useStore()
-const mode = computed(() => store.getters.mode)
-const flying = computed(() => store.getters['flying'])
-const floors = computed(() => store.getters['scene/floors'].reverse())
-const floorId = computed(() => store.getters.floorId)
-const showTours = computed(() => store.getters['tour/showTours'])
-const onGotoFloor = id => {
-    store.commit('setFloor', id)
-}
-useApp().then(sdk =>
-    sdk.Camera.on('mode.beforeChange', ({ toMode, floorIndex }) => {
-        store.commit('mode', toMode)
-        if (toMode != 'dollhouse') {
-            store.commit('setFloorId', floorIndex)
-        }
-    })
-)
-</script>
-
-<style lang="scss" scoped>
-.floor-switch {
-    pointer-events: all;
-    position: absolute;
-    bottom: calc(100% + 5px);
-    left: 20px;
-    z-index: 10;
-    transition: bottom 0.1s;
-    ul,
-    li {
-        padding: 0;
-        margin: 0;
-    }
-    ul {
-        position: relative;
-        z-index: 2;
-    }
-    li {
-        cursor: pointer;
-        display: flex;
-        align-items: center;
-        position: relative;
-        height: 50px;
-        &:first-child {
-            b {
-                &::before {
-                    display: none;
-                }
-            }
-            &.active {
-                b {
-                    &::after {
-                        bottom: -10px;
-                    }
-                }
-            }
-        }
-        &:last-child {
-            b {
-                &::after {
-                    display: none;
-                }
-            }
-            &.active {
-                b {
-                    &::before {
-                        top: -10px;
-                    }
-                }
-            }
-        }
-        b {
-            position: relative;
-            width: 16px;
-            height: 16px;
-            background-color: #1c1c1c;
-            border-radius: 50%;
-            box-shadow: 0px 0px 2px 1px #404040;
-            cursor: pointer;
-            &::before {
-                content: '';
-                position: absolute;
-                top: -5px;
-                left: 50%;
-                margin-left: -3px;
-                background: #1c1c1c;
-                width: 6px;
-                height: 6px;
-            }
-            &::after {
-                content: '';
-                position: absolute;
-                bottom: -5px;
-                left: 50%;
-                margin-left: -3px;
-                background: #1c1c1c;
-                width: 6px;
-                height: 6px;
-            }
-        }
-        span {
-            margin-left: 10px;
-            font-size: 14px;
-            //color: #939393;
-            cursor: pointer;
-            color: #eeeeee;
-            text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.5);
-        }
-        &.active {
-            b {
-                left: -6px;
-                width: 28px;
-                height: 28px;
-                border: solid 6px #1c1c1c;
-                background-color: #404040;
-                box-shadow: 0px 0px 2px 1px #404040;
-                &::before {
-                    top: -10px;
-                }
-                &::after {
-                    bottom: -10px;
-                }
-            }
-            span {
-                margin-left: 0;
-                position: relative;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                height: 32px;
-                color: rgba(255, 255, 255, 0.88);
-                border: solid 4px #1c1c1c;
-                background-color: #404040;
-                border-radius: 32px;
-                box-shadow: 0px 0px 2px 1px #404040;
-                padding: 0px 10px;
-                text-shadow: none;
-                &::before {
-                    content: '';
-                    position: absolute;
-                    left: -10px;
-                    background: #1c1c1c;
-                    width: 7px;
-                    height: 4px;
-                    box-shadow: -2px 0px 2px 1px #404040;
-                }
-                &::after {
-                    content: '';
-                    position: absolute;
-                    left: -16px;
-                    background: #1c1c1c;
-                    width: 6px;
-                    height: 11px;
-                    border-radius: 50%;
-                }
-            }
-        }
-    }
-    &::after {
-        content: '';
-        position: absolute;
-        left: 5px;
-        top: 20px;
-        bottom: 20px;
-        width: 6px;
-        background: #1c1c1c;
-        box-shadow: 0px 0px 2px 1px #404040;
-        z-index: 1;
-    }
-}
-[is-mobile] {
-    .floor-switch {
-        bottom: 2.5rem;
-        &.showTours {
-            bottom: 5rem;
-        }
-        li {
-            height: 45px;
-            &:first-child {
-                &.active {
-                    b {
-                        &::after {
-                            bottom: -6px;
-                        }
-                    }
-                }
-            }
-            &:last-child {
-                &.active {
-                    b {
-                        &::before {
-                            top: -6px;
-                        }
-                    }
-                }
-            }
-            b {
-                width: 14px;
-                height: 14px;
-                &::before {
-                    top: -3px;
-                    left: 50%;
-                    margin-left: -2px;
-                    width: 4px;
-                    height: 4px;
-                }
-                &::after {
-                    bottom: -3px;
-                    left: 50%;
-                    margin-left: -2px;
-                    width: 4px;
-                    height: 4px;
-                }
-            }
-            span {
-                font-size: 0.36842rem;
-            }
-            &.active {
-                b {
-                    left: -3px;
-                    width: 20px;
-                    height: 20px;
-                    border: solid 4px #1c1c1c;
-                    &::before {
-                        top: -6px;
-                    }
-                    &::after {
-                        bottom: -6px;
-                    }
-                }
-                span {
-                    height: 30px;
-                    border: solid 3px #1c1c1c;
-                    border-radius: 30px;
-                    padding: 0px 10px;
-                    margin-left: 5px;
-                    &::before {
-                        left: -11px;
-                        width: 10px;
-                        height: 4px;
-                        box-shadow: -2px 0px 1px 1px #404040;
-                    }
-                    &::after {
-                        left: -14px;
-                        width: 3px;
-                        height: 6px;
-                        border-radius: 40%;
-                    }
-                }
-            }
-        }
-        &::after {
-            left: 5px;
-            top: 20px;
-            bottom: 20px;
-            width: 4px;
-        }
-    }
-
-    @media (orientation: landscape) {
-        .floor-switch {
-            bottom: 1rem;
-            li {
-                span {
-                    font-size: 0.25rem;
-                }
-            }
-        }
-    }
-}
-</style>

+ 0 - 461
packages/qjkankan-kankan-view/src/components/Controls/LeftButtons.vue

@@ -1,461 +0,0 @@
-<template>
-    <div class="controls-left-buttons">
-        <!-- <div class="buttons tour">
-            <div @click="onModeChange('panorama')">
-                <i class="iconfont" :class="['icon-preview']"></i>
-            </div>
-            <div class="show-list">
-                <i class="iconfont" :class="['icon-pull-down']"></i>
-            </div>
-        </div> -->
-        <div class="buttons mode" :class="{ disabled: isPlay || flying }">
-            <div v-if="controls.showPanorama" :class="{ active: viewmode == 'panorama' }" @click="onModeChange('panorama')">
-                <ui-icon tipV="top" :type="viewmode == 'panorama' ? 'show_roaming_selected' : 'show_roaming_normal'"></ui-icon>
-            </div>
-            <div v-if="controls.showFloorplan" :class="{ active: viewmode == 'floorplan' }" @click="onModeChange('floorplan')">
-                <ui-icon tipV="top" :type="viewmode == 'floorplan' ? 'show_plane_selected' : 'show_plane_normal'"></ui-icon>
-            </div>
-            <div v-if="controls.showDollhouse" :class="{ active: viewmode == 'dollhouse' }" @click="onModeChange('dollhouse')">
-                <ui-icon tipV="top" :type="viewmode == 'dollhouse' ? 'show_3d_selected' : 'show_3d_normal'"></ui-icon>
-            </div>
-        </div>
-        <!-- <div class="play-control" v-if="tours.length > 0" :class="{ disabled: flying || isSelect }"> -->
-        <div class="play-control" v-if="tours.length > 0">
-            <div class="play-btn tour-btn" @click="playTour">
-                <ui-icon tipV="top" :type="isPlay ? 'pause' : 'preview'"></ui-icon>
-            </div>
-
-            <div class="tour-btn bor" @click="openTours">
-                <ui-icon type="pull-down" :class="{ active: showTours }"></ui-icon>
-            </div>
-            <!-- <teleport :to="editorMain"> -->
-            <div class="tour-list 111" :class="{ ban: flying || isSelect }" :style="`height:${showTours ? '120px' : '0px'};`">
-                <div class="part-content" ref="tourScroll">
-                    <!-- 多个片段 -->
-                    <div class="part-list" v-if="tours.length > 1">
-                        <div
-                            @click="changeFrame(1, index)"
-                            :class="{ disabled: isPlay && partId != index }"
-                            class="part-item"
-                            :name="index"
-                            v-for="(i, index) in tours"
-                            :style="`background-image:url(${i.frameId ? common.changeUrl(i.list[i.frameId].enter.cover) : common.changeUrl(i.list[0].enter.cover)});`"
-                        >
-                            <div class="part-title">{{ i.name }}</div>
-                            <div v-if="partId == index && progressNum > 0" class="precent" :style="`width:${progressNum}%;`"></div>
-                        </div>
-                    </div>
-                    <!-- 只有一个片段 -->
-                    <div class="part-list frame-list" v-else>
-                        <div
-                            @click="changeFrame(2, index)"
-                            :class="{ disabled: isPlay && frameId != index }"
-                            class="part-item"
-                            v-for="(i, index) in tours[0].list"
-                            :name="index"
-                            :style="`background-image:url(${common.changeUrl(i.enter.cover)});`"
-                        >
-                            <div class="part-title"></div>
-                            <div v-if="frameId == index && progressNum > 0" class="precent" :style="`width:${progressNum}%;`"></div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-            <!-- </teleport> -->
-        </div>
-    </div>
-</template>
-<script setup>
-import { computed, defineProps, onMounted, ref, nextTick } from 'vue'
-import { Scrollbar, Dialog } from '@/global_components'
-import { useApp, getApp } from '@/app'
-import { useStore } from 'vuex'
-import common from '@/utils/common'
-import { useMusicPlayer } from '@/utils/sound'
-const musicPlayer = useMusicPlayer()
-const props = defineProps({
-    isEdit: Boolean,
-})
-let timer = null
-const isSelect = ref(false)
-const store = useStore()
-const tourScroll = ref(null)
-const viewmode = computed(() => store.getters.mode)
-const flying = computed(() => store.getters['flying'])
-const controls = computed(() => store.getters['scene/metadata'].controls || {})
-const showTours = computed(() => store.getters['tour/showTours'])
-const partId = computed(() => {
-    let id = store.getters['tour/partId']
-    if (isPlay.value) {
-        slideScroll()
-    }
-    return id
-})
-
-const frameId = computed(() => {
-    let id = store.getters['tour/frameId']
-    if (isPlay.value) {
-        slideScroll()
-    }
-    return id
-})
-const progressNum = ref(0)
-const isPlay = computed(() => {
-    let status = store.getters['tour/isPlay']
-    let map = document.querySelector('.kankan-app div[xui_min_map]')
-    if (map) {
-        if (status) {
-            map.classList.add('disabled')
-        } else {
-            map.classList.remove('disabled')
-        }
-    }
-    return status
-})
-const isInit = ref(false)
-const tours = computed(() => {
-    let tours = store.getters['tour/tours']
-    if (tours.length > 0) {
-        if (tourScroll.value && !isInit.value) {
-            isInit.value = true
-            new Scrollbar(tourScroll.value, { onlyHorizontal: true })
-        }
-    }
-    return tours
-})
-const onModeChange = name => {
-    store.commit('setMode', name)
-}
-const playTour = async () => {
-    let player = await getApp().TourManager.player
-    if (isPlay.value) {
-        store.commit('tour/setData', { isPlay: true })
-        player.pause()
-    } else {
-        store.commit('tour/setData', { isPlay: true })
-        player.play(partId.value)
-    }
-}
-
-const hanlderTourPartPlay = time => {
-    if (!timer) {
-        timer = KanKan.Animate.transitions.start(progress => {
-            // console.log(progress)
-            progressNum.value = progress * 100
-        }, time)
-    }
-}
-const cancelTimer = () => {
-    if (timer) {
-        KanKan.Animate.transitions.cancel(timer)
-        timer = null
-    }
-}
-const slideScroll = () => {
-    nextTick(() => {
-        let t = setTimeout(() => {
-            clearTimeout(t)
-            let id = tours.value.length > 1 ? partId.value : frameId.value
-            let item = document.querySelector(`.part-item[name="${id}"]`)
-            // let itemLeft = (item.offsetWidth + 10) * (id + 1)
-            // let Scroll = document.querySelector('.part-content .x-scrollbar__container')
-            // // let contentW = slideType == 1 ? document.querySelector('.part-content').offsetWidth : document.querySelector('.iframe-content').offsetWidth
-            // let ScrollW = Scroll.offsetWidth
-            // Scroll.scrollTo({ left: itemLeft - ScrollW + 10, behavior: 'smooth' })
-            item.scrollIntoView({ block: 'center', behavior: 'smooth', inline: 'center' })
-        }, 100)
-    })
-}
-const hanlderTour = async () => {
-    let player = await getApp().TourManager.player
-    player.on('play', data => {
-        musicPlayer.pause(true)
-        // if (tours.value.length > 1) {
-        //     let time = getPartTime(data.partId)
-        //     console.log(time)
-        //     hanlderTourPartPlay(time)
-        // }
-    })
-    player.on('pause', tours => {
-        console.log('pause', player)
-        musicPlayer.resume()
-
-        progressNum.value = 0
-        cancelTimer()
-        store.commit('tour/setData', { isPlay: false })
-    })
-    player.on('end', tours => {
-        musicPlayer.resume()
-        progressNum.value = 100
-        slideScroll()
-        store.commit('tour/setData', { isPlay: false })
-        cancelTimer()
-    })
-
-    let currPartId = null
-    let currProgress = 0
-    let currFrames = 0
-
-    player.on('progress', data => {
-        if (tours.value.length == 1) {
-            progressNum.value = data.progress * 100
-        } else {
-            // let time = getPartTime(data.partId)
-
-            // hanlderTourPartPlay(time)
-
-            if (currPartId != data.partId) {
-                currPartId = data.partId
-                currFrames = tours.value[data.partId].list.length
-                currProgress = 0
-            } else {
-                currProgress += data.progress / currFrames
-                if (currProgress >= 100) {
-                    currProgress = 100
-                }
-
-                progressNum.value = currProgress
-            }
-        }
-        store.commit('tour/setData', { partId: data.partId, frameId: data.frameId, isPlay: true })
-    })
-
-    // nextTick(() => {
-    //     editorMain.value = document.querySelector('.ui-editor-main')
-    // })
-}
-const getPartTime = partId => {
-    cancelTimer()
-    let time = 0
-    // for (let i = 0; i < tours.value[partId].list.length - 1; i++) {
-    //     time += tours.value[partId].list[i].time - 0
-    // }
-    // if (tours.value[partId].list[tours.value[partId].list.length - 1]._end) {
-    //     if (tours.value[partId].list.length > 2) {
-    //         time += (tours.value[partId].list.length - 1) * 1000
-    //     }
-    // } else {
-    //     time += (tours.value[partId].list.length - 1) * 1000
-    // }
-    // for (let i = 0; i < tours.value[partId].list.length; i++) {
-    //     time += tours.value[partId].list[i].time - 0 + 1000
-    // }
-    for (let i = 0; i < tours.value[partId].list.length; i++) {
-        if (!tours.value[partId].list[i]._end) {
-            time += tours.value[partId].list[i].time - 0
-            if (!tours.value[partId].list[i]._notrans) {
-                time += 1000
-            }
-        }
-    }
-    return time
-}
-
-const openTours = () => {
-    // showTours.value = !showTours.value
-    store.commit('tour/setData', { showTours: !showTours.value })
-    let bot = '20px'
-    if (showTours.value) {
-        bot = '140px'
-    } else {
-        bot = '20px'
-    }
-    store.commit('setControlsBottom', bot)
-    nextTick(() => {
-        if (isPlay.value) {
-            slideScroll()
-        }
-    })
-}
-const changeFrame = async (type, id) => {
-    progressNum.value = 0
-    // recorder.selectFrame(id)
-    let player = await getApp().TourManager.player
-    // player.selectFrame(id)
-    isSelect.value = true
-    if (type == 1) {
-        player.selectPart(id)
-        console.log(tours.value[id].frameId)
-        let f_id = 0
-        if (tours.value[id].frameId) {
-            f_id = tours.value[id].frameId
-        }
-        player.selectFrame(f_id).then(() => {
-            isSelect.value = false
-        })
-        store.commit('tour/setData', {
-            frameId: f_id,
-            partId: id,
-        })
-    } else {
-        player.selectFrame(id).then(() => {
-            isSelect.value = false
-        })
-        store.commit('tour/setData', {
-            frameId: id,
-        })
-    }
-
-    slideScroll()
-}
-const onClickHandler = async () => {
-    if (isPlay.value) {
-        let player = await getApp().TourManager.player
-        player.pause()
-        musicPlayer.resume()
-    }
-}
-onMounted(() => {
-    useApp().then(async sdk => {
-        hanlderTour()
-    })
-
-    nextTick(() => {
-        let player = document.querySelector('.player[name="main"]')
-        player.addEventListener('click', onClickHandler)
-    })
-})
-</script>
-
-<style lang="scss" scoped>
-.controls-left-buttons {
-    margin-left: 20px;
-    margin-bottom: 20px;
-    display: flex;
-}
-.buttons.tour {
-    margin-right: 10px;
-    > div {
-        margin-left: 0px;
-        margin-right: 0px;
-        padding: 0 10px;
-        &.show-list {
-            border-left: solid 1px var(--editor-font-color);
-        }
-        .icon-pull-down {
-            font-size: 12px;
-        }
-        span {
-            right: -10px;
-        }
-    }
-}
-.tour-list {
-    width: 100%;
-    position: fixed;
-    bottom: 0;
-    left: 0;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    flex: 1;
-    // height: var(--editor-toolbar-height);
-    height: 120px;
-    background-color: var(--editor-menu-back);
-    pointer-events: all;
-    left: var(--editor-toolbox-left);
-    z-index: 1;
-    transition: all 0.3s ease;
-    &.ban {
-        pointer-events: none;
-    }
-    .part-content {
-        display: flex;
-        flex-direction: row;
-        overflow: hidden;
-        width: 100%;
-        height: 100%;
-        .part-list {
-            width: 100%;
-            height: 120px;
-            display: flex;
-            align-items: center;
-            justify-content: flex-start;
-            padding: 0 10px;
-            box-sizing: border-box;
-            .part-item {
-                width: 120px;
-                height: 80px;
-                position: relative;
-                cursor: pointer;
-                margin-right: 10px;
-                background-repeat: no-repeat;
-                background-size: 100%;
-                background-position: center;
-                &:last-of-type {
-                    margin-right: 0px;
-                }
-                &:hover {
-                    opacity: 0.6;
-                }
-                .precent {
-                    width: 0%;
-                    height: 24px;
-                    position: absolute;
-                    bottom: 0;
-                    left: 0;
-                    background: #00c8af;
-                    opacity: 0.4;
-                    z-index: 1;
-                    // transition: width 0.1s;
-                }
-                .part-title {
-                    width: 100%;
-                    height: 24px;
-                    background: linear-gradient(180deg, rgba(0, 0, 0, 0.25) 0%, rgba(0, 0, 0, 0.5) 100%);
-                    position: absolute;
-                    bottom: 0;
-                    left: 0;
-                    display: flex;
-                    align-items: center;
-                    justify-content: center;
-                    font-size: 14px;
-                    z-index: 10;
-                }
-            }
-        }
-    }
-}
-.play-control {
-    pointer-events: all;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    height: 34px;
-    border-radius: 17px;
-    background-color: rgba(0, 0, 0, 0.3);
-    min-width: 34px;
-    border-radius: 17px;
-    margin-left: 10px;
-
-    .tour-btn {
-        width: 34px;
-        height: 22px;
-        cursor: pointer;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-
-        > .iconfont {
-            font-size: 14px;
-        }
-        &.play-btn {
-            // border-right: 1px solid rgba(255, 255, 255, 0.2);
-            > .iconfont {
-                font-size: 20px;
-                transition: rotate 0.3s;
-            }
-        }
-        &.bor {
-            border-left: 1px solid rgba(255, 255, 255, 0.2);
-
-            > .iconfont {
-                transform: rotate(180deg);
-                &.active {
-                    transform: rotate(0deg);
-                }
-            }
-        }
-    }
-}
-</style>

+ 0 - 456
packages/qjkankan-kankan-view/src/components/Controls/Panel/Guide.vue

@@ -1,456 +0,0 @@
-<template>
-  <div v-show="player.showWidgets" class="root-panel">
-    <div class="guide-panel" :style="{ '--urlbg': `url(${require('@/assets/images/icon/bg.png')})` }">
-      <div class="g-con">
-        <div class="back" @click.stop="playTour">
-          <ui-icon type="back"></ui-icon>
-          <div>返回</div>
-        </div>
-        <div class="swiper-container" id="sw-guide">
-          <ul class="swiper-wrapper"  v-if="tours.length > 1">
-            <li
-              class="swiper-slide"
-              :style="`background-image:url(${i.frameId ? common.changeUrl(i.list[i.frameId].enter.cover) : common.changeUrl(i.list[0].enter.cover)});`"
-              :class="{ active: isPlay && partId == index }"
-              @click="changeFrame(1, index)"
-              v-for="(i, index) in tours"
-              :key="index"
-            >
-              <div>{{ i.name }}</div>
-
-              <span v-if="partId == index && progressNum > 0" class="bar" :style="{ '--w': progressNum + '%' }"></span>
-            </li>
-          </ul>
-          <ul class="swiper-wrapper" v-else>
-            <li
-              class="swiper-slide"
-              :style="`background-image:url(${common.changeUrl(i.enter.cover)});`"
-              :class="{ active: isPlay && frameId == index }"
-              @click="changeFrame(2, index)"
-              v-for="(i, index) in tours[0].list"
-              :key="index"
-            >
-              <div>{{ i.name }}</div>
-
-              <span v-if="frameId == index && progressNum > 0" class="bar" :style="{ '--w': progressNum + '%' }"></span>
-            </li>
-          </ul>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { useStore } from "vuex";
-import common from "@/utils/common";
-import { onMounted, watch, computed, ref, nextTick } from "vue";
-import { useApp, getApp } from "@/app";
-import { useMusicPlayer } from "@/utils/sound";
-let timer = null
-
-const store = useStore();
-const musicPlayer = useMusicPlayer();
-const flying = computed(() => store.getters['flying'])
-const isSelect = ref(false)
-
-const isPlay = computed(() => {
-  let status = store.getters["tour/isPlay"];
-  let map = document.querySelector(".kankan-app div[xui_min_map]");
-  if (map) {
-    if (status) {
-      map.classList.add("disabled");
-    } else {
-      map.classList.remove("disabled");
-    }
-  }
-  return status;
-});
-
-const partId = computed(() => store.getters["tour/partId"]);
-const frameId = computed(() => store.getters["tour/frameId"]);
-
-const playTour = async () => {
-  let player = await getApp().TourManager.player;
-  if (isPlay.value) {
-    store.commit("tour/setData", { isPlay: true });
-    player.pause();
-  } else {
-    store.commit("tour/setData", { isPlay: true });
-    player.play(partId.value);
-  }
-};
-
-const progressNum = ref(0);
-
-const metadata = computed(() => store.getters["scene/metadata"]);
-
-const controls = computed(() => metadata.value.controls);
-
-const player = computed(() => store.getters["player"]);
-
-const tours = computed(() => store.getters["tour/tours"]);
-
-const menulist = ref([
-  {
-    icon: "customer_service",
-    name: "客服",
-  },
-  {
-    icon: "guided_shopping",
-    name: "導購",
-  },
-  {
-    icon: "shopping",
-    name: "購物",
-  },
-]);
-
-const categorylist = ref([
-  {
-    id: "all",
-    name: "全部",
-  },
-  {
-    id: "all",
-    name: "香化",
-  },
-  {
-    id: "all",
-    name: "香化",
-  },
-  {
-    id: "all",
-    name: "香化",
-  },
-  {
-    id: "all",
-    name: "香化",
-  },
-  {
-    id: "all",
-    name: "全部",
-  },
-  {
-    id: "all",
-    name: "全部",
-  },
-]);
-
-const brandlist = ref([
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理MOOST·理MOOST·理MOOST·理MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-]);
-
-const brandScroll = () => {
-  nextTick(() => {
-    let t = setTimeout(() => {
-      clearTimeout(t);
-      new Swiper("#sw-guide", {
-        freeMode: true,
-        slidesPerView: "auto",
-        spaceBetween: 4,
-        on: {
-          touchMove(swiper, e) {
-            e.stopPropagation();
-            e.preventDefault();
-          },
-        },
-      });
-    }, 100);
-  });
-};
-
-const changeFrame = async (type, id) => {
-    if (flying.value || isSelect.value) {
-        return
-    }
-    progressNum.value = 0
-    // recorder.selectFrame(id)
-    let player = await getApp().TourManager.player
-    // player.selectFrame(id)
-    isSelect.value = true
-    if (type == 1) {
-        player.selectPart(id)
-        let f_id = 0
-        if (tours.value[id].frameId) {
-            f_id = tours.value[id].frameId
-        }
-        player.selectFrame(f_id).then(() => {
-            isSelect.value = false
-        })
-        store.commit('tour/setData', {
-            frameId: f_id,
-            partId: id,
-        })
-    } else {
-        player.selectFrame(id).then(() => {
-            isSelect.value = false
-        })
-        store.commit('tour/setData', {
-            frameId: id,
-        })
-    }
-
-}
-const onClickHandler = async () => {
-    if (isPlay.value) {
-        let player = await getApp().TourManager.player
-        player.pause()
-        musicPlayer.resume()
-    }
-}
-const cancelTimer = () => {
-    if (timer) {
-        KanKan.Animate.transitions.cancel(timer)
-        timer = null
-    }
-}
-
-const hanlderTour = async () => {
-  let player = await getApp().TourManager.player;
-  player.on("play", (data) => {
-    musicPlayer.pause(true);
-    // if (tours.value.length > 1) {
-    //     let time = getPartTime(data.partId)
-    //     hanlderTourPartPlay(time)
-    // }
-  });
-  player.on("pause", (tours) => {
-    console.log("pause", player);
-    musicPlayer.resume();
-
-    progressNum.value = 0;
-    cancelTimer();
-    store.commit("tour/setData", { isPlay: false });
-  });
-  player.on("end", (tours) => {
-    musicPlayer.resume();
-    progressNum.value = 100;
-    store.commit("tour/setData", { isPlay: false });
-    cancelTimer();
-  });
-  let currPartId = null;
-  let currProgress = 0;
-  let currFrames = 0;
-  player.on("progress", (data) => {
-    if (tours.value.length == 1) {
-      progressNum.value = data.progress * 100;
-    } else {
-      // let time = getPartTime(data.partId)
-
-      // hanlderTourPartPlay(time)
-
-      if (currPartId != data.partId) {
-        currPartId = data.partId;
-        currFrames = Math.max(tours.value[data.partId].list.length-1,1);
-        currProgress = 0;
-      } else {
-        console.log(currFrames);
-        currProgress += data.progress / currFrames;
-        if (currProgress >= 100) {
-          currProgress = 100;
-        }
-
-        console.log(currProgress);
-
-        progressNum.value = currProgress;
-      }
-    }
-
-    store.commit("tour/setData", { partId: data.partId, frameId: data.frameId, isPlay: true });
-  });
-
-  // nextTick(() => {
-  //     editorMain.value = document.querySelector('.ui-editor-main')
-  // })
-};
-
-onMounted(() => {
-  useApp().then(async (sdk) => {
-    hanlderTour();
-    brandScroll();
-  });
-  nextTick(() => {
-        let player = document.querySelector('.player[name="main"]')
-        player.addEventListener('touchstart', onClickHandler)
-    })
-});
-</script>
-
-<style lang="scss" scoped>
-.root-panel {
-  position: absolute;
-  bottom: 60px;
-  left: 0.2rem;
-  right: 0.2rem;
-  z-index: 99;
-  .guide-panel {
-    width: 100%;
-    height: 50px;
-    position: relative;
-    &::before {
-      position: absolute;
-      bottom: -34px;
-      content: "";
-      background-image: var(--urlbg);
-      background-size: 100% auto;
-      display: inline-block;
-      width: 100%;
-      height: 30px;
-    }
-    .g-con {
-      background: rgba(0, 0, 0, 0.3);
-      border-radius: 4px;
-      border: 1px solid rgba(255, 255, 255, 0.2);
-      width: 90%;
-      height: 100%;
-      margin: 0 auto;
-      padding: 6px 10px;
-      box-sizing: border-box;
-      display: flex;
-      align-items: center;
-      .back {
-        text-align: center;
-        width: 40px;
-        font-size: 0;
-        margin-right: 10px;
-        > div {
-          font-size: 12px;
-          margin-top: 2px;
-        }
-      }
-      #sw-guide {
-        width: 100%;
-        flex: auto;
-        overflow: hidden;
-        padding-right: 2px;
-        position: relative;
-        &::after {
-          position: absolute;
-          right: -1px;
-          bottom: 0;
-          content: "";
-          display: inline-block;
-          height: 100%;
-          z-index: 99;
-          width: 17px;
-          background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, #000000 100%);
-          opacity: 0.4;
-          pointer-events: none;
-        }
-        > ul {
-          > li {
-            width: 70px;
-            height: 36px;
-            border-radius: 2px;
-            position: relative;
-            font-size: 0;
-            overflow: hidden;
-            background-size: cover;
-            > img {
-              width: 100%;
-            }
-            > div {
-              width: 100%;
-              position: absolute;
-              font-size: 12px;
-              left: 50%;
-              top: 50%;
-              transform: translate(-50%, -50%);
-              text-overflow: ellipsis;
-              white-space: nowrap;
-              overflow: hidden;
-              text-align: center;
-              padding: 0 4px;
-              box-sizing: border-box;
-              word-break: break-all;
-            }
-            &.active {
-              &::before {
-                position: absolute;
-                top: 0;
-                left: 0;
-                width: 100%;
-                height: 100%;
-                content: "";
-                display: inline-block;
-                background: rgba(24, 24, 24, 0.5);
-              }
-              color: var(--editor-main-color);
-
-              .bar {
-                display: inline-block;
-                width: 70%;
-                height: 2px;
-                background: rgba(0, 0, 0, 0.5);
-                border-radius: 2px;
-                position: absolute;
-                z-index: 9;
-                bottom: 10%;
-                left: 50%;
-                transform: translateX(-50%);
-                &::after {
-                  content: "";
-                  width: var(--w);
-                  background: var(--editor-main-color);
-                  height: 100%;
-                  position: absolute;
-                  left: 0;
-                  top: 0;
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 460
packages/qjkankan-kankan-view/src/components/Controls/Panel/Main.vue

@@ -1,460 +0,0 @@
-<template>
-  <Panel v-show="player.showWidgets" :isOpen="isOpen" >
-    <div @click="hanldeOpen" class="menu color">
-      <div class="logo">
-        <img :src="require('@/assets/images/icon/logo.png')" alt="" />
-        <p>CDF澳門上葡京</p>
-      </div>
-      <div class="vline"></div>
-      <ul>
-        <li v-if="tours.length > 0">
-          <ui-icon type="preview" @click.stop="playTour"></ui-icon>
-          <div>導覽</div>
-        </li>
-        <li @click.stop="onClickMenu(item)" v-for="(item, i) in menulist" :key="i">
-          <ui-icon :type="item.icon"></ui-icon>
-          <div>{{ item.name }}</div>
-        </li>
-      </ul>
-    </div>
-
-    <div class="toolbar color">
-      <div class="navigation">
-        <div class="h3">專櫃導航</div>
-        <div class="swiper-container" id="sw-navigation">
-          <ul class="swiper-wrapper">
-            <li class="swiper-slide" :class="{liactive:item.sceneUrl === currentM && (item.inPosition.indexOf(currentPose)>-1)}"  @click.stop="onClickShop(item)" v-for="(item, i) in brandlist" :key="i">
-              <div v-if="item.shopLogo" class="img" :style="{ 'background-image': `url(${item.shopLogo})` }"></div>
-              <div class="name" v-if="item.shopName">
-                <span :class="{active:item.shopName.length>6}">
-                  {{ item.shopName }}
-                </span>
-              </div>
-            </li>
-          </ul>
-        </div>
-      </div>
-
-      <div class="category">
-        <div class="swiper-container" id="sw-category">
-          <ul class="swiper-wrapper">
-            <li
-              class="swiper-slide"
-              :class="{ categoryactive: '' == currentCategory.id }"
-              @click.stop="
-                onClickCategory({
-                  id: '',
-                  categoryName: '全部',
-                })
-              "
-            >
-              <div>全部</div>
-            </li>
-            <li
-              @click.stop="onClickCategory(item)"
-              :class="{ categoryactive: item.id == currentCategory.id }"
-              class="swiper-slide"
-              v-for="(item, i) in categorylist"
-              :key="i"
-            >
-              <div>{{ item.categoryName }}</div>
-            </li>
-          </ul>
-        </div>
-      </div>
-    </div>
-  </Panel>
-</template>
-
-<script setup>
-import { useStore } from "vuex";
-import { onMounted, watch, computed, ref, nextTick } from "vue";
-import Panel from "@/views/Panel.vue";
-import { useApp, getApp } from "@/app";
-import * as apis from "@/apis/index.js";
-import browser from "@/utils/browser";
-
-const store = useStore();
-
-const isOpen = ref(false);
-
-const hanldeOpen = ()=>{
-  isOpen.value = true
-  setTimeout(() => {
-    isOpen.value = false
-  }, 200);
-}
-
-const currentCategory = ref({
-  id: "",
-  categoryName: "全部",
-});
-
-const currentM = computed(()=>(browser.getURLParam("m")))
-const currentPose = computed(()=>(browser.getURLParam("pose")))
-
-
-const isPlay = computed(() => {
-  let status = store.getters["tour/isPlay"];
-  let map = document.querySelector(".kankan-app div[xui_min_map]");
-  if (map) {
-    if (status) {
-      map.classList.add("disabled");
-    } else {
-      map.classList.remove("disabled");
-    }
-  }
-  return status;
-});
-
-const partId = computed(() => store.getters["tour/partId"]);
-
-const playTour = async () => {
-  let player = await getApp().TourManager.player;
-  if (isPlay.value) {
-    store.commit("tour/setData", { isPlay: true });
-    player.pause();
-  } else {
-    store.commit("tour/setData", { isPlay: true });
-    player.play(partId.value);
-  }
-};
-
-const metadata = computed(() => store.getters["scene/metadata"]);
-
-const player = computed(() => store.getters["player"]);
-
-const tours = computed(() => store.getters["tour/tours"]);
-
-const menulist = computed(() => {
-  let fff = [
-    {
-      icon: "customer_service",
-      id: "kefu",
-      name: "客服",
-    },
-    // {
-    //   icon: "guided_shopping",
-    //   name: "導購",
-    // },
-    {
-      icon: "shopping",
-      id: "shopping",
-      name: "購物",
-    },
-  ];
-
-  // if (browser.detectWeixinMiniProgram()) {
-  //   fff.shift();
-  // }
-  return fff;
-});
-
-const categorylist = ref([]);
-
-const brandlist = ref([
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理MOOST·理MOOST·理MOOST·理MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-  {
-    img: "show_3d_normal",
-    name: "GAP 蓋璞",
-  },
-  {
-    img: "show_3d_normal",
-    name: "MOOST·理",
-  },
-  {
-    img: "show_3d_normal",
-    name: "H&M",
-  },
-]);
-
-const brandScroll = () => {
-  nextTick(() => {
-    let t = setTimeout(() => {
-      clearTimeout(t);
-      new Swiper("#sw-navigation", {
-        freeMode: true,
-        slidesPerView: "auto",
-        centeredSlides: false,
-        spaceBetween: 10,
-        grid: {
-          rows: 2,
-        },
-        on: {
-          touchMove(swiper, e) {
-            e.stopPropagation();
-            e.preventDefault();
-          },
-        },
-      });
-
-      new Swiper("#sw-category", {
-        freeMode: true,
-        slidesPerView: "auto",
-        spaceBetween: 10,
-        on: {
-          touchMove(swiper, e) {
-            e.stopPropagation();
-            e.preventDefault();
-          },
-        },
-      });
-    }, 100);
-  });
-};
-
-const onClickMenu = (item) => {
-  if (item.id == "kefu") {
-    let mglink =
-      "https://webpage.qidian.qq.com/2/chat/h5/index.html?linkType=1&env=ol&kfuin=3009110132&fid=3655&key=9b4334768c39150ead3f23e11e5dc2e4&cate=7&source=0&isLBS=0&isCustomEntry=0&type=10&ftype=1&_type=wpa&qidian=true&_pid=kvrmvu.74cg11.l43qvbcu&translateSwitch=0&isSsc=0&roleValue=4&roleData=922223821";
-    window.open(mglink,'_blank')
-
-  } else if (item.id == "shopping") {
-    browser.openLink("/subPackage/pages/shoppingcart/shoppingcart", "https://m.cdfmembers.com/shop/600667208/shoppingcart", "/pages/shoppingcart/main");
-  }
-};
-
-const getCategorylist = async () => {
-  let res = await apis.get_category_list({});
-  categorylist.value = res.data;
-  brandScroll();
-};
-
-const onClickCategory = (item) => {
-  currentCategory.value.id = item.id;
-  currentCategory.value.categoryName = item.categoryName;
-};
-
-const onClickShop = (item) => {
-  window.location.href = "".concat(window.location.pathname, "?").concat(`m=${item.sceneUrl}&novideo=1&${item.inPosition}`);
-};
-
-watch(
-  () => currentCategory,
-  (val, old) => {
-    getShoplist();
-  },
-  {
-    deep: true,
-  }
-);
-
-const getShoplist = async () => {
-  let res = await apis.get_shop_list({
-    categoryId: currentCategory.value.id,
-  });
-  brandlist.value = res.data;
-  brandScroll();
-};
-
-onMounted(() => {
-  useApp().then(async (sdk) => {
-    getCategorylist();
-    getShoplist();
-  });
-});
-</script>
-
-<style lang="scss" scoped>
-.menu {
-  width: 100%;
-  border-radius: 6px;
-  border: 1px solid rgba(255, 255, 255, 0.2);
-  background: rgba(0, 0, 0, 0.2);
-  display: flex;
-  justify-content: space-between;
-  box-sizing: border-box;
-  position: relative;
-  align-items: center;
-  height: 48px;
-  padding: 0 12px;
-  text-align: center;
-  .logo {
-    width: 90px;
-    transform: translateY(-24%);
-    > img {
-      width: 100%;
-      border-radius: 4px;
-    }
-    > p {
-      margin: 2px 0;
-      font-size: 10px;
-    }
-  }
-  .vline {
-    width: 1px;
-    height: 14px;
-    background: #fff;
-  }
-  > ul {
-    display: flex;
-    align-items: center;
-    font-size: 0;
-    justify-content: flex-end;
-    > li {
-      margin-left: 0.5rem;
-      &:first-of-type {
-        margin-left: 0;
-      }
-      > div {
-        margin-top: 4px;
-        font-size: 10px;
-      }
-    }
-  }
-}
-
-.toolbar {
-  width: 100%;
-  border-radius: 6px;
-  border: 1px solid rgba(255, 255, 255, 0.2);
-  margin-top: 8px;
-  margin-bottom: 30px;
-  background: rgba(0, 0, 0, 0.2);
-  .navigation {
-    padding: 8px 0;
-
-    .h3 {
-      font-size: 14px;
-      padding: 0 14px;
-    }
-    .swiper-container {
-      width: 100%;
-      height: 130px;
-      overflow: hidden;
-      margin-top: 8px;
-      padding-right: 2px;
-      padding-left: 14px;
-      position: relative;
-
-      &::after {
-        position: absolute;
-        right: 0;
-        bottom: 0;
-        content: "";
-        display: inline-block;
-        height: 100%;
-        z-index: 99;
-        width: 17px;
-        background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, #000000 100%);
-        opacity: 0.4;
-        pointer-events: none;
-      }
-      > ul {
-        margin: 0 !important;
-        > li {
-          width: 60px;
-          height: 60px;
-          border-radius: 4px;
-          position: relative;
-          font-size: 0;
-          overflow: hidden;
-          border: 1px transparent solid;
-          box-sizing: border-box;
-          &.liactive{
-            color:var(--editor-main-color);
-            border: 1px var(--editor-main-color) solid;
-          }
-          .img {
-            width: 100%;
-            height: 100%;
-            background-size: contain;
-          }
-          .name {
-            width: 100%;
-            position: absolute;
-            bottom: -1px;
-            font-size: 12px;
-            left: 0;
-            background: rgba(0, 0, 0, 0.5);
-            // text-overflow: ellipsis;
-            // white-space: nowrap;
-            // overflow: hidden;
-            text-align: center;
-            padding: 2px 4px;
-            box-sizing: border-box;
-            word-break: break-all;
-            > span {
-              display: inline-block;
-              white-space: nowrap;
-            }
-            .active{
-              animation: 5s wordsLoop linear infinite normal;
-            }
-          }
-        }
-      }
-    }
-  }
-  .category {
-    padding: 8px 14px;
-    border-top: 1px solid rgba(255, 255, 255, 0.2);
-
-    .swiper-container {
-      width: 100%;
-      overflow: hidden;
-      > ul {
-        > li {
-          width: auto;
-          color: rgba(255, 255, 255, 0.5);
-          > div {
-            width: 100%;
-            font-size: 14px;
-            padding: 2px 4px;
-          }
-        }
-        .categoryactive {
-          color: #fff;
-        }
-      }
-    }
-  }
-}
-
-@keyframes wordsLoop {
-  0% {
-    transform: translateX(100%);
-    -webkit-transform: translateX(100%);
-  }
-  100% {
-    transform: translateX(-180%);
-    -webkit-transform: translateX(-180%);
-  }
-}
-
-</style>

+ 0 - 131
packages/qjkankan-kankan-view/src/components/Controls/RightButtons.vue

@@ -1,131 +0,0 @@
-<template>
-    <div class="controls-right-buttons" :class="{ disabled: isPlay }">
-        <div @click="onVRClick" v-if="controls.showVR">
-            <ui-icon type="vr" :tip="$t('mode.vr')" tipV="top"></ui-icon>
-        </div>
-        <div :class="{ playing: showMusicPlaying }" v-if="showMusic" @click="onMusicClick">
-            <ui-icon type="music" :tip="showMusicPlaying ? '' : $t('mode.music')" tipV="top"></ui-icon>
-        </div>
-        <div v-if="controls.showRule" class="rule" @click="onRuleClick">
-            <ui-icon :tip="$t('mode.rule')" tipV="top" type="show_more_ruler"></ui-icon>
-        </div>
-        <div @click="onFullScreen">
-            <ui-icon :type="isFullscreen ? 'scene_window' : 'full'" :tip="isFullscreen ? $t('mode.exitFullScene') : $t('mode.fullScene')" tipV="top"></ui-icon>
-            <!-- <i class="iconfont" :class="isFullscreen ? 'icon-scene_window' : 'icon-full'"></i> -->
-        </div>
-    </div>
-    <teleport to="body">
-        <Rules v-if="showRules" @close="closeRules" />
-    </teleport>
-</template>
-<script setup>
-import { computed, ref, onMounted } from 'vue'
-import { useStore } from 'vuex'
-import { useMusicPlayer } from '@/utils/sound'
-import { Dialog } from '@/global_components'
-import { useApp, getApp, getNum } from '@/app'
-import Rules from './rules'
-import { useI18n } from '@/i18n'
-const { t } = useI18n({ useScope: 'global' })
-const store = useStore()
-const controls = computed(() => store.getters['scene/metadata'].controls || {})
-const showMusic = computed(() => store.getters['scene/metadata'].music)
-const showMusicPlaying = ref(false)
-const musicPlayer = useMusicPlayer()
-const isFullscreen = ref(false)
-const showRules = ref(false)
-const onVRClick = () => {
-    Dialog.toast(t('limit.viewInVr'))
-}
-const isPlay = computed(() => {
-    return store.getters['tour/isPlay']
-})
-const closeRules = () => {
-    showRules.value = false
-    getApp().TagManager.cancelMeasure()
-    store.commit('SetOptions', { sceneUI: true })
-}
-const onRuleClick = () => {
-    showRules.value = true
-    getApp().MinMap.hide()
-    getApp().TagManager.startMeasure()
-    store.commit('SetOptions', { sceneUI: false })
-}
-const onMusicClick = () => {
-    // showMusicPlaying.value ? musicPlayer.pause() : musicPlayer.play()
-}
-const onFullScreen = () => {
-    let element = document.documentElement
-    if (isFullscreen.value) {
-        if (document.exitFullscreen) {
-            document.exitFullscreen()
-        } else if (document.webkitCancelFullScreen) {
-            document.webkitCancelFullScreen()
-        } else if (document.mozCancelFullScreen) {
-            document.mozCancelFullScreen()
-        } else if (document.msExitFullscreen) {
-            document.msExitFullscreen()
-        }
-    } else {
-        if (element.requestFullscreen) {
-            element.requestFullscreen()
-        } else if (element.webkitRequestFullScreen) {
-            element.webkitRequestFullScreen()
-        } else if (element.mozRequestFullScreen) {
-            element.mozRequestFullScreen()
-        } else if (element.msRequestFullscreen) {
-            element.msRequestFullscreen()
-        }
-    }
-    // 改变当前全屏状态
-    //this.isFullscreen = !this.isFullscreen;
-}
-onMounted(() => {
-    let events = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange']
-    events.forEach((item, index) => {
-        window.addEventListener(item, () => {
-            isFullscreen.value = !isFullscreen.value
-        })
-    })
-
-    useApp().then(app => {
-        app.TagManager.on('tagManager.firstMarkTagPosB', () => {
-            Dialog.toast(t('toast.clickLeft'))
-        })
-    })
-})
-
-</script>
-<style lang="scss" scoped>
-.controls-right-buttons {
-    display: flex;
-    margin-right: 20px;
-    margin-bottom: 20px;
-    > div {
-        cursor: pointer;
-        margin-left: 10px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        width: 34px;
-        height: 34px;
-        background-color: rgba(0, 0, 0, 0.3);
-        border-radius: 50%;
-        // pointer-events: all;
-        font-size: 18px;
-    }
-    .playing {
-        animation: spinner 4s linear infinite;
-    }
-}
-
-@keyframes spinner {
-    0% {
-        transform: rotate(0);
-    }
-
-    to {
-        transform: rotate(1turn);
-    }
-}
-</style>

+ 0 - 64
packages/qjkankan-kankan-view/src/components/Controls/rules/index.vue

@@ -1,64 +0,0 @@
-<!--  -->
-<template>
-    <div class="rules-box">
-        <ui-button :class="{ disabled: !next }" type="primary" @click="confirmRules"
-            >{{ $t('common.confirm') }}{{ rulesIndex >= 2 ? $t('common.endPoint') : $t('common.startPoint') }}({{ rulesIndex }}/2)</ui-button
-        >
-        <ui-button type="cancel" @click="cancelRules">{{ $t('common.cancel') }}</ui-button>
-    </div>
-</template>
-
-<script setup>
-import { reactive, toRefs, onBeforeMount, onMounted, ref, defineEmits } from 'vue'
-import { useApp, getApp, getNum } from '@/app'
-import { Dialog } from '@/global_components'
-import { useI18n } from '@/i18n'
-const { t } = useI18n({ useScope: 'global' })
-const rulesIndex = ref(1)
-const emits = defineEmits(['close'])
-const confirmRules = () => {
-    getApp().MinMap.show()
-    next.value = false
-    getApp().TagManager.confirmMeasure(rulesIndex.value)
-    if (rulesIndex.value < 2) {
-        Dialog.toast({
-            content: t('toast.ruleConfirmTips'),
-        })
-        rulesIndex.value++
-    } else {
-        cancelRules()
-    }
-}
-const cancelRules = () => {
-    getApp().MinMap.show()
-    emits('close')
-    rulesIndex.value = 1
-}
-const next = ref(false)
-onMounted(() => {
-    getApp().TagManager.on('tagManager.markTagPos', res => {
-        next.value = true
-    })
-})
-</script>
-<style lang="scss" scoped>
-.rules-box {
-    position: fixed;
-    z-index: 1000;
-    bottom: 20px;
-    left: 50%;
-    transform: translateX(-50%);
-    min-width: 150px;
-    .ui-button {
-        margin-bottom: 10px;
-        &:last-of-type {
-            margin-bottom: 0;
-        }
-        &.cancel {
-            background: rgba(92, 92, 92, 0.51) !important;
-            color: #fff !important;
-            border: none !important;
-        }
-    }
-}
-</style>

+ 0 - 551
packages/qjkankan-kankan-view/src/components/Controls/tours.mobile.vue

@@ -1,551 +0,0 @@
-<template>
-  <div
-    class="tour-list 222"
-    v-if="tours.length > 0"
-    :class="{ ban: flying || isSelect, barshow: showTours }"
-  >
-    <teleport to=".kankan-app">
-      <!-- 导览字幕 -->
-      <div
-        class="tours-captions"
-        :class="{ active: showTours }"
-        v-if="tours.length > 0 && isPlay && !tours[partId].list[frameId].tagId"
-      >
-        <!-- <div class="tours-captions" :class="{ active: showTours }" > -->
-        <div class="captions-title" v-if="tours[partId] && tours[partId].title">
-          {{ tours[partId].title || "" }}
-        </div>
-        <div
-          class="captions-desc"
-          v-if="tours[partId] && tours[partId].description"
-        >
-          {{ tours[partId].description || "" }}
-        </div>
-      </div>
-    </teleport>
-
-    <div class="part-content" ref="tourScroll">
-      <!-- 多个片段 -->
-      <ul class="part-list" v-if="tours.length > 1">
-        <li
-          class="part-item"
-          v-for="(item, index) in tours"
-          :key="index"
-          @click="changeFrame(1, index)"
-          :class="{
-            active: partId == index && progressNum > 0,
-            loopspan: item.name.length > spanlength && partId == index,
-            disabled: isPlay && partId != index,
-          }"
-          :name="index"
-        >
-          <span v-if="partId == index">{{ item.name }}</span>
-          <span v-else>{{
-            item.name.length > spanlength
-              ? item.name.slice(0, spanlength)
-              : item.name
-          }}</span>
-          <div v-if="partId == index && progressNum > 0" class="tourbar">
-            <div :style="`width:${progressNum}%;`" class="tourline"></div>
-          </div>
-        </li>
-      </ul>
-      <!-- 只有一个片段 -->
-      <ul class="part-list part-frame" v-else>
-        <li
-          class="part-item"
-          v-for="(item, index) in tours[0].list"
-          :key="index"
-          @click="changeFrame(2, index)"
-          :style="`background-image:url(${common.changeUrl(
-            item.enter.cover
-          )});`"
-          :class="{
-            active: frameId == index && progressNum > 0,
-            activeborder: frameId == index && progressNum <= 0,
-            disabled: isPlay && frameId != index,
-          }"
-          :name="index"
-        >
-          <div v-if="frameId == index && progressNum > 0" class="tourbar">
-            <div :style="`width:${progressNum}%;`" class="tourline"></div>
-          </div>
-        </li>
-      </ul>
-    </div>
-  </div>
-</template>
-<script setup>
-import { computed, inject, onMounted, watch, ref, nextTick } from "vue";
-import { Scrollbar, Dialog } from "@/global_components";
-import { useApp, getApp } from "@/app";
-import { useStore } from "vuex";
-import common from "@/utils/common";
-import { useMusicPlayer } from "@/utils/sound";
-const musicPlayer = useMusicPlayer();
-
-const spanlength = ref(5);
-
-const triggerTour = inject("triggerTour");
-const isOpenTours = inject("isOpenTours");
-let timer = null;
-const isSelect = ref(false);
-const store = useStore();
-const tourScroll = ref(null);
-const flying = computed(() => store.getters["flying"]);
-const controls = computed(() => store.getters["scene/metadata"].controls || {});
-const showTours = computed(() => store.getters["tour/showTours"]);
-const partId = computed(() => {
-  let id = store.getters["tour/partId"];
-  if (isPlay.value) {
-    slideScroll();
-  }
-  return id;
-});
-
-const frameId = computed(() => {
-  let id = store.getters["tour/frameId"];
-  if (isPlay.value) {
-    slideScroll();
-  }
-  return id;
-});
-const progressNum = ref(0);
-const isPlay = computed(() => {
-  let status = store.getters["tour/isPlay"];
-  let map = document.querySelector(".kankan-app div[xui_min_map]");
-  if (map) {
-    if (status) {
-      map.classList.add("disabled");
-    } else {
-      map.classList.remove("disabled");
-    }
-  }
-  return status;
-});
-const isInit = ref(false);
-const tours = computed(() => {
-  let tours = store.getters["tour/tours"];
-  if (tours.length > 0) {
-    if (tourScroll.value && !isInit.value) {
-      isInit.value = true;
-      new Scrollbar(tourScroll.value, { onlyHorizontal: true });
-    }
-  }
-  return tours;
-});
-const onModeChange = (name) => {
-  store.commit("setMode", name);
-};
-
-const playTour = async () => {
-  let player = await getApp().TourManager.player;
-  if (isPlay.value) {
-    store.commit("tour/setData", { isPlay: true });
-    player.pause();
-  } else {
-    store.commit("tour/setData", { isPlay: true });
-    player.play(partId.value);
-  }
-};
-
-const hanlderTourPartPlay = (time) => {
-  if (!timer) {
-    timer = KanKan.Animate.transitions.start((progress) => {
-      progressNum.value = progress * 100;
-    }, time);
-  }
-};
-const cancelTimer = () => {
-  if (timer) {
-    KanKan.Animate.transitions.cancel(timer);
-    timer = null;
-  }
-};
-const slideScroll = () => {
-  nextTick(() => {
-    let t = setTimeout(() => {
-      clearTimeout(t);
-      let id = tours.value.length > 1 ? partId.value : frameId.value;
-      let item = document.querySelector(`.part-item[name="${id}"]`);
-      item.scrollIntoView({
-        block: "center",
-        behavior: "smooth",
-        inline: "center",
-      });
-    }, 100);
-  });
-};
-const hanlderTour = async () => {
-  let player = await getApp().TourManager.player;
-  player.on("play", (data) => {
-    // musicPlayer.pause(true)
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: false,
-        },
-      },
-      "*"
-    );
-  });
-  player.on("pause", (tours) => {
-    console.log("pause", player);
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-
-    progressNum.value = 0;
-    cancelTimer();
-    store.commit("tour/setData", { isPlay: false });
-  });
-  player.on("end", (tours) => {
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-    progressNum.value = 100;
-    slideScroll();
-    store.commit("tour/setData", { isPlay: false });
-    cancelTimer();
-  });
-
-  let currPartId = null;
-  let currProgress = 0;
-  let currFrames = 0;
-
-  player.on("progress", (data) => {
-    if (tours.value.length == 1) {
-      progressNum.value = data.progress * 100;
-    } else {
-      if (currPartId != data.partId) {
-        currPartId = data.partId;
-
-        currFrames = tours.value[data.partId]
-          ? tours.value[data.partId].list.length
-          : 0;
-        currProgress = 0;
-      } else {
-        currProgress += data.progress / currFrames;
-        if (currProgress >= 100) {
-          currProgress = 100;
-        }
-
-        progressNum.value = currProgress;
-      }
-    }
-    store.commit("tour/setData", {
-      partId: data.partId,
-      frameId: data.frameId,
-      isPlay: true,
-    });
-  });
-};
-const getPartTime = (partId) => {
-  cancelTimer();
-  let time = 0;
-  for (let i = 0; i < tours.value[partId].list.length; i++) {
-    if (!tours.value[partId].list[i]._end) {
-      time += tours.value[partId].list[i].time - 0;
-      if (!tours.value[partId].list[i]._notrans) {
-        time += 1000;
-      }
-    }
-  }
-  return time;
-};
-
-const openTours = () => {
-  // showTours.value = !showTours.value
-  store.commit("tour/setData", { showTours: !showTours.value });
-
-  nextTick(() => {
-    if (isPlay.value) {
-      slideScroll();
-    }
-  });
-};
-const changeFrame = async (type, id) => {
-  progressNum.value = 0;
-  // recorder.selectFrame(id)
-  let player = await getApp().TourManager.player;
-  // player.selectFrame(id)
-  isSelect.value = true;
-  if (type == 1) {
-    player.selectPart(id);
-    console.log(tours.value[id].frameId);
-    let f_id = 0;
-    if (tours.value[id].frameId) {
-      f_id = tours.value[id].frameId;
-    }
-    player.selectFrame(f_id).then(() => {
-      isSelect.value = false;
-    });
-    store.commit("tour/setData", {
-      frameId: f_id,
-      partId: id,
-    });
-  } else {
-    player.selectFrame(id).then(() => {
-      isSelect.value = false;
-    });
-    store.commit("tour/setData", {
-      frameId: id,
-    });
-  }
-
-  slideScroll();
-};
-const onClickHandler = async () => {
-  if (isPlay.value) {
-    let player = await getApp().TourManager.player;
-    player.pause();
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-  }
-};
-
-watch(triggerTour, () => {
-  playTour();
-});
-
-watch(isOpenTours, () => {
-  openTours();
-});
-
-watch(isPlay, () => {
-  window.parent.postMessage(
-    {
-      source: "qjkankan",
-      event: "isPlayTours",
-      params: {
-        isPlay: isPlay.value,
-      },
-    },
-    "*"
-  );
-});
-
-onMounted(() => {
-  useApp().then(async (sdk) => {
-    hanlderTour();
-  });
-
-  nextTick(() => {
-    let player = document.querySelector('.player[name="main"]');
-    player.addEventListener("click", onClickHandler);
-  });
-});
-</script>
-
-<style lang="scss" scoped>
-.controls-left-buttons {
-  margin-left: 20px;
-  margin-bottom: 20px;
-  display: flex;
-}
-
-.buttons.tour {
-  margin-right: 10px;
-
-  > div {
-    margin-left: 0px;
-    margin-right: 0px;
-    padding: 0 10px;
-
-    &.show-list {
-      border-left: solid 1px var(--editor-font-color);
-    }
-
-    .icon-pull-down {
-      font-size: 12px;
-    }
-
-    span {
-      right: -10px;
-    }
-  }
-}
-
-.tour-list {
-  position: fixed;
-  bottom: 90px;
-  left: 50%;
-  transform: translateX(-50%);
-  text-align: center;
-  overflow: hidden;
-  max-height: 0;
-  transition: 0.3s all ease;
-  z-index: 9;
-  max-width: 90vw;
-  &.ban {
-    pointer-events: none;
-  }
-
-  .part-content {
-    display: flex;
-    flex-direction: row;
-    overflow: hidden;
-    padding: 6px;
-    background: rgba(0, 0, 0, 0.5);
-    border: 1px solid rgba(255, 255, 255, 0.1);
-    border-radius: 4px;
-    .part-list {
-      display: flex;
-
-      > li {
-        width: 90px;
-        height: 40px;
-        background: rgba(24, 24, 24, 0.5);
-        line-height: 40px;
-        margin: 0 6px;
-        cursor: pointer;
-        border-radius: 4px;
-
-        > span,
-        > div > span {
-          cursor: pointer;
-          display: inline-block;
-          color: rgba(255, 255, 255, 0.8);
-        }
-
-        &.loopspan {
-          > span,
-          > div > span {
-            animation: 5s wordsLoop linear infinite normal;
-          }
-        }
-
-        &.active {
-          position: relative;
-          > span {
-            color: var(--colors-primary-base);
-          }
-          .tourbar {
-            position: absolute;
-            width: 78px;
-            left: 6px;
-            right: 6px;
-            bottom: 4px;
-            height: 2px;
-            border-radius: 2px;
-            background: #000;
-            overflow: hidden;
-
-            .tourline {
-              width: 50%;
-              height: 100%;
-              background: var(--colors-primary-base);
-            }
-          }
-        }
-
-        &:hover {
-          opacity: 0.7;
-        }
-      }
-      .activeborder {
-        border: 1px solid var(--editor-main-color);
-      }
-    }
-
-    .part-frame {
-      > li {
-        width: 120px;
-        height: 80px;
-        background-size: cover;
-        &.active {
-          .tourbar {
-            position: absolute;
-            width: 100%;
-            left: 0;
-            right: 0;
-            bottom: 0;
-            height: 4px;
-            background: #000;
-            overflow: hidden;
-            opacity: 0.5;
-
-            .tourline {
-              width: 50%;
-              height: 100%;
-              background: var(--colors-primary-base);
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.barshow {
-  max-height: 102px;
-}
-
-@keyframes wordsLoop {
-  0% {
-    transform: translateX(100%);
-    -webkit-transform: translateX(100%);
-  }
-  100% {
-    transform: translateX(-180%);
-    -webkit-transform: translateX(-180%);
-  }
-}
-</style>
-<style lang="scss">
-.tours-captions {
-  pointer-events: none;
-  position: absolute;
-  bottom: 2.7rem;
-  // left: -0.4267rem;
-  left: 0;
-  width: 100vw;
-  word-break: break-all;
-  text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.25);
-  text-align: justify;
-  padding: 0 0.2667rem;
-  box-sizing: border-box;
-  transition: all 0.3s;
-  transform: translateX(0);
-  z-index: 10;
-  &.active {
-    bottom: 5rem;
-  }
-  .captions-title {
-    font-size: 0.4267rem;
-    margin-bottom: 0.2667rem;
-    font-weight: bold;
-  }
-  .captions-desc {
-    font-size: 0.3733rem;
-    line-height: 0.44rem;
-  }
-}
-</style>

+ 0 - 555
packages/qjkankan-kankan-view/src/components/Controls/tours.vue

@@ -1,555 +0,0 @@
-<template>
-  <div
-    class="tour-list 333"
-    v-if="tours.length > 0"
-    :class="{ ban: flying || isSelect, barshow: showTours }"
-  >
-    <teleport to=".kankan-app">
-      <!-- 导览字幕 -->
-      <div
-        class="tours-captions"
-        :class="{ active: showTours }"
-        v-if="tours.length > 0 && isPlay && !tours[partId].list[frameId].tagId"
-      >
-        <!-- <div class="tours-captions" :class="{ active: showTours }" > -->
-        <div class="captions-title" v-if="tours[partId] && tours[partId].title">
-          {{ tours[partId].title || "" }}
-        </div>
-        <div
-          class="captions-desc"
-          v-if="tours[partId] && tours[partId].description"
-        >
-          {{ tours[partId].description || "" }}
-        </div>
-      </div>
-    </teleport>
-
-    <div class="part-content" ref="tourScroll">
-      <!-- 多个片段 -->
-      <ul class="part-list" v-if="tours.length > 1">
-        <li
-          class="part-item"
-          v-for="(item, index) in tours"
-          :key="index"
-          @click="changeFrame(1, index)"
-          :class="{
-            active: partId == index && progressNum > 0,
-            loopspan: item.name.length > spanlength && partId == index,
-            disabled: isPlay && partId != index,
-          }"
-          :name="index"
-        >
-          <span v-if="partId == index">{{ item.name }}</span>
-          <span v-else>{{
-            item.name.length > spanlength
-              ? item.name.slice(0, spanlength)
-              : item.name
-          }}</span>
-          <div v-if="partId == index && progressNum > 0" class="tourbar">
-            <div :style="`width:${progressNum}%;`" class="tourline"></div>
-          </div>
-        </li>
-      </ul>
-      <!-- 只有一个片段 -->
-      <ul class="part-list part-frame" v-else>
-        <li
-          class="part-item"
-          v-for="(item, index) in tours[0].list"
-          :key="index"
-          @click="changeFrame(2, index)"
-          :style="`background-image:url(${common.changeUrl(
-            item.enter.cover
-          )});`"
-          :class="{
-            active: frameId == index && progressNum > 0,
-            activeborder: frameId == index && progressNum <= 0,
-            disabled: isPlay && frameId != index,
-          }"
-          :name="index"
-        >
-          <div v-if="frameId == index && progressNum > 0" class="tourbar">
-            <div :style="`width:${progressNum}%;`" class="tourline"></div>
-          </div>
-        </li>
-      </ul>
-    </div>
-  </div>
-</template>
-<script setup>
-import { computed, inject, onMounted, watch, ref, nextTick } from "vue";
-import { Scrollbar, Dialog } from "@/global_components";
-import { useApp, getApp } from "@/app";
-import { useStore } from "vuex";
-import common from "@/utils/common";
-import { useMusicPlayer } from "@/utils/sound";
-const musicPlayer = useMusicPlayer();
-
-const spanlength = ref(5);
-
-const triggerTour = inject("triggerTour");
-const isOpenTours = inject("isOpenTours");
-
-let timer = null;
-const isSelect = ref(false);
-const store = useStore();
-const tourScroll = ref(null);
-const flying = computed(() => store.getters["flying"]);
-const controls = computed(() => store.getters["scene/metadata"].controls || {});
-const showTours = computed(() => store.getters["tour/showTours"]);
-const partId = computed(() => {
-  let id = store.getters["tour/partId"];
-  if (isPlay.value) {
-    slideScroll();
-  }
-  return id;
-});
-
-const frameId = computed(() => {
-  let id = store.getters["tour/frameId"];
-  if (isPlay.value) {
-    slideScroll();
-  }
-  return id;
-});
-const progressNum = ref(0);
-const isPlay = computed(() => {
-  let status = store.getters["tour/isPlay"];
-  let map = document.querySelector(".kankan-app div[xui_min_map]");
-  if (map) {
-    if (status) {
-      map.classList.add("disabled");
-    } else {
-      map.classList.remove("disabled");
-    }
-  }
-  return status;
-});
-const isInit = ref(false);
-const tours = computed(() => {
-  let tours = store.getters["tour/tours"];
-  if (tours.length > 0) {
-    if (tourScroll.value && !isInit.value) {
-      isInit.value = true;
-      new Scrollbar(tourScroll.value, { onlyHorizontal: true });
-    }
-  }
-  return tours;
-});
-const onModeChange = (name) => {
-  store.commit("setMode", name);
-};
-
-const playTour = async () => {
-  let player = await getApp().TourManager.player;
-  if (isPlay.value) {
-    store.commit("tour/setData", { isPlay: true });
-    player.pause();
-  } else {
-    store.commit("tour/setData", { isPlay: true });
-    player.play(partId.value);
-  }
-};
-
-const hanlderTourPartPlay = (time) => {
-  if (!timer) {
-    timer = KanKan.Animate.transitions.start((progress) => {
-      progressNum.value = progress * 100;
-    }, time);
-  }
-};
-const cancelTimer = () => {
-  if (timer) {
-    KanKan.Animate.transitions.cancel(timer);
-    timer = null;
-  }
-};
-const slideScroll = () => {
-  nextTick(() => {
-    let t = setTimeout(() => {
-      clearTimeout(t);
-      let id = tours.value.length > 1 ? partId.value : frameId.value;
-      let item = document.querySelector(`.part-item[name="${id}"]`);
-      item.scrollIntoView({
-        block: "center",
-        behavior: "smooth",
-        inline: "center",
-      });
-    }, 100);
-  });
-};
-const hanlderTour = async () => {
-  let player = await getApp().TourManager.player;
-  player.on("play", (data) => {
-    // musicPlayer.pause(true)
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: false,
-        },
-      },
-      "*"
-    );
-  });
-  player.on("pause", (tours) => {
-    console.log("pause", player);
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-    progressNum.value = 0;
-    cancelTimer();
-    store.commit("tour/setData", { isPlay: false });
-  });
-  player.on("end", (tours) => {
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-    progressNum.value = 100;
-    slideScroll();
-    store.commit("tour/setData", { isPlay: false });
-    cancelTimer();
-  });
-
-  let currPartId = null;
-  let currProgress = 0;
-  let currFrames = 0;
-
-  player.on("progress", (data) => {
-    if (tours.value.length == 1) {
-      progressNum.value = data.progress * 100;
-    } else {
-      if (currPartId != data.partId) {
-        currPartId = data.partId;
-        currFrames = tours.value[data.partId].list.length;
-        currProgress = 0;
-      } else {
-        currProgress += data.progress / currFrames;
-        if (currProgress >= 100) {
-          currProgress = 100;
-        }
-
-        progressNum.value = currProgress;
-      }
-    }
-    store.commit("tour/setData", {
-      partId: data.partId,
-      frameId: data.frameId,
-      isPlay: true,
-    });
-  });
-};
-const getPartTime = (partId) => {
-  cancelTimer();
-  let time = 0;
-  for (let i = 0; i < tours.value[partId].list.length; i++) {
-    if (!tours.value[partId].list[i]._end) {
-      time += tours.value[partId].list[i].time - 0;
-      if (!tours.value[partId].list[i]._notrans) {
-        time += 1000;
-      }
-    }
-  }
-  return time;
-};
-
-const openTours = () => {
-  // showTours.value = !showTours.value
-  store.commit("tour/setData", { showTours: !showTours.value });
-
-  nextTick(() => {
-    if (isPlay.value) {
-      slideScroll();
-    }
-  });
-};
-const changeFrame = async (type, id) => {
-  progressNum.value = 0;
-  // recorder.selectFrame(id)
-  let player = await getApp().TourManager.player;
-  // player.selectFrame(id)
-  isSelect.value = true;
-  if (type == 1) {
-    player.selectPart(id);
-    console.log(tours.value[id].frameId);
-    let f_id = 0;
-    if (tours.value[id].frameId) {
-      f_id = tours.value[id].frameId;
-    }
-    player.selectFrame(f_id).then(() => {
-      isSelect.value = false;
-    });
-    store.commit("tour/setData", {
-      frameId: f_id,
-      partId: id,
-    });
-  } else {
-    player.selectFrame(id).then(() => {
-      isSelect.value = false;
-    });
-    store.commit("tour/setData", {
-      frameId: id,
-    });
-  }
-
-  slideScroll();
-};
-const onClickHandler = async () => {
-  if (isPlay.value) {
-    let player = await getApp().TourManager.player;
-    player.pause();
-    // musicPlayer.resume()
-    window.parent.postMessage(
-      {
-        source: "qjkankan",
-        event: "toggleBgmStatus",
-        params: {
-          status: true,
-        },
-      },
-      "*"
-    );
-  }
-};
-
-watch(triggerTour, () => {
-  playTour();
-});
-
-watch(isOpenTours, () => {
-  openTours();
-});
-
-watch(isPlay, () => {
-  window.parent.postMessage(
-    {
-      source: "qjkankan",
-      event: "isPlayTours",
-      params: {
-        isPlay: isPlay.value,
-      },
-    },
-    "*"
-  );
-});
-
-onMounted(() => {
-  useApp().then(async (sdk) => {
-    hanlderTour();
-  });
-
-  nextTick(() => {
-    let player = document.querySelector('.player[name="main"]');
-    player.addEventListener("click", onClickHandler);
-  });
-});
-</script>
-
-<style lang="scss" scoped>
-$width: 1150px;
-
-.controls-left-buttons {
-  margin-left: 20px;
-  margin-bottom: 20px;
-  display: flex;
-}
-
-.buttons.tour {
-  margin-right: 10px;
-
-  > div {
-    margin-left: 0px;
-    margin-right: 0px;
-    padding: 0 10px;
-
-    &.show-list {
-      border-left: solid 1px var(--editor-font-color);
-    }
-
-    .icon-pull-down {
-      font-size: 12px;
-    }
-
-    span {
-      right: -10px;
-    }
-  }
-}
-
-.tour-list {
-  position: fixed;
-  bottom: 68px;
-  left: 50%;
-  transform: translateX(-50%);
-  text-align: center;
-  max-width: $width;
-  overflow: hidden;
-  max-height: 0;
-  transition: 0.3s all ease;
-  z-index: 9;
-
-  &.ban {
-    pointer-events: none;
-  }
-
-  .part-content {
-    display: flex;
-    flex-direction: row;
-    overflow: hidden;
-    padding: 10px 30px;
-    background: linear-gradient(
-      268deg,
-      rgba(0, 0, 0, 0) 0%,
-      rgba(0, 0, 0, 0.5) 8%,
-      rgba(0, 0, 0, 0.5) 92%,
-      rgba(0, 0, 0, 0) 100%
-    );
-
-    .part-list {
-      display: flex;
-
-      > li {
-        width: 90px;
-        height: 40px;
-        background: rgba(24, 24, 24, 0.5);
-        line-height: 40px;
-        margin: 0 6px;
-        cursor: pointer;
-        border-radius: 4px;
-
-        > span,
-        > div > span {
-          cursor: pointer;
-          display: inline-block;
-          color: rgba(255, 255, 255, 0.8);
-        }
-
-        &.loopspan {
-          > span,
-          > div > span {
-            animation: 5s wordsLoop linear infinite normal;
-          }
-        }
-
-        &.active {
-          position: relative;
-          > span {
-            color: var(--colors-primary-base);
-          }
-          .tourbar {
-            position: absolute;
-            width: 78px;
-            left: 6px;
-            right: 6px;
-            bottom: 4px;
-            height: 2px;
-            border-radius: 2px;
-            background: #000;
-            overflow: hidden;
-
-            .tourline {
-              width: 50%;
-              height: 100%;
-              background: var(--colors-primary-base);
-            }
-          }
-        }
-
-        &:hover {
-          opacity: 0.7;
-        }
-      }
-
-      .activeborder {
-        border: 1px solid var(--editor-main-color);
-      }
-    }
-
-    .part-frame {
-      > li {
-        width: 120px;
-        height: 80px;
-        background-size: cover;
-        &.active {
-          .tourbar {
-            position: absolute;
-            width: 100%;
-            left: 0;
-            right: 0;
-            bottom: 0;
-            height: 4px;
-            background: #000;
-            overflow: hidden;
-            opacity: 0.5;
-
-            .tourline {
-              width: 50%;
-              height: 100%;
-              background: var(--colors-primary-base);
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.barshow {
-  max-height: 102px;
-}
-
-@keyframes wordsLoop {
-  0% {
-    transform: translateX(100%);
-    -webkit-transform: translateX(100%);
-  }
-  100% {
-    transform: translateX(-180%);
-    -webkit-transform: translateX(-180%);
-  }
-}
-</style>
-
-<style lang="scss">
-.tours-captions {
-  position: absolute;
-  bottom: 64px;
-  left: 20px;
-  width: 480px;
-  word-break: break-all;
-  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
-  text-align: justify;
-  color: #fff;
-  pointer-events: none;
-  z-index: 1;
-  transition: all 0.3s;
-  &.active {
-    bottom: 5rem;
-  }
-  .captions-title {
-    font-size: 28px;
-    margin-bottom: 10px;
-    font-weight: 700;
-  }
-  .captions-desc {
-    font-size: 16px;
-    line-height: 24px;
-  }
-}
-</style>

+ 0 - 77
packages/qjkankan-kankan-view/src/components/Header/index.vue

@@ -1,77 +0,0 @@
-<template>
-    <ui-editor-head :class="{ disable }">
-        <span class="title">{{ title }}</span>
-        <ul class="opts">
-            <li><i class="iconfont icon-course1"></i></li>
-            <li class="split"><b></b></li>
-            <li @click="onSave"><i class="iconfont icon-save"></i></li>
-            <li @click="onPublish"><i class="iconfont icon-publish"></i></li>
-        </ul>
-    </ui-editor-head>
-</template>
-<script setup>
-import { computed } from 'vue'
-import { useStore } from 'vuex'
-import { Loading, Dialog } from '@/global_components/'
-const store = useStore()
-const title = computed(() => store.getters['scene/metadata'].title)
-const disable = computed(() => store.getters.outsideDisable)
-const onSave = () => {
-    Loading.show()
-    store.dispatch('scene/save').then(res => {
-        console.log(res)
-        Loading.hide()
-        if (res) {
-            Dialog.toast('保存成功')
-        }
-    })
-}
-const onPublish = () => {
-    Loading.show()
-    store.dispatch('scene/publish').then(res => {
-        Loading.hide()
-        Dialog.toast('发布成功')
-    })
-}
-</script>
-<style lang="scss" scoped>
-.ui-editor-head {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-.title {
-    font-size: 16px;
-}
-.opts {
-    position: absolute;
-    right: 0;
-    top: 0;
-    height: 100%;
-    display: flex;
-    li {
-        cursor: pointer;
-        height: 100%;
-        display: flex;
-        align-items: center;
-        padding: 0 10px;
-        margin-left: 5px;
-        color: var(--editor-font-color);
-        &:hover {
-            color: #fff;
-        }
-        &.split {
-            pointer-events: none;
-        }
-    }
-    i {
-        font-size: 20px;
-    }
-    b {
-        display: block;
-        width: 2px;
-        height: 16px;
-        background-color: rgba(255, 255, 255, 0.16);
-    }
-}
-</style>

+ 0 - 118
packages/qjkankan-kankan-view/src/components/Header/state.js

@@ -1,118 +0,0 @@
-const player = {
-    lang: 'zh',
-    /**
-     * 加载进度
-     */
-    // progres: config.appenv == "shipin" ? -1 : 0,
-    /**
-     * 初始状态模式
-     */
-    mode: 'pano',
-    /**
-     * 可进行模式切换
-     */
-    modeCanSwitch: true,
-    /**
-     * 显示所有UI
-     */
-    showUI: true,
-    /**
-     *
-     */
-    showAppUI: true,
-    /**
-     * 单独控制小地图
-     */
-    showUIMap: false,
-    showMore: false,
-    showDescription: false,
-    showToolbar: true,
-    showUserGuide: true,
-    /**
-     * VR展示
-     */
-    showVR: false,
-    showVRType: null,
-    /**
-     * 显示小地图
-     */
-    showMap: true,
-    /**
-     * 显示场景信息
-     */
-    showInfo: false,
-    /**
-     * 显示闪光灯
-     */
-    showFlash: false,
-    /**
-     * 显示测距模式
-     */
-    showMeasure: false,
-    /**
-     * 显示所有挂件
-     */
-    showWidgets: true,
-    /**
-     * 显示截屏模式
-     */
-    showSnapshot: false,
-    /**
-     * 显示拆分模式
-     */
-    showSplit: false,
-    /**
-     * 显示位置图标
-     */
-    showPositionMarks: false,
-    /**
-     * 显示导航按钮状态
-     */
-    showNavigations: {
-        /**
-         * VR
-         */
-        vr: true,
-        /**
-         * 小地图
-         */
-        map: true,
-        /**
-         * 俯视图
-         */
-        cad: true,
-        /**
-         * 平面模式
-         */
-        m2d: true,
-        /**
-         * 3d模式
-         */
-        m3d: true,
-        /**
-         * 漫游模式
-         */
-        pano: true,
-        /**
-         * 标尺
-         */
-        rule: true,
-        /**
-         * 自动导览
-         */
-        guide: true,
-        /**
-         * 测距
-         */
-        measure: true,
-    },
-    /**
-     * 第二个player是iframe
-     */
-    playbIsIframe: false,
-    /**
-     * 第二个player iframe地址
-     */
-    playerbIframeUrl: '',
-}
-export default player

+ 0 - 761
packages/qjkankan-kankan-view/src/components/Information/View.Mobile.vue

@@ -1,761 +0,0 @@
-<template>
-  <div class="header" v-if="metadata.title">
-    <div class="left" :class="{ show: player.showVR }">
-      <div
-        v-show="mode != 'panorama'"
-        :class="{ disabled: flying }"
-        class="back-pano"
-        @click="onChangeMode"
-      >
-        <ui-icon type="show_back"></ui-icon>
-      </div>
-      <div v-show="mode == 'panorama'" class="back" @click="onBack">
-        <ui-icon type="_back"></ui-icon>
-      </div>
-    </div>
-    <div
-      class="title"
-      :class="{
-        up: player.showDescription,
-        drak: mode != 'panorama',
-        empty: !description,
-      }"
-      @click="onShowDescription"
-      v-show="player.showWidgets"
-    >
-      <div>
-        <span>
-          {{ metadata.title }}
-        </span>
-        <i class="iconfont icon-pull-down"></i>
-      </div>
-    </div>
-    <div class="right"></div>
-    <transition
-      appear
-      name="custom-classes-transition"
-      enter-active-class="animated fadeInUp short faster"
-      leave-active-class="animated fadeOutDown short faster"
-    >
-      <div
-        class="content"
-        :class="{ drak: mode != 'panorama' }"
-        v-if="player.showDescription"
-        @click="onShowDescription"
-      >
-        <div>
-          <div v-html="description"></div>
-        </div>
-      </div>
-    </transition>
-
-    <div class="url-share" v-show="showCopy">
-      <div>
-        <div class="tips">
-          <h4>分享链接给好友</h4>
-          <i class="iconfont iconshow_cancel" @click="showCopy = false"></i>
-        </div>
-        <div class="url">{{ copyLink }}</div>
-        <div class="btns">
-          <ui-button class="cancel" @click="showCopy = false">取消</ui-button>
-          <ui-button class="primary" :data-clipboard-text="copyLink" ref="copy$"
-            >一键复制</ui-button
-          >
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-<script setup>
-import ClipboardJS from "clipboard";
-import browser from "@/utils/browser";
-import { useStore } from "vuex";
-import { Dialog } from "@/global_components/";
-import { MessageToApp, NotchHeight } from "@/utils/platform";
-import { onMounted, watch, computed, ref, nextTick } from "vue";
-
-const store = useStore();
-
-let share_url = browser.getURLParam("share_url");
-if (share_url) {
-  share_url = decodeURIComponent(share_url);
-} else {
-  share_url = location.href.split("#")[0];
-}
-
-const deploy = ref(process.env.VUE_APP_DEPLOY);
-// const musicPlayer = useMusicPlayer();
-const loadingLogoFile = computed(() => store.getters["scene/loadingLogoFile"]);
-const metadata = computed(() => store.getters["scene/metadata"]);
-const controls = computed(() => {
-  return metadata.value.controls;
-});
-
-const showMusic = computed(() => store.getters["scene/metadata"].music);
-const player = computed(() => store.getters["player"]);
-const flying = computed(() => store.getters["flying"]);
-const copy$ = ref(null);
-const copyLink = computed(() => {
-  return share_url.replace("&app", "");
-});
-const showCopy = ref(false);
-const showShare = ref(false);
-const isMusicPlaying = ref(false);
-
-const mode = computed(() => store.getters["mode"]);
-const description = computed(() => metadata.value.description);
-
-watch(
-  () => showCopy.value,
-  (val, old) => {
-    store.commit("SetPlayerOptions", {
-      showMap: !showCopy.value,
-      showToolbar: !showCopy.value,
-    });
-  },
-  {
-    deep: true,
-  }
-);
-watch(
-  () => showShare.value,
-  (val, old) => {
-    store.commit("SetPlayerOptions", {
-      showMap: !showShare.value,
-      showToolbar: !showShare.value,
-    });
-  },
-  {
-    deep: true,
-  }
-);
-
-onMounted(() => {
-  new ClipboardJS(copy$.value.$el).on("success", function (e) {
-    e.clearSelection();
-    showCopy.value = false;
-    Dialog.toast({ content: t("toast.copySuccess"), type: "success" });
-  });
-
-  nextTick(() => {
-    document.querySelector(".player").addEventListener("touchstart", () => {
-      if (player.value.showMore) {
-        store.commit("SetPlayerOptions", {
-          showMore: false,
-          showMap: true,
-          showToolbar: true,
-        });
-      } else if (player.value.showDescription) {
-        store.commit("SetPlayerOptions", {
-          showDescription: false,
-          showMap: true,
-          showToolbar: true,
-        });
-      }
-    });
-
-    window.Back = () => {
-      onBack();
-    };
-  });
-});
-const onListen = () => {
-  // this.$bus.on('orientation', () => {
-  if (NotchHeight) {
-    this.$el.style.top = NotchHeight + "px";
-  }
-
-  // 发送返回按钮信息
-  const rect = document.querySelector(".back").getBoundingClientRect();
-  const data = {
-    BackBtnInfo: {
-      left: rect.left,
-      top: rect.top,
-      radius: rect.width / 2,
-    },
-  };
-  if (browser.detectAndroid()) {
-    MessageToApp(JSON.stringify(data));
-  } else {
-    MessageToApp(data);
-  }
-  // })
-};
-const onBack = () => {
-  // player.value.showVR && store.commit('showVR')
-  if (player.value.showVR) {
-    MessageToApp("VRMode0");
-    store.commit("showVR");
-  }
-};
-const onShowMore = () => {
-  let show = !player.value.showMore;
-  store.commit("SetPlayerOptions", {
-    showMore: show,
-    showMap: show == false,
-    showToolbar: show == false,
-    showDescription: false,
-  });
-};
-const onShowDescription = () => {
-  let show = !player.value.showDescription;
-  store.commit("SetPlayerOptions", {
-    showMore: false,
-    showMap: show == false,
-    showToolbar: show == false,
-    showDescription: show,
-  });
-};
-const onMusicClick = () => {
-  showMusicPlaying.value ? musicPlayer.pause() : musicPlayer.play();
-};
-const onMenuClick = (name) => {
-  store.commit("SetPlayerOptions", {
-    showMore: false,
-    showDescription: false,
-    showMap: true,
-    showToolbar: true,
-  });
-
-  nextTick(() => {
-    if (name == "music") {
-      onMusicClick();
-      // if (isMusicPlaying.value) {
-      //     musicPlayer.pause()
-      // } else {
-      //     musicPlayer.play()
-      // }
-    } else if (name == "share") {
-      showCopy.value = true;
-    } else if (name === "measure") {
-      this.$bus.emit("measure/Handle", "start");
-    } else if (name == "vr") {
-      store.commit("showVR");
-    }
-  });
-};
-const onShare = (name) => {
-  if (name == "copy") {
-    showShare.value = false;
-    nextTick(() => {
-      showCopy.value = true;
-    });
-  } else {
-    MessageToApp(`Share-${name}`);
-    showCopy.value = false;
-    showShare.value = false;
-  }
-};
-const onChangeMode = () => {
-  store.commit("setMode", "panorama");
-};
-</script>
-
-<style lang="scss" scoped>
-.disable {
-  opacity: 1;
-}
-.header {
-  position: absolute;
-  top: 10px;
-  left: 0;
-  height: 44px;
-  width: 100%;
-  z-index: 101;
-  color: #fff;
-  display: flex;
-  align-items: center;
-  text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
-  pointer-events: auto;
-  &.app {
-    top: 1rem;
-  }
-  .left {
-    width: 1rem;
-    height: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    &.show {
-      visibility: visible;
-      pointer-events: auto;
-      .back {
-        visibility: visible;
-      }
-    }
-    .back {
-      width: 0.78rem;
-      height: 0.78rem;
-      border-radius: 50%;
-      background-color: rgba(0, 0, 0, 0.3);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      visibility: hidden;
-      position: relative;
-      i {
-        font-size: 0.3rem;
-        width: auto;
-        position: static;
-      }
-    }
-    .back-pano {
-      width: 100%;
-      height: 100%;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      // padding-left: 15px;
-      position: relative;
-      i {
-        font-size: 0.6rem;
-        position: static;
-      }
-    }
-  }
-  .right {
-    position: relative;
-    width: 1.28rem;
-    height: 100%;
-    padding-right: 15px;
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
-    z-index: 11;
-    > i {
-      font-size: 0.6rem;
-    }
-    > div {
-      position: absolute;
-      display: flex;
-      flex-direction: column;
-      right: 10px;
-      top: 1.3rem;
-      padding: 4px 0.42105rem;
-      background-color: rgba(0, 0, 0, 0.5);
-      border-radius: 5px;
-      &::after {
-        content: "";
-        position: absolute;
-        top: -5px;
-        right: 0.3rem;
-        width: 0;
-        height: 0;
-        border-width: 0 5px 5px;
-        border-style: solid;
-        border-color: transparent transparent rgba(0, 0, 0, 0.5);
-      }
-      &.flex {
-        li {
-          span {
-            flex: 1;
-            width: auto;
-            // min-width: 2.8rem;
-          }
-        }
-      }
-      li {
-        position: relative;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        // margin-top: 0.3rem;
-        font-size: 0;
-        // height: .5333rem;
-        padding: 0.1333rem 0 0.2667rem;
-        i {
-          // position: absolute;
-          // left: 0;
-          // top: 0;
-          // font-size: 0.45rem;
-          font-size: 0.3733rem;
-          margin-right: 0.4rem;
-        }
-        b {
-          position: absolute;
-          left: 0.32rem;
-          top: 0.33rem;
-          width: 7px;
-          height: 7px;
-          border-radius: 50%;
-          background-color: #00c2c4;
-          i {
-            color: #fff;
-            font-size: 12px;
-            transform: scale(0.3, 0.3);
-            top: -4px;
-            left: -3px;
-            position: absolute;
-          }
-        }
-        span {
-          width: 1.89474rem;
-          white-space: nowrap;
-          text-align: left;
-          // padding-bottom: 0.3rem;
-          // margin-left: 0.75rem;
-          font-size: 0.3733rem;
-          // text-indent: 0.2rem;
-          // padding-right: 0.2rem;
-        }
-      }
-
-      .home {
-        border-top: solid 1px rgba(255, 255, 255, 0.4);
-        a {
-          width: 1.89474rem;
-          margin-top: 0.3rem;
-          margin-bottom: 0.1rem;
-          margin-left: auto;
-          margin-right: auto;
-          display: block;
-          text-decoration: none;
-          overflow: hidden;
-
-          img {
-            width: 100%;
-            outline: none;
-            border: none;
-          }
-        }
-      }
-    }
-  }
-  .title {
-    display: flex;
-    flex: 1;
-    width: 100%;
-    height: 100%;
-    font-size: 0.42105rem;
-    letter-spacing: 1px;
-    align-items: center;
-    justify-content: center;
-    pointer-events: auto;
-    > div {
-      display: flex;
-      transition: background 0.3s ease, min-width 0.3s ease,
-        border-radius 0.3s ease;
-      align-items: center;
-      justify-content: center;
-      padding-right: 12px;
-      padding-left: 12px;
-      white-space: nowrap;
-      position: absolute;
-      height: 100%;
-      min-width: 100%;
-      overflow: visible;
-      pointer-events: none;
-      background: linear-gradient(
-        90deg,
-        rgba(0, 0, 0, 0) 0%,
-        rgba(0, 0, 0, 0.15) 50%,
-        rgba(0, 0, 0, 0) 100%
-      );
-    }
-    span {
-      display: inline-block;
-      position: relative;
-      white-space: nowrap;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      max-width: 7rem;
-    }
-    i {
-      transition: all 0.3s;
-      position: absolute;
-      left: 50%;
-      bottom: 0;
-      font-size: 10px;
-      transform: translateX(-50%);
-    }
-
-    &.up {
-      i {
-        transform: translateX(-50%) rotate(180deg);
-      }
-      > div {
-        min-width: 0;
-        //position: static;
-        flex-shrink: 0;
-        background-color: rgba(0, 0, 0, 0.5);
-        border-radius: 1.15789rem;
-      }
-      &.drak {
-        > div {
-          background-color: rgba(0, 0, 0, 0.8);
-        }
-      }
-    }
-
-    &.empty {
-      i {
-        display: none;
-      }
-    }
-  }
-  .content {
-    position: fixed;
-    top: 1.6rem;
-    left: 0.92105rem;
-    right: 0.92105rem;
-    padding: 10px;
-    background: rgba(0, 0, 0, 0.5);
-    border-radius: 5px;
-    font-size: 0.36842rem;
-    text-align: center;
-    max-height: 80vh;
-    max-height: calc(var(--vh) * 80);
-    overflow-y: auto;
-    overflow-x: hidden;
-    -webkit-overflow-scrolling: touch;
-    // z-index: 10000;
-    pointer-events: auto;
-
-    * {
-      pointer-events: auto;
-      -webkit-overflow-scrolling: touch;
-    }
-    &.drak {
-      background: rgba(0, 0, 0, 0.8);
-    }
-    > div {
-      display: inline-block;
-      text-align: left;
-      letter-spacing: 1px;
-      word-break: break-all;
-      white-space: normal;
-      line-height: 1.5;
-
-      :deep(p) {
-        word-break: break-word;
-      }
-
-      :deep(a) {
-        color: var(--editor-main-color);
-      }
-    }
-  }
-
-  .url-share {
-    position: fixed;
-    top: 0;
-    left: 0;
-    right: 0;
-    bottom: 0;
-    background-color: rgba(0, 0, 0, 0.1);
-    > div {
-      position: absolute;
-      left: 0.6rem;
-      right: 0.6rem;
-      top: 50vh;
-      transform: translateY(-50%);
-      border-radius: 4px;
-      background-color: rgba(0, 0, 0, 0.5);
-      padding: 0.31579rem;
-      font-size: 0.36842rem;
-      .tips {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        h4 {
-          margin: 0;
-          font-size: 0.42105rem;
-        }
-        i {
-          font-size: 0.6rem;
-        }
-      }
-      .url {
-        display: -webkit-box;
-        color: #fff;
-        text-align: center;
-        padding: 0.26316rem;
-        width: 100%;
-        height: 1.8rem;
-        margin: 0.7rem 0rem;
-        border-radius: 0.07rem;
-        line-height: 1.99;
-        font-size: 0.36842rem;
-        background-color: rgba(0, 0, 0, 0.35);
-        overflow: hidden;
-        text-overflow: ellipsis;
-        word-break: break-all;
-        word-wrap: break-word;
-        -webkit-line-clamp: 2; //在第几行加省略号
-        -webkit-box-orient: vertical;
-      }
-      .btns {
-        display: flex;
-        justify-content: space-between;
-        button {
-          font-size: 0.36842rem;
-          width: 47%;
-          height: 1.05263rem;
-          border-radius: 1.05263rem;
-          &.submit {
-            background: #00c2c4;
-          }
-        }
-      }
-    }
-  }
-}
-
-@media (orientation: landscape) {
-  .header {
-    top: 0.2rem;
-    height: 0.7rem;
-    &.app {
-      top: 0.2rem;
-    }
-    .left {
-      .back-pano {
-        i {
-          font-size: 0.5rem;
-        }
-      }
-    }
-    .right {
-      > i {
-        font-size: 0.5rem;
-      }
-      > div {
-        right: 10px;
-        top: 0.75rem;
-        padding: 4px 0.2rem;
-        &::after {
-          right: 0.23rem;
-        }
-        li {
-          margin-top: 0.15rem;
-          i {
-            font-size: 0.3rem;
-          }
-          b {
-            left: 0.2rem;
-            top: 0.15rem;
-          }
-          span {
-            padding-bottom: 0.15rem;
-            margin-left: 0.5rem;
-            font-size: 0.25rem;
-          }
-        }
-
-        .home {
-          a {
-            margin-top: 0.15rem;
-            margin-bottom: 0rem;
-            width: 1.4rem;
-          }
-        }
-      }
-    }
-    .title {
-      font-size: 0.3rem;
-    }
-    .content {
-      top: 1rem;
-      left: 2rem;
-      right: 2rem;
-      padding: 10px;
-
-      > div {
-        max-height: 3rem;
-        font-size: 0.25rem;
-        line-height: 1.5;
-      }
-    }
-  }
-}
-
-// ipad 横屏
-@media only screen and (min-device-width: 768px) and (orientation: landscape) {
-  .header {
-    height: 0.8rem;
-    .title {
-      i {
-        margin-bottom: 0;
-      }
-    }
-  }
-}
-.app-share {
-  position: fixed;
-  left: 0;
-  bottom: 0;
-  width: 100%;
-  background-color: #fff;
-  color: var(--editor-main-color);
-  text-shadow: none;
-  border-radius: 0.146667rem 0.146667rem 0px 0px;
-  z-index: 1000;
-  i {
-    // font-size: 2rem;
-    font-size: 1rem;
-    margin: 0.666667rem 0 0.106667rem;
-    display: inline-block;
-  }
-  ul {
-    // display: flex;
-    // justify-content: space-around;
-    overflow: hidden;
-    div {
-      text-align: center;
-      // margin-top: -0.3rem;
-      font-size: 0.34rem;
-    }
-    li {
-      width: 33.3%;
-      float: left;
-      // padding-bottom: 0.5rem;
-      overflow: hidden;
-      text-align: center;
-      // i{
-      //   font-size: 2rem;
-      // }
-    }
-    &.flex {
-      display: flex;
-      li {
-        float: none;
-      }
-    }
-  }
-  > div {
-    height: 1.293333rem;
-    font-size: 16px;
-    text-align: center;
-    // padding: 0.5rem;
-    border-top: solid 1px #eeeeee;
-    margin-top: 0.466667rem;
-    line-height: 1.293333rem;
-  }
-}
-</style>
-<style lang="scss">
-.animated.short {
-  &.faster {
-    animation-duration: 0.3s;
-  }
-  @keyframes fadeInUp {
-    0% {
-      opacity: 0;
-      transform: translate3d(0, 1rem, 0);
-    }
-    to {
-      opacity: 1;
-      transform: translateZ(0);
-    }
-  }
-  @keyframes fadeOutDown {
-    0% {
-      opacity: 1;
-    }
-    to {
-      opacity: 0;
-      transform: translate3d(0, 1rem, 0);
-    }
-  }
-}
-</style>

+ 0 - 159
packages/qjkankan-kankan-view/src/components/Information/View.Pc.vue

@@ -1,159 +0,0 @@
-<template>
-  <div
-    class="title"
-    @click="onShowDescription"
-    :class="{ 'pull-up': showDescription }"
-  >
-    <div class="text">
-      <div>{{ metadata.title }}</div>
-    </div>
-    <div class="icon">
-      <i class="iconfont icon-pull-down"></i>
-    </div>
-  </div>
-  <div
-    v-if="showTitle"
-    class="description"
-    :class="{ show: showDescription }"
-    @click="onShowDescription"
-  >
-    <div class="text" v-html="metadata.description"></div>
-  </div>
-</template>
-
-<script setup>
-import { ref, computed } from "vue";
-
-import { useStore } from "vuex";
-const store = useStore();
-const metadata = computed(() => store.getters["scene/metadata"]);
-const showDescription = ref(false);
-const showTitle = ref(true);
-
-const onShowDescription = () => {
-  showDescription.value = !showDescription.value;
-};
-</script>
-
-<style lang="scss" scoped>
-.title {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  height: 100%;
-  cursor: pointer;
-  transition: all 0.1s;
-  background: linear-gradient(
-    90deg,
-    rgba(0, 0, 0, 0) 0%,
-    rgba(0, 0, 0, 0.3) 50%,
-    rgba(0, 0, 0, 0) 100%
-  );
-  &.collapse {
-    // width: 34px;
-    padding-right: 0;
-    .back-btn {
-      .iconfont {
-        transform: rotate(180deg);
-      }
-      &::after {
-        display: none;
-      }
-    }
-    .text {
-      display: none;
-    }
-    .icon {
-      display: none;
-    }
-  }
-  .back-btn {
-    width: 34px;
-    height: 34px;
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    cursor: pointer;
-    position: relative;
-    transition: all 0.1s;
-    &::after {
-      content: "";
-      position: absolute;
-      width: 1px;
-      height: 65%;
-      background: linear-gradient(transparent, #fff, transparent);
-      top: 50%;
-      transform: translateY(-50%);
-      right: 0;
-    }
-  }
-  .text {
-    // width: 190px;
-    text-align: center;
-    min-width: 240px;
-    transition: width 0.3s;
-    padding: 0 20px;
-
-    > div {
-      width: 100%;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-    }
-  }
-  .icon {
-    i {
-      transition: transform 0.2s ease-in-out;
-    }
-  }
-
-  &.pull-up {
-    background: rgba($color: #000000, $alpha: 0.5);
-    border-radius: 17px;
-    // .text {
-    //     width: 240px;
-    //     padding-left: 20px;
-
-    //     > div {
-    //         // width: 100%;
-    //         // overflow: hidden;
-    //         // text-overflow: ellipsis;
-    //         // white-space: nowrap;
-    //     }
-    // }
-    .icon {
-      i {
-        transform: rotate(180deg);
-      }
-    }
-  }
-}
-// ::-webkit-scrollbar-track {
-//     background: none;
-//   }
-.description {
-  display: none;
-  position: absolute;
-  left: 50%;
-  transform: translateX(-50%);
-  top: calc(100% + 10px);
-  background: rgba(15, 15, 15, 0.5);
-  border-radius: 10px;
-  max-height: 60vh;
-  overflow-y: auto;
-  overflow-x: hidden;
-
-  &.show {
-    display: block;
-  }
-  .text {
-    padding: 20px;
-    width: 400px;
-    letter-spacing: 1px;
-    overflow: hidden;
-    word-break: break-all;
-    white-space: normal;
-    line-height: 1.5;
-  }
-}
-</style>

+ 0 - 68
packages/qjkankan-kankan-view/src/components/Information/index.vue

@@ -1,68 +0,0 @@
-<template>
-    <div class="information" :class="{ mobile: mobile, disabled: isPlay }">
-        <!-- <component :is="page"></component> -->
-        <ViewMobile v-if="mobile" />
-        <ViewPc v-else />
-    </div>
-</template>
-
-<script setup>
-import ViewPc from './View.Pc.vue'
-import ViewMobile from './View.Mobile.vue'
-import { ref, markRaw, onMounted, computed, watch } from 'vue'
-import { useApp } from '@/app'
-import { useStore } from 'vuex'
-const store = useStore()
-
-const mobile = ref(false)
-// const page = ref(ViewMobile)
-const isPlay = computed(() => store.getters['tour/isPlay'])
-useApp().then(app => {
-    mobile.value = app.config.mobile
-    // console.log(app.config)
-    // page.value = mobile.value ? ViewMobile : ViewPc
-})
-</script>
-
-<style lang="scss" scoped>
-.information {
-    position: absolute;
-    left: 50%;
-    transform: translateX(-50%);
-    top: 30px;
-    height: 34px;
-    border-radius: 0 34px 34px 0;
-    pointer-events: all;
-    color: rgba(255, 255, 255, 0.88);
-    z-index: 100;
-    &.mobile {
-        position: absolute;
-        top: 0;
-        left: 0;
-        // left: 50%;
-        transform: none;
-        width: 100%;
-        background: none;
-        min-height: calc(var(--vh) * 100);
-        pointer-events: none;
-        &.disabled {
-            // position: absolute;
-        }
-    }
-    :deep(.icon) {
-        cursor: pointer;
-        display: flex;
-        position: absolute;
-        right: 0;
-        top: 0;
-        bottom: 0;
-        width: 24px;
-        align-items: center;
-        justify-content: flex-start;
-        color: inherit;
-        i {
-            font-size: 14px;
-        }
-    }
-}
-</style>

+ 0 - 57
packages/qjkankan-kankan-view/src/components/Tags/constant.js

@@ -1,57 +0,0 @@
-import i18n from '@/i18n'
-const { t } = i18n.global
-
-export const custom = () => {
-    return {
-        image: {
-            icon: 'pic',
-            upload: true,
-            uploadPlace: t('common.upload') + t('common.image'),
-            accept: `.jpg,.png`,
-            multiple: true,
-            name: t('common.image'),
-            maxSize: 5 * 1024 * 1024,
-            maxNum: 9,
-            // othPlaceholder: '支持JPG、PNG图片格式,单张不超过5MB,最多支持上传9张。',
-            othPlaceholder: t('tag.toolbox.metaImageTips', { form: 'jpg/png/gif', size: '5MB', maxlength: '9' }),
-        },
-        video: {
-            icon: 'video',
-            upload: true,
-            uploadPlace: t('common.upload') + t('common.video'),
-            accept: `.mp4, .mov`,
-            multiple: false,
-            name: t('common.video'),
-            maxSize: 20 * 1024 * 1024,
-            // othPlaceholder: '支持MP4、MOV视频格式,码率小于2Mbps,不超过20MB',
-            othPlaceholder: t('tag.toolbox.metaVideoTips', { form: 'mp4/mov', size: '20MB', bit: '2Mbps' }),
-        },
-        audio: {
-            icon: 'music',
-            upload: true,
-            uploadPlace: t('common.upload') + t('common.audio'),
-            accept: '.mp3, .wav',
-            multiple: false,
-            name: t('common.audio'),
-            maxSize: 5 * 1024 * 1024,
-            // othPlaceholder: '支持MP3、WAV格式,不超过5MB',
-            othPlaceholder: t('tag.toolbox.metaAudioTips', { form: 'mp3/wav', size: '5MB' }),
-        },
-        link: {
-            icon: 'web',
-            name: t('common.link'),
-        },
-        text: {
-            icon: 'pic',
-            upload: true,
-            uploadPlace: t('common.upload') + t('common.image'),
-            accept: `.jpg,.png`,
-            multiple: true,
-            name: t('common.image'),
-            maxSize: 5 * 1024 * 1024,
-            maxNum: 9,
-            // othPlaceholder: '支持JPG、PNG图片格式,单张不超过5MB,最多支持上传9张。',
-            othPlaceholder: t('tag.toolbox.metaImageTips', { form: 'jpg/png/gif', size: '5MB', maxlength: '9' }),
-        },
-    }
-}

+ 0 - 441
packages/qjkankan-kankan-view/src/components/Tags/index.vue

@@ -1,441 +0,0 @@
-<template>
-  <teleport :to="tags$" v-if="tags$">
-    <template v-for="(tag, index) in tags">
-      <div
-        :tag-sid="tag.sid"
-        @mouseleave.prevent="onMouseLeave($event, tag)"
-        :style="{
-          left: `${tag.x}px`,
-          top: `${tag.y}px`,
-          'z-index': hotData?.sid == tag.sid ? 1 : 0,
-        }"
-        :class="{
-          visible:
-            tag.visible ||
-            (tours.length &&
-              hotData &&
-              tours[partId].list[frameId].tagId == tag.sid &&
-              getApp().config.mobile),
-        }"
-      >
-        <!-- <div
-              :tag-sid="tag.sid"
-              @mouseleave.prevent="onMouseLeave($event, tag)"
-              :style="{ transform: `translate3d(${tag.x}px,${tag.y}px,0)`, 'z-index': hotData?.sid == tag.sid ? 1 : 0 }"
-              :class="{ visible: tag.visible || (tours.length && hotData && tours[partId].list[frameId].tagId == tag.sid && getApp().config.mobile) }"
-          > -->
-        <span
-          class="point zoom"
-          @mouseenter.prevent="onMouseEnter($event, tag, index)"
-          @click.stop="goTag($event, tag, index)"
-          :style="{ 'background-image': 'url(' + getUrl(tag.icon) + ')' }"
-        ></span>
-        <p class="tag-title" v-if="metadata.controls.showTagTitle">
-          {{ tag.title }}
-        </p>
-        <div class="content">
-          <div
-            class="trans"
-            :class="{
-              fixed: isPlay || getApp().config.mobile,
-              active:
-                (isFixed && hotData && tag.sid == hotData.sid) ||
-                (showInfo && hotData && tag.sid == hotData.sid),
-            }"
-          >
-            <template v-if="hotData && tag.sid == hotData.sid && !showMsg">
-              <div class="arrow" :id="`arrow_${tag.sid}`">
-                <ui-icon
-                  @click.stop="closeTag"
-                  v-if="getApp().config.mobile"
-                  type="close"
-                ></ui-icon>
-              </div>
-              <ShowTag
-                :moveDistance="moveDistance"
-                @click.stop=""
-                v-if="!isEdit && hotData"
-                @open="openInfo"
-              />
-            </template>
-          </div>
-        </div>
-
-        <TagView
-          @click.stop=""
-          v-if="showMsg && toggleIndex == index"
-          @close="closeInfo"
-        />
-      </div>
-    </template>
-  </teleport>
-</template>
-<script setup>
-import {
-  ref,
-  onMounted,
-  computed,
-  watch,
-  watchEffect,
-  onActivated,
-  onDeactivated,
-  getCurrentInstance,
-  nextTick,
-} from "vue";
-import { getApp, useApp } from "@/app";
-import { useStore } from "vuex";
-import common from "../../utils/common";
-import TagView from "./tag-view.vue";
-import ShowTag from "./show-tag.vue";
-import { useRoute } from "vue-router";
-import { useMusicPlayer } from "@/utils/sound";
-import browser from "@/utils/browser";
-
-// import { Track, startTrack, endTrack } from "@/utils/track.js";
-const musicPlayer = useMusicPlayer();
-let init = true;
-const hotData = computed(() => {
-  let data = store.getters["tag/hotData"];
-  if (!data) {
-    // musicPlayer.play()
-    // musicPlayer.pause(true)
-    // if (!getApp().Scene.isCurrentPanoHasVideo) {
-    //     musicPlayer.resume()
-    // }
-  }
-  return data;
-});
-const metadata = computed(() => store.getters["scene/metadata"]);
-const isPlay = computed(() => store.getters["tour/isPlay"]);
-const tours = computed(() => store.getters["tour/tours"]);
-const partId = computed(() => store.getters["tour/partId"]);
-const frameId = computed(() => store.getters["tour/frameId"]);
-const router = computed(() => store.getters["router"]);
-const flying = computed(() => store.getters["flying"]);
-const leaveId = computed(() => store.getters["tag/leaveId"]);
-const isEdit = computed(() => store.getters["tag/isEdit"]);
-const isFixed = computed(() => store.getters["tag/isFixed"]);
-const enterVisible = computed(() => store.getters["tag/enterVisible"]);
-const editPosition = computed(() => store.getters["tag/editPosition"]);
-const toggleIndex = computed(() => store.getters["tag/toggleIndex"]);
-const isClick = computed(() => store.getters["tag/isClick"]);
-const editModule = computed(() => store.getters["editModule"]);
-const positionInfo = computed(() => store.getters["tag/positionInfo"]);
-const panoId = computed(() => store.getters["panoId"]);
-const store = useStore();
-const tags$ = ref(null);
-const tags = computed(() => {
-  return store.getters["tag/tags"] || [];
-});
-
-// const flyClose = computed(() => store.getters['tag/flyClose'])
-
-watch(
-  () => router.value.name,
-  (val, old) => {
-    if (val !== "tag") {
-      store.commit("tag/setData", { isFixed: false });
-    }
-  }
-);
-
-const showInfo = ref(false);
-const showMsg = ref(false);
-// const toggleIndex = ref(null)
-const openInfo = () => {
-  showMsg.value = true;
-  store.commit("tag/setData", { isFixed: false, isClick: true });
-  showInfo.value = false;
-};
-const closeInfo = () => {
-  showMsg.value = false;
-  if (isClick.value) {
-    //只有点击定位的才恢复显示
-    store.commit("tag/show", toggleIndex.value);
-    store.commit("tag/setFixed", true);
-    // showInfo.value = true
-    showInfo.value = false;
-  }
-  // store.commit('tag/setClick', false)
-};
-const closeTag = async () => {
-  const app = getApp();
-  const player = await app.TourManager.player;
-
-  //关闭热点面板时候,继续播放之前暂停的音频
-  if (!app.Scene.isCurrentPanoHasVideo && !player.isPlaying) {
-    if (hotData.value.type == "audio" || hotData.value.type == "video") {
-      // console.log('resume')
-      // if (!isPlay.value) {
-      //   musicPlayer.resume();
-      // }
-      window.parent.postMessage(
-        {
-          source: "qjkankan",
-          event: "toggleBgmStatus",
-          params: {
-            status: true,
-          },
-        },
-        "*"
-      );
-    }
-  }
-  // store.commit('tag/setData', { isFixed: false, isClick: false, flyClose: false })
-  store.commit("tag/setData", { isFixed: false, isClick: false });
-  store.commit("tag/closeTag");
-
-  // store.commit('tag/setFixed', false)
-  // store.commit('tag/closeTag')
-  // store.commit('tag/setClick', false)
-  showInfo.value = false;
-};
-const goTag = async (event, item, index) => {
-  // Track("view-tag", {
-  //   eventType: "click",
-  //   click: 1,
-  // });
-  let player = await getApp().TourManager.player;
-  if (isPlay.value && !event.fixed) {
-    player.pause();
-    store.commit("tour/setData", { isPlay: false });
-  }
-  if (flying.value) {
-    return;
-  }
-  if (
-    isFixed.value &&
-    !isEdit.value &&
-    hotData.value.sid == item.sid &&
-    !positionInfo.value
-  ) {
-    __close = true;
-    getApp().TagManager.close(hotData.value.sid);
-    closeTag();
-  } else {
-    if (!enterVisible.value && !editPosition.value) {
-      if (!isEdit.value && !positionInfo.value) {
-        store.commit("tag/show", index);
-        store.commit("tag/setFixed", true);
-        showInfo.value = true;
-        store.commit("tag/setToggleIndex", index);
-        if (event.fixed) {
-          store.commit("tag/gotoTag", { tag: item, fixed: true });
-          // store.commit('tag/gotoTag', { tag: item })
-        } else {
-          store.commit("tag/gotoTag", { tag: item });
-        }
-      }
-      //没有t_id时候 不需要延时
-      if (!browser.hasURLParam("t_id")) {
-        let timer = setTimeout(() => {
-          // store.commit('tag/setData', { flyClose: true })
-          clearTimeout(timer);
-          timer = null;
-        }, 1000);
-      }
-
-      store.commit("tag/setClick", true);
-    } else {
-      //热点可视操作
-      getApp().TagManager.edit.setTagVisi(item.sid);
-    }
-  }
-};
-
-onMounted(async () => {
-  const app = await useApp();
-  app.Camera.on("flying.started", (pano) => {
-    if (!pano.isTagFlying && hotData.value && !isEdit.value) {
-      closeTag();
-    }
-    // if (flyClose.value && hotData.value && !isEdit.value) {
-    //     getApp().TagManager.close(hotData.value.sid)
-    //     closeTag()
-    // }
-  });
-  app.Scene.on("loadeddata", () => {
-    if (browser.hasURLParam("t_id")) {
-      let t_id = browser.getURLParam("t_id");
-      for (let i = 0; i < tags.value.length; i++) {
-        if (tags.value[i].sid == t_id) {
-          goTag({}, tags.value[i], i);
-        }
-      }
-    }
-  });
-  // app.Camera.on('flying.ended', ({ targetPano }) => {
-  // })
-  await app.TagManager.tag();
-  init = false;
-
-  tags$.value = "[xui_tags]";
-  app.TagManager.updatePosition(tags.value);
-  if (app.config.mobile) {
-    nextTick(() => {
-      // let player = document.querySelector('.player')
-      // player.addEventListener('touchstart', onClickHandler)
-    });
-  } else {
-    // window.addEventListener('click', onClickHandler)
-  }
-});
-
-function getElemDis(el) {
-  var tp = document.documentElement.clientTop,
-    lt = document.documentElement.clientLeft,
-    rect = el.getBoundingClientRect();
-  return {
-    bodyWidth: document.body.clientWidth,
-    bodyHight: document.body.clientHeight,
-    width: rect.width,
-    height: rect.height,
-    top: rect.top - tp,
-    right: rect.right - lt,
-    bottom: rect.bottom - tp,
-    left: rect.left - lt,
-  };
-}
-const getUrl = (icon) => {
-  let url =
-    icon == "" || !icon
-      ? getApp().resource.getAppURL("images/tag_icon_default.svg")
-      : icon;
-
-  return common.changeUrl(url, true);
-};
-let __fixed = false;
-let __close = false;
-const moveDistance = ref(0);
-let moveTimer = null;
-const onMouseEnter = (event, tag, index) => {
-  if (moveTimer) {
-    clearTimeout(moveTimer);
-    moveTimer = null;
-  }
-  moveTimer = setTimeout(() => {
-    let el = document.getElementById(`tagBox_${tag.sid}`);
-    if (!el) {
-      return;
-    }
-    let data = getElemDis(el);
-    if (data.top < 0) {
-      // console.error('超出上面', Math.abs(data.top))
-      moveDistance.value = Math.abs(data.top);
-    } else if (data.bottom > data.bodyHight) {
-      // console.error('超出下面', data.bodyHight - data.bottom)
-      moveDistance.value = data.bodyHight - data.bottom;
-    } else {
-      // moveDistance.value = 0
-    }
-    clearTimeout(moveTimer);
-    moveTimer = null;
-  }, 50);
-
-  if (tag.type == "audio" || tag.type == "video") {
-    musicPlayer.pause(true);
-  }
-  if (__fixed) {
-    return;
-  }
-  if (__close) {
-    return;
-  }
-  if (event.fixed) {
-    // store.commit('tag/setData', { flyClose: true, isFixed: true })
-    store.commit("tag/setData", { isFixed: true });
-    __fixed = true;
-  }
-
-  if (!getApp().config.mobile) {
-    // if (flying.value || isPlay.value) {
-    if (flying.value) {
-      return;
-    }
-    // if (!enterVisible.value && !editPosition.value && !isEdit.value && !positionInfo.value && !hotData.value) {
-    if (
-      !enterVisible.value &&
-      !editPosition.value &&
-      !isEdit.value &&
-      !positionInfo.value
-    ) {
-      // Track("view-tag", {
-      //   eventType: "hover",
-      //   hover: 1,
-      // });
-      showInfo.value = true;
-      store.commit("tag/show", index);
-
-      store.commit("tag/setToggleIndex", index);
-      if (leaveId.value && leaveId.value != tag.sid) {
-        //聚焦后 移到其他热点取消fixed
-        store.commit("tag/setFixed", false);
-      }
-    }
-  }
-};
-
-const onMouseLeave = (event, tag) => {
-  if (moveTimer) {
-    clearTimeout(moveTimer);
-    moveTimer = null;
-  }
-  moveDistance.value = 0;
-  if (event.unfixed) {
-    __fixed = false;
-    store.commit("tag/setData", { isFixed: false });
-  }
-  if (__fixed) {
-    return;
-  }
-
-  if (!getApp().config.mobile) {
-    if (flying.value) {
-      return;
-    }
-    if (event.relatedTarget != null) {
-      __close = false;
-
-      // if (!isEdit.value) {
-      showInfo.value = false;
-      // }
-      store.commit("tag/setLeaveId", tag.sid);
-      if (
-        !enterVisible.value &&
-        !isFixed.value &&
-        !showMsg.value &&
-        !editPosition.value &&
-        !positionInfo.value &&
-        hotData.value
-      ) {
-        closeTag();
-      }
-    }
-  }
-};
-
-const onClickHandler = () => {
-  // if (flying.value) {
-  //     return
-  // }
-
-  if (!isEdit.value && !positionInfo.value && isFixed.value) {
-    closeTag();
-  }
-};
-</script>
-<style lang="scss" scoped>
-.tag-title {
-  position: absolute;
-  left: 50%;
-  transform: translateX(-50%);
-  top: 100%;
-  max-width: 200%;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  text-align: center;
-  pointer-events: none;
-  text-shadow: 0 0 4px rgba(0, 0, 0, 0.4);
-}
-</style>

+ 0 - 0
packages/qjkankan-kankan-view/src/components/Tags/metas/image-view.vue


Некоторые файлы не были показаны из-за большого количества измененных файлов