tremble пре 2 година
родитељ
комит
2213727399
100 измењених фајлова са 586 додато и 174 уклоњено
  1. 3 2
      packages/qjkankan-editor/.env.testprod
  2. 17 6
      packages/qjkankan-editor/README.md
  3. 97 4
      packages/qjkankan-editor/package-lock.json
  4. 1 0
      packages/qjkankan-editor/package.json
  5. 4 2
      packages/qjkankan-editor/public/edit.html
  6. 0 0
      packages/qjkankan-editor/public/eshow.html
  7. 0 0
      packages/qjkankan-editor/public/eshowMobile.html
  8. BIN
      packages/qjkankan-editor/public/favicon.ico
  9. BIN
      packages/qjkankan-editor/public/favicon.png
  10. 1 1
      packages/qjkankan-editor/public/material.html
  11. BIN
      packages/qjkankan-editor/public/static/panoassets/images/hotspot/icon/img_doticon_01.png
  12. 1 1
      packages/qjkankan-editor/public/static/template/skin/vtourskin.xml
  13. 1 1
      packages/qjkankan-editor/public/vr.html
  14. 78 0
      packages/qjkankan-editor/someData.json
  15. BIN
      packages/qjkankan-editor/src/assets/images/icons/gif@2x.png
  16. 1 0
      packages/qjkankan-editor/src/assets/images/icons/logo_black.svg
  17. 1 0
      packages/qjkankan-editor/src/assets/images/icons/logo_white.svg
  18. 19 5
      packages/qjkankan-editor/src/components/shared/Editor.vue
  19. 1 1
      packages/qjkankan-editor/src/components/userInfo.vue
  20. 1 1
      packages/qjkankan-editor/src/framework/material/header.vue
  21. 3 0
      packages/qjkankan-editor/src/framework/play/pano/index.vue
  22. 18 0
      packages/qjkankan-editor/src/utils/request.js
  23. 13 6
      packages/qjkankan-editor/src/views/base/Toolbar.vue
  24. 1 0
      packages/qjkankan-editor/src/views/base/backgroundMusicSettings.vue
  25. 2 2
      packages/qjkankan-editor/src/views/base/customButtonSettings.vue
  26. 27 9
      packages/qjkankan-editor/src/views/base/customMaskSettings.vue
  27. 1 0
      packages/qjkankan-editor/src/views/explanation/explanationSettings.vue
  28. 18 3
      packages/qjkankan-editor/src/views/hotspot/EditPanel.vue
  29. 1 0
      packages/qjkankan-editor/src/views/hotspot/hotspotType/audio.vue
  30. 24 6
      packages/qjkankan-editor/src/views/hotspot/hotspotType/textarea.vue
  31. 48 39
      packages/qjkankan-editor/src/views/material/popup/rename.vue
  32. 2 2
      packages/qjkankan-editor/vue.config.js
  33. 1 1
      packages/qjkankan-kankan-view/.env
  34. 1 1
      packages/qjkankan-kankan-view/.env.development
  35. 1 1
      packages/qjkankan-kankan-view/.env.prod
  36. 1 1
      packages/qjkankan-kankan-view/package.json
  37. BIN
      packages/qjkankan-kankan-view/public/favicon.png
  38. 4 4
      packages/qjkankan-kankan-view/public/smg.html
  39. 4 4
      packages/qjkankan-kankan-view/public/spg.html
  40. 3 3
      packages/qjkankan-kankan-view/src/assets/theme.editor.scss
  41. 9 0
      packages/qjkankan-kankan-view/src/components/Controls/BottomControl.vue
  42. 57 31
      packages/qjkankan-kankan-view/src/components/Controls/tours.vue
  43. 4 5
      packages/qjkankan-kankan-view/src/components/Information/View.Mobile.vue
  44. 11 0
      packages/qjkankan-kankan-view/src/components/Tags/show-tag.vue
  45. 1 2
      packages/qjkankan-kankan-view/src/pages/SMG.vue
  46. 36 5
      packages/qjkankan-kankan-view/src/pages/SPG.vue
  47. 10 0
      packages/qjkankan-kankan-view/src/store/modules/scene.js
  48. 7 1
      packages/qjkankan-kankan-view/src/utils/messageHandler.js
  49. 12 10
      packages/qjkankan-kankan-view/src/utils/sound.js
  50. 1 1
      packages/qjkankan-kankan-view/vue.config.js
  51. 5 2
      packages/qjkankan-view/.env
  52. 6 0
      packages/qjkankan-view/.env.testprod
  53. 14 0
      packages/qjkankan-view/package-lock.json
  54. 3 1
      packages/qjkankan-view/package.json
  55. BIN
      packages/qjkankan-view/public/favicon.png
  56. 4 4
      packages/qjkankan-view/public/show.html
  57. 7 6
      packages/qjkankan-view/public/showMobile.html
  58. 0 0
      packages/qjkankan-view/public/showviewer/lib/animate/animate.min.css
  59. 0 0
      packages/qjkankan-view/public/showviewer/lib/howler/howler.min.js
  60. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/demo.css
  61. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/demo_index.html
  62. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.css
  63. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.eot
  64. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.js
  65. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.json
  66. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.svg
  67. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.ttf
  68. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.woff
  69. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.woff2
  70. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/demo.css
  71. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/demo_index.html
  72. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.css
  73. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.js
  74. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.json
  75. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.ttf
  76. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.woff
  77. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.woff2
  78. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.css
  79. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.eot
  80. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.js
  81. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.json
  82. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.svg
  83. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.ttf
  84. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.woff
  85. 0 0
      packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.woff2
  86. 0 0
      packages/qjkankan-view/public/showviewer/lib/jquery-2.1.1.min.js
  87. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/js/tour.js
  88. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/bingmaps.js
  89. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/combobox.xml
  90. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/googlemaps.js
  91. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/gyro2.js
  92. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/scrollarea.js
  93. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/soundinterface.js
  94. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/videoplayer.js
  95. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr.js
  96. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr.xml
  97. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr_cursor_80x80_17f.png
  98. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/skin/img_doticon_01.svg
  99. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/skin/krpano-roundlogo.png
  100. 0 0
      packages/qjkankan-view/public/showviewer/lib/krpano/skin/masking.png

+ 3 - 2
packages/qjkankan-editor/.env.testprod

@@ -3,5 +3,6 @@ NODE_ENV=production
 VUE_APP_MAIN_COLOR=''
 VUE_APP_STATIC_DIR=static
 VUE_APP_CDN=https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com
-VUE_APP_PROXY_URL='http://test.4dkankan.com/qjkankan/'
-VUE_APP_URL_FILL=https://test.4dkankan.com/qjkankan/
+VUE_APP_PROXY_URL_ROOT='https://test.4dkankan.com'
+VUE_APP_PROXY_URL='https://test.4dkankan.com/qjkankan/'
+VUE_APP_URL_FILL=/qjkankan

+ 17 - 6
packages/qjkankan-editor/README.md

@@ -1,19 +1,23 @@
 # 测试环境发布路径
+
 注意,路径被隐藏了,需要通过进入路径(打开文件夹)功能直接打开:
 
