Browse Source

update1116:添加翻译配置

tremble 2 years ago
parent
commit
489c7d80d5
44 changed files with 5799 additions and 1029 deletions
  1. 0 5
      packages/qjkankan-editor/.env.bendi
  2. 6 0
      packages/qjkankan-editor/.env.testdev
  3. 1 1
      packages/qjkankan-editor/package.json
  4. 3 2
      packages/qjkankan-editor/src/components/pulldownMenuInEditor.vue
  5. 129 67
      packages/qjkankan-editor/src/lang/_en.js
  6. 43 14
      packages/qjkankan-editor/src/lang/_zh.js
  7. 8 8
      packages/qjkankan-editor/src/views/base/Toolbar.vue
  8. 144 113
      packages/qjkankan-editor/src/views/base/customButtonSettings.vue
  9. 4 6
      packages/qjkankan-editor/src/views/base/customLogoSettings.vue
  10. 7 7
      packages/qjkankan-editor/src/views/base/customMaskSettings.vue
  11. 2 2
      packages/qjkankan-editor/src/views/base/openingAnimationSettings.vue
  12. 11 11
      packages/qjkankan-editor/src/views/base/openingTipSettings.vue
  13. 2 2
      packages/qjkankan-editor/src/views/base/passwordSettings.vue
  14. 1 1
      packages/qjkankan-kankan-view/.env
  15. 1 1
      packages/qjkankan-kankan-view/.env.development
  16. 3 2
      packages/qjkankan-kankan-view/public/smg.html
  17. 6 5
      packages/qjkankan-kankan-view/src/components/shared/Loading.vue
  18. 3 4
      packages/qjkankan-kankan-view/src/pages/SMG.vue
  19. 1 1
      packages/qjkankan-kankan-view/src/pages/SPG.vue
  20. 1 1
      packages/qjkankan-view/public/show.html
  21. 1 1
      packages/qjkankan-view/public/showMobile.html
  22. 539 0
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/demo.css
  23. 3270 0
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/demo_index.html
  24. 551 0
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.css
  25. 1 0
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.js
  26. 947 0
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.json
  27. BIN
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.ttf
  28. BIN
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.woff
  29. BIN
      packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.woff2
  30. 6 6
      packages/qjkankan-view/src/components/UIGather/control.vue
  31. 1 1
      packages/qjkankan-view/src/components/UIGather/control/telephone.vue
  32. 0 406
      packages/qjkankan-view/src/components/UIGather/list - 副本 (2).vue
  33. 0 306
      packages/qjkankan-view/src/components/UIGather/list - 副本.vue
  34. 6 6
      packages/qjkankan-view/src/components/UIGather/menu.vue
  35. 1 1
      packages/qjkankan-view/src/components/UIGather/mobile/control.fdkk.vue
  36. 1 1
      packages/qjkankan-view/src/components/UIGather/mobile/control/telephone.vue
  37. 1 1
      packages/qjkankan-view/src/components/UIGather/mobile/menu.vue
  38. 1 1
      packages/qjkankan-view/src/components/UIGather/mobile/tours.vue
  39. 1 1
      packages/qjkankan-view/src/components/assembly/Error.vue
  40. 1 1
      packages/qjkankan-view/src/components/assembly/Loading.vue
  41. 2 1
      packages/qjkankan-view/src/components/assembly/MobileTags/metas/metas-image.vue
  42. 6 6
      packages/qjkankan-view/src/components/assembly/Tags/metas/metas-image.vue
  43. 63 0
      packages/qjkankan-view/src/locales/zh copy.json
  44. 24 37
      packages/qjkankan-view/src/locales/zh.json

+ 0 - 5
packages/qjkankan-editor/.env.bendi

@@ -1,5 +0,0 @@
-VUE_APP_MAIN_COLOR=''
-VUE_APP_STATIC_DIR=static
-VUE_APP_CDN=https://ossxiaoan.4dage.com
-VUE_APP_PROXY_URL='http://192.168.0.135:8001/'
-VUE_APP_URL_FILL='/'

+ 6 - 0
packages/qjkankan-editor/.env.testdev

@@ -0,0 +1,6 @@
+VUE_APP_MAIN_COLOR=''
+VUE_APP_STATIC_DIR=static
+VUE_APP_CDN=https://ossxiaoan.4dage.com
+VUE_APP_PROXY_URL_ROOT='https://test.4dkankan.com'
+VUE_APP_PROXY_URL='https://test.4dkankan.com/qjkankan/'
+VUE_APP_URL_FILL=

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

@@ -6,7 +6,7 @@
     "serve": "vue-cli-service serve",
     "serve-prod": "vue-cli-service serve --mode prod",
     "serve-testprod": "vue-cli-service serve --mode testprod",
-    "serve-local": "vue-cli-service serve --mode bendi",
+    "serve-testdev": "vue-cli-service serve --mode testdev",
     "build": "vue-cli-service build",
     "build-prod": "vue-cli-service build --mode prod",
     "build-testprod": "vue-cli-service build --mode testprod",

+ 3 - 2
packages/qjkankan-editor/src/components/pulldownMenuInEditor.vue

@@ -1,14 +1,14 @@
 <template>
   <div class="pull-down-menu-in-editor" v-clickoutside="onClickOutside">
     <button class="menu-cover" @click="isExpand = !isExpand">
-      {{placeholder ? placeholder : value}}
+      {{placeholder ? placeholder : $i18n.t(`zh_key.${value}`)}}
       <i class="iconfont icon-material_preview_upload_collect" :class="{flip: isExpand}"></i>
     </button>
     <div class="menu" v-show="isExpand">
       <button v-for="(item, index) of valueList" :key="index"
         @click="onSelect(item)"
       >
-        {{item}}
+        {{$i18n.t(`zh_key.${item}`)}}
       </button>
     </div>
   </div>
@@ -47,6 +47,7 @@ export default {
       }
     },
     onSelect(item) {
+      console.log(item,'ads')
       this.isExpand = false
       this.$emit('input', item)
     }

+ 129 - 67
packages/qjkankan-editor/src/lang/_en.js

