소스 검색

Merge branch 'dev' of http://face3d.4dage.com:7005/chenzhiguang/qjkankan_v1.1.1 into dev

tremble 2 년 전
부모
커밋
6d30d37b1d

+ 2 - 0
packages/qjkankan-editor/src/Store/modules/scene.js

@@ -81,6 +81,8 @@ export default {
       state.secondaryList = payload
       if (payload.length>0) {
         this.commit('scene/setCurrentSecondary', payload[0])
+      } else {
+        this.commit('scene/setCurrentSecondary', {})
       }
     },
     setMetaData(state, payload) {

BIN
packages/qjkankan-editor/src/assets/images/default/empty-go-4dkk.png


+ 23 - 20
packages/qjkankan-editor/src/components/materialSelectorForEditor.vue

@@ -57,12 +57,11 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
                 @change="v => selectItem(item.successInfo, v)"
-                @click.native.stop
               />
             </span>
             <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
               <div v-if="tableItemStructure.type=='image'" class="list-img">
-                <img :src="item.successInfo[tableItemStructure.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+                <img :src="item.successInfo[tableItemStructure.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
               </div>
               <span  v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
             </span>
@@ -110,12 +109,11 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
                 @change="v => selectItem(item, v)"
-                @click.native.stop
               />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForImage" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item[sub.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{ item[sub.key] }}</span>
           </span>
@@ -159,12 +157,11 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
                 @change="v => selectItem(item.successInfo, v)"
-                @click.native.stop
               />
             </span>
             <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForPano" :key="idx">
               <div v-if="tableItemStructure.type=='image'" class="list-img">
-                <img :src="item.successInfo[tableItemStructure.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+                <img :src="item.successInfo[tableItemStructure.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
               </div>
               <span  v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
             </span>
@@ -213,12 +210,11 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
                 @change="v => selectItem(item, v)"
-                @click.native.stop
               />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForPano" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item[sub.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : '')" alt="">
             </div>
             <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
           </span>
@@ -262,7 +258,6 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
                 @change="v => selectItem(item.successInfo, v)"
-                @click.native.stop
               />
             </span>
             <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForAudio" :key="idx">
@@ -273,7 +268,6 @@
                   alt=""
                 > -->
                 <AudioIconCanPlay
-                  @click.native.stop
                   class="audio-player"
                   :vKey="item.successInfo.id"
                   :idleft="`_${$randomWord(true, 8, 8)}`"
@@ -335,7 +329,6 @@
               :isMultiSelection="isMultiSelection"
               :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
               @change="v => selectItem(item, v)"
-              @click.native.stop
             />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForAudio" :key="idx">
@@ -346,7 +339,6 @@
                 alt=""
               > -->
               <AudioIconCanPlay
-                @click.native.stop
                 class="audio-player"
                 :vKey="item.id"
                 :idleft="`_${$randomWord(true, 8, 8)}`"
@@ -396,7 +388,6 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
                 @change="v => selectItem(item.successInfo, v)"
-                @click.native.stop
               />
             </span>
             <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForVideo" :key="idx">
@@ -460,7 +451,6 @@
               :isMultiSelection="isMultiSelection"
               :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
               @change="v => selectItem(item, v)"
-              @click.native.stop
             />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForVideo" :key="idx">
@@ -507,12 +497,11 @@
               :isMultiSelection="isMultiSelection"
               :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
               @change="v => selectItem(item, v)"
-              @click.native.stop
             />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersFor3D" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item[sub.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
           </span>
@@ -535,7 +524,7 @@
     </div>
 
     <div class="btns">
-      <button v-if="currentMaterialType !== '3D'" class="ui-button upload-btn" @click="$refs['file-input'].click()">
+      <button v-if="currentMaterialType !== '3D'" class="ui-button upload-btn" @click="onClickUpload">
         <span>上传素材</span>
         <i class="iconfont icon-material_prompt tool-tip-for-editor"
           v-tooltip="
@@ -558,7 +547,7 @@
       <div v-else class="button-placeholder"></div>
       <div>
         <button class="ui-button deepcancel" @click="$emit('cancle')">取消</button>
-        <button class="ui-button submit" :class="{disable: !select.length}" @click="$emit('submit', select)">
+        <button class="ui-button submit" :class="{disable: !select.length}" @click="onClickComfirm">
           确定
         </button>
       </div>
@@ -573,6 +562,7 @@ import {
   getSceneList,
   uploadMaterial,
   checkMStatus,
+  checkUserSize,
 } from "@/api";
 import { getImgWH, changeByteUnit } from "@/utils/file";
 import config from "@/config";
@@ -646,7 +636,6 @@ export default {
           clearInterval(this.longPollingIntervalId)
           this.longPollingIntervalId = null
         } else {
-          console.log('need long polling!');
           clearInterval(this.longPollingIntervalId)
           this.longPollingIntervalId = null
           this.longPollingIntervalId = setInterval(() => {
@@ -654,6 +643,7 @@ export default {
           }, 3000);
         }
       },
+      immediate: true,
     },
   },
   computed:{
@@ -1529,13 +1519,26 @@ export default {
         checkboxNodeList[0].click()
       }
     },
+    onClickUpload() {
+      checkUserSize({}, (data) => {
+        //判断已用是否大于3G
+        if ((data.data / 1024 / 1024) > 3) {
+          this.$alert({ content: "空间已满" });
+        } else {
+          this.$refs['file-input'].click()
+        }
+      })
+    },
+    onClickComfirm: debounce(function() {
+      this.$emit('submit', this.select)
+    }, 250),
   },
   mounted() {
     console.log('tableHeadersForAudio: ', this.tableHeadersForAudio);
     console.log('tableHeadersForVideo: ', this.tableHeadersForVideo);
     this.clearUploadStatusLists()
   },
