|
@@ -1,50 +1,121 @@
|
|
|
<template>
|
|
|
<div class="cover-panel">
|
|
|
- <div class="title">
|
|
|
- <!-- {{ $i18n.t("explanation.explanation_settings") }} -->
|
|
|
- 遮罩设置
|
|
|
- <i
|
|
|
- class="iconfont icon-help_i tool-tip-for-editor"
|
|
|
- v-tooltip="$i18n.t('explanation.explanation_tips')"
|
|
|
- />
|
|
|
- </div>
|
|
|
+ <template v-if="currentScene.type !== '4dkk'">
|
|
|
+ <div class="title">
|
|
|
+ <!-- {{ $i18n.t("explanation.explanation_settings") }} -->
|
|
|
+ 遮罩设置
|
|
|
+ <i
|
|
|
+ class="iconfont icon-help_i tool-tip-for-editor"
|
|
|
+ v-tooltip="$i18n.t('explanation.explanation_tips')"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <!-- sky start -->
|
|
|
+ <div class="swi-col">
|
|
|
+ <span> 天空遮罩 </span>
|
|
|
+ <switcher
|
|
|
+ :value="sky.isShow"
|
|
|
+ @change="(value) => (sky.isShow = Boolean(value))"
|
|
|
+ ></switcher>
|
|
|
+ </div>
|
|
|
+ <div class="swi-col update-col">
|
|
|
+ <SelectedImage
|
|
|
+ :imgSrc="sky.icon"
|
|
|
+ :defaultImgSrc="
|
|
|
+ require(`@/assets/images/default/mask_bg_${$lang}.png`)
|
|
|
+ "
|
|
|
+ @cancel="onClickCancelSkyLogo"
|
|
|
+ ></SelectedImage>
|
|
|
+ <div class="action">
|
|
|
+ <button @click="onSelectPic('sky')" class="ui-button submit">
|
|
|
+ 选择图片
|
|
|
+ </button>
|
|
|
+ <div
|
|
|
+ class="ui-remark"
|
|
|
+ v-html="$i18n.t(`edit_settings.mask_size`)"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
- <div class="swi-col">
|
|
|
- <span> 天空遮罩 </span>
|
|
|
- <switcher
|
|
|
- :value="sky.isShow"
|
|
|
- @change="(value) => (sky.isShow = Boolean(value))"
|
|
|
- ></switcher>
|
|
|
- </div>
|
|
|
- <div class="swi-col update-col">
|
|
|
- <SelectedImage
|
|
|
- :imgSrc="sky.icon"
|
|
|
- :defaultImgSrc="require(`@/assets/images/default/mask_bg_${$lang}.png`)"
|
|
|
- @cancel="onClickCancelSkyLogo"
|
|
|
- ></SelectedImage>
|
|
|
- <div class="action">
|
|
|
- <button @click="onSelectPic('sky')" class="ui-button submit">
|
|
|
- 选择图片
|
|
|
- </button>
|
|
|
- <div
|
|
|
- class="ui-remark"
|
|
|
- v-html="$i18n.t(`edit_settings.mask_size`)"
|
|
|
- ></div>
|
|
|
+ <div class="up-col">
|
|
|
+ <span> 缩放比例 </span>
|
|
|
+
|
|
|
+ <slider
|
|
|
+ v-model="sky.scale"
|
|
|
+ show-stops
|
|
|
+ :marks="scaleMarks"
|
|
|
+ :step="0.1"
|
|
|
+ :min="0.5"
|
|
|
+ :max="2"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <!-- sky end -->
|
|
|
+ <div style="margin: 30px 0"></div>
|
|
|
+ <!-- earth start -->
|
|
|
+ <div class="swi-col">
|
|
|
+ <span> 地面遮罩 </span>
|
|
|
+ <switcher
|
|
|
+ :value="earth.isShow"
|
|
|
+ @change="(value) => (earth.isShow = Boolean(value))"
|
|
|
+ ></switcher>
|
|
|
+ </div>
|
|
|
+ <div class="swi-col update-col">
|
|
|
+ <SelectedImage
|
|
|
+ :imgSrc="earth.icon"
|
|
|
+ :defaultImgSrc="
|
|
|
+ require(`@/assets/images/default/mask_bg_${$lang}.png`)
|
|
|
+ "
|
|
|
+ @cancel="onClickCancelSkyLogo"
|
|
|
+ ></SelectedImage>
|
|
|
+ <div class="action">
|
|
|
+ <button @click="onSelectPic('earth')" class="ui-button submit">
|
|
|
+ 选择图片
|
|
|
+ </button>
|
|
|
+ <div
|
|
|
+ class="ui-remark"
|
|
|
+ v-html="$i18n.t(`edit_settings.mask_size`)"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="up-col">
|
|
|
- <span> 缩放比例 </span>
|
|
|
+ <div class="up-col">
|
|
|
+ <span> 缩放比例 </span>
|
|
|
|
|
|
- <slider
|
|
|
- v-model="sky.scale"
|
|
|
- show-stops
|
|
|
- :marks="scaleMarks"
|
|
|
- :step="0.1"
|
|
|
- :min="0.5"
|
|
|
- :max="2"
|
|
|
- />
|
|
|
+ <slider
|
|
|
+ v-model="earth.scale"
|
|
|
+ show-stops
|
|
|
+ :marks="scaleMarks"
|
|
|
+ :step="0.1"
|
|
|
+ :min="0.5"
|
|
|
+ :max="2"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <!-- earth end -->
|
|
|
+
|
|
|
+ <div class="swi-col" style="padding-top: 15px">
|
|
|
+ <span> 应用到全部全景图 </span>
|
|
|
+ <switcher
|
|
|
+ :value="isApplyToAll"
|
|
|
+ @change="(value) => (isApplyToAll = Boolean(value))"
|
|
|
+ ></switcher>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="goto-4dkk-tip" v-if="currentScene.type === '4dkk'">
|
|
|
+ <div class="img-wrap">
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/default/goto-4dage.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ />
|
|
|
+ <div class="tip-text">
|
|
|
+ {{ $i18n.t("screen.goto_4dkk_edit_tips") }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <button class="ui-button submit" @click="onClickGo4dkk">
|
|
|
+ {{ $i18n.t("navigation.go_scene_editor") }}
|
|
|
+ </button>
|
|
|
</div>
|
|
|
+
|
|
|
<div class="dialog" style="z-index: 2000" v-if="isShowSelectionWindow">
|
|
|
<MaterialSelector
|
|
|
:title="$i18n.t(`gather.select_material`)"
|
|
@@ -76,6 +147,7 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ isApplyToAll: false,
|
|
|
isShowSelectionWindow: false,
|
|
|
isSelect: "",
|
|
|
scaleMarks: {
|
|
@@ -103,37 +175,56 @@ export default {
|
|
|
if (this.currentScene.type === "pano" && val) {
|
|
|
this.currentScene.customMask.sky = val;
|
|
|
this.updateCurrentScene();
|
|
|
+ this.handlePeakStatus(val.isShow);
|
|
|
+ this.handlePeakScale(val.scale);
|
|
|
+ this.handlePeakURL(val.icon);
|
|
|
}
|
|
|
},
|
|
|
deep: true,
|
|
|
},
|
|
|
- "sky.isShow": {
|
|
|
+ earth: {
|
|
|
handler: function (val) {
|
|
|
- this.handlePeakStatus(val);
|
|
|
+ if (this.currentScene.type === "pano" && val) {
|
|
|
+ this.currentScene.customMask.earth = val;
|
|
|
+ this.updateCurrentScene();
|
|
|
+ this.handleNadirStatus(val.isShow);
|
|
|
+ this.handleNadirScale(val.scale);
|
|
|
+ this.handleNadirURL(val.icon);
|
|
|
+ }
|
|
|
},
|
|
|
- immediate: true,
|
|
|
+ deep: true,
|
|
|
},
|
|
|
- "sky.scale": {
|
|
|
+ isApplyToAll: {
|
|
|
handler: function (val) {
|
|
|
- this.handlePeakScale(val);
|
|
|
+ if (val) {
|
|
|
+ this.$confirm({
|
|
|
+ content: "是否应用到全部全景图?",
|
|
|
+ ok: () => {},
|
|
|
+ no: () => {
|
|
|
+ this.isApplyToAll = false;
|
|
|
+ },
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
immediate: true,
|
|
|
},
|
|
|
- "sky.icon": {
|
|
|
- handler: function (val) {
|
|
|
- this.handlePeakURL(val);
|
|
|
+ "currentScene.customMask": {
|
|
|
+ handler: function (newVal) {
|
|
|
+ if (newVal) {
|
|
|
+ const { sky, earth } = newVal;
|
|
|
+ this.sky = sky;
|
|
|
+ this.earth = earth;
|
|
|
+ }
|
|
|
},
|
|
|
+ deep: true,
|
|
|
immediate: true,
|
|
|
},
|
|
|
},
|
|
|
- mounted() {
|
|
|
- const { customMask } = this.currentScene;
|
|
|
- if (customMask) {
|
|
|
- this.sky = this.currentScene.customMask.sky;
|
|
|
- this.earth = this.currentScene.customMask.earth;
|
|
|
- }
|
|
|
- },
|
|
|
+ mounted() {},
|
|
|
methods: {
|
|
|
+ onClickGo4dkk() {
|
|
|
+ window.open("/#/scene");
|
|
|
+ },
|
|
|
onClickCancelSkyLogo() {
|
|
|
this.handlePeakURL("/static/template/skin/masking.png");
|
|
|
},
|
|
@@ -150,7 +241,7 @@ export default {
|
|
|
const status_b = !!status;
|
|
|
const kr = this.$getKrpano();
|
|
|
if (kr) {
|
|
|
- console.log("handlePeakStatus", status);
|
|
|
+ // console.log("handlePeakStatus", status);
|
|
|
kr.set("hotspot[peaklogo].visible", status_b);
|
|
|
}
|
|
|
},
|
|
@@ -166,6 +257,25 @@ export default {
|
|
|
kr.set("hotspot[peaklogo].scale", scale);
|
|
|
}
|
|
|
},
|
|
|
+ handleNadirStatus(status) {
|
|
|
+ const status_b = !!status;
|
|
|
+ const kr = this.$getKrpano();
|
|
|
+ if (kr) {
|
|
|
+ kr.set("hotspot[nadirlogo].visible", status_b);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleNadirURL(url) {
|
|
|
+ const kr = this.$getKrpano();
|
|
|
+ if (kr && url) {
|
|
|
+ kr.set("hotspot[nadirlogo].url", url);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleNadirScale(scale) {
|
|
|
+ const kr = this.$getKrpano();
|
|
|
+ if (kr) {
|
|
|
+ kr.set("hotspot[nadirlogo].scale", scale);
|
|
|
+ }
|
|
|
+ },
|
|
|
updateCurrentScene() {
|
|
|
this.$store.dispatch("scene/syncCurrentSceneToStore");
|
|
|
},
|
|
@@ -228,5 +338,28 @@ export default {
|
|
|
width: 120px;
|
|
|
height: 120px;
|
|
|
}
|
|
|
+ .goto-4dkk-tip {
|
|
|
+ > .img-wrap {
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+ > .img {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ > .tip-text {
|
|
|
+ position: absolute;
|
|
|
+ left: 50%;
|
|
|
+ bottom: 32px;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ font-size: 14px;
|
|
|
+ color: #fff;
|
|
|
+ opacity: 0.6;
|
|
|
+ white-space: pre;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ > button {
|
|
|
+ margin-top: 16px;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|