-/阿里云-四维时代-官网web测试服务器-120.25.146.52/var/www/html/panorama
+/阿里云-四维时代-官网 web 测试服务器-120.25.146.52/var/www/html/panorama
 
 这个路径下没有服务器缓存。
 
 # 针对测试环境打包
+
 npm run build-testprod
 
-# someData模板
+# someData 模板
 
 ## 位置
-/阿里云-四维时代-官网web测试服务器-120.25.146.52/mnt/720yun_fd_manage_data/baseData
+
+/阿里云-四维时代-官网 web 测试服务器-120.25.146.52/mnt/720yun_fd_manage_data/baseData
 
 ## 含义
+
 ```js
 {
   "isPassword": 0,
@@ -62,8 +66,14 @@ npm run build-testprod
     "ossPath": ""
   },
   "customMask": { // 自定义遮罩
-    "sky": "",
-    "earth": ""
+    "earth": {
+          "icon":"",
+          "isShow":false
+        },
+    "sky":{
+      "icon":"",
+      "isShow":true
+    },
   },
   "customButton": [ // 自定义按钮
     {
@@ -90,4 +100,5 @@ npm run build-testprod
 ```
 
 # 会员测试账号
-15915816041  4DAge123456
+
+15915816041 4DAge123456

+ 97 - 4
packages/qjkankan-editor/package-lock.json

@@ -13,6 +13,7 @@
         "element-ui": "^2.15.1",
         "html2canvas": "^1.4.1",
         "photoswipe": "^4.1.3",
+        "quill": "^1.3.7",
         "swiper": "^5.3.8",
         "v-viewer": "^1.5.1",
         "video.js": "^7.11.8",
@@ -7525,8 +7526,7 @@
     "node_modules/extend": {
       "version": "3.0.2",
       "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
-      "dev": true
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
     },
     "node_modules/extend-shallow": {
       "version": "3.0.2",
@@ -7704,6 +7704,11 @@
       "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
       "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU="
     },
+    "node_modules/fast-diff": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz",
+      "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
+    },
     "node_modules/fast-glob": {
       "version": "2.2.7",
       "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1592291968616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz",
@@ -11637,6 +11642,11 @@
         "no-case": "^2.2.0"
       }
     },
+    "node_modules/parchment": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz",
+      "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
+    },
     "node_modules/parent-module": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
@@ -13433,6 +13443,45 @@
       "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597686771604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz",
       "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y="
     },
+    "node_modules/quill": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz",
+      "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
+      "dependencies": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      }
+    },
+    "node_modules/quill-delta": {
+      "version": "3.6.3",
+      "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz",
+      "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
+      "dependencies": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/quill/node_modules/clone": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+      "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/quill/node_modules/eventemitter3": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
+      "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "http://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
@@ -25949,8 +25998,7 @@
     "extend": {
       "version": "3.0.2",
       "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
-      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
-      "dev": true
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
     },
     "extend-shallow": {
       "version": "3.0.2",
@@ -26094,6 +26142,11 @@
       "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
       "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU="
     },
+    "fast-diff": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz",
+      "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
+    },
     "fast-glob": {
       "version": "2.2.7",
       "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1592291968616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz",
@@ -29289,6 +29342,11 @@
         "no-case": "^2.2.0"
       }
     },
+    "parchment": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz",
+      "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
+    },
     "parent-module": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
@@ -30784,6 +30842,41 @@
       "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597686771604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz",
       "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y="
     },
+    "quill": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz",
+      "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
+      "requires": {
+        "clone": "^2.1.1",
+        "deep-equal": "^1.0.1",
+        "eventemitter3": "^2.0.3",
+        "extend": "^3.0.2",
+        "parchment": "^1.1.4",
+        "quill-delta": "^3.6.2"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+          "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
+        },
+        "eventemitter3": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
+          "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
+        }
+      }
+    },
+    "quill-delta": {
+      "version": "3.6.3",
+      "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz",
+      "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
+      "requires": {
+        "deep-equal": "^1.0.1",
+        "extend": "^3.0.2",
+        "fast-diff": "1.1.2"
+      }
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "http://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",

+ 1 - 0
packages/qjkankan-editor/package.json

@@ -18,6 +18,7 @@
     "element-ui": "^2.15.1",
     "html2canvas": "^1.4.1",
     "photoswipe": "^4.1.3",
+    "quill": "^1.3.7",
     "swiper": "^5.3.8",
     "v-viewer": "^1.5.1",
     "video.js": "^7.11.8",

+ 4 - 2
packages/qjkankan-editor/public/edit.html

@@ -5,23 +5,25 @@
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="./favicon.ico" />
+    <link rel="icon" href="./favicon.png" />
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfont/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ1.1.0/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontVR/iconfont.css"/>
     <link rel="stylesheet" href="//at.alicdn.com/t/font_2410347_3sp3zd6hsff.css"/>
+    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/quill/quill.snow.css" />
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/animate/animate.min.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/mCustomScrollbar/jquery.mCustomScrollbar.min.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/scrollbar/perfect-scrollbar.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper.min.css" />
 
-    <title>全景看看作品制作工具</title>
+    <title>四维全景编辑器</title>
   </head>
   <body>
     <div id="app"></div>
     <!-- built files will be auto injected -->
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/jquery-2.1.1.min.js"></script>
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/krpano/js/tour.js"></script>
+    <script src="<%= VUE_APP_STATIC_DIR %>/lib/quill/quill.min.js"></script>
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js"></script>
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/scrollbar/perfect-scrollbar.min.js"></script>
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper.min.js"></script>

packages/qjkankan-editor/public/show.html → packages/qjkankan-editor/public/eshow.html


packages/qjkankan-editor/public/showMobile.html → packages/qjkankan-editor/public/eshowMobile.html


BIN
packages/qjkankan-editor/public/favicon.ico


BIN
packages/qjkankan-editor/public/favicon.png


+ 1 - 1
packages/qjkankan-editor/public/material.html

@@ -5,7 +5,7 @@
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="./favicon.ico" />
+    <link rel="icon" href="./favicon.png" />
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfont/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ1.1.0/iconfont.css"/>
     <link rel="stylesheet" href="//at.alicdn.com/t/font_2947721_fdnuf7rzr.css"/>

BIN
packages/qjkankan-editor/public/static/panoassets/images/hotspot/icon/img_doticon_01.png


+ 1 - 1
packages/qjkankan-editor/public/static/template/skin/vtourskin.xml

@@ -1313,7 +1313,7 @@
       );
 
       <!-- if(%6 == '1',
-         txtadd(hotspot[get(schp_name)].onloaded,"do_crop_animation(60,60, 30);");
+         txtadd(hotspot[get(schp_name)].onloaded,"do_crop_animation(28,28, 51);");
 		  ); -->
     
       txtadd(hotspot[get(schp_name)].onloaded,"add_all_the_time_tooltip(hotspot[get(name)].hotspottitle);");

+ 1 - 1
packages/qjkankan-editor/public/vr.html