-  unmounted() {
+  beforeDestroy() {
     this.$store.commit('setUploadStatusListImage', this.uploadStatusListImage.filter((item) => {
       return item.status === 'LOADING'
     }))

+ 21 - 10
packages/qjkankan-editor/src/components/materialSelectorForManageCenter.vue

@@ -79,12 +79,11 @@
                 :isMultiSelection="isMultiSelection"
                 :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
                 @change="v => selectItem(item.successInfo, v)"
-                @click.native.stop
               />
             </span>
             <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForPano" :key="idx">
               <div v-if="tableItemStructure.type=='image'" class="list-img">
-                <img :src="item.successInfo[tableItemStructure.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+                <img :src="item.successInfo[tableItemStructure.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
               </div>
               <span  v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
             </span>
@@ -134,12 +133,11 @@
               :isMultiSelection="isMultiSelection"
               :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
               @change="v => selectItem(item, v)"
-              @click.native.stop
             />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForPano" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item[sub.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
           </span>
@@ -177,12 +175,11 @@
               :isMultiSelection="isMultiSelection"
               :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
               @change="v => selectItem(item, v)"
-              @click.native.stop
             />
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersFor3D" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item[sub.key] + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
           </span>
@@ -205,7 +202,7 @@
     </div>
 
     <div class="btns">
-      <button v-if="currentMaterialType !== '3D'" class="ui-button upload-btn" @click="$refs['file-input'].click()">
+      <button v-if="currentMaterialType !== '3D'" class="ui-button upload-btn" @click="onClickUpload">
         <span>上传素材</span>
         <i class="iconfont icon-material_prompt tool-tip-for-editor"
           v-tooltip="
@@ -228,7 +225,7 @@
       <div v-else class="button-placeholder"></div>
       <div>
         <button class="ui-button cancel" @click="$emit('cancle')">取消</button>
-        <button class="ui-button submit" :class="{disable: !select.length}" @click="$emit('submit', select)">
+        <button class="ui-button submit" :class="{disable: !select.length}" @click="onClickComfirm">
           确定
         </button>
       </div>
@@ -243,6 +240,7 @@ import {
   getSceneList,
   uploadMaterial,
   checkMStatus,
+  checkUserSize,
 } from "@/api";
 import { getImgWH, changeByteUnit } from "@/utils/file";
 import config from "@/config";
@@ -320,7 +318,6 @@ export default {
           clearInterval(this.longPollingIntervalId)
           this.longPollingIntervalId = null
         } else {
-          console.log('need long polling!');
           clearInterval(this.longPollingIntervalId)
           this.longPollingIntervalId = null
           this.longPollingIntervalId = setInterval(() => {
@@ -328,6 +325,7 @@ export default {
           }, 3000);
         }
       },
+      immediate: true,
     },
   },
   computed:{
@@ -1126,13 +1124,26 @@ export default {
         checkboxNodeList[0].click()
       }
     },
+    onClickUpload() {
+      checkUserSize({}, (data) => {
+        //判断已用是否大于3G
+        if ((data.data / 1024 / 1024) > 3) {
+          this.$alert({ content: "空间已满" });
+        } else {
+          this.$refs['file-input'].click()
+        }
+      })
+    },
+    onClickComfirm: debounce(function() {
+      this.$emit('submit', this.select)
+    }, 250),
   },
   mounted() {
     console.log('tableHeadersForAudio: ', this.tableHeadersForAudio);
     console.log('tableHeadersForVideo: ', this.tableHeadersForVideo);
     this.clearUploadStatusLists()
   },
