|
|
@@ -0,0 +1,215 @@
|
|
|
+import { defineComponent, ref } from 'vue';
|
|
|
+import { homeApi } from '@/api';
|
|
|
+import SharePopup from '../share-popup/index.vue';
|
|
|
+import './index.pb.scss';
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'HomeMenu',
|
|
|
+ props: {
|
|
|
+ likeCount: {
|
|
|
+ type: Number,
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ handleLikeCounter: {
|
|
|
+ type: Function,
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ setup(props) {
|
|
|
+ const isSimpleMode = ref(false);
|
|
|
+ const shareVisible = ref(false);
|
|
|
+ const animationThumb = ref(false);
|
|
|
+
|
|
|
+ const toggleSimpleMode = (on?: boolean) => {
|
|
|
+ const next = typeof on === 'boolean' ? on : !isSimpleMode.value;
|
|
|
+ isSimpleMode.value = next;
|
|
|
+ try {
|
|
|
+ if (next) document.documentElement.classList.add('simple-mode');
|
|
|
+ else document.documentElement.classList.remove('simple-mode');
|
|
|
+ } catch (e) {
|
|
|
+ // ignore
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const handleThumb = () => {
|
|
|
+ if (animationThumb.value) return;
|
|
|
+
|
|
|
+ animationThumb.value = true;
|
|
|
+ homeApi.saveStar(window.number);
|
|
|
+ props.handleLikeCounter(props.likeCount + 1);
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ animationThumb.value = false;
|
|
|
+ }, 200);
|
|
|
+ };
|
|
|
+
|
|
|
+ return {
|
|
|
+ isSimpleMode,
|
|
|
+ shareVisible,
|
|
|
+ animationThumb,
|
|
|
+ handleThumb,
|
|
|
+ toggleSimpleMode,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <div>
|
|
|
+ <div class="pinBottom-container">
|
|
|
+ <div class="pinBottom left">
|
|
|
+ <div id="previous" class="previous desktop-only ui-icon" style="display: none;">
|
|
|
+ <a>
|
|
|
+ <img src="images/pb/play.png" width="24" height="24" data-original-title="播放" />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <el-tooltip content="播放" show-arrow={false} offset={5}>
|
|
|
+ <div id="play" class="ui-icon">
|
|
|
+ <a>
|
|
|
+ <img src="images/pb/play.png" width="24" height="24" />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <div id="pause" class="ui-icon" style="display: none;">
|
|
|
+ <a>
|
|
|
+ <img title="暂停" src="images/pb/pause.png" width="24" height="24" />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <div id="next" class="next desktop-only ui-icon wide" style="display: none;">
|
|
|
+ <a>
|
|
|
+ <i title="" class="icon icon-dpad-right" data-original-title="下一个"></i>
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <el-tooltip content="导览" show-arrow={false} offset={5}>
|
|
|
+ <div id="pullTab" title="">
|
|
|
+ <img
|
|
|
+ class="icon icon-inside"
|
|
|
+ src="images/pb/auto.png"
|
|
|
+ title="导览"
|
|
|
+ data-default-url="images/pb/auto.png"
|
|
|
+ data-active-url="images/pb/auto.png"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <div id="hotList" title="" style="display: none">
|
|
|
+ <el-tooltip content="热点列表" show-arrow={false} offset={5}>
|
|
|
+ <img class="icon icon-inside" src="images/pb/hotlist.png" title="热点列表" />
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ data-original-title="全景漫游"
|
|
|
+ id="gui-modes-inside"
|
|
|
+ title=""
|
|
|
+ class=""
|
|
|
+ style="display:none"
|
|
|
+ >
|
|
|
+ <img class="icon icon-inside" src="images/inside.png" title="全景漫游" />
|
|
|
+ </div>
|
|
|
+ <el-tooltip content="迷你模型" show-arrow={false} offset={5}>
|
|
|
+ <div id="gui-modes-dollhouse" title="" class="">
|
|
|
+ <img class="icon icon-inside" src="images/pb/model.png" title="迷你模型" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <div
|
|
|
+ data-original-title="俯视图"
|
|
|
+ id="gui-modes-floorplan"
|
|
|
+ title=""
|
|
|
+ style="display:none"
|
|
|
+ >
|
|
|
+ <img class="icon icon-inside" src="images/floor.png" title="俯视图" />
|
|
|
+ </div>
|
|
|
+ <el-tooltip content="展品列表" show-arrow={false} offset={5}>
|
|
|
+ <div id="gui-modes-antlist" title="" class="">
|
|
|
+ <img class="icon icon-inside" src="images/pb/antlist.png" title="展品列表" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content="章节列表" show-arrow={false} offset={5}>
|
|
|
+ <div id="gui-modes-chapter" title="" class="">
|
|
|
+ <img class="icon icon-inside" src="images/pb/chapter.png" title="章节列表" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content={`${this.likeCount}`} show-arrow={false} offset={5}>
|
|
|
+ <div
|
|
|
+ id="thumb"
|
|
|
+ data-original-title="点赞"
|
|
|
+ class={{ active: this.animationThumb }}
|
|
|
+ onClick={this.handleThumb}
|
|
|
+ >
|
|
|
+ <div class="icon icon-slot" title="点赞" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content="分享" show-arrow={false} offset={5}>
|
|
|
+ <div id="sharing" onClick={() => (this.shareVisible = true)}>
|
|
|
+ <img class="icon icon-inside" src="images/pb/share.png" title="分享" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content="全屏" show-arrow={false} offset={5}>
|
|
|
+ <div
|
|
|
+ id="gui-fullscreen"
|
|
|
+ class="ui-icon wide"
|
|
|
+ data-placement="top"
|
|
|
+ title="{[{ VIEW_FULLSCREEN }]}"
|
|
|
+ >
|
|
|
+ <a>
|
|
|
+ <img class="icon icon-fullscreen" src="images/pb/enlarge_on.png" />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+ <div
|
|
|
+ id="gui-fullscreen-exit"
|
|
|
+ class="ui-icon wide"
|
|
|
+ data-placement="top"
|
|
|
+ title="{[{ EXIT_FULLSCREEN }]}"
|
|
|
+ style="display: none;"
|
|
|
+ >
|
|
|
+ <a>
|
|
|
+ <img class="icon icon-fullscreen-exit" src="images/pb/narrow_off.png" />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <el-tooltip content="清屏" show-arrow={false} offset={5}>
|
|
|
+ <div onClick={() => this.toggleSimpleMode(true)}>
|
|
|
+ <img class="icon icon-inside" src="images/pb/simple.png" title="清屏" />
|
|
|
+ </div>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+ <div data-original-title="VR" id="vr" title="" style="display: none;">
|
|
|
+ <img class="icon icon-inside" src="images/VR.png" title="VR" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ data-original-title="消除外壳"
|
|
|
+ id="gui-remove-face"
|
|
|
+ title=""
|
|
|
+ style="display: none; float: left;"
|
|
|
+ >
|
|
|
+ <img class="icon icon-inside" src="images/face.jpg" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="pinBottom right">
|
|
|
+ <div id="volume" class="ui-icon wide" style="display: none">
|
|
|
+ <a>
|
|
|
+ <img
|
|
|
+ src="images/Volume btn_on.png"
|
|
|
+ width="24"
|
|
|
+ height="24"
|
|
|
+ data-default-url="images/Volume btn_on.png"
|
|
|
+ data-active-url="images/Volume btn_off.png"
|
|
|
+ />
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <div id="vr" class="ui-icon wide hidden">
|
|
|
+ <a>
|
|
|
+ <i title="{[{ VIEW_IN_VR }]}" class="icon icon-webvr"></i>
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div
|
|
|
+ class={['pinBottom-exit-simple', { active: this.isSimpleMode }]}
|
|
|
+ onClick={() => this.toggleSimpleMode(false)}
|
|
|
+ >
|
|
|
+ 退出清屏
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <SharePopup visible={this.shareVisible} onUpdate:visible={(v) => (this.shareVisible = v)} />
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ },
|
|
|
+});
|