|
@@ -1,28 +1,49 @@
|
|
|
<template>
|
|
|
<div class="panocon">
|
|
|
<template v-if="showInfo">
|
|
|
- <iframe allowfullscreen="true" v-if="activeItem.type == '4dkk'" :src="`/spc.html?m=${activeItem.sceneCode}&lang=zh`" frameborder="0"></iframe>
|
|
|
- <div v-show="activeItem.type != '4dkk'" id="pano"></div>
|
|
|
+ <iframe allowfullscreen="true" v-if="activeItem.type=='4dkk'"
|
|
|
+ :src="`/spc.html?m=${activeItem.sceneCode}&lang=zh`" frameborder="0"></iframe>
|
|
|
+ <div v-show="activeItem.type!='4dkk'" id="pano"></div>
|
|
|
|
|
|
- <div class="pano-logo" v-if="showInfo.isLogo && activeItem.type != '4dkk'">
|
|
|
- <img :src="showInfo.logo || require('@/assets/images/default/img_logoshow@2x.png')" alt="" />
|
|
|
+ <div class="pano-logo" v-if="showInfo.isLogo&&activeItem.type!='4dkk'">
|
|
|
+ <img :src="showInfo.logo||require('@/assets/images/default/img_logoshow@2x.png')" alt="" />
|
|
|
</div>
|
|
|
|
|
|
- <div class="oper-tips" :class="{ hidetips: !showTips }" v-if="localRemind">
|
|
|
- <img :src="showInfo.pcIcon || require('@/assets/images/default/show/img_tipspc_default.png')" alt="" />
|
|
|
+
|
|
|
+ <div
|
|
|
+ class="oper-tips"
|
|
|
+ :class="{ hidetips: !showTips }"
|
|
|
+ v-if="localRemind"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="
|
|
|
+ showInfo.pcIcon ||
|
|
|
+ require('@/assets/images/default/show/img_tipspc_default.png')
|
|
|
+ "
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
</div>
|
|
|
|
|
|
<list v-if="canLoad" @select="handleSelect" :select="activeItem"></list>
|
|
|
- <password :bg="showInfo.icon" :show="showPassword" @submit="handlePassword" @close="showPassword = false" />
|
|
|
+ <password
|
|
|
+ :bg="showInfo.icon"
|
|
|
+ :show="showPassword"
|
|
|
+ @submit="handlePassword"
|
|
|
+ @close="showPassword = false"
|
|
|
+ />
|
|
|
<popup :title="'简介'" :show="showIntro" @close="showIntro = false">
|
|
|
<div slot="content" class="introcon">
|
|
|
{{ showInfo.description || "暂无简介" }}
|
|
|
</div>
|
|
|
</popup>
|
|
|
|
|
|
- <preview :item="currentHotspot" :show="showPreview" @close="showPreview = false" />
|
|
|
+ <preview
|
|
|
+ :item="currentHotspot"
|
|
|
+ :show="showPreview"
|
|
|
+ @close="showPreview = false"
|
|
|
+ />
|
|
|
|
|
|
- <ul class="aside" v-if="activeItem.type != '4dkk'">
|
|
|
+ <ul class="aside" v-if="activeItem.type!='4dkk'">
|
|
|
<li v-for="(item, i) in aside" :key="i">
|
|
|
<span @click="handleItem(item)">
|
|
|
<i class="iconfont" :class="item.icon"></i>
|
|
@@ -32,21 +53,23 @@
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
<div class="hasDel" v-if="loadFinish">
|
|
|
- <div>
|
|
|
- <img :src="$noresult" alt="" />
|
|
|
- <p>作品已被删除</p>
|
|
|
- </div>
|
|
|
+ <div>
|
|
|
+ <img :src="$noresult" alt="">
|
|
|
+ <p>作品已被删除</p>
|
|
|
</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
</template>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import * as krfn from "@/core/index.js";
|
|
|
-import { getPanoInfo, checkPassword, checkWork } from "@/api";
|
|
|
+import { getPanoInfo, checkPassword,checkWork } from "@/api";
|
|
|
import password from "./popup/password";
|
|
|
import preview from "./popup/preview";
|
|
|
-import { $smallWaiting } from "@/components/shared/loading";
|
|
|
+import { $smallWaiting } from '@/components/shared/loading'
|
|
|
+
|
|
|
|
|
|
import popup from "./popup/";
|
|
|
import { mapGetters } from "vuex";
|
|
@@ -70,10 +93,10 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
showPreview: false,
|
|
|
- isFullscreen: false,
|
|
|
+ isFullscreen:false,
|
|
|
showTips: false,
|
|
|
canLoad: false,
|
|
|
- loadFinish: false,
|
|
|
+ loadFinish:false,
|
|
|
showPassword: false,
|
|
|
showIntro: false,
|
|
|
localRemind: false,
|
|
@@ -100,37 +123,37 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
onFullScreen() {
|
|
|
- let element = document.documentElement;
|
|
|
- if (this.isFullscreen) {
|
|
|
- if (document.exitFullscreen) {
|
|
|
- document.exitFullscreen();
|
|
|
- } else if (document.webkitCancelFullScreen) {
|
|
|
- document.webkitCancelFullScreen();
|
|
|
- } else if (document.mozCancelFullScreen) {
|
|
|
- document.mozCancelFullScreen();
|
|
|
- } else if (document.msExitFullscreen) {
|
|
|
- document.msExitFullscreen();
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (element.requestFullscreen) {
|
|
|
- element.requestFullscreen();
|
|
|
- } else if (element.webkitRequestFullScreen) {
|
|
|
- element.webkitRequestFullScreen();
|
|
|
- } else if (element.mozRequestFullScreen) {
|
|
|
- element.mozRequestFullScreen();
|
|
|
- } else if (element.msRequestFullscreen) {
|
|
|
- element.msRequestFullscreen();
|
|
|
+ let element = document.documentElement;
|
|
|
+ if (this.isFullscreen) {
|
|
|
+ if (document.exitFullscreen) {
|
|
|
+ document.exitFullscreen();
|
|
|
+ } else if (document.webkitCancelFullScreen) {
|
|
|
+ document.webkitCancelFullScreen();
|
|
|
+ } else if (document.mozCancelFullScreen) {
|
|
|
+ document.mozCancelFullScreen();
|
|
|
+ } else if (document.msExitFullscreen) {
|
|
|
+ document.msExitFullscreen();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (element.requestFullscreen) {
|
|
|
+ element.requestFullscreen();
|
|
|
+ } else if (element.webkitRequestFullScreen) {
|
|
|
+ element.webkitRequestFullScreen();
|
|
|
+ } else if (element.mozRequestFullScreen) {
|
|
|
+ element.mozRequestFullScreen();
|
|
|
+ } else if (element.msRequestFullscreen) {
|
|
|
+ element.msRequestFullscreen();
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- // 改变当前全屏状态
|
|
|
- this.isFullscreen = !this.isFullscreen;
|
|
|
- },
|
|
|
+ // 改变当前全屏状态
|
|
|
+ this.isFullscreen = !this.isFullscreen;
|
|
|
+ },
|
|
|
handleItem(data) {
|
|
|
if (data.id == "about") {
|
|
|
this.showIntro = true;
|
|
|
}
|
|
|
if (data.id == "full") {
|
|
|
- this.onFullScreen();
|
|
|
+ this.onFullScreen()
|
|
|
}
|
|
|
if (data.id == "vr") {
|
|
|
var krpano = document.getElementById("krpanoSWFObject");
|
|
@@ -148,7 +171,7 @@ export default {
|
|
|
if (res.code == 0) {
|
|
|
this.showPassword = false;
|
|
|
this.canLoad = true;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
);
|
|
|
},
|
|
@@ -170,13 +193,14 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
- tmp = this.$unique(tmp);
|
|
|
+ tmp = this.$unique(tmp)
|
|
|
|
|
|
this.showInfo.catalogs = tmp;
|
|
|
let rootmp = [];
|
|
|
tmp.forEach((item) => {
|
|
|
this.showInfo.catalogRoot.forEach((sub) => {
|
|
|
- sub.children = this.$unique(sub.children);
|
|
|
+
|
|
|
+ sub.children = this.$unique(sub.children)
|
|
|
|
|
|
if (sub.children.indexOf(item.id) > -1) {
|
|
|
rootmp.push(sub);
|
|
@@ -184,16 +208,18 @@ export default {
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- rootmp = this.$unique(rootmp);
|
|
|
|
|
|
- let sortArr = this.showInfo.catalogRoot.map((item) => item.name);
|
|
|
- rootmp.sort((a, b) => {
|
|
|
- return sortArr.indexOf(a.name) - sortArr.indexOf(b.name);
|
|
|
- });
|
|
|
+ rootmp = this.$unique(rootmp)
|
|
|
+
|
|
|
+ let sortArr = this.showInfo.catalogRoot.map(item=>item.name)
|
|
|
+ rootmp.sort((a,b)=>{
|
|
|
+ return sortArr.indexOf(a.name) - sortArr.indexOf(b.name)
|
|
|
+ })
|
|
|
+
|
|
|
|
|
|
this.showInfo.catalogRoot = rootmp.map((item) => {
|
|
|
let temp = [];
|
|
|
- item.children = this.$unique(item.children);
|
|
|
+ item.children = this.$unique(item.children)
|
|
|
item.children.forEach((sub) => {
|
|
|
tmp.forEach((jj) => {
|
|
|
if (jj.id == sub) {
|
|
@@ -207,15 +233,15 @@ export default {
|
|
|
};
|
|
|
});
|
|
|
|
|
|
- this.showInfo.catalogs = tmp;
|
|
|
+ this.showInfo.catalogs = tmp
|
|
|
|
|
|
- let cid = "c_" + this.$randomWord(true, 8, 8);
|
|
|
+ let cid = 'c_'+this.$randomWord(true,8,8)
|
|
|
|
|
|
if (this.showInfo.catalogRoot.length <= 0) {
|
|
|
this.showInfo.catalogRoot.push({
|
|
|
- id: "r_" + this.$randomWord(true, 8, 8),
|
|
|
+ id: 'r_'+this.$randomWord(true,8,8),
|
|
|
name: "全部场景",
|
|
|
- children: [cid],
|
|
|
+ children:[cid]
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -227,25 +253,28 @@ export default {
|
|
|
}
|
|
|
|
|
|
if (this.showInfo.firstScene) {
|
|
|
- this.showInfo.firstScene = this.showInfo.scenes.find((item) => item.sceneCode == this.showInfo.firstScene.sceneCode);
|
|
|
+ this.showInfo.firstScene = this.showInfo.scenes.find(item=>item.sceneCode==this.showInfo.firstScene.sceneCode)
|
|
|
}
|
|
|
|
|
|
this.$store.commit("SetShowInfo", this.showInfo);
|
|
|
},
|
|
|
|
|
|
getSceneInfo() {
|
|
|
- checkWork("", (data) => {
|
|
|
+ checkWork("",data=>{
|
|
|
if (data.data) {
|
|
|
- getPanoInfo("", (res) => {
|
|
|
- this.$store.commit("SetShowInfo", res);
|
|
|
- this.fixData();
|
|
|
- this.loadFinish = true;
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.loadFinish = true;
|
|
|
+ getPanoInfo(
|
|
|
+ "",
|
|
|
+ (res) => {
|
|
|
+ this.$store.commit("SetShowInfo", res);
|
|
|
+ this.fixData()
|
|
|
+ this.loadFinish = true
|
|
|
+ }
|
|
|
+ );
|
|
|
+ } else{
|
|
|
+ this.loadFinish = true
|
|
|
}
|
|
|
- });
|
|
|
- },
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
watch: {
|
|
|
currentHotspot: {
|
|
@@ -267,7 +296,7 @@ export default {
|
|
|
canLoad(newVal) {
|
|
|
if (newVal) {
|
|
|
setTimeout(() => {
|
|
|
- this.showTips = this.localRemind;
|
|
|
+ this.showTips = this.localRemind
|
|
|
setTimeout(() => {
|
|
|
this.showTips = false;
|
|
|
}, this.showInfo.remindTime * 1000);
|
|
@@ -279,20 +308,21 @@ export default {
|
|
|
immediate: true,
|
|
|
handler: function (newVal) {
|
|
|
if (newVal) {
|
|
|
- document.title = newVal.name || "无标题";
|
|
|
- let locoR = "localRemind" + newVal.id;
|
|
|
+ document.title = newVal.name || '无标题'
|
|
|
+ let locoR = "localRemind"+newVal.id
|
|
|
if (!newVal.description) {
|
|
|
- this.aside.shift();
|
|
|
+ this.aside.shift()
|
|
|
}
|
|
|
- if (newVal.isRemind == 1) {
|
|
|
- this.localRemind = localStorage.getItem(locoR) == 1 ? false : true;
|
|
|
+ if (newVal.isRemind==1) {
|
|
|
+ this.localRemind = localStorage.getItem(locoR) == 1 ? false : true
|
|
|
localStorage.setItem(locoR, 1);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else{
|
|
|
this.localRemind = true;
|
|
|
localStorage.setItem(locoR, 0);
|
|
|
}
|
|
|
if (this.showInfo.firstScene) {
|
|
|
- if (this.showInfo.firstScene.type == "4dkk") {
|
|
|
+ if (this.showInfo.firstScene.type == '4dkk') {
|
|
|
this.localRemind = false;
|
|
|
}
|
|
|
}
|
|
@@ -302,19 +332,19 @@ export default {
|
|
|
},
|
|
|
activeItem: {
|
|
|
handler(newVal) {
|
|
|
- this.currentHotspot = "";
|
|
|
+ this.currentHotspot = ''
|
|
|
$("#pano").empty();
|
|
|
window.vrInitFn = () => {
|
|
|
- $smallWaiting.hide();
|
|
|
+ $smallWaiting.hide()
|
|
|
var krpano = document.getElementById("krpanoSWFObject");
|
|
|
__krfn.utils.initHotspot(krpano, newVal && newVal.someData, false);
|
|
|
};
|
|
|
window.vrViewFn = () => {
|
|
|
try {
|
|
|
- let tmp = newVal.initVisual || {};
|
|
|
+ let tmp = newVal.initVisual||{};
|
|
|
var krpano = document.getElementById("krpanoSWFObject");
|
|
|
- krpano.set("view.vlookat", tmp.vlookat || 0);
|
|
|
- krpano.set("view.hlookat", tmp.hlookat || 0);
|
|
|
+ krpano.set("view.vlookat", tmp.vlookat||0);
|
|
|
+ krpano.set("view.hlookat", tmp.hlookat||0);
|
|
|
krpano.set("autorotate.enabled", Boolean(this.showInfo.isAuto));
|
|
|
} catch (error) {
|
|
|
error;
|
|
@@ -325,13 +355,13 @@ export default {
|
|
|
"events[skin_events].onloadcomplete": "js(window.vrInitFn());",
|
|
|
};
|
|
|
if (newVal) {
|
|
|
- if (newVal.type == "4dkk") {
|
|
|
- removepano("#pano");
|
|
|
- $("#pano").empty();
|
|
|
- return;
|
|
|
+ if (newVal.type=='4dkk') {
|
|
|
+ removepano("#pano");
|
|
|
+ $("#pano").empty();
|
|
|
+ return
|
|
|
}
|
|
|
removepano("#pano");
|
|
|
- $smallWaiting.show();
|
|
|
+ $smallWaiting.show()
|
|
|
|
|
|
embedpano({
|
|
|
// xml: "%HTMLPATH%/static/template/tour.xml",
|
|
@@ -351,8 +381,8 @@ export default {
|
|
|
window.__krfn = __krfn;
|
|
|
|
|
|
this.$bus.on("clickHotspot", (data) => {
|
|
|
- let someData = this.activeItem.someData;
|
|
|
- if (typeof someData == "string") {
|
|
|
+ let someData = this.activeItem.someData
|
|
|
+ if (typeof someData == 'string') {
|
|
|
someData = JSON.parse(this.activeItem.someData);
|
|
|
}
|
|
|
let idx = someData.hotspots.findIndex((item) => item.name == data);
|
|
@@ -368,20 +398,20 @@ export default {
|
|
|
.panocon {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
- .hasDel {
|
|
|
+ .hasDel{
|
|
|
background: #fff;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
position: relative;
|
|
|
- > div {
|
|
|
+ >div{
|
|
|
position: absolute;
|
|
|
top: 50%;
|
|
|
left: 50%;
|
|
|
- transform: translate(-50%, -50%);
|
|
|
+ transform: translate(-50%,-50%);
|
|
|
color: #909090;
|
|
|
text-align: center;
|
|
|
font-size: 18px;
|
|
|
- > p {
|
|
|
+ >p{
|
|
|
margin-top: 20px;
|
|
|
}
|
|
|
}
|
|
@@ -390,7 +420,7 @@ export default {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
- > iframe {
|
|
|
+ >iframe{
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|