-  unmounted() {
+  beforeDestroy() {
     this.$store.commit('setUploadStatusListImage', this.uploadStatusListImage.filter((item) => {
       return item.status === 'LOADING'
     }))

+ 7 - 3
packages/qjkankan-editor/src/components/materialSelectorFromWorkForEditor.vue

@@ -45,7 +45,7 @@
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersForPano" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item.icon + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item.icon + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="item.sceneTitle">{{item.sceneTitle}}</span>
           </span>
@@ -89,7 +89,7 @@
           </span>
           <span class="table-data" v-for="(sub,idx) in tableHeadersFor3D" :key="idx">
             <div v-if="sub.type=='image'" class="list-img">
-              <img :src="item.icon + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
+              <img :src="item.icon + (Number(item.fileSize)>512 ? `?x-oss-process=image/resize,p_20&${Math.random()}` : ``)" alt="">
             </div>
             <span class="ellipsis" v-else v-title="item.sceneTitle">{{item.sceneTitle}}</span>
           </span>
@@ -111,7 +111,7 @@
     <div class="btns">
       <div>
         <button class="ui-button deepcancel" @click="$emit('cancle')">取消</button>
-        <button class="ui-button submit" :class="{disable: !select.length}" @click="$emit('submit', select)">
+        <button class="ui-button submit" :class="{disable: !select.length}" @click="onClickComfirm">
           确定
         </button>
       </div>
@@ -121,6 +121,7 @@
 
 <script>
 import { mapGetters } from "vuex";
+import { debounce } from "@/utils/other.js"
 
 export default {
   props:{
@@ -206,6 +207,9 @@ export default {
         }
       }
     },
+    onClickComfirm: debounce(function() {
+      this.$emit('submit', this.select)
+    }, 250),
   },
   mounted() {
   }

+ 2 - 2
packages/qjkankan-editor/src/components/shared/RadioOrCheckbox.vue

@@ -12,7 +12,7 @@
         'is-checked': isChecked,
         disabled: isDisabled,
       }"
-      @click="onClick"
+      @click.stop="onClick"
     >
       <span class="for-outer-circle" :class="{disabled: isDisabled,}"></span>
       <span class="for-inner-circle" :class="{disabled: isDisabled,}"></span>
@@ -20,7 +20,7 @@
     <div
       v-if="isMultiSelection"
       class="checkbox-wrapper selection-click-target"
-      @click="onClick"
+      @click.stop="onClick"
     >
       <div v-show="!isChecked" class="unchecked" :class="{disabled: isDisabled,}"></div>
       <img v-show="isChecked" class="checked" src="@/assets/images/icons/checkbox.png" />

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

@@ -11,7 +11,7 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.main{
+.main {
   width: 100%;
   background: #fff;
 }

+ 11 - 4
packages/qjkankan-editor/src/framework/play/pano/components/list.vue

@@ -9,7 +9,7 @@
               active: currentScene.id == item.id,
               loopspan: item.sceneTitle.length > spanlength && currentScene.id == item.id,
             }" :style="{ backgroundImage: `url(${item.icon})`, opacity: item.type === '4dkk' ? 0.5 : 1, }"
-            v-for="(item, i) in currentScenesList" :key="i">
+            v-for="(item, i) in currentScenesList" :key="item.id">
             <i class="iconfont icon-edit_type_3d" :class="{ iconedit_type_panorama: item.type !== '4dkk' }"></i>
             <div>
               <span v-if="currentScene.id == item.id">{{ item.sceneTitle }}</span>