@@ -5,7 +5,7 @@
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
-    <link rel="icon" href="./favicon.ico" />
+    <link rel="icon" href="./favicon.png" />
     <title>VR作品</title>
   </head>
   <body>

+ 78 - 0
packages/qjkankan-editor/someData.json

@@ -0,0 +1,78 @@
+{
+  "isPassword": 0,
+  "password": "",
+  "ossSomeData": "",
+  "icon": "",
+  "description": "",
+  "updateTime": "",
+  "sceneIndex": "",
+  "catalogRoot": [
+    {
+      "id": 100,
+      "name": "一级分组",
+      "children": [
+        1
+      ]
+    }
+  ],
+  "firstScene": "",
+  "userId": "",
+  "isLogo": 1,
+  "appIcon": "",
+  "qrCode": "",
+  "createTime": "",
+  "catalogs": [
+    {
+      "id": 1,
+      "name": "默认二级分组"
+    }
+  ],
+  "isRemind": 1,
+  "name": "",
+  "pcIcon": "",
+  "scenes": [],
+  "isAuto": 1,
+  "logo": "",
+  "logoChange": false,
+  "share": "",
+  "id": "",
+  "remindTime": 1,
+  "status": 0,
+  "openingAnimationType": "小行星开场",
+  "backgroundMusic": {
+    "id": "",
+    "name": "",
+    "ossPath": ""
+  },
+  "customMask": {
+    "earth": {
+      "icon": "",
+      "isShow": false
+    },
+    "sky": {
+      "icon": "",
+      "isShow": true
+    }
+  },
+  "customButton": [
+    {
+      "type": "电话",
+      "name": "电话",
+      "value": "",
+      "isShow": false
+    },
+    {
+      "type": "链接",
+      "name": "链接",
+      "value": "",
+      "isShow": false
+    }
+  ],
+  "explanation": {
+    "audioId": "",
+    "audioName": "",
+    "audioUrl": "",
+    "openByDefault": true,
+    "repeat": true
+  }
+}

BIN
packages/qjkankan-editor/src/assets/images/icons/gif@2x.png


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
packages/qjkankan-editor/src/assets/images/icons/logo_black.svg


Разлика између датотеке није приказан због своје велике величине
+ 1 - 0
packages/qjkankan-editor/src/assets/images/icons/logo_white.svg


+ 19 - 5
packages/qjkankan-editor/src/components/shared/Editor.vue

@@ -3,11 +3,13 @@
 </template>
 <script>
 import config from "../../config";