@@ -235,7 +235,7 @@ module.exports = {
             "save": "Save current settings",
             "hide": "Hide the spot",
             "show": "Show the spot",
-            "pano_tips":"Tip: You hide the initial point, so you can't roam in this scene."
+            "pano_tips": "Tip: You hide the initial point, so you can't roam in this scene."
         },
         "model": {
             "__name": "修整模型",
@@ -527,74 +527,136 @@ module.exports = {
     },
     "material": {
         "works": {
-            "my":"我的作品",
-            "create":"创建作品",
-            "search":"搜索作品",
-            "preview":"预览",
-            "edit":"编辑",
-            "share":"分享",
-            "delete":"删除",
-            "no_works":"您还没有作品,请先创建作品~",
-            "work_link":"作品链接",
-            "work_qrCode":"作品二维码",
-            "download_qrCode":"下载二维码",
-            "copy_link":"复制链接",
-            "work_preview":"全景作品预览",
-            "new_blank":"新窗口打开",
-            "cancel":"取消",
+            "my": "我的作品",
+            "create": "创建作品",
+            "search": "搜索作品",
+            "preview": "预览",
+            "edit": "编辑",
+            "share": "分享",
+            "delete": "删除",
+            "no_works": "您还没有作品,请先创建作品~",
+            "work_link": "作品链接",
+            "work_qrCode": "作品二维码",
+            "download_qrCode": "下载二维码",
+            "copy_link": "复制链接",
+            "work_preview": "全景作品预览",
+            "new_blank": "新窗口打开",
+            "cancel": "取消",
         },
     },
-    "gather":{
-        "select_material":"选择素材",
-        "no_title":"无标题",
-
-        "my_works":"我的作品",
-        "my_material":"我的素材",
-
-
- 
-        "panorama":"全景图",
-        "image":"图片",
-        "audio":"音频",
-        "video":"视频",
-        "scene":"三维场景",
-        "keywords":"输入关键词",
-        "how_to_shoot":"如何拍摄三维场景",
-        "pano_size":"请上传2:1、120MB以内、jpg格式的图片",
-        "cancel":"取消",
-        "comfirm":"确定",
-
-        "pano_fail":"格式错误,请上传2:1、120MB以内、jpg格式的全景图片",
-        "pano_limit":"过大,请上传2:1、120MB以内、jpg格式的全景图片",
-        "edit_cover":"编辑封面",
-
-        "img_fail":"格式错误,请上传10MB以内、jpg/png格式的图片",
-        "img_limit":"过大,请上传10MB以内、jpg/png格式的图片",
-        "img_size":"请上传10MB以内、jpg/png格式的图片",
-        
- 
-        "audio_size":"请上传20MB以内、mp3格式的音频",
-        "audio_limit":"过大,请上传20MB以内、mp3格式的音频",
-        "audio_fail":"格式错误,请上传20MB以内、mp3格式的音频",
-       
-
-        "upload_material":"上传素材",
-        "video_size":"请上传200MB以内、mp4格式的视频",
-        "video_limit":"过大,请上传200MB以内、mp4格式的视频",
-        "video_fail":"格式错误,请上传200MB以内、mp4格式的视频",
-        "serch_material":"搜索素材",
-        "rename":"重命名",
-        "delete":"删除",
-        "no_serch_result":"未搜索到结果",
-        "no_material_result":"暂无素材~",
-        "had_load":"已加载{msg}条",
-        "uploading":"正在上传 {msg}"
+    "gather": {
+        "select_material": "选择素材",
+        "no_title": "无标题",
+        "my_works": "我的作品",
+        "my_material": "我的素材",
+        "panorama": "全景图",
+        "image": "图片",
+        "audio": "音频",
+        "video": "视频",
+        "scene": "三维场景",
+        "keywords": "输入关键词",
+        "how_to_shoot": "如何拍摄三维场景",
+        "pano_size": "请上传2:1、120MB以内、jpg格式的图片",
+        "cancel": "取消",
+        "comfirm": "确定",
+        "pano_fail": "格式错误,请上传2:1、120MB以内、jpg格式的全景图片",
+        "pano_limit": "过大,请上传2:1、120MB以内、jpg格式的全景图片",
+        "edit_cover": "编辑封面",
+        "img_fail": "格式错误,请上传10MB以内、jpg/png格式的图片",
+        "img_limit": "过大,请上传10MB以内、jpg/png格式的图片",
+        "img_size": "请上传10MB以内、jpg/png格式的图片",
+        "audio_size": "请上传20MB以内、mp3格式的音频",
+        "audio_limit": "过大,请上传20MB以内、mp3格式的音频",
+        "audio_fail": "格式错误,请上传20MB以内、mp3格式的音频",
+        "upload_material": "上传素材",
+        "video_size": "请上传200MB以内、mp4格式的视频",
+        "video_limit": "过大,请上传200MB以内、mp4格式的视频",
+        "video_fail": "格式错误,请上传200MB以内、mp4格式的视频",
+        "serch_material": "搜索素材",
+        "rename": "重命名",
+        "delete": "删除",
+        "no_serch_result": "未搜索到结果",
+        "no_material_result": "暂无素材~",
+        "had_load": "已加载{msg}条",
+        "uploading": "正在上传 {msg}"
+    },
+    "personal_center": {
+        "personal_center": "个人中心",
+        "logout": "退出登录",
+        "login": "登录",
+        "register": "注册",
+    },
+    "edit_page": {
+        "back_myworks": "返回我的作品",
+        "preview": "预览",
+        "settings": "基础",
+        "navigation": "导航",
+        "viewpoint": "视角",
+        "hotspot": "热点",
+        "explanation": "讲解",
+        "save": "保存",
     },
-    "personal_center":{
-        "personal_center":"个人中心",
-        "logout":"退出登录",
-        "login":"登录",
-        "register":"注册",
-        
+    "edit_settings": {
+        "auto_pano": "自动巡游",
+        "enter_auto": "进入全景图自动巡游(3分钟完整巡游一次)",
+        "set_bgm": "设置背景音乐",
+        "add_audio": "添加音频",
+        "change_audio": "更换音频",
+        "custom_button": "自定义按钮",
+        "custom_button_tips": "自定义按钮可为作品添加联系方式或网站链接等,设置可见后即可在作品显示。",
+        "edit": "编辑",
+        "hide": "隐藏",
+        "show": "显示",
+        "button_name": "按钮名称",
+        "button_placeholder": "请输入按钮名称",
+        "please_input": "请输入",
+        "phone": "电话号码",
+        "link": "链接地址",
+        "phone_short": "电话",
+        "link_short": "链接",
+        "custom_logo": "自定义LOGO",
+        "show_logo": "显示LOGO",
+        "logo_size": "300*300px,600kb以内,支持<br>jpg/png格式",
+        "mask_setting": "遮罩设置",
+        "sky_mask": "天空遮罩",
+        "sky_tips": "天空遮罩显示在场景的顶部,地面遮罩显示在场景的底部。",
+        "mask_setting": "遮罩设置",
+        "mask_size": "建议500*500px,<br/>支持jpg/png格式",
+        "bottom_mask": "地面遮罩",
+        "opening_setting": "设置开场动画",
+        "opening_tips_setting": "提示设置",
+        "opening_tips": "开场提示仅适用于全景图。若初始场景为三维模\n型,以下开场提示不适用。",
+        "pc": "PC端",
+        "mobile": "移动端",
+        "select_image": "选择图片",
+        "opening_size": "建议300*300px,600kb以内,<br/>支持jpg/png格式",
+        "show_setting": "显示设置",
+        "first_notice": "仅首次打开链接时,提示",
+        "password_setting": "设置访问密码",
+        "password_placeholder": "请输入访问密码,限20位",
+        "base_setting": "基础设置",
+        "setting_cover": "设置封面",
+        "cover_size": "512*512px,支持jpg/png格式",
+        "title": "标题",
+        "work_placeholder": "请输入作品标题",
+        "intro_placeholder": "请输入文字内容,限500字"
+    },
+
+    "zh_key": {
+        "电话": "电话",
+        "链接": "链接",
+        '小行星开场': "小行星开场",
+        '小行星巡游开场': "小行星巡游开场",
+        '小行星缩放开场': "小行星缩放开场",
+        '水平巡游开场': "水平巡游开场",
+        '水晶球开场': "水晶球开场",
+        '开场提示': "开场提示",
+        '开场动画': "开场动画",
+        '访问密码': "访问密码",
+        '自动巡游': "自动巡游",
+        '背景音乐': "背景音乐",
+        '自定义LOGO': "自定义LOGO",
+        '自定义遮罩': "自定义遮罩",
+        '自定义按钮': "自定义按钮",
     }
 }

+ 43 - 14
packages/qjkankan-editor/src/lang/_zh.js

@@ -547,12 +547,8 @@ module.exports = {
     "gather":{
         "select_material":"选择素材",
         "no_title":"无标题",
-
         "my_works":"我的作品",
         "my_material":"我的素材",
-
-
- 
         "panorama":"全景图",
         "image":"图片",
         "audio":"音频",
@@ -563,21 +559,15 @@ module.exports = {
         "pano_size":"请上传2:1、120MB以内、jpg格式的图片",
         "cancel":"取消",
         "comfirm":"确定",
-
         "pano_fail":"格式错误,请上传2:1、120MB以内、jpg格式的全景图片",
         "pano_limit":"过大,请上传2:1、120MB以内、jpg格式的全景图片",
         "edit_cover":"编辑封面",
-
         "img_fail":"格式错误,请上传10MB以内、jpg/png格式的图片",
         "img_limit":"过大,请上传10MB以内、jpg/png格式的图片",
         "img_size":"请上传10MB以内、jpg/png格式的图片",
-        
- 
         "audio_size":"请上传20MB以内、mp3格式的音频",
         "audio_limit":"过大,请上传20MB以内、mp3格式的音频",
         "audio_fail":"格式错误,请上传20MB以内、mp3格式的音频",
-       
-
         "upload_material":"上传素材",
         "video_size":"请上传200MB以内、mp4格式的视频",
         "video_limit":"过大,请上传200MB以内、mp4格式的视频",
@@ -609,12 +599,9 @@ module.exports = {
     "edit_settings":{
         "auto_pano":"自动巡游",
         "enter_auto":"进入全景图自动巡游(3分钟完整巡游一次)",
-
-
         "set_bgm":"设置背景音乐",
         "add_audio":"添加音频",
         "change_audio":"更换音频",
-
         "custom_button":"自定义按钮",
         "custom_button_tips":"自定义按钮可为作品添加联系方式或网站链接等,设置可见后即可在作品显示。",
         "edit":"编辑",
@@ -627,7 +614,49 @@ module.exports = {
         "link":"链接地址",
         "phone_short":"电话",
         "link_short":"链接",
+        "custom_logo":"自定义LOGO",
+        "show_logo":"显示LOGO",
+        "logo_size":"300*300px,600kb以内,支持<br>jpg/png格式",
+        "mask_setting":"遮罩设置",
+        "sky_mask":"天空遮罩",
+        "sky_tips":"天空遮罩显示在场景的顶部,地面遮罩显示在场景的底部。",
+        "mask_setting":"遮罩设置",
+        "mask_size":"建议500*500px,<br/>支持jpg/png格式",
+        "bottom_mask":"地面遮罩",
+        "opening_setting":"设置开场动画",
+        "opening_tips_setting":"提示设置",
+        "opening_tips":"开场提示仅适用于全景图。若初始场景为三维模\n型,以下开场提示不适用。",
+        "pc":"PC端",
+        "mobile":"移动端",
+        "select_image":"选择图片",
+        "opening_size":"建议300*300px,600kb以内,<br/>支持jpg/png格式",
+        "show_setting":"显示设置",
+        "first_notice":"仅首次打开链接时,提示",
+        "password_setting":"设置访问密码",
+        "password_placeholder":"请输入访问密码,限20位",
+        "base_setting":"基础设置",
+        "setting_cover":"设置封面",
+        "cover_size":"512*512px,支持jpg/png格式",
+        "title":"标题",
+        "work_placeholder":"请输入作品标题",
+        "intro_placeholder":"请输入文字内容,限500字"
+    },
 
-        
+    "zh_key":{
+        "电话":"电话",
+        "链接":"链接",
+        '小行星开场':"小行星开场",
+        '小行星巡游开场':"小行星巡游开场",
+        '小行星缩放开场':"小行星缩放开场",
+        '水平巡游开场':"水平巡游开场",
+        '水晶球开场':"水晶球开场",
+        '开场提示':"开场提示",
+        '开场动画':"开场动画",
+        '访问密码':"访问密码",
+        '自动巡游':"自动巡游",
+        '背景音乐':"背景音乐",
+        '自定义LOGO':"自定义LOGO",
+        '自定义遮罩':"自定义遮罩",
+        '自定义按钮':"自定义按钮",
     }
 }

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

@@ -2,18 +2,18 @@
   <!-- 编辑器-基础-中间部分 -->
   <div class="app-view-toolbar app-view-full-toolbar">
     <div class="main">
-      <div class="ui-title-big">基础设置</div>
+      <div class="ui-title-big">{{$i18n.t(`edit_settings.base_setting`)}}</div>
       <div class="upload-con">
         <div class="uc-l">
           <div class="preview">
             <img :src="info.icon || require('@/assets/images/default/img_cover_default_2.png')" alt="" />
-            <button class="ui-button submit setting-cover-btn" @click="onClickSettingCover">设置封面</button>
+            <button class="ui-button submit setting-cover-btn" @click="onClickSettingCover">{{$i18n.t(`edit_settings.setting_cover`)}}</button>
           </div>
-          <div class="ui-remark">512*512px,支持jpg/png格式</div>
+          <div class="ui-remark" v-html="$i18n.t(`edit_settings.cover_size`)"></div>
         </div>
         <div class="uc-r">
           <div class="ui-title">
-            <span class="">标题</span>
+            <span class="">{{$i18n.t(`edit_settings.title`)}}</span>
           </div>
           <div class="title-input-wrapper">
             <input
@@ -23,7 +23,7 @@
               type="text"
               autocomplete="new-password"
               maxlength="50"
-              placeholder="请输入作品标题"
+              :placeholder="$i18n.t(`edit_settings.work_placeholder`)"
             />
             <span class="count">{{titleLength}}/50</span>
           </div>
@@ -36,7 +36,7 @@
               type="text"
             /> -->
 
-            <editor ref="editor" :html="info.description" :placeholder="'请输入文字内容,限500字'" :maxlength="500" @change="onEditorChange"></editor>
+            <editor ref="editor" :html="info.description" :placeholder="$i18n.t(`edit_settings.intro_placeholder`)" :maxlength="500" @change="onEditorChange"></editor>
 
             <span class="count">{{jianjieLength}}/500</span>
           </div>
@@ -49,7 +49,7 @@
           :class="{active: activeTab === item}"
           @click="activeTab = item"
         >
-          {{item}}
+        {{$i18n.t(`zh_key.${item}`)}}
         </li>
       </menu>
       <div class="settings-view-wrapper">
@@ -67,7 +67,7 @@
     <div class="dialog" style="z-index: 2000" v-if="isShowSettingCoverWindow">
       <MaterialSelectorForEditor
         :selectableType="['image', 'pano', '3D']"
-        title="选择素材"
+        :title="$i18n.t(`gather.select_material`)"
         @cancle="isShowSettingCoverWindow = false"
         @submit="onCoverSelected"
       />

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

@@ -1,72 +1,51 @@
 <template>
   <div class="custom-button-settings">
-    <span class="title">自定义按钮</span>
+    <span class="title">{{ custom_button }}</span>
 
 
-    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="'自定义按钮可为作品添加联系方式或网站链接等,设置可见后即可在作品显示。'">
+    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="custom_button_tips">
     </i>
-    <br/>
-    
-    <div v-for="(item, index) of info.customButton" :key="index" class="button-setting-item" :class="{expand: expandStatus[index]}">
-      <div
-        class="title-bar"
-        :class="info.customButton[index].isShow ? 'bright' : 'dark'"
-        @click="onRequestForChangeExpandStatus(index)"
-      >
+    <br />
+
+    <div v-for="(item, index) of info.customButton" :key="index" class="button-setting-item"
+      :class="{ expand: expandStatus[index] }">
+      <div class="title-bar" :class="info.customButton[index].isShow ? 'bright' : 'dark'"
+        @click="onRequestForChangeExpandStatus(index)">
         <div class="left">
-          <i
-            class="iconfont icon-edit_input_arrow icon-expand"
-          ></i>
-          <img v-if="info.customButton[index].type === '电话' && info.customButton[index].isShow" :src="require('@/assets/images/icons/phone.svg')" class="button-icon" alt="">
-          <img v-if="info.customButton[index].type === '电话' && !info.customButton[index].isShow" :src="require('@/assets/images/icons/phone-dark.svg')" class="button-icon" alt="">
-          <img v-if="info.customButton[index].type === '链接' && info.customButton[index].isShow" :src="require('@/assets/images/icons/link.svg')" class="button-icon" alt="">
-          <img v-if="info.customButton[index].type === '链接' && !info.customButton[index].isShow" :src="require('@/assets/images/icons/link-dark.svg')" class="button-icon" alt="">
+          <i class="iconfont icon-edit_input_arrow icon-expand"></i>
+          <img v-if="info.customButton[index].type === '电话' && info.customButton[index].isShow"
+            :src="require('@/assets/images/icons/phone.svg')" class="button-icon" alt="">
+          <img v-if="info.customButton[index].type === '电话' && !info.customButton[index].isShow"
+            :src="require('@/assets/images/icons/phone-dark.svg')" class="button-icon" alt="">
+          <img v-if="info.customButton[index].type === '链接' && info.customButton[index].isShow"
+            :src="require('@/assets/images/icons/link.svg')" class="button-icon" alt="">
+          <img v-if="info.customButton[index].type === '链接' && !info.customButton[index].isShow"
+            :src="require('@/assets/images/icons/link-dark.svg')" class="button-icon" alt="">
           <span class="button-name">
-            {{info.customButton[index].name}}
+            {{ buttonName[index] }}
+            <!-- {{ info.customButton[index].name  }} -->
           </span>
         </div>
         <div class="right">
-          <i
-            class="iconfont icon-editor_list_edit btn-edit"
-            @click.stop="onRequestForEdit(index)"
-            v-tooltip="'编辑'"
-          >
+          <i class="iconfont icon-editor_list_edit btn-edit" @click.stop="onRequestForEdit(index)" v-tooltip="edittips">
           </i>
-          <i
-            v-show="info.customButton[index].isShow"
-            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-editor_off btn-hide"
-            v-tooltip="'显示'"
-            @click.stop="onRequestForShow(index)"
-          ></i>
+          <i v-show="info.customButton[index].isShow" class="iconfont icon-editor_on btn-show" v-tooltip="hidetips"
+            @click.stop="info.customButton[index].isShow = false"></i>
+          <i v-show="!info.customButton[index].isShow" class="iconfont icon-editor_off btn-hide" v-tooltip="showtips"
+            @click.stop="onRequestForShow(index)"></i>
         </div>
       </div>
       <div class="edit-content">
         <div class="edit-content-item">
-          <span class="item-name">按钮名称</span>
-          <PulldownMenuInEditor
-            class="selector"
-            :valueList="buttonTypeList"
-            v-model="info.customButton[index].type"
-          ></PulldownMenuInEditor>
-          <input
-            class="name-input"
-            placeholder="请输入按钮名称"
-            v-model="info.customButton[index].name"
-            maxlength="15"
-          >
+          <span class="item-name">{{ button_name }}</span>
+          <PulldownMenuInEditor class="selector" :valueList="buttonTypeList" v-model="info.customButton[index].type">
+          </PulldownMenuInEditor>
+          <input class="name-input" :placeholder="button_placeholder" v-model="info.customButton[index].name"
+            maxlength="15">
         </div>
         <div class="edit-content-item">
-          <span class="item-name">{{buttonValueTips[index]}}</span>
-          <input
-            class="value-input"
-            v-model="info.customButton[index].value"
-          >
+          <span class="item-name">{{ buttonValueTips[index] }}</span>
+          <input class="value-input" v-model="info.customButton[index].value">
         </div>
       </div>
     </div>
@@ -74,7 +53,7 @@
     <popup v-if="isEditing" :canClose="false">
       <div class="ui-message ui-message-confirm dark edit-window">
         <div class="ui-message-header">
-          <span>自定义按钮</span>
+          <span>{{ custom_button }}</span>
           <span @click="isEditing = false">
             <i class="iconfont icon_close"></i>
           </span>
@@ -82,38 +61,24 @@
 
         <div class="ui-message-main">
           <div class="edit-content-item">
-            <span class="item-name">按钮名称</span>
-            <PulldownMenuInEditor
-              class="selector"
-              :valueList="buttonTypeList"
-              v-model="editingInfo.type"
-            ></PulldownMenuInEditor>
-            <input
-              class="name-input"
-              placeholder="请输入按钮名称"
-              v-model="editingInfo.name"
-              maxlength="15"
-            >
+            <span class="item-name">{{ button_name }}</span>
+            <PulldownMenuInEditor class="selector" :valueList="buttonTypeList" v-model="editingInfo.type">
+            </PulldownMenuInEditor>
+            <input class="name-input" :placeholder="button_placeholder" v-model="editingInfo.name" maxlength="15">
           </div>
           <div class="edit-content-item">
-            <span class="item-name">{{editingButtonValueTip}}</span>
-            <input
-              class="value-input"
-              :placeholder="`请输入${editingButtonValueTip}`"
-              v-model="editingInfo.value"
-            >
+            <span class="item-name">{{ editingButtonValueTip }}</span>
+            <input class="value-input" :placeholder="`${please_input}${editingButtonValueTip}`"
+              v-model="editingInfo.value">
           </div>
         </div>
 
         <div class="ui-message-footer">
           <button class="ui-button deepcancel" @click="isEditing = false">
-            取消
+            {{ canceltips }}
           </button>
-          <button
-            class="ui-button submit"
-            @click="onConfirmEditing"
-          >
-            确定
+          <button class="ui-button submit" @click="onConfirmEditing">
+            {{ comfirmtips }}
           </button>
         </div>
       </div>
@@ -126,6 +91,8 @@ import { mapGetters } from "vuex";
 import PulldownMenuInEditor from "@/components/pulldownMenuInEditor.vue";
 import { isValidPhoneNumber } from "@/utils/other.js";
 import Popup from "@/components/shared/popup/index.vue";
+import { i18n } from "@/lang"
+
 
 export default {
   components: {
@@ -134,6 +101,18 @@ export default {
   },
   data() {
     return {
+      custom_button: i18n.t("edit_settings.custom_button"),
+      custom_button_tips: i18n.t("edit_settings.custom_button_tips"),
+      edittips: i18n.t("edit_settings.edit"),
+      hidetips: i18n.t("edit_settings.hide"),
+      showtips: i18n.t("edit_settings.show"),
+      button_name: i18n.t("edit_settings.button_name"),
+      button_placeholder: i18n.t("edit_settings.button_placeholder"),
+      please_input: i18n.t("edit_settings.please_input"),
+
+      canceltips: i18n.t("gather.cancel"),
+      comfirmtips: i18n.t("gather.comfirm"),
+
       expandStatus: [],
       buttonTypeList: [
         '电话',
@@ -151,15 +130,31 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info:'info'
+      info: 'info'
     }),
     buttonValueTips() {
-      if (this?.info?.customButton) {
+      if (this.info.customButton) {
+        return this.info.customButton.map((item) => {
+          if (item.type === '电话') {
+            return i18n.t("edit_settings.phone")
+          } else if (item.type === '链接') {
+            return i18n.t("edit_settings.link")
+          } else {
+            return ''
+          }
+        })
+      } else {
+        return null
+      }
+    },
+
+    buttonName() {
+      if (this.info.customButton) {
         return this.info.customButton.map((item) => {
           if (item.type === '电话') {
-            return '电话号码'
+            return i18n.t("edit_settings.phone_short")
           } else if (item.type === '链接') {
-            return '链接地址'
+            return i18n.t("edit_settings.link_short")
           } else {
             return ''
           }
@@ -170,9 +165,9 @@ export default {
     },
     editingButtonValueTip() {
       if (this.editingInfo.type === '电话') {
-        return '电话号码'
+        return i18n.t("edit_settings.phone")
       } else if (this.editingInfo.type === '链接') {
-        return '链接地址'
+        return i18n.t("edit_settings.link")
       } else {
         return ''
       }
@@ -182,7 +177,8 @@ export default {
     'editingInfo.type': {
       handler(vNew) {
         if (!this.isIgnoreTypeChangeWhenEditing) {
-          this.editingInfo.name = vNew
+          console.log(vNew);
+          this.editingInfo.name = i18n.t(`zh_key.${vNew}`)
           this.editingInfo.value = ''
         }
         this.isIgnoreTypeChangeWhenEditing = false
@@ -248,9 +244,9 @@ export default {
       if (!this.checkButtonValue(this.editingInfo.value, this.editingInfo.type)) {
         return
       }
-      this.info.customButton[this.editingButtonIdx].type = this.editingInfo.type 
-      this.info.customButton[this.editingButtonIdx].name = this.editingInfo.name 
-      this.info.customButton[this.editingButtonIdx].value = this.editingInfo.value 
+      this.info.customButton[this.editingButtonIdx].type = this.editingInfo.type
+      this.info.customButton[this.editingButtonIdx].name = this.editingInfo.name
+      this.info.customButton[this.editingButtonIdx].value = this.editingInfo.value
       this.$msg.success('操作成功')
       this.isEditing = false
     },
@@ -272,10 +268,12 @@ export default {
   padding: 24px 30px;
   background: #252526;
   height: 546px;
+
   .title {
     font-size: 18px;
     color: #FFFFFF;
   }
+
   .tool-tip-for-editor {
     margin-left: 4px;
     font-size: 12px;
@@ -283,11 +281,13 @@ export default {
     position: relative;
     top: -2px;
   }
-  > .button-setting-item {
+
+  >.button-setting-item {
     margin-top: 16px;
     position: relative;
     min-height: 50px;
-    > .title-bar {
+
+    >.title-bar {
       position: absolute;
       width: 100%;
       height: 50px;
@@ -299,77 +299,95 @@ export default {
       align-items: center;
       padding: 0 16px;
       cursor: pointer;
+
       &.bright {
         color: #fff;
       }
+
       &.dark {
         color: #808080;
       }
-      > .left {
+
+      >.left {
         display: flex;
         align-items: center;
-        > .icon-expand {
+
+        >.icon-expand {
           font-size: 10px;
           color: rgba(255, 255, 255, 0.6);
           transform: rotate(-90deg);
           cursor: pointer;
         }
-        > .button-icon {
+
+        >.button-icon {
           width: 18px;
           height: 18px;
           margin-left: 6px;
         }
-        > .button-name {
+
+        >.button-name {
           font-size: 16px;
           margin-left: 6px;
         }
       }
-      > .right {
+
+      >.right {
         display: flex;
         align-items: center;
+
         i.btn-edit {
           margin-left: 16px;
           cursor: pointer;
+
           &:hover {
             color: #0076F6;
           }
         }
-        > .btn-show {
+
+        >.btn-show {
           margin-left: 16px;
           cursor: pointer;
+
           &:hover {
             color: #0076F6;
           }
         }
-        > .btn-hide {
+
+        >.btn-hide {
           margin-left: 16px;
           cursor: pointer;
+
           &:hover {
             color: #0076F6;
           }
         }
       }
     }
-    > .edit-content {
+
+    >.edit-content {
       border-radius: 2px;
       border: 1px solid #404040;
       padding-top: 58px;
       padding-bottom: 26px;
       display: none;
       pointer-events: none;
-      > .edit-content-item {
+
+      >.edit-content-item {
         margin-top: 16px;
         display: flex;
         align-items: center;
-        > .item-name {
+
+        >.item-name {
           margin-left: 16px;
           font-size: 14px;
           color: rgba(255, 255, 255, 0.5)
         }
-        > .selector {
+
+        >.selector {
           margin-left: 16px;
         }
-        > .name-input {
+
+        >.name-input {
           height: 36px;
           background: transparent;
           border-radius: 2px;
@@ -379,11 +397,13 @@ export default {
           padding: 0 16px;
           letter-spacing: 1px;
           width: 470px;
+
           &:focus {
             border-color: #0076F6;
           }
         }
-        > .value-input {
+
+        >.value-input {
           margin-left: 16px;
           height: 36px;
           background: transparent;
@@ -394,6 +414,7 @@ export default {
           padding: 0 16px;
           letter-spacing: 1px;
           width: 610px;
+
           &:focus {
             border-color: #0076F6;
           }
@@ -401,36 +422,43 @@ export default {
       }
     }
   }
-  > .button-setting-item.expand {
-    > .title-bar {
-      > .left {
-        > .icon-expand {
+
+  >.button-setting-item.expand {
+    >.title-bar {
+      >.left {
+        >.icon-expand {
           transform: rotate(0deg);
         }
       }
     }
-    > .edit-content {
+
+    >.edit-content {
       display: block;
     }
   }
 
   .edit-window {
     width: 574px;
-    > .ui-message-main {
+
+    >.ui-message-main {
       margin-bottom: 40px;
-      > .edit-content-item {
+
+      >.edit-content-item {
         margin-top: 16px;
         display: flex;
         align-items: center;
-        > .item-name {
+
+        >.item-name {
           flex: 0 0 auto;
           font-size: 14px;
           color: rgba(255, 255, 255, 0.5)
         }
-        > .selector {
+
+        >.selector {
           margin-left: 16px;
         }
-        > .name-input {
+
+        >.name-input {
           height: 36px;
           background: #252526;
           border-radius: 2px;
@@ -440,11 +468,13 @@ export default {
           padding: 0 16px;
           letter-spacing: 1px;
           width: 470px;
+
           &:focus {
             border-color: #0076F6;
           }
         }
-        > .value-input {
+
+        >.value-input {
           margin-left: 16px;
           height: 36px;
           background: #252526;
@@ -455,6 +485,7 @@ export default {
           padding: 0 16px;
           letter-spacing: 1px;
           width: 610px;
+
           &:focus {
             border-color: #0076F6;
           }

+ 4 - 6
packages/qjkankan-editor/src/views/base/customLogoSettings.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="custom-logo-settings">
-    <span class="title">自定义LOGO</span>
+    <span class="title">{{$i18n.t(`edit_settings.custom_logo`)}}</span>
     <br>
     <div class="switch-wrapper">
-      <span class="label">显示LOGO</span>
+      <span class="label">{{$i18n.t(`edit_settings.show_logo`)}}</span>
       <Switcher :value="info.isLogo" @change="onSwitcherChange"></Switcher>
     </div>
     <div class="bottom" :class="{disabled: !info.isLogo}">
@@ -24,16 +24,14 @@
         >
           选择图片
         </button> -->
-        <div class="remark">
-          300*300px,600kb以内,支持<br>
-          jpg/png格式
+        <div class="remark" v-html="$i18n.t(`edit_settings.logo_size`)">
         </div>
       </div>
     </div>
 
     <div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">
       <MaterialSelectorForEditor
-        title="选择素材"
+        :title="$i18n.t(`gather.select_material`)"
         @cancle="isShowSelectionWindow = false"
         @submit="handleSubmitFromMaterialSelector"
         :selectableType="['image']"

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

@@ -1,12 +1,12 @@
 <template>
   <div class="custom-mask-settings">
-    <span class="title">遮罩设置</span>
-    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="'天空遮罩显示在场景的顶部,地面遮罩显示在场景的底部。'">
+    <span class="title">{{$i18n.t(`edit_settings.mask_setting`)}}</span>
+    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="$i18n.t(`edit_settings.sky_tips`)">
     </i>
     <br>
     <div class="image-selection">
       <div class="title">
-        <span class="label">天空遮罩</span>
+        <span class="label">{{$i18n.t(`edit_settings.sky_mask`)}}</span>
         <Switcher :value="info.customMask.sky.isShow" @change="(data)=>{info.customMask.sky.isShow=data}"></Switcher>
       </div>
       <div class="bottom">
@@ -27,13 +27,13 @@
           >
             选择图片
           </button> -->
-          <div class="ui-remark">建议500*500px,<br/>支持jpg/png格式</div>
+          <div class="ui-remark" v-html="$i18n.t(`edit_settings.mask_size`)"></div>
         </div>
       </div>
     </div>
     <div class="image-selection">
       <div class="title">
-        <span class="label">地面遮罩</span>
+        <span class="label">{{$i18n.t(`edit_settings.bottom_mask`)}}</span>
         <Switcher :value="info.customMask.earth.isShow"  @change="(data)=>{info.customMask.earth.isShow=data}"></Switcher>
       </div>
       <div class="bottom">
@@ -54,14 +54,14 @@
           >
             选择图片
           </button> -->
-          <div class="ui-remark">建议500*500px,<br/>支持jpg/png格式</div>
+          <div class="ui-remark" v-html="$i18n.t(`edit_settings.mask_size`)"></div>
         </div>
       </div>
     </div>
 
     <div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">
       <MaterialSelectorForEditor
-        title="选择素材"
+        :title="$i18n.t(`gather.select_material`)"
         @cancle="isShowSelectionWindow = false"
         @submit="handleSubmitFromMaterialSelector"
         :selectableType="['image']"

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

@@ -1,13 +1,13 @@
 <template>
   <div class="opening-animation-settings">
-    <span class="title">设置开场动画</span>
+    <span class="title">{{$i18n.t(`edit_settings.opening_setting`)}}</span>
     <br>
     <div class="btns-and-video">
       <div class="btn-wrapper">
         <button v-for="item of openingTypeList" :key="item" class="opening-selection-btn"
           :class="{ 'active-opening-type': info.openingAnimationType === item }"
           @click="info.openingAnimationType = item">
-          {{ item }}
+          {{$i18n.t(`zh_key.${item}`)}}
         </button>
       </div>
       <div class="video-wrapper">

+ 11 - 11
packages/qjkankan-editor/src/views/base/openingTipSettings.vue

@@ -1,11 +1,11 @@
 <template>
   <div class="opening-tip-settings">
-    <span class="title">提示设置</span>
-    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="'开场提示仅适用于全景图。若初始场景为三维模\n型,以下开场提示不适用。'">
+    <span class="title">{{$i18n.t(`edit_settings.opening_tips_setting`)}}</span>
+    <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="$i18n.t(`edit_settings.opening_tips`)">
     </i>
     <br>
     <div class="image-selection">
-      <div class="title">PC端</div>
+      <div class="title">{{$i18n.t(`edit_settings.pc`)}}</div>
       <div class="bottom">
         <SelectedImage
           :imgSrc="info.pcIcon"
@@ -13,13 +13,13 @@
           @cancel="onCancelPcTip"
         ></SelectedImage>
         <div class="bottom-right">
-          <button class="ui-button submit" @click="isShowSelectionWindow = true, selectingFor = 'pc'">选择图片</button>
-          <div class="ui-remark">建议300*300px,600kb以内,<br/>支持jpg/png格式</div>
+          <button class="ui-button submit" @click="isShowSelectionWindow = true, selectingFor = 'pc'">{{$i18n.t(`edit_settings.select_image`)}}</button>
+          <div class="ui-remark" v-html="$i18n.t(`edit_settings.opening_size`)"></div>
         </div>
       </div>
     </div>
     <div class="image-selection">
-      <div class="title">移动端</div>
+      <div class="title">{{$i18n.t(`edit_settings.mobile`)}}</div>
       <div class="bottom">
         <SelectedImage
           :imgSrc="info.appIcon"
@@ -27,15 +27,15 @@
           @cancel="onCancelAppTip"
         ></SelectedImage>
         <div class="bottom-right">
-          <button class="ui-button submit" @click="isShowSelectionWindow = true, selectingFor = 'mobile'">选择图片</button>
-          <div class="ui-remark">建议300*300px,600kb以内,<br/>支持jpg/png格式</div>
+          <button class="ui-button submit" @click="isShowSelectionWindow = true, selectingFor = 'mobile'">{{$i18n.t(`edit_settings.select_image`)}}</button>
+          <div class="ui-remark" v-html="$i18n.t(`edit_settings.opening_size`)"></div>
         </div>
       </div>
     </div>
 
-    <div class="title">显示设置</div>
+    <div class="title">{{$i18n.t(`edit_settings.show_setting`)}}</div>
     <div class="switch-wrapper">
-        <span class="label">仅首次打开链接时,提示</span>
+        <span class="label">{{$i18n.t(`edit_settings.first_notice`)}}</span>
         <switcher :value="info.isRemind" @change="onSwitcherChange"></switcher>
     </div>
     <div class="range-wrapper">
@@ -44,7 +44,7 @@
 
     <div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">
       <MaterialSelectorForEditor
-        title="选择素材"
+        :title="$i18n.t(`gather.select_material`)"
         :isMultiSelection="false"
         @cancle="isShowSelectionWindow = false"
         @submit="handleSubmitFromMaterialSelector"

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

@@ -1,11 +1,11 @@
 <template>
   <div class="password-settings">
-    <span class="title">设置访问密码</span>
+    <span class="title">{{$i18n.t(`edit_settings.password_setting`)}}</span>
     <br>
     <div class="input-wrapper">
       <input
         :type="canSee ? 'text' : 'password'"
-        placeholder="请输入访问密码,限20位"
+        :placeholder="$i18n.t(`edit_settings.password_placeholder`)"
         :maxlength="20"
         v-model="info.password"
         autocomplete="new-password"

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

@@ -15,5 +15,5 @@ VUE_APP_REGION_URL=
 
 
 # 接口请求地址
-VUE_APP_APIS_URL=https://test.4dkankan.com/
+VUE_APP_APIS_URL=https://www.4dkankan.com/
 

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

@@ -17,5 +17,5 @@ VUE_APP_STATIC_DIR=viewer
 VUE_APP_REGION_URL=
 
 # 接口请求地址
-VUE_APP_APIS_URL=https://test.4dkankan.com/
+VUE_APP_APIS_URL=https://www.4dkankan.com/
 

+ 3 - 2
packages/qjkankan-kankan-view/public/smg.html

@@ -5,8 +5,9 @@
         <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="//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" />
 

+ 6 - 5
packages/qjkankan-kankan-view/src/components/shared/Loading.vue

@@ -1,7 +1,6 @@
 <template>
     <transition appear name="custom-classes-transition" leave-active-class="animated fadeOut faster">
         <div v-if="show" class="scene-loading" :class="{ small: small, thumb: props.thumb, default: thumbStyle }" @touchmove.prevent :style="thumb && { backgroundImage: `url(${thumb})` }">
-
             <div class="content">
                 <div :style="`transform:translateZ(0) scale(${small});`">
                     <div v-for="item in 3" :key="item" :class="`brick brick-${item} ${enter ? 'enter' : ''}`">
@@ -18,12 +17,12 @@
                     <div>
                         <div v-if="loadingLogoFile" class="logo-main" :style="{ 'background-image': `url(${loadingLogoFile})` }"></div>
                         <div v-else>
-                            <i class="iconfont icon-hengbiaoCN"></i>
+                            <i class="iconfont" :class="getLocale() == 'zh' ? 'icon-hengbiaoCN' : 'icon-hengbiaoEN'"></i>
                         </div>
                     </div>
                 </div>
-                <div class="copy-right" v-if="!loadingLogoFile">
-                    <span>四维时代提供技术支持</span>
+                <div class="copy-right" v-if="!loadingLogoFile && logoStatus">
+                    <span>{{ $t('common.support') }}</span>
                 </div>
             </div>
         </div>
@@ -33,6 +32,7 @@
 import { ref, watch, computed, onMounted, defineProps } from 'vue'
 import { useStore } from 'vuex'
 import { useApp } from '@/app'
+import { useI18n, getLocale } from '@/i18n'
 const props = defineProps({
     small: {
         type: Boolean,
@@ -51,7 +51,7 @@ const thumbStyle = ref(null)
 const show = ref(true)
 const metadata = computed(() => store.getters['scene/metadata'])
 const loadingLogoFile = computed(() => store.getters['scene/loadingLogoFile'])
-
+const logoStatus = ref(false)
 onMounted(() => {
     enter.value = true
 })
@@ -62,6 +62,7 @@ if (props.thumb) {
             show.value = false
         })
         app.store.on('metadata', metadata => {
+            logoStatus.value = true
             if (metadata.entry) {
                 thumb.value = app.resource.getUserResourceURL('thumb-2k.jpg')
             } else {

+ 3 - 4
packages/qjkankan-kankan-view/src/pages/SMG.vue

@@ -14,7 +14,7 @@
 
         <p class="change" v-if="controls.showDollhouse" @click="changeMode('dollhouse')">
           <ui-icon type="show_3d_normal"></ui-icon>
-          3D模型
+          {{$t('mode.dollhouseModel')}}
         </p>
       </teleport>
       <template v-if="refMiniMap">
@@ -24,13 +24,12 @@
             <span :class="{ active: mode === 'floorplan' }" ref="floorplan_ref"
               @click="changeMode('floorplan', $event)">
               <ui-icon :type="mode == 'floorplan' ? 'show_plane_selected' : 'show_plane_normal'"></ui-icon>
-              二维
+              {{$t('mode.floorplan')}}
             </span>
             <span :class="{ active: mode === 'dollhouse' }" ref="dollhouse_ref"
               @click="changeMode('dollhouse', $event)">
               <ui-icon :type="mode == 'dollhouse' ? 'show_3d_selected' : 'show_3d_normal'"></ui-icon>
-
-              三维
+              {{$t('mode.dollhouse')}}
             </span>
             <div class="background" ref="background"></div>
           </div>

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

@@ -77,7 +77,7 @@ onMounted(() => {
                 window.location.replace(`/5034.html?m=` + browser.getURLParam('m'))
                 break
             case 5005:
-                window.location.replace(`/#/404`)
+                // window.location.replace(`/#/404`)
                 break
         }
     })

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

@@ -8,7 +8,7 @@
     <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_mhyxhjxv908.css"/>
+    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontV1.2.0/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper-bundle.min.css" />
     <link rel="icon" href="./favicon.png" />
     <title>四维全景</title>

+ 1 - 1
packages/qjkankan-view/public/showMobile.html

@@ -9,7 +9,7 @@
     <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_mhyxhjxv908.css"/>
+    <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/iconfontV1.2.0/iconfont.css"/>
     <link rel="stylesheet" href="<%= VUE_APP_STATIC_DIR %>/lib/swiper/swiper-bundle.min.css" />
     <link rel="icon" href="./favicon.png" />
     <title>四维全景</title>

+ 539 - 0
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/demo.css

@@ -0,0 +1,539 @@
+/* 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;
+}

File diff suppressed because it is too large
+ 3270 - 0
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/demo_index.html


+ 551 - 0
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.css

@@ -0,0 +1,551 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 2947721 */
+  src: url('iconfont.woff2?t=1668570386938') format('woff2'),
+       url('iconfont.woff?t=1668570386938') format('woff'),
+       url('iconfont.ttf?t=1668570386938') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-logo_black:before {
+  content: "\e719";
+}
+
+.icon-logo_white:before {
+  content: "\e71a";
+}
+
+.icon-more:before {
+  content: "\e717";
+}
+
+.icon-collect:before {
+  content: "\e718";
+}
+
+.icon-checkbox-n:before {
+  content: "\e715";
+}
+
+.icon-checkbox-s:before {
+  content: "\e716";
+}
+
+.icon-player_volume01:before {
+  content: "\e710";
+}
+
+.icon-player_volume02:before {
+  content: "\e712";
+}
+
+.icon-player_volume03:before {
+  content: "\e713";
+}
+
+.icon-player_close:before {
+  content: "\e70c";
+}
+
+.icon-material_text:before {
+  content: "\e70d";
+}
+
+.icon-player_playback:before {
+  content: "\e70f";
+}
+
+.icon-player_pause:before {
+  content: "\e711";
+}
+
+.icon-material_reduction:before {
+  content: "\e70e";
+}
+
+.icon-a-help_:before {
+  content: "\e70a";
+}
+
+.icon-eye_on:before {
+  content: "\e6f4";
+}
+
+.icon-eye_off:before {
+  content: "\e6f5";
+}
+
+.icon-show_more_finish:before {
+  content: "\e67a";
+}
+
+.icon-show_more_music:before {
+  content: "\e67c";
+}
+
+.icon-show_more:before {
+  content: "\e67e";
+}
+
+.icon-show_more_vr:before {
+  content: "\e67f";
+}
+
+.icon-top:before {
+  content: "\e6f3";
+}
+
+.icon-editor_play:before {
+  content: "\e6ef";
+}
+
+.icon-editor_3d:before {
+  content: "\e6f0";
+}
+
+.icon-editor_update:before {
+  content: "\e6f1";
+}
+
+.icon-editor_list_delete:before {
+  content: "\e6f2";
+}
+
+.icon-material_panoramic_picture:before {
+  content: "\e6e8";
+}
+
+.icon-material_preview_upload:before {
+  content: "\e6e9";
+}
+
+.icon-toast_yellow:before {
+  content: "\e6ea";
+}
+
+.icon-works_search:before {
+  content: "\e6eb";
+}
+
+.icon-works_share:before {
+  content: "\e6ec";
+}
+
+.icon-works_look:before {
+  content: "\e6ed";
+}
+
+.icon-works_delete:before {
+  content: "\e6ee";
+}
+
+.icon-editor_folder_off:before {
+  content: "\e6c5";
+}
+
+.icon-editor_folder_on:before {
+  content: "\e6c6";
+}
+
+.icon-editor_add:before {
+  content: "\e6c7";
+}
+
+.icon-editor_hot_add:before {
+  content: "\e6c8";
+}
+
+.icon-editor_off:before {
+  content: "\e6c9";
+}
+
+.icon-editor_list_add:before {
+  content: "\e6ca";
+}
+
+.icon-editor_on:before {
+  content: "\e6cb";
+}
+
+.icon-editor_playback:before {
+  content: "\e6cc";
+}
+
+.icon-editor_list_edit:before {
+  content: "\e6cd";
+}
+
+.icon-material_image:before {
+  content: "\e6ce";
+}
+
+.icon-material_music:before {
+  content: "\e6cf";
+}
+
+.icon-editor_panoramic:before {
+  content: "\e6d0";
+}
+
+.icon-editor_list_image:before {
+  content: "\e6d1";
+}
+
+.icon-material_preview_drop_out:before {
+  content: "\e6d2";
+}
+
+.icon-editor_preview:before {
+  content: "\e6d3";
+}
+
+.icon-editor_search:before {
+  content: "\e6d4";
+}
+
+.icon-material_operation_delete:before {
+  content: "\e6d5";
+}
+
+.icon-material_operation_editor:before {
+  content: "\e6d6";
+}
+
+.icon-editor_return:before {
+  content: "\e6d7";
+}
+
+.icon-material_preview_full_screen:before {
+  content: "\e6d8";
+}
+
+.icon-material_preview_enlarge:before {
+  content: "\e6d9";
+}
+
+.icon-editor_save:before {
+  content: "\e6da";
+}
+
+.icon-material_preview_next1:before {
+  content: "\e6db";
+}
+
+.icon-material_preview_next:before {
+  content: "\e6dc";
+}
+
+.icon-material_preview_narrow:before {
+  content: "\e6dd";
+}
+
+.icon-material_preview_previous:before {
+  content: "\e6de";
+}
+
+.icon-material_operation_image:before {
+  content: "\e6df";
+}
+
+.icon-material_video:before {
+  content: "\e6e0";
+}
+
+.icon-material_preview_upload_collect:before {
+  content: "\e6e1";
+}
+
+.icon-pop-ups_shut-down:before {
+  content: "\e6e2";
+}
+
+.icon-toast_green:before {
+  content: "\e6e3";
+}
+
+.icon-toast_red:before {
+  content: "\e6e4";
+}
+
+.icon-works_editor:before {
+  content: "\e6e5";
+}
+
+.icon-pop-ups_crop:before {
+  content: "\e6e6";
+}
+
+.icon-material_prompt:before {
+  content: "\e6e7";
+}
+
+.icon-bs_close:before {
+  content: "\e74c";
+}
+
+.icon-bs_folder:before {
+  content: "\e74d";
+}
+
+.icon-bs_list_menu:before {
+  content: "\e74e";
+}
+
+.icon-bs_list_edit:before {
+  content: "\e74f";
+}
+
+.icon-bs_list_info:before {
+  content: "\e750";
+}
+
+.icon-bs_list_play:before {
+  content: "\e751";
+}
+
+.icon-bs_list_stop:before {
+  content: "\e752";
+}
+
+.icon-bs_plus:before {
+  content: "\e753";
+}
+
+.icon-bs_reduce:before {
+  content: "\e754";
+}
+
+.icon-bs_next:before {
+  content: "\e755";
+}
+
+.icon-bs_nav_panorama:before {
+  content: "\e756";
+}
+
+.icon-bs_upload:before {
+  content: "\e757";
+}
+
+.icon-bs_search:before {
+  content: "\e758";
+}
+
+.icon-bs_nav_photo:before {
+  content: "\e759";
+}
+
+.icon-bs_nav_video:before {
+  content: "\e75a";
+}
+
+.icon-edit_add:before {
+  content: "\e75b";
+}
+
+.icon-bs_nav_sound:before {
+  content: "\e75c";
+}
+
+.icon-edit_input_arrow:before {
+  content: "\e75d";
+}
+
+.icon-edit_close:before {
+  content: "\e75e";
+}
+
+.icon-edit_case_delete:before {
+  content: "\e75f";
+}
+
+.icon-bs_share:before {
+  content: "\e760";
+}
+
+.icon-edit_input_unvisible:before {
+  content: "\e761";
+}
+
+.icon-edit_input_visible:before {
+  content: "\e762";
+}
+
+.icon-edit_list_more:before {
+  content: "\e763";
+}
+
+.icon-edit_list_default:before {
+  content: "\e764";
+}
+
+.icon-edit_nav_hotpoint:before {
+  content: "\e765";
+}
+
+.icon-edit_nav_base:before {
+  content: "\e766";
+}
+
+.icon-edit_next:before {
+  content: "\e767";
+}
+
+.icon-edit_jumpsview:before {
+  content: "\e768";
+}
+
+.icon-edit_pre:before {
+  content: "\e769";
+}
+
+.icon-edit_linkview:before {
+  content: "\e76a";
+}
+
+.icon-edit_select:before {
+  content: "\e76b";
+}
+
+.icon-edit_nav_scenenav:before {
+  content: "\e76c";
+}
+
+.icon-edit_soundview:before {
+  content: "\e76d";
+}
+
+.icon-edit_photoview:before {
+  content: "\e76e";
+}
+
+.icon-edit_search:before {
+  content: "\e76f";
+}
+
+.icon-edit_textview:before {
+  content: "\e770";
+}
+
+.icon-edit_nav_screen:before {
+  content: "\e771";
+}
+
+.icon-edit_type_3d:before {
+  content: "\e772";
+}
+
+.icon-edit_top_save:before {
+  content: "\e773";
+}
+
+.icon-edit_type_panorama:before {
+  content: "\e774";
+}
+
+.icon-edit_top_view:before {
+  content: "\e775";
+}
+
+.icon-edit_videoview:before {
+  content: "\e776";
+}
+
+.icon-list_views:before {
+  content: "\e777";
+}
+
+.icon-nav_scene_down:before {
+  content: "\e778";
+}
+
+.icon-tool_about:before {
+  content: "\e779";
+}
+
+.icon-nav_scene_up:before {
+  content: "\e77a";
+}
+
+.icon-tool_vr:before {
+  content: "\e77b";
+}
+
+.icon-tool_window:before {
+  content: "\e77c";
+}
+
+.icon-tool_full:before {
+  content: "\e77d";
+}
+
+.icon-img_logo:before {
+  content: "\e77e";
+}
+
+.icon-bs_list_cover:before {
+  content: "\e77f";
+}
+
+.icon-list_delete:before {
+  content: "\e780";
+}
+
+.icon-bs_stop:before {
+  content: "\e781";
+}
+
+.icon-bs_play:before {
+  content: "\e782";
+}
+
+.icon-bs_list_circle:before {
+  content: "\e783";
+}
+
+.icon-show_playback:before {
+  content: "\e681";
+}
+
+.icon-show_suspension:before {
+  content: "\e683";
+}
+
+.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";
+}
+
+.icon-show_function_collect:before {
+  content: "\e687";
+}
+
+.icon-show_drop-down:before {
+  content: "\e673";
+}
+

File diff suppressed because it is too large
+ 1 - 0
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.js


+ 947 - 0
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.json

@@ -0,0 +1,947 @@
+{
+  "id": "2947721",
+  "name": "全景看看1.1.0",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "全景看看1.1.0",
+  "glyphs": [
+    {
+      "icon_id": "32366619",
+      "name": "logo_black",
+      "font_class": "logo_black",
+      "unicode": "e719",
+      "unicode_decimal": 59161
+    },
+    {
+      "icon_id": "32366620",
+      "name": "logo_white",
+      "font_class": "logo_white",
+      "unicode": "e71a",
+      "unicode_decimal": 59162
+    },
+    {
+      "icon_id": "32337115",
+      "name": "more",
+      "font_class": "more",
+      "unicode": "e717",
+      "unicode_decimal": 59159
+    },
+    {
+      "icon_id": "32337116",
+      "name": "collect",
+      "font_class": "collect",
+      "unicode": "e718",
+      "unicode_decimal": 59160
+    },
+    {
+      "icon_id": "32290078",
+      "name": "checkbox-n",
+      "font_class": "checkbox-n",
+      "unicode": "e715",
+      "unicode_decimal": 59157
+    },
+    {
+      "icon_id": "32290079",
+      "name": "checkbox-s",
+      "font_class": "checkbox-s",
+      "unicode": "e716",
+      "unicode_decimal": 59158
+    },
+    {
+      "icon_id": "32254769",
+      "name": "player_volume01",
+      "font_class": "player_volume01",
+      "unicode": "e710",
+      "unicode_decimal": 59152
+    },
+    {
+      "icon_id": "32254770",
+      "name": "player_volume02",
+      "font_class": "player_volume02",
+      "unicode": "e712",
+      "unicode_decimal": 59154
+    },
+    {
+      "icon_id": "32254771",
+      "name": "player_volume03",
+      "font_class": "player_volume03",
+      "unicode": "e713",
+      "unicode_decimal": 59155
+    },
+    {
+      "icon_id": "32251669",
+      "name": "player_close",
+      "font_class": "player_close",
+      "unicode": "e70c",
+      "unicode_decimal": 59148
+    },
+    {
+      "icon_id": "32251670",
+      "name": "material_text",
+      "font_class": "material_text",
+      "unicode": "e70d",
+      "unicode_decimal": 59149
+    },
+    {
+      "icon_id": "32251671",
+      "name": "player_playback",
+      "font_class": "player_playback",
+      "unicode": "e70f",
+      "unicode_decimal": 59151
+    },
+    {
+      "icon_id": "32251673",
+      "name": "player_pause",
+      "font_class": "player_pause",
+      "unicode": "e711",
+      "unicode_decimal": 59153
+    },
+    {
+      "icon_id": "32250353",
+      "name": "material_reduction",
+      "font_class": "material_reduction",
+      "unicode": "e70e",
+      "unicode_decimal": 59150
+    },
+    {
+      "icon_id": "32250052",
+      "name": "help_?",
+      "font_class": "a-help_",
+      "unicode": "e70a",
+      "unicode_decimal": 59146
+    },
+    {
+      "icon_id": "30581503",
+      "name": "eye_on",
+      "font_class": "eye_on",
+      "unicode": "e6f4",
+      "unicode_decimal": 59124
+    },
+    {
+      "icon_id": "30581504",
+      "name": "eye_off",
+      "font_class": "eye_off",
+      "unicode": "e6f5",
+      "unicode_decimal": 59125
+    },
+    {
+      "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": "19543931",
+      "name": "show_more",
+      "font_class": "show_more",
+      "unicode": "e67e",
+      "unicode_decimal": 59006
+    },
+    {
+      "icon_id": "19543932",
+      "name": "show_more_vr",
+      "font_class": "show_more_vr",
+      "unicode": "e67f",
+      "unicode_decimal": 59007
+    },
+    {
+      "icon_id": "27373469",
+      "name": "top",
+      "font_class": "top",
+      "unicode": "e6f3",
+      "unicode_decimal": 59123
+    },
+    {
+      "icon_id": "25824857",
+      "name": "editor_play",
+      "font_class": "editor_play",
+      "unicode": "e6ef",
+      "unicode_decimal": 59119
+    },
+    {
+      "icon_id": "25824858",
+      "name": "editor_3d",
+      "font_class": "editor_3d",
+      "unicode": "e6f0",
+      "unicode_decimal": 59120
+    },
+    {
+      "icon_id": "25824859",
+      "name": "editor_update",
+      "font_class": "editor_update",
+      "unicode": "e6f1",
+      "unicode_decimal": 59121
+    },
+    {
+      "icon_id": "25824860",
+      "name": "editor_list_delete",
+      "font_class": "editor_list_delete",
+      "unicode": "e6f2",
+      "unicode_decimal": 59122
+    },
+    {
+      "icon_id": "25824816",
+      "name": "material_panoramic_picture",
+      "font_class": "material_panoramic_picture",
+      "unicode": "e6e8",
+      "unicode_decimal": 59112
+    },
+    {
+      "icon_id": "25824817",
+      "name": "material_preview_upload",
+      "font_class": "material_preview_upload",
+      "unicode": "e6e9",
+      "unicode_decimal": 59113
+    },
+    {
+      "icon_id": "25824818",
+      "name": "toast_yellow",
+      "font_class": "toast_yellow",
+      "unicode": "e6ea",
+      "unicode_decimal": 59114
+    },
+    {
+      "icon_id": "25824819",
+      "name": "works_search",
+      "font_class": "works_search",
+      "unicode": "e6eb",
+      "unicode_decimal": 59115
+    },
+    {
+      "icon_id": "25824820",
+      "name": "works_share",
+      "font_class": "works_share",
+      "unicode": "e6ec",
+      "unicode_decimal": 59116
+    },
+    {
+      "icon_id": "25824821",
+      "name": "works_look",
+      "font_class": "works_look",
+      "unicode": "e6ed",
+      "unicode_decimal": 59117
+    },
+    {
+      "icon_id": "25824822",
+      "name": "works_delete",
+      "font_class": "works_delete",
+      "unicode": "e6ee",
+      "unicode_decimal": 59118
+    },
+    {
+      "icon_id": "25824780",
+      "name": "editor_folder_off",
+      "font_class": "editor_folder_off",
+      "unicode": "e6c5",
+      "unicode_decimal": 59077
+    },
+    {
+      "icon_id": "25824781",
+      "name": "editor_folder_on",
+      "font_class": "editor_folder_on",
+      "unicode": "e6c6",
+      "unicode_decimal": 59078
+    },
+    {
+      "icon_id": "25824782",
+      "name": "editor_add",
+      "font_class": "editor_add",
+      "unicode": "e6c7",
+      "unicode_decimal": 59079
+    },
+    {
+      "icon_id": "25824783",
+      "name": "editor_hot_add",
+      "font_class": "editor_hot_add",
+      "unicode": "e6c8",
+      "unicode_decimal": 59080
+    },
+    {
+      "icon_id": "25824784",
+      "name": "editor_off",
+      "font_class": "editor_off",
+      "unicode": "e6c9",
+      "unicode_decimal": 59081
+    },
+    {
+      "icon_id": "25824785",
+      "name": "editor_list_add",
+      "font_class": "editor_list_add",
+      "unicode": "e6ca",
+      "unicode_decimal": 59082
+    },
+    {
+      "icon_id": "25824786",
+      "name": "editor_on",
+      "font_class": "editor_on",
+      "unicode": "e6cb",
+      "unicode_decimal": 59083
+    },
+    {
+      "icon_id": "25824787",
+      "name": "editor_playback",
+      "font_class": "editor_playback",
+      "unicode": "e6cc",
+      "unicode_decimal": 59084
+    },
+    {
+      "icon_id": "25824788",
+      "name": "editor_list_edit",
+      "font_class": "editor_list_edit",
+      "unicode": "e6cd",
+      "unicode_decimal": 59085
+    },
+    {
+      "icon_id": "25824789",
+      "name": "material_image",
+      "font_class": "material_image",
+      "unicode": "e6ce",
+      "unicode_decimal": 59086
+    },
+    {
+      "icon_id": "25824790",
+      "name": "material_music",
+      "font_class": "material_music",
+      "unicode": "e6cf",
+      "unicode_decimal": 59087
+    },
+    {
+      "icon_id": "25824791",
+      "name": "editor_panoramic",
+      "font_class": "editor_panoramic",
+      "unicode": "e6d0",
+      "unicode_decimal": 59088
+    },
+    {
+      "icon_id": "25824792",
+      "name": "editor_list_image",
+      "font_class": "editor_list_image",
+      "unicode": "e6d1",
+      "unicode_decimal": 59089
+    },
+    {
+      "icon_id": "25824793",
+      "name": "material_preview_drop_out",
+      "font_class": "material_preview_drop_out",
+      "unicode": "e6d2",
+      "unicode_decimal": 59090
+    },
+    {
+      "icon_id": "25824794",
+      "name": "editor_preview",
+      "font_class": "editor_preview",
+      "unicode": "e6d3",
+      "unicode_decimal": 59091
+    },
+    {
+      "icon_id": "25824795",
+      "name": "editor_search",
+      "font_class": "editor_search",
+      "unicode": "e6d4",
+      "unicode_decimal": 59092
+    },
+    {
+      "icon_id": "25824796",
+      "name": "material_operation_delete",
+      "font_class": "material_operation_delete",
+      "unicode": "e6d5",
+      "unicode_decimal": 59093
+    },
+    {
+      "icon_id": "25824797",
+      "name": "material_operation_editor",
+      "font_class": "material_operation_editor",
+      "unicode": "e6d6",
+      "unicode_decimal": 59094
+    },
+    {
+      "icon_id": "25824798",
+      "name": "editor_return",
+      "font_class": "editor_return",
+      "unicode": "e6d7",
+      "unicode_decimal": 59095
+    },
+    {
+      "icon_id": "25824799",
+      "name": "material_preview_full_screen",
+      "font_class": "material_preview_full_screen",
+      "unicode": "e6d8",
+      "unicode_decimal": 59096
+    },
+    {
+      "icon_id": "25824800",
+      "name": "material_preview_enlarge",
+      "font_class": "material_preview_enlarge",
+      "unicode": "e6d9",
+      "unicode_decimal": 59097
+    },
+    {
+      "icon_id": "25824801",
+      "name": "editor_save",
+      "font_class": "editor_save",
+      "unicode": "e6da",
+      "unicode_decimal": 59098
+    },
+    {
+      "icon_id": "25824803",
+      "name": "material_preview_next1",
+      "font_class": "material_preview_next1",
+      "unicode": "e6db",
+      "unicode_decimal": 59099
+    },
+    {
+      "icon_id": "25824804",
+      "name": "material_preview_next",
+      "font_class": "material_preview_next",
+      "unicode": "e6dc",
+      "unicode_decimal": 59100
+    },
+    {
+      "icon_id": "25824805",
+      "name": "material_preview_narrow",
+      "font_class": "material_preview_narrow",
+      "unicode": "e6dd",
+      "unicode_decimal": 59101
+    },
+    {
+      "icon_id": "25824806",
+      "name": "material_preview_previous",
+      "font_class": "material_preview_previous",
+      "unicode": "e6de",
+      "unicode_decimal": 59102
+    },
+    {
+      "icon_id": "25824807",
+      "name": "material_operation_image",
+      "font_class": "material_operation_image",
+      "unicode": "e6df",
+      "unicode_decimal": 59103
+    },
+    {
+      "icon_id": "25824808",
+      "name": "material_video",
+      "font_class": "material_video",
+      "unicode": "e6e0",
+      "unicode_decimal": 59104
+    },
+    {
+      "icon_id": "25824809",
+      "name": "material_preview_upload_collect",
+      "font_class": "material_preview_upload_collect",
+      "unicode": "e6e1",
+      "unicode_decimal": 59105
+    },
+    {
+      "icon_id": "25824810",
+      "name": "pop-ups_shut-down",
+      "font_class": "pop-ups_shut-down",
+      "unicode": "e6e2",
+      "unicode_decimal": 59106
+    },
+    {
+      "icon_id": "25824811",
+      "name": "toast_green",
+      "font_class": "toast_green",
+      "unicode": "e6e3",
+      "unicode_decimal": 59107
+    },
+    {
+      "icon_id": "25824812",
+      "name": "toast_red",
+      "font_class": "toast_red",
+      "unicode": "e6e4",
+      "unicode_decimal": 59108
+    },
+    {
+      "icon_id": "25824813",
+      "name": "works_editor",
+      "font_class": "works_editor",
+      "unicode": "e6e5",
+      "unicode_decimal": 59109
+    },
+    {
+      "icon_id": "25824814",
+      "name": "pop-ups_crop",
+      "font_class": "pop-ups_crop",
+      "unicode": "e6e6",
+      "unicode_decimal": 59110
+    },
+    {
+      "icon_id": "25824815",
+      "name": "material_prompt",
+      "font_class": "material_prompt",
+      "unicode": "e6e7",
+      "unicode_decimal": 59111
+    },
+    {
+      "icon_id": "20281176",
+      "name": "bs_close",
+      "font_class": "bs_close",
+      "unicode": "e74c",
+      "unicode_decimal": 59212
+    },
+    {
+      "icon_id": "20281177",
+      "name": "bs_folder",
+      "font_class": "bs_folder",
+      "unicode": "e74d",
+      "unicode_decimal": 59213
+    },
+    {
+      "icon_id": "20281178",
+      "name": "bs_list_menu",
+      "font_class": "bs_list_menu",
+      "unicode": "e74e",
+      "unicode_decimal": 59214
+    },
+    {
+      "icon_id": "20281179",
+      "name": "bs_list_edit",
+      "font_class": "bs_list_edit",
+      "unicode": "e74f",
+      "unicode_decimal": 59215
+    },
+    {
+      "icon_id": "20281180",
+      "name": "bs_list_info",
+      "font_class": "bs_list_info",
+      "unicode": "e750",
+      "unicode_decimal": 59216
+    },
+    {
+      "icon_id": "20281181",
+      "name": "bs_list_play",
+      "font_class": "bs_list_play",
+      "unicode": "e751",
+      "unicode_decimal": 59217
+    },
+    {
+      "icon_id": "20281182",
+      "name": "bs_list_stop",
+      "font_class": "bs_list_stop",
+      "unicode": "e752",
+      "unicode_decimal": 59218
+    },
+    {
+      "icon_id": "20281183",
+      "name": "bs_plus",
+      "font_class": "bs_plus",
+      "unicode": "e753",
+      "unicode_decimal": 59219
+    },
+    {
+      "icon_id": "20281184",
+      "name": "bs_reduce",
+      "font_class": "bs_reduce",
+      "unicode": "e754",
+      "unicode_decimal": 59220
+    },
+    {
+      "icon_id": "20281185",
+      "name": "bs_next",
+      "font_class": "bs_next",
+      "unicode": "e755",
+      "unicode_decimal": 59221
+    },
+    {
+      "icon_id": "20281186",
+      "name": "bs_nav_panorama",
+      "font_class": "bs_nav_panorama",
+      "unicode": "e756",
+      "unicode_decimal": 59222
+    },
+    {
+      "icon_id": "20281187",
+      "name": "bs_upload",
+      "font_class": "bs_upload",
+      "unicode": "e757",
+      "unicode_decimal": 59223
+    },
+    {
+      "icon_id": "20281188",
+      "name": "bs_search",
+      "font_class": "bs_search",
+      "unicode": "e758",
+      "unicode_decimal": 59224
+    },
+    {
+      "icon_id": "20281189",
+      "name": "bs_nav_photo",
+      "font_class": "bs_nav_photo",
+      "unicode": "e759",
+      "unicode_decimal": 59225
+    },
+    {
+      "icon_id": "20281190",
+      "name": "bs_nav_video",
+      "font_class": "bs_nav_video",
+      "unicode": "e75a",
+      "unicode_decimal": 59226
+    },
+    {
+      "icon_id": "20281191",
+      "name": "edit_add",
+      "font_class": "edit_add",
+      "unicode": "e75b",
+      "unicode_decimal": 59227
+    },
+    {
+      "icon_id": "20281192",
+      "name": "bs_nav_sound",
+      "font_class": "bs_nav_sound",
+      "unicode": "e75c",
+      "unicode_decimal": 59228
+    },
+    {
+      "icon_id": "20281193",
+      "name": "edit_input_arrow",
+      "font_class": "edit_input_arrow",
+      "unicode": "e75d",
+      "unicode_decimal": 59229
+    },
+    {
+      "icon_id": "20281194",
+      "name": "edit_close",
+      "font_class": "edit_close",
+      "unicode": "e75e",
+      "unicode_decimal": 59230
+    },
+    {
+      "icon_id": "20281195",
+      "name": "edit_case_delete",
+      "font_class": "edit_case_delete",
+      "unicode": "e75f",
+      "unicode_decimal": 59231
+    },
+    {
+      "icon_id": "20281196",
+      "name": "bs_share",
+      "font_class": "bs_share",
+      "unicode": "e760",
+      "unicode_decimal": 59232
+    },
+    {
+      "icon_id": "20281197",
+      "name": "edit_input_unvisible",
+      "font_class": "edit_input_unvisible",
+      "unicode": "e761",
+      "unicode_decimal": 59233
+    },
+    {
+      "icon_id": "20281198",
+      "name": "edit_input_visible",
+      "font_class": "edit_input_visible",
+      "unicode": "e762",
+      "unicode_decimal": 59234
+    },
+    {
+      "icon_id": "20281199",
+      "name": "edit_list_more",
+      "font_class": "edit_list_more",
+      "unicode": "e763",
+      "unicode_decimal": 59235
+    },
+    {
+      "icon_id": "20281200",
+      "name": "edit_list_default",
+      "font_class": "edit_list_default",
+      "unicode": "e764",
+      "unicode_decimal": 59236
+    },
+    {
+      "icon_id": "20281201",
+      "name": "edit_nav_hotpoint",
+      "font_class": "edit_nav_hotpoint",
+      "unicode": "e765",
+      "unicode_decimal": 59237
+    },
+    {
+      "icon_id": "20281202",
+      "name": "edit_nav_base",
+      "font_class": "edit_nav_base",
+      "unicode": "e766",
+      "unicode_decimal": 59238
+    },
+    {
+      "icon_id": "20281203",
+      "name": "edit_next",
+      "font_class": "edit_next",
+      "unicode": "e767",
+      "unicode_decimal": 59239
+    },
+    {
+      "icon_id": "20281204",
+      "name": "edit_jumpsview",
+      "font_class": "edit_jumpsview",
+      "unicode": "e768",
+      "unicode_decimal": 59240
+    },
+    {
+      "icon_id": "20281205",
+      "name": "edit_pre",
+      "font_class": "edit_pre",
+      "unicode": "e769",
+      "unicode_decimal": 59241
+    },
+    {
+      "icon_id": "20281206",
+      "name": "edit_linkview",
+      "font_class": "edit_linkview",
+      "unicode": "e76a",
+      "unicode_decimal": 59242
+    },
+    {
+      "icon_id": "20281207",
+      "name": "edit_select",
+      "font_class": "edit_select",
+      "unicode": "e76b",
+      "unicode_decimal": 59243
+    },
+    {
+      "icon_id": "20281208",
+      "name": "edit_nav_scenenav",
+      "font_class": "edit_nav_scenenav",
+      "unicode": "e76c",
+      "unicode_decimal": 59244
+    },
+    {
+      "icon_id": "20281209",
+      "name": "edit_soundview",
+      "font_class": "edit_soundview",
+      "unicode": "e76d",
+      "unicode_decimal": 59245
+    },
+    {
+      "icon_id": "20281210",
+      "name": "edit_photoview",
+      "font_class": "edit_photoview",
+      "unicode": "e76e",
+      "unicode_decimal": 59246
+    },
+    {
+      "icon_id": "20281211",
+      "name": "edit_search",
+      "font_class": "edit_search",
+      "unicode": "e76f",
+      "unicode_decimal": 59247
+    },
+    {
+      "icon_id": "20281212",
+      "name": "edit_textview",
+      "font_class": "edit_textview",
+      "unicode": "e770",
+      "unicode_decimal": 59248
+    },
+    {
+      "icon_id": "20281213",
+      "name": "edit_nav_screen",
+      "font_class": "edit_nav_screen",
+      "unicode": "e771",
+      "unicode_decimal": 59249
+    },
+    {
+      "icon_id": "20281214",
+      "name": "edit_type_3d",
+      "font_class": "edit_type_3d",
+      "unicode": "e772",
+      "unicode_decimal": 59250
+    },
+    {
+      "icon_id": "20281215",
+      "name": "edit_top_save",
+      "font_class": "edit_top_save",
+      "unicode": "e773",
+      "unicode_decimal": 59251
+    },
+    {
+      "icon_id": "20281216",
+      "name": "edit_type_panorama",
+      "font_class": "edit_type_panorama",
+      "unicode": "e774",
+      "unicode_decimal": 59252
+    },
+    {
+      "icon_id": "20281217",
+      "name": "edit_top_view",
+      "font_class": "edit_top_view",
+      "unicode": "e775",
+      "unicode_decimal": 59253
+    },
+    {
+      "icon_id": "20281218",
+      "name": "edit_videoview",
+      "font_class": "edit_videoview",
+      "unicode": "e776",
+      "unicode_decimal": 59254
+    },
+    {
+      "icon_id": "20335636",
+      "name": "list_views",
+      "font_class": "list_views",
+      "unicode": "e777",
+      "unicode_decimal": 59255
+    },
+    {
+      "icon_id": "20434823",
+      "name": "nav_scene_down",
+      "font_class": "nav_scene_down",
+      "unicode": "e778",
+      "unicode_decimal": 59256
+    },
+    {
+      "icon_id": "20434824",
+      "name": "tool_about",
+      "font_class": "tool_about",
+      "unicode": "e779",
+      "unicode_decimal": 59257
+    },
+    {
+      "icon_id": "20434825",
+      "name": "nav_scene_up",
+      "font_class": "nav_scene_up",
+      "unicode": "e77a",
+      "unicode_decimal": 59258
+    },
+    {
+      "icon_id": "20434826",
+      "name": "tool_vr",
+      "font_class": "tool_vr",
+      "unicode": "e77b",
+      "unicode_decimal": 59259
+    },
+    {
+      "icon_id": "20434827",
+      "name": "tool_window",
+      "font_class": "tool_window",
+      "unicode": "e77c",
+      "unicode_decimal": 59260
+    },
+    {
+      "icon_id": "20434829",
+      "name": "tool_full",
+      "font_class": "tool_full",
+      "unicode": "e77d",
+      "unicode_decimal": 59261
+    },
+    {
+      "icon_id": "20434835",
+      "name": "img_logo",
+      "font_class": "img_logo",
+      "unicode": "e77e",
+      "unicode_decimal": 59262
+    },
+    {
+      "icon_id": "20468141",
+      "name": "list_cover",
+      "font_class": "bs_list_cover",
+      "unicode": "e77f",
+      "unicode_decimal": 59263
+    },
+    {
+      "icon_id": "20468257",
+      "name": "list_delete",
+      "font_class": "list_delete",
+      "unicode": "e780",
+      "unicode_decimal": 59264
+    },
+    {
+      "icon_id": "20863638",
+      "name": "bs_stop",
+      "font_class": "bs_stop",
+      "unicode": "e781",
+      "unicode_decimal": 59265
+    },
+    {
+      "icon_id": "20863639",
+      "name": "bs_play",
+      "font_class": "bs_play",
+      "unicode": "e782",
+      "unicode_decimal": 59266
+    },
+    {
+      "icon_id": "20863640",
+      "name": "bs_list_circle",
+      "font_class": "bs_list_circle",
+      "unicode": "e783",
+      "unicode_decimal": 59267
+    },
+    {
+      "icon_id": "19543934",
+      "name": "show_playback",
+      "font_class": "show_playback",
+      "unicode": "e681",
+      "unicode_decimal": 59009
+    },
+    {
+      "icon_id": "19543936",
+      "name": "show_suspension",
+      "font_class": "show_suspension",
+      "unicode": "e683",
+      "unicode_decimal": 59011
+    },
+    {
+      "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
+    },
+    {
+      "icon_id": "20066572",
+      "name": "show_function_collect",
+      "font_class": "show_function_collect",
+      "unicode": "e687",
+      "unicode_decimal": 59015
+    },
+    {
+      "icon_id": "19543922",
+      "name": "show_drop-down",
+      "font_class": "show_drop-down",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    }
+  ]
+}

BIN
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.ttf


BIN
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.woff


BIN
packages/qjkankan-view/public/showviewer/lib/iconfontV1.2.0/iconfont.woff2


+ 6 - 6
packages/qjkankan-view/src/components/UIGather/control.vue

@@ -12,23 +12,23 @@
     </li>
 
     <!-- 简介 -->
-    <li @click="onIntroduce"  v-tooltip="'简介'" v-if="metadata.description">
+    <li @click="onIntroduce"  v-tooltip="$t('menu.introduce')" v-if="metadata.description">
       <img :src="require(`@/assets/images/icon/text@2x.png`)" alt="" />
     </li>
 
     <!-- 背景音乐 -->
-    <li @click="onIsBGM" v-tooltip="'音乐'" v-if="(metadata.backgroundMusic && metadata.backgroundMusic.id) || fdkkBGM">
+    <li @click="onIsBGM" v-tooltip="$t('menu.music')" v-if="(metadata.backgroundMusic && metadata.backgroundMusic.id) || fdkkBGM">
       <img :src="require(`@/assets/images/icon/${showMusicPlaying ? 'music@2x.png' : 'music_disabled@2x.png'}`)" alt="" />
     </li>
 
     <!-- 解说音频 -->
-    <li @click="onIsCommentary" v-tooltip="'讲解'" v-if="currentScene.explanation && currentScene.explanation.audioUrl">
+    <li @click="onIsCommentary" v-tooltip="$t('menu.commentary')" v-if="currentScene.explanation && currentScene.explanation.audioUrl">
       <img
         :src="require(`@/assets/images/icon/${showCommentaryPlaying ? 'commentary@2x.png' : 'commentary_disabled@2x.png'}`)"
         alt="" />
     </li>
 
-    <li @click="onIsAutoRotate" v-tooltip="'巡游'" v-if="currentScene.type != '4dkk'">
+    <li @click="onIsAutoRotate" v-tooltip="$t('menu.autoRotate')" v-if="currentScene.type != '4dkk'">
       <img :src="require(`@/assets/images/icon/${isAutoRotate ? 'rotation@2x.png' : 'rotation_disabled@2x.png'}`)"
         alt="" />
     </li>
@@ -37,11 +37,11 @@
       <img :src="require(`@/assets/images/icon/vr@2x.png`)" alt="" />
     </li>
 
-    <li @click="onShare" v-tooltip="'分享'">
+    <li @click="onShare" v-tooltip="$t('menu.share')">
       <img :src="require(`@/assets/images/icon/share@2x.png`)" alt="" />
     </li>
 
-    <li @click="onFullScreen" v-tooltip="'全屏'">
+    <li @click="onFullScreen" v-tooltip="$t('menu.fullScreen')">
       <img :src="require(`@/assets/images/icon/${'fullscreen@2x.png'}`)" alt="" />
     </li>
 

+ 1 - 1
packages/qjkankan-view/src/components/UIGather/control/telephone.vue

@@ -5,7 +5,7 @@
       
       <div class="txtbody">
         <div class="theader">
-          <span>联系电话</span>
+          <span>{{$t('common.phone')}}</span>
           <ui-icon class="close" type="player_close" @click.stop="close"></ui-icon>
         </div>
         <div class="telephone">

+ 0 - 406
packages/qjkankan-view/src/components/UIGather/list - 副本 (2).vue

@@ -1,406 +0,0 @@
-<template>
-  <div class="bar-list"
-    v-if="show && !((metadata.catalogRoot && metadata.catalogRoot.length == 1) && scenes.length == 1 && secondaryList.length == 1)"
-    :class="{ barshow: isShowScenesList }">
-    <div class="top-con">
-      <div class="jssor-container" id="swScenes"
-        :style="`width:${currentScenesList.length * (swidth['swScenes'] + 10) - 10}px`"
-        v-if="currentScenesList.length > 0">
-        <ul class="jssor-wrapper" data-u="slides"
-          :style="`width:${currentScenesList.length * (swidth['swScenes'] + 10) - 10}px`">
-          <li @click="tabCurrentScene(item)" class="jssor-slide" :class="{
-            active: currentScene.sceneCode == item.sceneCode,
-            loopspan: item.sceneTitle.length > spanlength && currentScene.sceneCode == item.sceneCode,
-          }" v-for="(item, i) in currentScenesList" :key="i">
-            <div :style="{ backgroundImage: `url(${item.icon})`, backgroundSize: 'cover' }">
-              <i class="iconfont " :class="item.type == '4dkk' ? 'icon-editor_3d' : 'icon-editor_panoramic'"></i>
-              <div>
-                <span>{{ item.sceneTitle.length > spanlength ? item.sceneTitle.slice(0, spanlength) : item.sceneTitle
-                }}</span>
-              </div>
-            </div>
-          </li>
-        </ul>
-      </div>
-
-      <div class="jssor-container" id="swSecondary" v-if="secondaryList.length > 1"
-        :style="`width:${secondaryList.length * (swidth['swSecondary'] + 10) - 10}px`">
-        <ul data-u="slides" class="jssor-wrapper"
-          :style="`width:${secondaryList.length * (swidth['swSecondary'] + 10) - 10}px`">
-          <li class="jssor-slide" @click="tabSecondary(item)" :class="{
-            active: currentSecondary.id == item.id,
-            loopspan: item.name.length > spanlength && currentSecondary.id == item.id,
-          }" v-for="(item, i) in secondaryList" :key="i">
-            <span>{{ item.name.length > spanlength ? item.name.slice(0, spanlength) : item.name }}</span>
-          </li>
-        </ul>
-      </div>
-    </div>
-
-    <div class="jssor-container" id="swcatalogRoot"
-      :style="`width:${metadata.catalogRoot.length * (swidth['swcatalogRoot'] + 10) - 10}px`"
-      v-if="metadata.catalogRoot.length > 0 && metadata.catalogs.length > 1">
-      <ul data-u="slides" class="jssor-wrapper" v-if="metadata.catalogRoot.length > 1"
-        :style="`width:${metadata.catalogRoot.length * (swidth['swcatalogRoot'] + 10) - 10}px`">
-        <li class="jssor-slide" :class="{
-          active: currentCatalogRoot.id == item.id,
-          loopspan: item.name.length > spanlength && currentCatalogRoot.id == item.id,
-        }" :style="{ backgroundColor: `rgba(0,0,0,0)` }" @click="tabRoot(item)"
-          v-for="(item, i) in metadata.catalogRoot" :key="i">
-
-          <span>{{ item.name.length > spanlength ? item.name.slice(0, spanlength) : item.name }}</span>
-        </li>
-      </ul>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { ref, watch, computed, onMounted, nextTick } from "vue";
-import { useStore } from "vuex";
-import { useApp } from "@/app";
-const store = useStore();
-
-const spanlength = ref(6);
-
-let jssoroptions = {
-  $AutoPlay: 0,
-  $AutoPlaySteps: 10,
-  $SlideDuration: 160,
-  $SlideSpacing: 10,
-  $ArrowNavigatorOptions: 0,
-  $Loop: 0,
-  $BulletNavigatorOptions: 0
-}
-
-
-const metadata = computed(() => store.getters["scene/metadata"]);
-const scenes = computed(() => store.getters["scene/list"]);
-const currentScene = computed(() => store.getters["scene/currentScene"]);
-
-const currentCatalogRoot = computed(() => store.getters["scene/currentCatalogRoot"]);
-const currentSecondary = computed(() => store.getters["scene/currentSecondary"]);
-
-const secondaryList = computed(() => store.getters["scene/secondaryList"]);
-
-const isShowScenesList = computed(() => store.getters["functions/isShowScenesList"]);
-
-
-const currentScenesList = computed(() => store.getters["scene/currentScenesList"]);
-
-const show = ref(false);
-
-const tabCurrentScene = (data) => {
-  store.commit("scene/setCurrentScene", data);
-};
-
-const tabSecondary = (data) => {
-  store.commit("scene/setCurrentSecondary", data);
-};
-
-const tabRoot = (data) => {
-  store.commit("scene/setCurrentCatalogRoot", data);
-};
-
-
-const swcatalogRoot = ref(null)
-const swSecondary = ref(null)
-const swScenes = ref(null)
-
-
-const swidth = ref({
-  "swcatalogRoot": 104,
-  "swSecondary": 84,
-  "swScenes": 72,
-})
-
-
-const loadSceneList = () => {
-
-  if (swScenes.value) {
-    swScenes.value.$Destroy()
-    swScenes.value = null
-  }
-
-
-
-  // 场景分组
-  if (document.querySelector('#swScenes')) {
-    swScenes.value = new $JssorSlider$('swScenes', {
-      ...jssoroptions,
-      $SlideWidth: swidth.value['swScenes'],
-    });
-  }
-
-}
-
-
-const loadSecondaryList = () => {
-
-  let swSecondaryDom = document.querySelector('#swSecondary')
-
-  if (swSecondary.value) {
-    swSecondary.value.$ReloadSlides();
-  }
-
-  //二级分组
-  if (swSecondaryDom) {
-  console.log(swSecondaryDom.innerHTML,'swSecondary.value');
-
-    swSecondary.value = new $JssorSlider$('swSecondary', {
-      ...jssoroptions,
-      $SlideWidth: swidth.value['swSecondary'],
-    });
-  }
-};
-
-watch(currentSecondary, () => {
-  loadSceneList();
-});
-
-watch(currentCatalogRoot, () => {
-  loadSecondaryList();
-});
-
-onMounted(() => {
-  useApp().then(async (app) => {
-    show.value = true;
-
-    nextTick(() => {
-
-      swcatalogRoot.value = new $JssorSlider$('swcatalogRoot', {
-        ...jssoroptions,
-        $SlideWidth: swidth.value['swcatalogRoot'],
-      });
-
-      loadSecondaryList();
-      loadSceneList();
-
-    })
-
-
-  });
-});
-</script>
-
-<style lang="scss" scoped>
-$width: 1150px;
-
-.bar-list {
-  position: absolute;
-  bottom: 68px;
-  left: 50%;
-  transform: translateX(-50%);
-  text-align: center;
-  max-width: $width;
-  overflow: hidden;
-  max-height: 0;
-  transition: .3s all ease;
-  z-index: 9;
-
-  .jssor-container {
-    position: relative;
-
-    .jssor-wrapper {
-      margin: 0 auto;
-
-      .jssor-slide {
-        >div {
-          >img {
-            width: 100%;
-          }
-
-          >span,
-          >div>span {
-            cursor: pointer;
-            display: inline-block;
-            color: rgba(255, 255, 255, 0.6);
-          }
-        }
-
-        &.loopspan {
-          >div {
-
-            >span,
-            >div>span {
-              animation: 5s wordsLoop linear infinite normal;
-            }
-          }
-        }
-
-        &.active {
-          >div {
-
-            >span,
-            >div>span {
-              color: rgba(255, 255, 255, 1);
-            }
-          }
-        }
-      }
-    }
-  }
-
-  .top-con {
-    margin-bottom: 10px;
-    padding: 10px 60px;
-    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%);
-  }
-
-  #swcatalogRoot {
-    height: 26px;
-    margin: 0 auto;
-
-    ul {
-      height: 26px;
-
-      >li {
-        width: 104px;
-        background: rgba(0, 0, 0, 0.5);
-        border-radius: 4px;
-        padding: 4px 10px;
-        border: 1px solid rgba(255, 255, 255, 0.5);
-        box-sizing: border-box;
-        overflow: hidden;
-        cursor: pointer;
-
-        >span {
-          width: 100%;
-          word-break: keep-all;
-          color: rgba(255, 255, 255, 0.5);
-        }
-
-        &.active {
-          border: 1px solid rgba(255, 255, 255, 1);
-
-          >span {
-            color: #fff;
-          }
-        }
-      }
-    }
-  }
-
-  #swSecondary {
-    margin: 20px auto 10px;
-    height: 20px;
-
-    ul {
-      height: 20px;
-
-      >li {
-        width: 84px;
-        box-sizing: border-box;
-        overflow: hidden;
-        padding-bottom: 6px;
-        cursor: pointer;
-
-        >span {
-          width: 100%;
-          word-break: keep-all;
-        }
-
-        &.active {
-          position: relative;
-
-          &::before {
-            content: "";
-            display: inline-block;
-            position: absolute;
-            bottom: 0;
-            width: 20px;
-            height: 2px;
-            z-index: 9999;
-            left: 50%;
-            transform: translateX(-50%);
-            background: var(--colors-primary-base);
-          }
-        }
-      }
-    }
-  }
-
-  #swScenes {
-    height: 72px;
-    margin: 0 auto;
-
-    ul {
-      height: 72px;
-
-      >li {
-        cursor: pointer;
-        width: 72px;
-        height: 72px;
-        border-radius: 6px;
-        border: 1px solid #ffffff;
-        position: relative;
-        overflow: hidden;
-
-        >div {
-          width: 100%;
-          height: 100%;
-          background-size: cover;
-
-          .iconfont {
-            position: absolute;
-            left: 4px;
-            top: 4px;
-            z-index: 99;
-
-            &::after {
-              background: rgba(0, 0, 0, 0.3);
-              content: "";
-              width: 14px;
-              height: 14px;
-              display: inline-block;
-              position: absolute;
-              top: 50%;
-              left: 50%;
-              transform: translate(-50%, -50%);
-              z-index: -1;
-              filter: blur(4px);
-            }
-          }
-
-          >div {
-            position: absolute;
-            bottom: 0;
-            left: 0;
-            height: 20px;
-            background: rgba(0, 0, 0, 0.5);
-            width: 100%;
-            overflow: hidden;
-            background-size: cover !important;
-
-            >span {
-              width: 100%;
-              line-height: 20px;
-              word-break: keep-all;
-            }
-          }
-        }
-
-        &.active {
-          border: 1px solid var(--colors-primary-base);
-        }
-      }
-    }
-  }
-}
-
-.barshow {
-  max-height: 190px;
-}
-
-@keyframes wordsLoop {
-  0% {
-    transform: translateX(100%);
-    -webkit-transform: translateX(100%);
-  }
-
-  100% {
-    transform: translateX(-100%);
-    -webkit-transform: translateX(-100%);
-  }
-}
-</style>

+ 0 - 306
packages/qjkankan-view/src/components/UIGather/list - 副本.vue

@@ -1,306 +0,0 @@
-<template>
-  <div class="bar-list" v-if="show && !((metadata.catalogRoot && metadata.catalogRoot.length == 1) && scenes.length == 1 && secondaryList.length == 1)" :class="{barshow:isShowScenesList}">
-    <div class="top-con" >
-      <div class="swiper-container" id="swScenes" v-if="currentScenesList.length > 0">
-        <ul class="swiper-wrapper">
-          <li
-            @click="tabCurrentScene(item)"
-            class="swiper-slide"
-            :class="{
-              active: currentScene.sceneCode == item.sceneCode,
-              loopspan: item.sceneTitle.length > spanlength && currentScene.sceneCode == item.sceneCode,
-            }"
-            :style="{ backgroundImage: `url(${item.icon})` }"
-            v-for="(item, i) in currentScenesList"
-            :key="i"
-          >
-            <i class="iconfont " :class="item.type == '4dkk'?'icon-editor_3d':'icon-editor_panoramic'"></i>
-            <div>
-              <span>{{ item.sceneTitle.length > spanlength ? item.sceneTitle.slice(0, spanlength) : item.sceneTitle }}</span>
-            </div>
-          </li>
-        </ul>
-      </div>
-
-      <div class="swiper-container" id="swSecondary" v-if="secondaryList.length > 1">
-        <ul class="swiper-wrapper">
-          <li
-            class="swiper-slide"
-            @click="tabSecondary(item)"
-            :class="{
-              active: currentSecondary.id == item.id,
-              loopspan: item.name.length > spanlength && currentSecondary.id == item.id,
-            }"
-            v-for="(item, i) in secondaryList"
-            :key="i"
-          >
-            <span>{{ item.name.length > spanlength ? item.name.slice(0, spanlength) : item.name }}</span>
-          </li>
-        </ul>
-      </div>
-    </div>
-
-    <div class="swiper-container" id="swcatalogRoot" v-if="metadata.catalogRoot.length > 0 && metadata.catalogs.length > 1">
-      <ul class="swiper-wrapper" v-if="metadata.catalogRoot.length > 1">
-        <li
-          class="swiper-slide"
-          :class="{
-            active: currentCatalogRoot.id == item.id,
-            loopspan: item.name.length > spanlength && currentCatalogRoot.id == item.id,
-          }"
-          @click="tabRoot(item)"
-          v-for="(item, i) in metadata.catalogRoot"
-          :key="i"
-        >
-          <span>{{ item.name.length > spanlength ? item.name.slice(0, spanlength) : item.name }}</span>
-        </li>
-      </ul>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import { ref, watch, computed, onMounted, nextTick } from "vue";
-import { useStore } from "vuex";
-import { useApp } from "@/app";
-const store = useStore();
-
-const spanlength = ref(6);
-
-const metadata = computed(() => store.getters["scene/metadata"]);
-const scenes = computed(() => store.getters["scene/list"]);
-const currentScene = computed(() => store.getters["scene/currentScene"]);
-
-const currentCatalogRoot = computed(() => store.getters["scene/currentCatalogRoot"]);
-const currentSecondary = computed(() => store.getters["scene/currentSecondary"]);
-
-const secondaryList = computed(() => store.getters["scene/secondaryList"]);
-
-const isShowScenesList = computed(() => store.getters["functions/isShowScenesList"]);
-
-
-const currentScenesList = computed(() => store.getters["scene/currentScenesList"]);
-
-const show = ref(false);
-
-const tabCurrentScene = (data) => {
-  store.commit("scene/setCurrentScene", data);
-};
-
-const tabSecondary = (data) => {
-  store.commit("scene/setCurrentSecondary", data);
-};
-
-const tabRoot = (data) => {
-  store.commit("scene/setCurrentCatalogRoot", data);
-};
-
-const loadList = () => {
-  nextTick(() => {
-    let t = setTimeout(() => {
-      clearTimeout(t);
-      ["#swcatalogRoot", "#swSecondary", "#swScenes"].forEach((item) => {
-      new Swiper(item, {
-        slidesPerView: "auto",
-        centeredSlides: true,
-        spaceBetween: 10,
-        centerInsufficientSlides: true,
-        centeredSlidesBounds: true,
-        freeMode: true,
-      });
-    });
-    }, 100);
-  });
-};
-
-watch(currentSecondary, () => {
-  loadList();
-});
-
-watch(currentScenesList, () => {
-  loadList();
-});
-
-onMounted(() => {
-  useApp().then(async (app) => {
-    show.value = true;
-    loadList();
-  });
-});
-</script>
-
-<style lang="scss" scoped>
-$width: 1150px;
-.bar-list {
-  position: absolute;
-  bottom: 68px;
-  left: 50%;
-  transform: translateX(-50%);
-  text-align: center;
-  max-width: $width;
-  min-width: 480px;
-  overflow: hidden;
-  max-height: 0;
-  transition: .3s all ease;
-  z-index: 9;
-  .swiper-container {
-    width: 100%;
-    position: relative;
-    > ul {
-      > li {
-        > span,
-        > div > span {
-          cursor: pointer;
-          display: inline-block;
-          color: rgba(255, 255, 255, 0.6);
-        }
-        &.loopspan {
-          > span,
-          > div > span {
-            animation: 5s wordsLoop linear infinite normal;
-          }
-        }
-        &.active{
-          > span,
-          > div > span {
-            color: rgba(255, 255, 255, 1);
-          }
-        }
-      }
-    }
-  }
-
-  .top-con {
-    margin-bottom: 10px;
-    padding: 10px 60px;
-    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%);
-  }
-
-  #swcatalogRoot {
-    > ul {
-      > li {
-        width: 104px;
-        background: rgba(0, 0, 0, 0.5);
-        border-radius: 4px;
-        padding: 4px 10px;
-        border: 1px solid rgba(255, 255, 255, 0.5);
-        box-sizing: border-box;
-        overflow: hidden;
-        > span {
-          width: 100%;
-          word-break: keep-all;
-        }
-        &.active {
-          border: 1px solid rgba(255, 255, 255, 1);
-        }
-      }
-    }
-  }
-  #swSecondary {
-    margin: 20px auto 10px;
-    > ul {
-      > li {
-        width: 84px;
-        box-sizing: border-box;
-        overflow: hidden;
-        padding-bottom: 6px;
-        > span {
-          width: 100%;
-          word-break: keep-all;
-        }
-        &.active {
-          position: relative;
-          &::before {
-            content: "";
-            display: inline-block;
-            position: absolute;
-            bottom: 0;
-            width: 20px;
-            height: 2px;
-            z-index: 9999;
-            left: 50%;
-            transform: translateX(-50%);
-            background: var(--colors-primary-base);
-          }
-        }
-      }
-    }
-  }
-
-  #swScenes {
-    > ul {
-      > li {
-        cursor: pointer;
-        width: 72px;
-        height: 72px;
-        border-radius: 6px;
-        border: 1px solid #ffffff;
-        background-size: cover;
-        position: relative;
-        overflow: hidden;
-        .iconfont {
-          position: absolute;
-          left: 4px;
-          top: 4px;
-          z-index: 99;
-
-          &::after {
-            background: rgba(0, 0, 0, 0.3);
-            content: "";
-            width: 14px;
-            height: 14px;
-            display: inline-block;
-            position: absolute;
-            top: 50%;
-            left: 50%;
-            transform: translate(-50%, -50%);
-            z-index: -1;
-            filter: blur(4px);
-          }
-        }
-        > div {
-          position: absolute;
-          bottom: 0;
-          left: 0;
-          height: 20px;
-          background: rgba(0, 0, 0, 0.5);
-          width: 100%;
-          overflow: hidden;
-
-          > span {
-            width: 100%;
-            line-height: 20px;
-            word-break: keep-all;
-          }
-        }
-        &.active {
-          border: 1px solid var(--colors-primary-base);
-          > div {
-            > span {
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-.barshow{
-  max-height: 190px;
-}
-
-@keyframes wordsLoop {
-  0% {
-    transform: translateX(100%);
-    -webkit-transform: translateX(100%);
-  }
-
-  100% {
-    transform: translateX(-100%);
-    -webkit-transform: translateX(-100%);
-  }
-}
-
-
-
-</style>

+ 6 - 6
packages/qjkankan-view/src/components/UIGather/menu.vue

@@ -1,7 +1,7 @@
 <template>
   <ul class="menu">
     <li @click="onIsShowList"
-      v-tooltip="'场景导览'"
+      v-tooltip="$t('menu.guide')"
       v-if="!((metadata.catalogRoot && metadata.catalogRoot.length == 1) && scenes.length == 1 && secondaryList.length == 1)">
       <img :src="require(`@/assets/images/icon/${isShowScenesList ? 'function_off@2x.png' : 'function_on@2x.png'}`)"
         alt="" />
@@ -17,7 +17,7 @@
     <template v-if="currentScene.type == '4dkk'">
 
       <li
-      v-tooltip="'漫游'"
+      v-tooltip="$t('menu.panorama')"
        v-if="fdkkmetadata && fdkkmetadata.controls.showPanorama" :class="{ disabled: isPlayTours || flying }"
         @click="onModeChange('panorama')">
         <img :src="require(`@/assets/images/icon/${mode == 'panorama' ? 'roaming_selected' : 'roaming_normal'}@2x.png`)"
@@ -25,7 +25,7 @@
       </li>
 
       <li
-      v-tooltip="'平面'"
+      v-tooltip="$t('menu.floorplan')"
       v-if="fdkkmetadata && fdkkmetadata.controls.showFloorplan" :class="{ disabled: isPlayTours || flying }"
         @click="onModeChange('floorplan')">
         <img :src="require(`@/assets/images/icon/${mode == 'floorplan' ? 'plane_selected' : 'plane_normal'}@2x.png`)"
@@ -33,7 +33,7 @@
       </li>
 
       <li
-      v-tooltip="'三维'"
+      v-tooltip="$t('menu.dollhouse')"
        v-if="fdkkmetadata && fdkkmetadata.controls.showDollhouse" :class="{ disabled: isPlayTours || flying }"
         @click="onModeChange('dollhouse')">
         <img :src="require(`@/assets/images/icon/${mode == 'dollhouse' ? '3d_selected' : '3d_normal'}@2x.png`)"
@@ -45,10 +45,10 @@
       </div>
 
       <li
-      v-tooltip="'导览'"
+      v-tooltip="$t('menu.tour')"
        class="daolan" @click.stop="playTour" v-if="toursList.length > 0">
         <img :src="require(`@/assets/images/icon/${isPlayTours ? 'pause01' : 'playing01'}@2x.png`)" alt="" />
-        <span>导览</span>
+        <span>{{$t('menu.tour')}}</span>
         <img @click.stop="openTours" :class="{ active: showTours }" class="jiantou"
           :src="require(`@/assets/images/icon/expand_arrows@2x.png`)" alt="" />
       </li>

+ 1 - 1
packages/qjkankan-view/src/components/UIGather/mobile/control.fdkk.vue

@@ -12,7 +12,7 @@
       <img
         :src="require(`@/assets/images/icon/${(fdkkCurrentVersion == 'v3' ? v3toursStatus : isPlayTours) ? 'pause01@2x' : 'playing01@2x'}.png`)"
         alt="" />
-      <span>导览</span>
+      <span>{{$t('menu.tour')}}</span>
       <img @click.stop="openTours" :class="{ active: showTours }" class="jiantou"
         :src="require(`@/assets/images/icon/expand_arrows@2x.png`)" alt="" />
       <div class="vlink"></div>

+ 1 - 1
packages/qjkankan-view/src/components/UIGather/mobile/control/telephone.vue

@@ -5,7 +5,7 @@
       
       <div class="txtbody">
         <div class="theader">
-          <span>联系电话</span>
+          <span>{{$t('common.phone')}}</span>
           <ui-icon class="close" type="player_close" @click.stop="close"></ui-icon>
         </div>
         <div class="telephone">

+ 1 - 1
packages/qjkankan-view/src/components/UIGather/mobile/menu.vue

@@ -18,7 +18,7 @@
 
     <li class="daolan" @click.stop="playTour" v-if="toursList.length>0">
       <img :src="require(`@/assets/images/icon/${isPlayTours?'pause01':'playing01'}.svg`)" alt="" />
-      <span>导览</span>
+      <span>{{$t('menu.tour')}}</span>
       <img @click.stop="openTours" :class="{active:showTours}" class="jiantou"
         :src="require(`@/assets/images/icon/expand_arrows@2x.png`)" alt="" />
     </li>

+ 1 - 1
packages/qjkankan-view/src/components/UIGather/mobile/tours.vue

@@ -20,7 +20,7 @@
           <li class="swiper-slide" v-for="(item, i) in toursList[0].list" :key="i" :class="{
             active:item.id=='id2'
           }">
-            <span>导览</span>
+            <span>{{$t('menu.tour')}}</span>
             <div class="tourbar">
               <div class="tourline"></div>
             </div>

+ 1 - 1
packages/qjkankan-view/src/components/assembly/Error.vue

@@ -2,7 +2,7 @@
   <div class="page-error">
     <div>
       <img :src="require('@/assets/images/default/img_noresults@2x.png')" alt="" />
-      <p>作品已被删除啦</p>
+      <p>{{$t('common.workDelete')}}</p>
     </div>
   </div>
 </template>

+ 1 - 1
packages/qjkankan-view/src/components/assembly/Loading.vue

@@ -12,7 +12,7 @@
         <div class="icon">
           <img :src="require('@/assets/images/loading.png')" alt="" />
         </div>
-        <div class="txt">加载中</div>
+        <div class="txt">{{$t('common.loading')}}</div>
       </div>
     </div>
   </transition>

+ 2 - 1
packages/qjkankan-view/src/components/assembly/MobileTags/metas/metas-image.vue

@@ -4,6 +4,7 @@ import 'photoswipe/style.css';
 import { reactive, defineEmits, onBeforeMount, onMounted, ref, watchEffect, computed, watch, nextTick } from "vue";
 import { useStore } from "vuex";
 const store = useStore();
+const { t } = useI18n({ useScope: "global" });
 
 let closeicon = `<svg t="1666060310188" class="pswp__icn" viewBox="0 0 1024 1024" version="1.1"
 class="pswp__icn" p-id="9000" width="24" height="24">
@@ -15,7 +16,7 @@ let options = {
   zoom: false,
   indexIndicatorSep: '/',
   mainClass: 'm-img-tag',
-  errorMsg: '图片加载失败',
+  errorMsg: t('common.image_fail'),
   closeSVG: closeicon,
   pinchToClose:false,
   closeOnVerticalDrag:false,

+ 6 - 6
packages/qjkankan-view/src/components/assembly/Tags/metas/metas-image.vue

@@ -14,39 +14,39 @@
       <i v-if="currentTag.image.length > 1" class="iconfont icon-material_preview_previous hover-tips"
         :class="{ disabled: currentIndex === 0 }" @click="onClickPrevious()">
         <div>
-          <div class="remark">上一张</div>
+          <div class="remark">{{$t('common.prev')}}</div>
         </div>
       </i>
       <i v-if="currentTag.image.length > 1" class="iconfont icon-material_preview_next1 hover-tips append-splitter"
         :class="{ disabled: currentIndex === currentTag.image.length - 1 }" @click="onClickNext()">
         <div>
-          <div class="remark">下一张</div>
+          <div class="remark">{{$t('common.next')}}</div>
         </div>
       </i>
       <i :class="{ disabled: scaleRate >= 2 }" class="iconfont icon-material_preview_enlarge hover-tips"
         @click="onClickZoomIn()">
         <div>
-          <div class="remark">放大</div>
+          <div class="remark">{{$t('common.zoomIn')}}</div>
         </div>
       </i>
       <span>{{ Math.floor(scaleRate.toFixed(2) * 100) }}%</span>
       <i :class="{ disabled: scaleRate <= 0.5 }" class="iconfont icon-material_preview_narrow hover-tips"
         @click="onClickZoomOut()">
         <div>
-          <div class="remark">缩小</div>
+          <div class="remark">{{$t('common.zoomOut')}}</div>
         </div>
       </i>
 
       <i v-if="canFullScreen && objectFit === 'scale-down'"
         class="iconfont icon-material_preview_full_screen hover-tips" @click="onClickFullScreen()">
         <div>
-          <div class="remark">全屏</div>
+          <div class="remark">{{$t('common.fullScene')}}</div>
         </div>
       </i>
       <i v-if="canFullScreen && objectFit === 'contain'" class="iconfont icon-material_preview_drop_out hover-tips"
         @click="onClickCancelFullScreen()">
         <div>
-          <div class="remark">取消全屏</div>
+          <div class="remark">{{$t('common.exitFullScene')}}</div>
         </div>
       </i>
     </div>

+ 63 - 0
packages/qjkankan-view/src/locales/zh copy.json

@@ -0,0 +1,63 @@
+{
+  "common": {
+    "none": "无",
+    "confirm": "确定",
+    "cancel": "取消",
+    "tips": "提示",
+    "hide": "隐藏",
+    "show": "显示",
+    "review": "预览",
+    "open": "开",
+    "close": "关",
+    "pauseTour": "暂停导览",
+    "playTour": "播放导览",
+    "passwordTips": "请输入浏览密码",
+    "passwordError": "密码错误",
+    "tour": "导览",
+    "support": "四维时代提供技术支持",
+    "all": "全部",
+    "model": "三维模式"
+  },
+  "limit": {
+    "viewInVr": "请在手机展示页面观看VR效果"
+  },
+  "share": {
+    "wechat": "微信",
+    "friends": "朋友圈",
+    "qq": "QQ",
+    "facebook": "Facebook",
+    "whatsApp": "WhatsApp",
+    "copyLink": "复制链接",
+    "shareLink": "分享链接",
+    "shareLinkTips": "分享作品",
+    "vrMode": "VR模式",
+    "fastCopy": "复制链接"
+  },
+  "toast": {
+    "copySuccess": "复制成功",
+    "inputPassword": "请输入密码",
+    "checkBrowser": "无法打开页面,请升级或更换浏览器后重新打开",
+    "changeBrowser": "建议使用以下浏览器"
+  },
+  "mode": {
+    "panorama": "漫游",
+    "floorplan": "平面",
+    "dollhouse": "三维",
+    "dollhouseModel": "三维模型",
+    "vr": "VR功能",
+    "music": "音乐",
+    "fullScene": "全屏",
+    "exitFullScene": "退出全屏"
+  },
+  "code": "操作失败,请稍后再试",
+  "model": {
+    "enter": "入户门"
+  },
+  "guide": {
+    "title": "操作提示",
+    "pano": "行走<br />点击任意方向移动",
+    "rotate": "旋转视角<br />左右滑动屏幕,旋转视觉",
+    "zoom": "缩放<br />双指滑动放大或缩小视图",
+    "set": "我知道了"
+  }
+}

+ 24 - 37
packages/qjkankan-view/src/locales/zh.json

@@ -13,51 +13,38 @@
     "playTour": "播放导览",
     "passwordTips": "请输入浏览密码",
     "passwordError": "密码错误",
-    "tour": "导览",
     "support": "四维时代提供技术支持",
     "all": "全部",
-    "model": "三维模式"
-  },
-  "limit": {
-    "viewInVr": "请在手机展示页面观看VR效果"
+    "model": "三维模式",
+    "phone":"联系电话",
+    "workDelete":"作品已被删除啦",
+    "loading":"加载中",
+    "prev":"上一张",
+    "next":"下一张",
+    "zoomIn":"放大",
+    "zoomOut":"缩小",
+    "fullScene": "全屏",
+    "exitFullScene": "取消全屏",
+    "image_fail": "图片加载失败"
   },
-  "share": {
-    "wechat": "微信",
-    "friends": "朋友圈",
-    "qq": "QQ",
-    "facebook": "Facebook",
-    "whatsApp": "WhatsApp",
-    "copyLink": "复制链接",
-    "shareLink": "分享链接",
-    "shareLinkTips": "分享作品",
-    "vrMode": "VR模式",
-    "fastCopy": "复制链接"
+  "menu":{
+    "introduce": "简介",
+    "music": "音乐",
+    "commentary": "讲解",
+    "autoRotate": "巡游",
+    "share": "分享",
+    "fullScreen": "全屏",
+    "guide": "场景导览",
+    "panorama": "漫游",
+    "floorplan": "平面",
+    "dollhouse": "三维",
+    "dollhouseModel": "三维模型",
+    "tour":"导览"
   },
   "toast": {
     "copySuccess": "复制成功",
     "inputPassword": "请输入密码",
     "checkBrowser": "无法打开页面,请升级或更换浏览器后重新打开",
     "changeBrowser": "建议使用以下浏览器"
-  },
-  "mode": {
-    "panorama": "漫游",
-    "floorplan": "平面",
-    "dollhouse": "三维",
-    "dollhouseModel": "三维模型",
-    "vr": "VR功能",
-    "music": "音乐",
-    "fullScene": "全屏",
-    "exitFullScene": "退出全屏"
-  },
-  "code": "操作失败,请稍后再试",
-  "model": {
-    "enter": "入户门"
-  },
-  "guide": {
-    "title": "操作提示",
-    "pano": "行走<br />点击任意方向移动",
-    "rotate": "旋转视角<br />左右滑动屏幕,旋转视觉",
-    "zoom": "缩放<br />双指滑动放大或缩小视图",
-    "set": "我知道了"
   }
 }