@@ -22,7 +22,7 @@
       </div>
 
       <div class="swiper-container" :style="`width:${secondaryW}px`" id="swSecondary" ref="sw1"
-        v-swiper:mySwipera="swiperOptions" v-if="secondaryList.length > 1">
+        v-swiper:mySwipera="swiperOptions" v-if="!(secondaryList.length === 1 && secondaryList[0].name === '默认二级分组')">
         <ul class="swiper-wrapper">
           <li class="swiper-slide" @click="tabSecondary(item)" :class="{
             active: currentSecondary.id == item.id,
@@ -151,10 +151,17 @@ export default {
     },
 
     tabCurrentScene(data) {
-      if (data.type !== '4dkk') {
+      if (data.type === '4dkk') {
+        if (this.scenes.some((item) => {
+          return item.type === 'pano'
+        })) {
+          return
+        } else {
+          this.$store.commit("scene/setCurrentScene", data);
+        }
+      } else {
         this.$store.commit("scene/setCurrentScene", data);
       }
-
     },
 
     tabSecondary(data) {

+ 72 - 21
packages/qjkankan-editor/src/framework/play/pano/index.vue

@@ -9,8 +9,14 @@
 
     <template v-if="showSnapshot && currentScene">
       <snapshot :showFlash="showFlash"></snapshot>
-      <button class="ui-button submit" @click="onClick">将当前视角设为初始画面</button>
+      <button class="ui-button submit set-initial-view" :class="{disable: currentScene.type === '4dkk',}" @click="onClick">将当前视角设为初始画面</button>
     </template>
+
+    <div class="btn-4dkk-tip" v-if="currentScene.type ==='4dkk'">
+      <img src="@/assets/images/default/empty-go-4dkk.png" alt="" draggable="false">
+      <div>请前往四维时代个人中心编辑场景~</div>
+      <button class="ui-button submit" @click="onClickGo4dkk">立即前往</button>
+    </div>
   </div>
 </template>
 
@@ -30,7 +36,7 @@ export default {
   data() {
     return {
       showFlash: false,
-      inter: null
+      inter: null,
     }
   },
   computed: {
@@ -58,22 +64,44 @@ export default {
         })
       }
       if (newVal.type == '4dkk') {
-        return
-      }
+        $("#pano").empty();
+      } else {
+        $("#pano").empty();
+        window.vrInitFn = () => {
+          $waiting.hide()
+          __krfn.utils.initHotspot(this.$getKrpano(), newVal && newVal.someData, true);
+          __krfn.utils.toggleHotspot(this.$getKrpano(), this.$route.name == "hotspot");
+        };
+        window.vrViewFn = () => {
+          try {
+            let tmp = newVal.initVisual;
+            this.$getKrpano().set("view.vlookat", tmp.vlookat);
+            this.$getKrpano().set("view.hlookat", tmp.hlookat);
+          } catch (error) {
+            error;
+          }
+        };
 
-      $("#pano").empty();
-      window.vrInitFn = () => {
-        $waiting.hide()
-        __krfn.utils.initHotspot(this.$getKrpano(), newVal && newVal.someData, true);
-        __krfn.utils.toggleHotspot(this.$getKrpano(), this.$route.name == "hotspot");
-      };
-      window.vrViewFn = () => {
-        try {
-          let tmp = newVal.initVisual;
-          this.$getKrpano().set("view.vlookat", tmp.vlookat);
-          this.$getKrpano().set("view.hlookat", tmp.hlookat);
-        } catch (error) {
-          error;
+        var settings = {
+          "events[skin_events].onxmlcomplete": "js(window.vrViewFn());",
+          "events[skin_events].onloadcomplete": "js(window.vrInitFn());",
+        };
+
+        if (newVal) {
+          removepano("#pano");
+          $waiting.show();
+          embedpano({
+            // http://oss-xiaoan.oss-cn-shenzhen.aliyuncs.com/720yun_fd_manage/fd720_Va0LrkXW3/vtour/tour.xml
+            // xml: "%HTMLPATH%/static/template/tour.xml",
+            xml: `${this.$cdn}/720yun_fd_manage/${newVal.sceneCode}/vtour/tour.xml`,
+            swf: "%HTMLPATH%/static/template/tour.swf",
+            target: "pano",
+            html5: "auto",
+            mobilescale: 1,
+            vars: settings,
+            webglsettings: { preserveDrawingBuffer: true },
+            passQueryParameters: true,
+          });
         }
       };
 
@@ -144,13 +172,13 @@ export default {
           }
         });
     },