-import { htmlCut } from "../../utils/string";
+ 
+// import { htmlCut } from "../../utils/string";
 export default {
     props: {
         placeholder: String,
-        maxlength: Number
+        maxlength: Number,
+        html:String
     },
     mounted() {
         this.quill = new Quill(this.$el, {
@@ -18,6 +20,10 @@ export default {
             //preserveWhitespace:true
         });
 
+        this.quill.root.innerHTML = this.html
+
+        // this.$nextTick(() => (this.quill.root.innerHTML = html));
+
         const $editable = $(this.$el).find("[contenteditable]"); //this.$el.querySelector("[contenteditable]");
 
         $editable.on("paste", e => {
@@ -121,12 +127,12 @@ export default {
 </script>
 <style lang="less">
 .com-editor {
-    height: 100px;
-    padding: 0;
+    height: 100%;
+    padding:0 0 30px 0;
     .ql-editor {
         padding: 10px;
         user-select: text;
-        font-size: 12px;
+        font-size: 14px;
         white-space: normal !important;
         a{
             color: @color;
@@ -138,6 +144,14 @@ export default {
         top: 10px;
         color: #888888;
     }
+
+    .ql-clipboard{
+        left: -100000px;
+        height: 1px;
+        overflow-y: hidden;
+        position: absolute;
+        top: 50%;
+    }
 }
 
 [show-mode="mobile"],

+ 1 - 1
packages/qjkankan-editor/src/components/userInfo.vue

@@ -34,7 +34,7 @@ export default {
   },
   methods: {
     onClickPersonalCenter() {
-      window.location.href = '/#/navigation'
+      window.location.href = '/#/information'
     },
     onClickLogout() {
       localStorage.setItem('token', '')

+ 1 - 1
packages/qjkankan-editor/src/framework/material/header.vue

@@ -2,7 +2,7 @@
   <div class="header">
     <div class="con">
       <a href="https://www.4dkankan.com/" class="logo">
-        <img :src="require('@/assets/images/icons/img_logo_20220119.svg')" alt="" />
+        <img :src="require('@/assets/images/icons/logo_black.svg')" alt="" />
       </a>
       <ul class="tab">
         <li @click="handleItem(item)" :class="{active:active.id==item.id}" v-for="(item, i) in tab" :key="i">

+ 3 - 0
packages/qjkankan-editor/src/framework/play/pano/index.vue

@@ -50,6 +50,9 @@ export default {
           this.$bus.emit("initView", newVal.icon);
         })
       }
+      if (newVal.type == '4dkk') {
+        return
+      }
 
       $("#pano").empty();
       window.vrInitFn = () => {

+ 18 - 0
packages/qjkankan-editor/src/utils/request.js

@@ -21,6 +21,9 @@ const noop = function() {};
 // 请求回调队列
 let postQueue = [];
 
+// 阻止多个弹窗
+let isDiglog = false
+
 const statusCode = {
   NEXT: '__not_important__', //继续执行
   SUCCESS: 0, //成功
@@ -178,7 +181,22 @@ export function statusCodesHandler(result, callback) {
     return false
   }
 
+  if (result.code == statusCode.FAILURE_CODE_3024) {
+    if (!isDiglog) {
+      isDiglog = true
+      $alert({
+        content: "存储空间已满",
+        forceOK: true,
+        ok: () => {
+          isDiglog = false
+        },
+      });
+    }
+    return false
+  }
+
   if (result.code != statusCode.SUCCESS) {
+    console.log('result.msg');
     $alert({ content: `${result.msg}` });
     return false
   }

+ 13 - 6
packages/qjkankan-editor/src/views/base/Toolbar.vue

@@ -27,12 +27,15 @@
           </div>
           <div class="ui-title jianjie"><span>简介</span></div>
           <div class="jianjie-textarea-wrapper">
-            <textarea
+            <!-- <textarea
               v-model.trim="info.description"
               maxlength="500"
               placeholder="请输入作品简介"
               type="text"
-            />
+            /> -->
+
+            <editor ref="editor" :html="info.description" :placeholder="'请输入文字内容,限500字'" :maxlength="500" @change="onEditorChange"></editor>
+
             <span class="count">{{jianjieLength}}/500</span>
           </div>
         </div>
@@ -81,9 +84,11 @@ import BackgroundMusicSettings from "@/views/base/backgroundMusicSettings.vue";
 import CustomLogoSettings from "@/views/base/customLogoSettings.vue";
 import CustomMaskSettings from "@/views/base/customMaskSettings.vue";
 import CustomButtonSettings from "@/views/base/customButtonSettings.vue";
+import Editor from "@/components/shared/Editor"
 
 export default {
   components: {
+    Editor,
     MaterialSelectorForEditor,
     OpeningTipSettings,
     OpeningAnimationSettings,
@@ -108,6 +113,7 @@ export default {
         '自定义按钮',
       ],
       activeTab: '开场提示',
+      jianjieLength:0
     }
   },
   computed: {
@@ -116,16 +122,17 @@ export default {
     }),
     titleLength() {
       return this.info?.name?.length || '0'
-    },
-    jianjieLength() {
-      return this.info?.description?.length || '0'
-    },
+    }
   },
   mounted() {
   },
   watch: {
   },
   methods: {
+    onEditorChange(content){
+      this.info.description = content.html
+      this.jianjieLength = content.size
+    },
     onClickSettingCover() {
       this.isShowSettingCoverWindow = true
     },

+ 1 - 0
packages/qjkankan-editor/src/views/base/backgroundMusicSettings.vue

@@ -121,6 +121,7 @@ export default {
     color: #fff;
     font-size: 14px;
     position: relative;
+    text-align: center;
     &:hover {
       color: #0076F6;
       border-color: @color;

+ 2 - 2
packages/qjkankan-editor/src/views/base/customButtonSettings.vue

@@ -34,13 +34,13 @@
           </i>
           <i
             v-show="info.customButton[index].isShow"
-            class="iconfont icon-eye_on btn-show"
+            class="iconfont icon-editor_on btn-show"
             v-tooltip="'隐藏'"
             @click.stop="info.customButton[index].isShow = false"
           ></i>
           <i
             v-show="!info.customButton[index].isShow"
-            class="iconfont icon-eye_off btn-hide"
+            class="iconfont icon-editor_off btn-hide"
             v-tooltip="'显示'"
             @click.stop="onRequestForShow(index)"
           ></i>

+ 27 - 9
packages/qjkankan-editor/src/views/base/customMaskSettings.vue

@@ -5,10 +5,13 @@
     </i>
     <br>
     <div class="image-selection">
-      <div class="title">天空遮罩</div>
+      <div class="title">
+        <span class="label">天空遮罩</span>
+        <Switcher :value="info.customMask.sky.isShow" @change="(data)=>{info.customMask.sky.isShow=data}"></Switcher>
+      </div>
       <div class="bottom">
         <SelectedImage
-          :imgSrc="info && info.customMask && info.customMask.sky"
+          :imgSrc="info && info.customMask && info.customMask.sky.icon"
           :defaultImgSrc="require('@/assets/images/default/mask_bg.png')"
           @cancel="onCancelSelection('sky')"
         ></SelectedImage>
@@ -29,10 +32,13 @@
       </div>
     </div>
     <div class="image-selection">
-      <div class="title">地面遮罩</div>
+      <div class="title">
+        <span class="label">地面遮罩</span>
+        <Switcher :value="info.customMask.earth.isShow"  @change="(data)=>{info.customMask.earth.isShow=data}"></Switcher>
+      </div>
       <div class="bottom">
         <SelectedImage
-          :imgSrc="info && info.customMask && info.customMask.earth"
+          :imgSrc="info && info.customMask && info.customMask.earth.icon"
           :defaultImgSrc="require('@/assets/images/default/mask_bg.png')"
           @cancel="onCancelSelection('earth')"
         ></SelectedImage>
@@ -66,6 +72,7 @@
 
 <script>
 import MaterialSelectorForEditor from "@/components/materialSelectorForEditor.vue";
+import Switcher from "@/components/shared/Switcher";
 import { mapGetters } from "vuex";
 import SelectedImage from "@/components/selectedImageInEditor.vue";
 import { getUserInfo } from "@/api";
@@ -74,6 +81,7 @@ export default {
   components: {
     MaterialSelectorForEditor,
     SelectedImage,
+    Switcher
   },
   data() {
     return {
@@ -105,18 +113,24 @@ export default {
       // })
     },
     handleSubmitFromMaterialSelector(selected) {
-      this.info.customMask[this.selectingFor] = selected[0].icon
+      this.info.customMask[this.selectingFor].icon = selected[0].icon
       this.isShowSelectionWindow = false
     },
     onCancelSelection(cancelFor) {
-      this.info.customMask[cancelFor] = ''
+      this.info.customMask[cancelFor].icon = ''
     },
   },
   mounted() {
     if (!this.info.customMask) {
       this.info.customMask = {
-        earth: '',
-        sky: '',
+        earth: {
+          icon:'',
+          isShow:false
+        },
+        sky:{
+          icon:'',
+          isShow:true
+        },
       }
     }
   },
@@ -140,7 +154,7 @@ export default {
     top: -2px;
   }
   .image-selection {
-    width: 50%;
+    width: 100%;
     display: inline-block;
     margin-top: 16px;
     margin-bottom: 24px;
@@ -148,6 +162,10 @@ export default {
       color: rgba(255, 255, 255, 0.6);
       font-size: 14px;
       margin-bottom: 16px;
+      display: flex;
+      width: 100%;
+      align-items: center;
+      justify-content: space-between;
     }
     .bottom {
       display: flex;

+ 1 - 0
packages/qjkankan-editor/src/views/explanation/explanationSettings.vue

@@ -134,6 +134,7 @@ export default {
     border: 1px solid #404040;
     color: #fff;
     font-size: 14px;
+    text-align: center;
     position: relative;
     &:hover {
       color: #0076F6;

+ 18 - 3
packages/qjkankan-editor/src/views/hotspot/EditPanel.vue

@@ -42,10 +42,10 @@
             <input
               v-model.trim="hotspot.hotspotTitle"
               type="text"
-              maxlength="15"
-              placeholder="请输入标题,限15字"
+              maxlength="50"
+              placeholder="请输入标题,限50字"
             />
-            <span class="count">{{hotspot.hotspotTitle.length}}/15</span>
+            <span class="count">{{hotspot.hotspotTitle.length}}/50</span>
           </div>
         </div>
         <div class="effect-setting">
@@ -428,6 +428,21 @@ export default {
               display: flex;
               align-items: center;
               justify-content: center;
+              position: relative;
+              &::after{
+                position: absolute;
+                content: '';
+                height: 100%;
+                width: 100%;
+                left: 0;
+                right: 0;
+                top: 0;
+                bottom: 0;
+                background-image: url(~@/assets/images/icons/gif@2x.png);
+                background-size: 100% auto;
+                z-index: 999;
+                pointer-events: none;
+              }
               &.active {
                 border-color: #0076f6;
               }

+ 1 - 0
packages/qjkankan-editor/src/views/hotspot/hotspotType/audio.vue

@@ -100,6 +100,7 @@ export default {
     border-radius: 2px;
     border: 1px solid #404040;
     color: #fff;
+    text-align: center;
     font-size: 14px;
     position: relative;
     &:hover {

+ 24 - 6
packages/qjkankan-editor/src/views/hotspot/hotspotType/textarea.vue

@@ -1,24 +1,39 @@
 <template>
   <div>
     <div class="textarea-wrapper">
-      <textarea
+      <!-- <textarea
         v-model.trim="text"
         maxlength="200"
         placeholder="请输入文字内容,限200字"
         type="text"
-      />
-      <span class="count">{{text.length}}/200</span>
+      /> -->
+
+      <editor ref="editor" :html="text" :placeholder="'请输入文字内容,限200字'" :maxlength="200" @change="onEditorChange"></editor>
+      <span class="count">{{size}}/200</span>
     </div>
   </div>
 </template>
 <script>
+
+import Editor from "@/components/shared/Editor"
+
 export default {
+  components: { Editor },
   props: ['textarea'],
   data() {
     return {
-      text: this.textarea
+      text: this.textarea,
+      size: 0
     }
   },
+  methods: {
+    onEditorChange(content) {
+      this.$emit('textChange', content.html)
+      this.size = content.size
+      // this.description = content.html
+      // this.validates.description.length = content.size
+    },
+  },
   watch: {
     text(newVal) {
       this.$emit('textChange', newVal)
@@ -35,10 +50,12 @@ export default {
   border-radius: 2px;
   height: 119px;
   width: 100%;
+
   &:focus-within {
     border-color: #0076F6;
   }
-  > textarea {
+
+  >textarea {
     padding: 9px 16px 30px 16px;
     resize: none;
     border: none;
@@ -50,7 +67,8 @@ export default {
     letter-spacing: 1px;
     font-size: 14px;
   }
-  > .count {
+
+  >.count {
     position: absolute;
     right: 16px;
     bottom: 9px;

+ 48 - 39
packages/qjkankan-editor/src/views/material/popup/rename.vue

@@ -1,71 +1,76 @@
 <template>
-    <popup>
-      <div class="ui-message ui-message-confirm" style="width: 400px">
-        <div class="ui-message-header">
-          <span>重命名素材</span>
-          <span @click="$emit('close')">
-            <i class="iconfont icon_close"></i>
-          </span>
-        </div>
-        <input
-          class="ui-input"
-          type="text"
-          maxlength="50"
-          placeholder="请输入"
-          v-model="key"
-        />
-        <div class="ui-message-footer">
-          <div class="btn">
-            <button @click="$emit('close')" class="ui-button ui-button-rect cancel" >
-              取消
-            </button>
-            <button @click="emitname" class="ui-button ui-button-rect submit" :class="{disable:!key}" >
-              确定
-            </button>
-          </div>
+  <popup>
+    <div class="ui-message ui-message-confirm" style="width: 400px">
+      <div class="ui-message-header">
+        <span>重命名素材</span>
+        <span @click="$emit('close')">
+          <i class="iconfont icon_close"></i>
+        </span>
+      </div>
+      <input class="ui-input" type="text" maxlength="50" placeholder="请输入" @input="emojistr" v-model="key" />
+      <div class="ui-message-footer">
+        <div class="btn">
+          <button @click="$emit('close')" class="ui-button ui-button-rect cancel">
+            取消
+          </button>
+          <button @click="emitname" class="ui-button ui-button-rect submit" :class="{disable:!key}">
+            确定
+          </button>
         </div>
       </div>
-    </popup>
+    </div>
+  </popup>
 </template>
 
 <script>
 import Popup from "@/components/shared/popup";
 
 export default {
-  props:['item'],
-  components:{
+  props: ['item'],
+  components: {
     Popup
   },
-  watch:{
-    show(){
+  watch: {
+    show() {
       this.key = this.item.name
     }
   },
-  data(){
+  data() {
     return {
       key: this.item.name
     }
   },
-  methods:{
-    emitname(){
+  methods: {
+    emojistr() {
+      this.key = this.key.replace(/[\ud800-\udbff][\udc00-\udfff]/g, function (char) {
+        if (char.length === 2) {
+          return ""
+        } else {
+          return char;
+        }
+      });
+    },
+    emitname() {
       if (!this.key.trim()) {
         return this.$alert({ content: "请输入名字" });
       }
-      this.$emit('rename',this.key)
+      this.$emit('rename', this.key)
     }
   }
 }
 </script>
 
 <style lang="less" scoped>
-.ui-message-confirm{
+.ui-message-confirm {
   width: 400px;
   height: 230px;
-  .ui-message-header{
-    .icon_close{
+
+  .ui-message-header {
+    .icon_close {
       color: #969799;
     }
   }
+
   .ui-input {
     margin: 40px 0;
     height: 36px;
@@ -73,16 +78,20 @@ export default {
     font-size: 14px;
     border-radius: 4px;
     border: 1px solid #EBEDF0;
+
     &:focus {
       border: 1px solid @color;
     }
   }
-  .ui-message-footer{
+
+  .ui-message-footer {
     width: 100%;
-    .btn{
+
+    .btn {
       display: flex;
       justify-content: flex-end;
-      .ui-button{
+
+      .ui-button {
         max-width: 104px
       }
     }

+ 2 - 2
packages/qjkankan-editor/vue.config.js

@@ -2,8 +2,8 @@ const proxy_url = process.env.VUE_APP_PROXY_URL
 
 let pages = {
   edit: 'src/pages/edit.js',
-  show: 'src/pages/show.js',
-  showMobile: 'src/pages/showMobile.js',
+  // show: 'src/pages/show.js',
+  // showMobile: 'src/pages/showMobile.js',
   vr: 'src/pages/vr.js',
   material: 'src/pages/material.js'
 }

+ 1 - 1
packages/qjkankan-kankan-view/.env

@@ -4,7 +4,7 @@ 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/sdk/4.3.0/
 
 
 # 静态资源目录

+ 1 - 1
packages/qjkankan-kankan-view/.env.development

@@ -5,7 +5,7 @@ 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_SDK_DIR=https://4dkk.4dage.com/v4/sdk/4.3.0/
 
 
 

+ 1 - 1
packages/qjkankan-kankan-view/.env.prod

@@ -2,7 +2,7 @@ NODE_ENV=production
 # 场景资源地址
 VUE_APP_RESOURCE_URL=https://4dkk.4dage.com/
 # 静态资源地址
-VUE_APP_CDN_URL=https://4dkk.4dage.com/v4/www/
+VUE_APP_CDN_URL=https://4dkk.4dage.com/v4-test/www/
 
 # 静态资源目录
 VUE_APP_STATIC_DIR=viewer

+ 1 - 1
packages/qjkankan-kankan-view/package.json

@@ -5,7 +5,7 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "serve-prod": "vue-cli-service serve --mode prod",
-    "build": "vue-cli-service --no-clean build --mode prod",
+    "build": "vue-cli-service build --mode prod",
     "lint": "vue-cli-service lint"
   },
   "dependencies": {

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


+ 4 - 4
packages/qjkankan-kankan-view/public/smg.html

@@ -4,7 +4,7 @@
         <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.ico" />
+        <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/animate/animate.min.css" />
@@ -12,7 +12,7 @@
 
         <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>
+        <title>四维全景</title>
     </head>
 
     <body>
@@ -27,8 +27,8 @@
 
         <script src="<%= BASE_URL %><%= VUE_APP_STATIC_DIR %>/static/lib/jweixin-1.6.0.js"></script>
         
-        <script src="<%= VUE_APP_CDN_URL %>sdk/kankan-sdk-deps.js?v=4.0.0-alpha.47"></script>
-        <script src="<%= VUE_APP_CDN_URL %>sdk/kankan-sdk.js?v=4.0.0-alpha.47"></script>
+        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js?v=4.3.2-alpha.0"></script>
+        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js?v=4.3.2-alpha.0"></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> -->

+ 4 - 4
packages/qjkankan-kankan-view/public/spg.html

@@ -4,11 +4,11 @@
         <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.ico" />
+        <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>
+        <title>四维全景</title>
     </head>
 
     <body>
@@ -17,8 +17,8 @@
         </noscript>
         <div id="app"></div>
         
-        <script src="<%= VUE_APP_CDN_URL %>sdk/kankan-sdk-deps.js?v=4.0.0-alpha.47"></script>
-        <script src="<%= VUE_APP_CDN_URL %>sdk/kankan-sdk.js?v=4.0.0-alpha.47"></script>
+        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk-deps.js?v=4.3.2-alpha.0"></script>
+        <script src="<%= VUE_APP_SDK_DIR %>kankan-sdk.js?v=4.3.2-alpha.0"></script>
 
         <!-- built files will be auto injected -->
     </body>

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

@@ -280,11 +280,11 @@ a {
         .button-switch {
             position: absolute;
             top: 0;
-            left: -16px;
+            left: -18px;
             background-color: rgba(0, 0, 0, 0.2);
             height: 32px;
-            width: 16px;
-            border-radius: 32px 0 0 32px;
+            width: 18px;
+            border-radius: 4px 0 0 4px;
             display: flex;
             align-items: center;
             justify-content: center;

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

@@ -13,6 +13,12 @@ import { useApp, getApp } from '@/app'
 import FloorSwitch from './FloorSwitch'
 import tours from './tours'
 import RightButtons from './RightButtons'
+import { useMusicPlayer } from '@/utils/sound'
+
+const musicPlayer = useMusicPlayer()
+
+const showMusicPlaying = ref(false)
+
 const store = useStore()
 const show = ref(false)
 const isHidden = ref(false)
@@ -22,6 +28,9 @@ const bottom = computed(() => {
 useApp().then(app => {
     app.Scene.on('loaded', () => (show.value = true))
 })
+
+musicPlayer.on('play', () => (showMusicPlaying.value = true))
+musicPlayer.on('pause', () => (showMusicPlaying.value = false))
 </script>
 <style lang="scss" scoped>
 .bottom-controls {

+ 57 - 31
packages/qjkankan-kankan-view/src/components/Controls/tours.vue

@@ -3,13 +3,10 @@
     <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">
+        <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">
@@ -18,14 +15,11 @@
         </li>
       </ul>
       <!-- 只有一个片段 -->
-      <ul class="part-list" v-else>
-        <li class="part-item" v-for="(item, index) in tours[0].list" :key="index" 
-        @click="changeFrame(2, index)"
-          :class="{ 
-            active: frameId == index && progressNum > 0,
-            disabled: isPlay && frameId != index }"
-           :name="index">
-          <span>片段</span>
+      <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,
+          disabled: isPlay && frameId != index }" :name="index">
           <div v-if="frameId == index && progressNum > 0" class="tourbar">
             <div :style="`width:${progressNum}%;`" class="tourline"></div>
           </div>
@@ -36,7 +30,7 @@
   </div>
 </template>
 <script setup>
-import { computed, inject, onMounted,watch, ref, nextTick } from 'vue'
+import { computed, inject, onMounted, watch, ref, nextTick } from 'vue'
 import { Scrollbar, Dialog } from '@/global_components'
 import { useApp, getApp } from '@/app'
 import { useStore } from 'vuex'
@@ -200,7 +194,7 @@ const getPartTime = partId => {
 const openTours = () => {
   // showTours.value = !showTours.value
   store.commit('tour/setData', { showTours: !showTours.value })
- 
+
   nextTick(() => {
     if (isPlay.value) {
       slideScroll()
@@ -247,25 +241,25 @@ const onClickHandler = async () => {
 }
 
 
-watch(triggerTour,()=>{
+watch(triggerTour, () => {
   playTour()
 })
 
-watch(isOpenTours,()=>{
+watch(isOpenTours, () => {
   openTours()
 })
 
-watch(isPlay,()=>{
+watch(isPlay, () => {
   window.parent.postMessage(
-            {
-            source: "qjkankan",
-            event: "isPlayTours",
-            params: {
-              isPlay:isPlay.value,
-            },
-        },
-        "*"
-    );
+    {
+      source: "qjkankan",
+      event: "isPlayTours",
+      params: {
+        isPlay: isPlay.value,
+      },
+    },
+    "*"
+  );
 })
 
 
@@ -333,7 +327,6 @@ $width: 1150px;
     flex-direction: row;
     overflow: hidden;
     padding: 10px 30px;
-    min-width: 400px;
     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 {
@@ -364,7 +357,10 @@ $width: 1150px;
 
         &.active {
           position: relative;
+          >span{
+          color: var(--colors-primary-base);
 
+          }
           .tourbar {
             position: absolute;
             width: 78px;
@@ -388,12 +384,42 @@ $width: 1150px;
           opacity: 0.7;
         }
       }
+
+
+    }
+
+    .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: 62px;
+  max-height: 102px;
 }
 
 

+ 4 - 5
packages/qjkankan-kankan-view/src/components/Information/View.Mobile.vue

@@ -21,7 +21,7 @@
         <i class="iconfont icon-pull-down"></i>
       </div>
     </div>
-    <div class="right" v-if="showMusic || controls.showVR" :class="{ more: player.showMore }" v-show="player.showWidgets" @click="onShowMore">
+    <div class="right" v-if="false" :class="{ more: player.showMore }" v-show="player.showWidgets" @click="onShowMore">
       <i class="iconfont icon-show_more"></i>
       <keep-alive>
         <transition
@@ -288,9 +288,9 @@ const onChangeMode = () => {
 }
 .header {
   position: absolute;
-  top: 0.3rem;
+  top: 10px;
   left: 0;
-  height: 1.15789rem;
+  height: 44px;
   width: 100%;
   z-index: 101;
   color: #fff;
@@ -488,9 +488,8 @@ const onChangeMode = () => {
       position: absolute;
       left: 50%;
       bottom: 0;
-      font-size: 0.3rem;
+      font-size: 10px;
       transform: translateX(-50%);
-      margin-bottom: 0.07rem;
     }
 
     &.up {

+ 11 - 0
packages/qjkankan-kankan-view/src/components/Tags/show-tag.vue

@@ -59,6 +59,17 @@ watchEffect(() => {
 const open = () => {
     if (hotData.value.type != 'video') {
         emit('open')
+        window.parent.postMessage(
+        {
+            source: "qjkankan",
+            event: "toggleFdkkHotspot",
+            params: {
+                status: 'open',
+            },
+        },
+        "*"
+    );
+        console.log(111111);
     }
 }
 // const edit = () => {

+ 1 - 2
packages/qjkankan-kankan-view/src/pages/SMG.vue

@@ -266,8 +266,7 @@
       store.commit("setFlying", false);
       store.commit("setPanoId", targetPano.id);
     });
-    app.store.on("tour", async (tour) => {
-      app.TourManager.load(tour);
+    app.TourManager.on('loaded', async (tour) => {
       store.commit("tour/setData", {
         tours: JSON.parse(
           JSON.stringify(app.TourManager.tours, (key, val) => {

+ 36 - 5
packages/qjkankan-kankan-view/src/pages/SPG.vue

@@ -57,7 +57,7 @@ onMounted(() => {
         },
         useShortcutKeys: true,
     })
-    app.use('MinMap')
+    app.use("MinMap", { theme: { camera_fillStyle: "#0076f6" } });
     app.use('Tag')
     app.use('TourPlayer')
     app.Scene.lock()
@@ -84,24 +84,56 @@ onMounted(() => {
     app.Scene.on('loaded', pano => {
         store.commit('setFloorId', pano.floorIndex)
         useMusicPlayer()
+        let music = store.getters['scene/musicURL']
+
+        window.parent.postMessage(
+            {
+                source: "qjkankan",
+                event: "fdkkBgmLink",
+                params: {
+                    music,
+                },
+            },
+            "*"
+        );
     })
     app.store.on('tags', tags => {
         store.commit('tag/load', tags)
     })
     app.store.on('metadata', metadata => {
         store.commit('scene/load', metadata)
+        console.log(metadata, 'metadata');
         if (!metadata.controls.showMap) {
             app.MinMap.hide(true)
         }
     })
     app.Scene.on('panorama.videorenderer.resumerender', () => {
-        musicPlayer.pause(true)
+        window.parent.postMessage(
+            {
+                source: "qjkankan",
+                event: "togglefdkkBGM",
+                params: {
+                    paly: false,
+                },
+            },
+            "*"
+        );
     })
 
     app.Scene.on('panorama.videorenderer.suspendrender', async () => {
         let player = await getApp().TourManager.player
         if (!player.isPlaying) {
-            musicPlayer.resume()
+            // musicPlayer.resume()
+            window.parent.postMessage(
+                {
+                    source: "qjkankan",
+                    event: "togglefdkkBGM",
+                    params: {
+                        paly: true,
+                    },
+                },
+                "*"
+            );
         }
     })
     app.Camera.on('mode.beforeChange', ({ fromMode, toMode, floorIndex }) => {
@@ -119,8 +151,7 @@ onMounted(() => {
         store.commit('setFlying', false)
         store.commit('setPanoId', targetPano.id)
     })
-    app.store.on('tour', async tour => {
-        app.TourManager.load(tour)
+    app.TourManager.on('loaded', async tour => {
         let tours = JSON.parse(
             JSON.stringify(app.TourManager.tours, (key, val) => {
                 if (key === 'audio') {

+ 10 - 0
packages/qjkankan-kankan-view/src/store/modules/scene.js

@@ -42,6 +42,16 @@ export default {
         load(state, payload) {
             state.metadata = payload
             document.title = payload.title
+            window.parent.postMessage(
+                {
+                    source: "qjkankan",
+                    event: "fdkkMetadata",
+                    params: {
+                        metadata: payload
+                    },
+                },
+                "*"
+            );
         },
         loadFloorData(state, floor) {
             state.floors = floor.floors.map(item => {

+ 7 - 1
packages/qjkankan-kankan-view/src/utils/messageHandler.js

@@ -1,5 +1,7 @@
 import { computed,provide, onMounted, onUnmounted, ref, nextTick } from 'vue'
 import { useStore } from 'vuex'
+import { useMusicPlayer } from '@/utils/sound'
+const musicPlayer = useMusicPlayer()
 
 export const listenMessage = () => {
   const store = useStore()
@@ -32,7 +34,11 @@ export const listenMessage = () => {
         store.commit('setMode', params.name)
       }
 
-      
+        //相机模式改变
+      if (event == "toggleBGM") {
+        
+      }
+  
     }
   }
 

+ 12 - 10
packages/qjkankan-kankan-view/src/utils/sound.js

@@ -138,16 +138,18 @@ class MusicPlayer extends AudioPlayer {
     constructor() {
         super('music')
         const store = useStore()
-        const source = computed(() => {
-            let music = store.getters['scene/musicURL']
-            if (music) {
-                return {
-                    src: music,
-                    loop: true,
-                }
-            }
-            return null
-        })
+        // const source = computed(() => {
+        //     let music = store.getters['scene/musicURL']
+        //     if (music) {
+        //         return {
+        //             src: music,
+        //             loop: true,
+        //         }
+        //     }
+        //     return null
+        // })
+
+        const source = ''
 
         const ready = () => {
             if (typeof parent.WeixinJSBridge !== 'undefined') {

+ 1 - 1
packages/qjkankan-kankan-view/vue.config.js

@@ -7,7 +7,7 @@ module.exports = defineConfig({
   productionSourceMap: false,
   assetsDir: "viewer",
   publicPath: "./",
-  outputDir: isDev ? 'dist' : path.resolve('../../dist'),
+  // outputDir: isDev ? 'dist' : path.resolve('../../dist'),
   pages: {
     spg: 'src/pages/spg.js',
     smg: 'src/pages/smg.js',

+ 5 - 2
packages/qjkankan-view/.env

@@ -1,5 +1,8 @@
-VUE_APP_STATIC_DIR=static
+VUE_APP_STATIC_DIR=showviewer
 VUE_APP_CDN=https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com
 VUE_APP_PROXY_URL_ROOT='https://test.4dkankan.com'
 VUE_APP_PROXY_URL='https://test.4dkankan.com/qjkankan/'
-VUE_APP_URL_FILL=
+VUE_APP_URL_FILL=
+
+# 接口请求地址
+VUE_APP_APIS_URL=https://test.4dkankan.com/

+ 6 - 0
packages/qjkankan-view/.env.testprod

@@ -0,0 +1,6 @@
+NODE_ENV=production
+VUE_APP_STATIC_DIR=showviewer
+VUE_APP_CDN=https://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com
+VUE_APP_PROXY_URL_ROOT='https://test.4dkankan.com'
+VUE_APP_PROXY_URL='https://test.4dkankan.com/qjkankan/'
+VUE_APP_URL_FILL=/qjkankan

+ 14 - 0
packages/qjkankan-view/package-lock.json

@@ -11,6 +11,7 @@
         "axios": "^0.27.2",
         "clipboard": "^2.0.11",
         "core-js": "^3.8.3",
+        "photoswipe": "^5.2.2",
         "tiny-emitter": "^2.1.0",
         "vue": "^3.2.13",
         "vue-i18n": "^9.1.10",
@@ -8214,6 +8215,14 @@
         "node": ">=8"
       }
     },
+    "node_modules/photoswipe": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/photoswipe/-/photoswipe-5.3.2.tgz",
+      "integrity": "sha512-QJrf0kGa3tYX3sUascZymkT+ZIkgw8YNcwL+hGqoLTyphcn9vSTEab7tmCnA1tthgVzWQRgPjX9psuk7yFrTcA==",
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
     "node_modules/picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
@@ -17683,6 +17692,11 @@
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true
     },
+    "photoswipe": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmmirror.com/photoswipe/-/photoswipe-5.3.2.tgz",
+      "integrity": "sha512-QJrf0kGa3tYX3sUascZymkT+ZIkgw8YNcwL+hGqoLTyphcn9vSTEab7tmCnA1tthgVzWQRgPjX9psuk7yFrTcA=="
+    },
     "picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",

+ 3 - 1
packages/qjkankan-view/package.json

@@ -4,10 +4,12 @@
   "private": true,
   "scripts": {
     "serve": "vue-cli-service serve",
-    "build": "vue-cli-service --no-clean build",
+    "build": "vue-cli-service build",
+    "build-testprod": "vue-cli-service build --mode testprod",
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "photoswipe": "^5.2.2",
     "axios": "^0.27.2",
     "clipboard": "^2.0.11",
     "core-js": "^3.8.3",

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


+ 4 - 4
packages/qjkankan-view/public/show.html

@@ -4,14 +4,14 @@
     <meta charset="utf-8">
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no" />
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfont/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ1.1.0/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontVR/iconfont.css"/>
-    <link rel="stylesheet" href="//at.alicdn.com/t/c/font_2947721_9yw6iv77i18.css"/>
+    <link rel="stylesheet" href="//at.alicdn.com/t/c/font_2947721_mhyxhjxv908.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper-bundle.min.css" />
-    <link rel="icon" href="./favicon.ico" />
-    <title>VR作品</title>
+    <link rel="icon" href="./favicon.png" />
+    <title>四维全景</title>
   </head>
   <body>
     <div id="app"></div>

+ 7 - 6
packages/qjkankan-view/public/showMobile.html

@@ -9,17 +9,18 @@
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfont/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontQJ1.1.0/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontVR/iconfont.css"/>
-    <link rel="stylesheet" href="//at.alicdn.com/t/font_2947721_fdnuf7rzr.css"/>
-    <link rel="stylesheet" href="//at.alicdn.com/t/font_1064953_6ikt2gc1snb.css"/>
-    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/animate/animate.min.css" />
-    <link rel="icon" href="./favicon.ico" />
-    <title>VR作品</title>
+    <link rel="stylesheet" href="//at.alicdn.com/t/c/font_2947721_mhyxhjxv908.css"/>
+    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper-bundle.min.css" />
+    <link rel="icon" href="./favicon.png" />
+    <title>四维全景</title>
   </head>
   <body>
     <div id="app"></div>
     <!-- built files will be auto injected -->
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/jquery-2.1.1.min.js"></script>
     <script src="<%= VUE_APP_STATIC_DIR %>/lib/krpano/js/tour.js"></script>
-    <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
+    <script src="<%= VUE_APP_STATIC_DIR %>/lib/howler/howler.min.js"></script>
+    <script src="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper-bundle.min.js"></script>
+   
   </body>
 </html>

packages/qjkankan-view/public/static/lib/animate/animate.min.css → packages/qjkankan-view/public/showviewer/lib/animate/animate.min.css


packages/qjkankan-view/public/static/lib/howler/howler.min.js → packages/qjkankan-view/public/showviewer/lib/howler/howler.min.js


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/demo.css → packages/qjkankan-view/public/showviewer/lib/iconfont/demo.css


packages/qjkankan-view/public/static/lib/iconfont/demo_index.html → packages/qjkankan-view/public/showviewer/lib/iconfont/demo_index.html


packages/qjkankan-view/public/static/lib/iconfont/iconfont.css → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.css


packages/qjkankan-view/public/static/lib/iconfont/iconfont.eot → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.eot


packages/qjkankan-view/public/static/lib/iconfont/iconfont.js → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.js


packages/qjkankan-view/public/static/lib/iconfont/iconfont.json → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.json


packages/qjkankan-view/public/static/lib/iconfont/iconfont.svg → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.svg


packages/qjkankan-view/public/static/lib/iconfont/iconfont.ttf → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.ttf


packages/qjkankan-view/public/static/lib/iconfont/iconfont.woff → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.woff


packages/qjkankan-view/public/static/lib/iconfont/iconfont.woff2 → packages/qjkankan-view/public/showviewer/lib/iconfont/iconfont.woff2


packages/qjkankan-view/public/static/lib/iconfont/demo.css → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/demo.css


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/demo_index.html → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/demo_index.html


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.css → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.css


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.js → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.js


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.json → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.json


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.ttf → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.ttf


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.woff → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.woff


packages/qjkankan-view/public/static/lib/iconfontQJ1.1.0/iconfont.woff2 → packages/qjkankan-view/public/showviewer/lib/iconfontQJ1.1.0/iconfont.woff2


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.css → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.css


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.eot → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.eot


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.js → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.js


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.json → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.json


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.svg → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.svg


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.ttf → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.ttf


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.woff → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.woff


packages/qjkankan-view/public/static/lib/iconfontVR/iconfont.woff2 → packages/qjkankan-view/public/showviewer/lib/iconfontVR/iconfont.woff2


packages/qjkankan-view/public/static/lib/jquery-2.1.1.min.js → packages/qjkankan-view/public/showviewer/lib/jquery-2.1.1.min.js


packages/qjkankan-view/public/static/lib/krpano/js/tour.js → packages/qjkankan-view/public/showviewer/lib/krpano/js/tour.js


packages/qjkankan-view/public/static/lib/krpano/plugins/bingmaps.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/bingmaps.js


packages/qjkankan-view/public/static/lib/krpano/plugins/combobox.xml → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/combobox.xml


packages/qjkankan-view/public/static/lib/krpano/plugins/googlemaps.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/googlemaps.js


packages/qjkankan-view/public/static/lib/krpano/plugins/gyro2.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/gyro2.js


packages/qjkankan-view/public/static/lib/krpano/plugins/scrollarea.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/scrollarea.js


packages/qjkankan-view/public/static/lib/krpano/plugins/soundinterface.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/soundinterface.js


packages/qjkankan-view/public/static/lib/krpano/plugins/videoplayer.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/videoplayer.js


packages/qjkankan-view/public/static/lib/krpano/plugins/webvr.js → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr.js


packages/qjkankan-view/public/static/lib/krpano/plugins/webvr.xml → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr.xml


packages/qjkankan-view/public/static/lib/krpano/plugins/webvr_cursor_80x80_17f.png → packages/qjkankan-view/public/showviewer/lib/krpano/plugins/webvr_cursor_80x80_17f.png


packages/qjkankan-view/public/static/panoassets/images/hotspot/icon/img_doticon_01.svg → packages/qjkankan-view/public/showviewer/lib/krpano/skin/img_doticon_01.svg


packages/qjkankan-view/public/static/lib/krpano/skin/krpano-roundlogo.png → packages/qjkankan-view/public/showviewer/lib/krpano/skin/krpano-roundlogo.png


+ 0 - 0
packages/qjkankan-view/public/showviewer/lib/krpano/skin/masking.png


Неке датотеке нису приказане због велике количине промена