-
     addhotspot(param) {
       __krfn.utils.addhotspot(this.$getKrpano(), param, true);
       this.$store.commit("tags/setIsConfirmingPosi", param.name);
-
+    },
+    onClickGo4dkk() {
+      window.open('/#/')
     }
-
   },
   mounted() {
     window.__krfn = __krfn;
@@ -198,7 +226,7 @@ export default {
     }
   }
 
-  .ui-button {
+  button.set-initial-view {
     position: absolute;
     bottom: 260px;
     min-width: 200px;
@@ -206,5 +234,28 @@ export default {
     transform: translateX(-50%);
     z-index: 99;
   }
+
+  .btn-4dkk-tip {
+    position: absolute;
+    bottom: 50%;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 99;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    > img {
+      width: 120px;
+    }
+    > div {
+      color: #a3a3a3;
+      font-size: 14px;
+      white-space: pre;
+      margin-top: 1em;
+    }
+    > button {
+      margin-top: 14px;
+    }
+  }
 }
 </style>

+ 16 - 3
packages/qjkankan-editor/src/views/explanation/explanationSettings.vue

@@ -4,7 +4,14 @@
       语音讲解
       <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="'您可以为当前全景图添加语音讲解音频。'"/>
     </div>
-    <button v-if="!currentScene.explanation.audioId" class="ui-button submit" @click="isShowSelectionWindow = true">
+    <button
+      v-if="!currentScene.explanation.audioId"
+      class="ui-button submit"
+      :class="{
+        disable: !currentScene || currentScene.type ==='4dkk',
+      }"
+      @click="isShowSelectionWindow = true"
+    >
       <i class="iconfont icon-editor_add"></i>
       添加音频
     </button>
@@ -22,11 +29,17 @@
 
     <div class="switch-wrapper">
       <span class="label">默认开启</span>
-      <Switcher :value="currentScene.explanation.openByDefault" @change="currentScene.explanation.openByDefault = !currentScene.explanation.openByDefault"></Switcher>
+      <Switcher
+        :disable="!currentScene || currentScene.type ==='4dkk'"
+        :value="currentScene.explanation.openByDefault" @change="currentScene.explanation.openByDefault = !currentScene.explanation.openByDefault"
+      />
     </div>
     <div class="switch-wrapper">
       <span class="label">循环播放</span>
-      <Switcher :value="currentScene.explanation.repeat" @change="currentScene.explanation.repeat = !currentScene.explanation.repeat"></Switcher>
+      <Switcher
+        :disable="!currentScene || currentScene.type ==='4dkk'"
+        :value="currentScene.explanation.repeat" @change="currentScene.explanation.repeat = !currentScene.explanation.repeat"
+      />
     </div>
 
     <div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">

+ 1 - 1
packages/qjkankan-editor/src/views/hotspot/HotSpotList.vue

@@ -4,7 +4,7 @@
       热点设置
       <i class="iconfont icon-material_prompt tool-tip-for-editor" v-tooltip="'在全景图中添加图标热点,并设置热点的效果。'" />
     </div>
-    <button class="ui-button submit" :class="{ disable: !currentScene }" @click="open(null)">
+    <button class="ui-button submit" :class="{ disable: !currentScene || currentScene.type ==='4dkk' }" @click="open(null)">
       添加热点
     </button>
 

+ 4 - 0
packages/qjkankan-editor/src/views/material/pano/index.vue

@@ -215,19 +215,23 @@ export default {
     }
   },
   mounted() {
+    console.log('mounted!!!!!');
   },
   watch: {
     needLongPolling: {
       handler: function (newVal) {
         if (!newVal) {
+          console.log('dont need longpolling!!!!!!');
           this.clearinter();
         } else {
           this.clearinter();
+          console.log('need longpolling!!!!!');
           this.interval = setInterval(() => {
             this._checkMStatus();
           }, LONG_POLLING_INTERVAL * 1000);
         }
       },
+      immediate: true,
     },
     searchKey: {
       handler: function () {