|
@@ -10,245 +10,13 @@
|
|
|
loop
|
|
|
autoplay
|
|
|
/>
|
|
|
-
|
|
|
- <button
|
|
|
- class="close"
|
|
|
- @click="onClickClose"
|
|
|
- >
|
|
|
- <img
|
|
|
- src="@/assets/images/close.png"
|
|
|
- alt="关闭"
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- </button>
|
|
|
- <div
|
|
|
- class="bg-wrapper"
|
|
|
- :style="{
|
|
|
- backgroundImage: `url(${bgImg})`,
|
|
|
- }"
|
|
|
- >
|
|
|
- <h1
|
|
|
- :title="hotspotData.title"
|
|
|
- :style="{
|
|
|
- backgroundImage: `url(${titleBottomLine})`,
|
|
|
- }"
|
|
|
- v-html="hotspotData.title"
|
|
|
- />
|
|
|
- <div
|
|
|
- class="desc"
|
|
|
- v-html="descForShow"
|
|
|
- />
|
|
|
- <menu>
|
|
|
- <button
|
|
|
- v-if="bgAudioUrl"
|
|
|
- @click="isBgAudioMuted = !isBgAudioMuted"
|
|
|
- >
|
|
|
- <img
|
|
|
- v-show="isBgAudioMuted"
|
|
|
- class="bg-audio-control"
|
|
|
- src="@/assets/images/bg-audio.png"
|
|
|
- alt=""
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- <img
|
|
|
- v-show="!isBgAudioMuted"
|
|
|
- class="bg-audio-control"
|
|
|
- src="@/assets/images/bg-audio-muted.png"
|
|
|
- alt=""
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- </button>
|
|
|
- <!-- <button @click="onClickLike">
|
|
|
- <img
|
|
|
- class="like"
|
|
|
- src="@/assets/images/like.png"
|
|
|
- alt=""
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- <transition name="bubble">
|
|
|
- <div
|
|
|
- v-if="isShowPlusOne"
|
|
|
- class="plus-one"
|
|
|
- >
|
|
|
- +1
|
|
|
- </div>
|
|
|
- </transition>
|
|
|
- </button> -->
|
|
|
- <!-- <button @click="onClickShare">
|
|
|
- <img
|
|
|
- class="share"
|
|
|
- src="@/assets/images/share.png"
|
|
|
- alt=""
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- </button> -->
|
|
|
- </menu>
|
|
|
-
|
|
|
- <div
|
|
|
- v-if="isShowVideos"
|
|
|
- v-show="!isShowShare"
|
|
|
- class="swiper-wrapper-mine video-wrap"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-root"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-wrapper"
|
|
|
- >
|
|
|
- <div
|
|
|
- v-for="(item, index) in hotspotData.video"
|
|
|
- :key="index"
|
|
|
- class="swiper-slide"
|
|
|
- >
|
|
|
- <video
|
|
|
- ref="video"
|
|
|
- :src="item.url"
|
|
|
- controls
|
|
|
- controlslist="nodownload"
|
|
|
- disablePictureInPicture
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="swiper-pagination" />
|
|
|
- <div class="swiper-button-prev" />
|
|
|
- <div class="swiper-button-next" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div
|
|
|
- v-if="isShowModels"
|
|
|
- class="swiper-wrapper-mine model-wrap"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-root"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-wrapper"
|
|
|
- >
|
|
|
- <iframe
|
|
|
- v-for="(item, index) in hotspotData.model"
|
|
|
- :key="index"
|
|
|
- :src="item"
|
|
|
- frameborder="0"
|
|
|
- class="swiper-slide"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="swiper-pagination" />
|
|
|
- <div class="swiper-button-prev" />
|
|
|
- <div class="swiper-button-next" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div
|
|
|
- v-if="isShowAudios"
|
|
|
- v-show="!isShowShare"
|
|
|
- class="swiper-wrapper-mine audio-wrap"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-root"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-wrapper"
|
|
|
- >
|
|
|
- <div
|
|
|
- v-for="(item, index) in hotspotData.audio"
|
|
|
- :key="index"
|
|
|
- class="swiper-slide"
|
|
|
- >
|
|
|
- <audio
|
|
|
- ref="audio"
|
|
|
- :src="item.url"
|
|
|
- controls
|
|
|
- controlslist="nodownload"
|
|
|
- disablePictureInPicture
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="swiper-pagination" />
|
|
|
- <div class="swiper-button-prev" />
|
|
|
- <div class="swiper-button-next" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div
|
|
|
- v-if="isShowImages"
|
|
|
- v-show="!isShowShare"
|
|
|
- class="swiper-wrapper-mine image-wrap"
|
|
|
- >
|
|
|
- <div
|
|
|
- class="swiper-root"
|
|
|
- >
|
|
|
- <div
|
|
|
- v-viewer="{
|
|
|
- button: true,
|
|
|
- navbar: false,
|
|
|
- title: false,
|
|
|
- toolbar: false,
|
|
|
- tooltip: false,
|
|
|
- movable: true,
|
|
|
- zoomable: true,
|
|
|
- rotatable: true,
|
|
|
- scalable: true,
|
|
|
- transition: false,
|
|
|
- fullscreen: false,
|
|
|
- keyboard: true,
|
|
|
- loop: false,
|
|
|
- }"
|
|
|
- class="swiper-wrapper"
|
|
|
- >
|
|
|
- <img
|
|
|
- v-for="(item, index) in hotspotData.images"
|
|
|
- :key="index"
|
|
|
- v-lazy="item"
|
|
|
- class="swiper-slide"
|
|
|
- alt=""
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- </div>
|
|
|
- <div class="swiper-pagination">
|
|
|
- <!-- <span
|
|
|
- class="cur"
|
|
|
- >
|
|
|
- {{ currentSlideIdx + 1 }}
|
|
|
- </span>
|
|
|
- /
|
|
|
- <span>
|
|
|
- {{ hotspotData.Images ? hotspotData.images.length : '' }}
|
|
|
- </span> -->
|
|
|
- </div>
|
|
|
- <div class="swiper-button-prev" />
|
|
|
- <div class="swiper-button-next" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div
|
|
|
- v-if="isShowShare"
|
|
|
- v-click-outside.click="closeCode2d"
|
|
|
- class="share-wrap"
|
|
|
- >
|
|
|
- <img
|
|
|
- src="@/assets/images/code2d.png"
|
|
|
- alt=""
|
|
|
- class="code"
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- <img
|
|
|
- src="@/assets/images/share-tip.png"
|
|
|
- alt=""
|
|
|
- class="tip"
|
|
|
- draggable="false"
|
|
|
- >
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <router-view />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import Swiper from 'swiper/swiper-bundle.esm.js'
|
|
|
-import 'swiper/swiper-bundle.css'
|
|
|
-import bgImg from "@/assets/images/bg.png"
|
|
|
-import titleBottomLine from "@/assets/images/title-bottom-line.png"
|
|
|
// import browser from "@/utils/browser";
|
|
|
+import quizData from "@/quizData.js"
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
@@ -257,29 +25,9 @@ export default {
|
|
|
|
|
|
bgAudioUrl: "", //背景音频url
|
|
|
isBgAudioMuted: false,
|
|
|
-
|
|
|
- isShowImages: false,
|
|
|
- isShowVideos: false,
|
|
|
- isShowModels: false,
|
|
|
- isShowAudios: false,
|
|
|
-
|
|
|
- currentSlideIdx: 0,
|
|
|
- bgImg,
|
|
|
- titleBottomLine,
|
|
|
- isShowPlusOne: false,
|
|
|
- isShowShare: false,
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- descForShow() {
|
|
|
- if (this.isShowImages) {
|
|
|
- return this.hotspotData.imagesDesc[this.currentSlideIdx] || this.hotspotData.content
|
|
|
- } else if (this.isShowVideos) {
|
|
|
- return this.hotspotData.videosDesc[this.currentSlideIdx] || this.hotspotData.content
|
|
|
- } else {
|
|
|
- return this.hotspotData.content
|
|
|
- }
|
|
|
- },
|
|
|
},
|
|
|
watch: {
|
|
|
isBgAudioMuted: {
|
|
@@ -294,70 +42,20 @@ export default {
|
|
|
},
|
|
|
async mounted() {
|
|
|
await this.getData()
|
|
|
- this.$nextTick(() => {
|
|
|
- const that = this
|
|
|
- new Swiper('.swiper-root', {
|
|
|
- pagination: {
|
|
|
- el: '.swiper-pagination',
|
|
|
- },
|
|
|
- navigation: {
|
|
|
- nextEl: '.swiper-button-next',
|
|
|
- prevEl: '.swiper-button-prev',
|
|
|
- },
|
|
|
-
|
|
|
- on: {
|
|
|
- // 自动播放
|
|
|
- afterInit: function (e) {
|
|
|
- if (that.isShowVideos) {
|
|
|
- that.$nextTick(() => {
|
|
|
- that.$refs.video[0].play()
|
|
|
- })
|
|
|
- }
|
|
|
- if (that.isShowAudios) {
|
|
|
- that.$nextTick(() => {
|
|
|
- that.$refs.audio[0].play()
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- slideChange: function(e) {
|
|
|
- that.currentSlideIdx = e.activeIndex
|
|
|
-
|
|
|
- // 自动播放
|
|
|
- if (that.isShowVideos) {
|
|
|
- for (let index = 0; index < that.$refs.video.length; index++) {
|
|
|
- if (index !== that.currentSlideIdx) {
|
|
|
- that.$refs.video[index].pause()
|
|
|
- } else {
|
|
|
- that.$refs.video[index].play()
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (that.isShowAudios) {
|
|
|
- for (let index = 0; index < that.$refs.audio.length; index++) {
|
|
|
- if (index !== that.currentSlideIdx) {
|
|
|
- that.$refs.audio[index].pause()
|
|
|
- } else {
|
|
|
- that.$refs.audio[index].play()
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if (this.hotspotData && this.hotspotData.content) {
|
|
|
+ const quizInfo = quizData.find((item) => {
|
|
|
+ return item.id === this.hotspotData.content
|
|
|
})
|
|
|
- })
|
|
|
-
|
|
|
- if (window.innerWidth < 1350 || window.innerHeight < 810) {
|
|
|
- const realWHRatio = window.innerWidth / window.innerHeight
|
|
|
- if (realWHRatio > 1350 / 810) {
|
|
|
- const scaleRate = window.innerHeight / 810
|
|
|
- this.$refs['comp-root'].style.transform = `translate(-50%, -50%) scale(${scaleRate})`
|
|
|
- } else {
|
|
|
- const scaleRate = window.innerWidth / 1350
|
|
|
- this.$refs['comp-root'].style.transform = `translate(-50%, -50%) scale(${scaleRate})`
|
|
|
+ this.setQuestionInfo(quizInfo)
|
|
|
+ if (quizInfo.questionType === '判断题') {
|
|
|
+ this.$router.push({ name: 'QuestionJudge' })
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ ...globalMapMutations([
|
|
|
+ 'setQuestionInfo'
|
|
|
+ ]),
|
|
|
async getData() {
|
|
|
let url = `https://super.4dage.com/data/${this.$route.query.id}/hot/js/data.js?time=${Math.random()}`
|
|
|
let result = (await this.$http.get(url)).data
|
|
@@ -368,42 +66,7 @@ export default {
|
|
|
console.log('热点数据:', this.hotspotData)
|
|
|
|
|
|
// this.bgAudioUrl = this.hotspotData.backgroundMusic
|
|
|
-
|
|
|
- if (this.hotspotData.images && this.hotspotData.images.length) {
|
|
|
- this.isShowImages = true
|
|
|
- } else if (this.hotspotData.video && this.hotspotData.video.length) {
|
|
|
- this.isShowVideos = true
|
|
|
- } else if (this.hotspotData.model && this.hotspotData.model.length) {
|
|
|
- this.isShowModels = true
|
|
|
- } else if (this.hotspotData.backgroundMusic) {
|
|
|
- this.isShowAudios = true
|
|
|
- this.hotspotData.audio = [{ url: this.hotspotData.backgroundMusic }]
|
|
|
- }
|
|
|
- },
|
|
|
- onClickClose() {
|
|
|
- window.parent.document.getElementById('closepop').click()
|
|
|
- },
|
|
|
- // onClickLike() {
|
|
|
- // const res = globalApi.like()
|
|
|
- // if (res && res.then) {
|
|
|
- // res.then(() => {
|
|
|
- // this.isShowPlusOne = true
|
|
|
- // setTimeout(() => {
|
|
|
- // this.isShowPlusOne = false
|
|
|
- // }, 1000)
|
|
|
- // })
|
|
|
- // }
|
|
|
- // },
|
|
|
- onClickShare() {
|
|
|
- setTimeout(() => {
|
|
|
- this.isShowShare = true
|
|
|
- }, 200)
|
|
|
},
|
|
|
- closeCode2d() {
|
|
|
- if (this.isShowShare) {
|
|
|
- this.isShowShare = false
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -411,221 +74,12 @@ export default {
|
|
|
<style lang="less" scoped>
|
|
|
.hotspot-home {
|
|
|
position: absolute;
|
|
|
- left: 50%;
|
|
|
- top: 50%;
|
|
|
- width: 1350px;
|
|
|
- height: 810px;
|
|
|
- padding: 0 70px 0 0;
|
|
|
- color: #F1F3F4;
|
|
|
- transform: translate(-50%, -50%);
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
> .bg-audio {
|
|
|
display: none;
|
|
|
}
|
|
|
- > button.close {
|
|
|
- position: absolute;
|
|
|
- top: 10px;
|
|
|
- right: 0px;
|
|
|
- width: 58px;
|
|
|
- height: 58px;
|
|
|
- > img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- }
|
|
|
- > .bg-wrapper {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- position: relative;
|
|
|
- background-size: contain;
|
|
|
- background-repeat: no-repeat;
|
|
|
- background-position: center center;
|
|
|
- > h1 {
|
|
|
- position: absolute;
|
|
|
- top: 211px;
|
|
|
- left: 44px;
|
|
|
- max-width: 418px;
|
|
|
- font-size: 28px;
|
|
|
- font-family: DFLiShuW7;
|
|
|
- overflow: hidden;
|
|
|
- white-space: pre;
|
|
|
- text-overflow: ellipsis;
|
|
|
- letter-spacing: 5px;
|
|
|
- padding-left: 10px;
|
|
|
- padding-right: 10px;
|
|
|
- padding-bottom: 24px;
|
|
|
- background-size: contain;
|
|
|
- background-repeat: no-repeat;
|
|
|
- background-position: center bottom;
|
|
|
- }
|
|
|
- > .desc {
|
|
|
- position: absolute;
|
|
|
- top: 347px;
|
|
|
- left: 55px;
|
|
|
- width: 390px;
|
|
|
- font-size: 16px;
|
|
|
- line-height: 26px;
|
|
|
- font-family: Adobe Heiti Std;
|
|
|
- overflow: auto;
|
|
|
- height: 300px;
|
|
|
- }
|
|
|
- > menu {
|
|
|
- position: absolute;
|
|
|
- right: 817px;
|
|
|
- bottom: 90px;
|
|
|
- > button {
|
|
|
- display: inline-block;
|
|
|
- width: 48px;
|
|
|
- height: 48px;
|
|
|
- margin-left: 24px;
|
|
|
- position: relative;
|
|
|
- img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- // .plus-one {
|
|
|
- // position: absolute;
|
|
|
- // top: 0;
|
|
|
- // right: 0;
|
|
|
- // transform: translate(50%, -50%);
|
|
|
- // }
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-wrapper-mine {
|
|
|
- position: absolute;
|
|
|
- top: 50%;
|
|
|
- right: 30px;
|
|
|
- width: 720px;
|
|
|
- height: 476px;
|
|
|
- transform: translateY(-50%);
|
|
|
- .swiper-root {
|
|
|
- overflow: hidden;
|
|
|
- height: 100%;
|
|
|
- width: 100%;
|
|
|
- .swiper-wrapper {
|
|
|
- }
|
|
|
- .swiper-pagination {
|
|
|
- position: absolute;
|
|
|
- top: 100%;
|
|
|
- left: 50%;
|
|
|
- transform: translateX(-50%);
|
|
|
- font-size: 1.33rem;
|
|
|
- font-family: Inter-Regular, Inter;
|
|
|
- .cur {
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-button-prev {
|
|
|
- left: -30px;
|
|
|
- width: 30px;
|
|
|
- background-image: url(../assets/images/arrow-left.png);
|
|
|
- background-size: contain;
|
|
|
- background-repeat: no-repeat;
|
|
|
- background-position: center;
|
|
|
- &::after {
|
|
|
- content: '';
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-button-next {
|
|
|
- right: -30px;
|
|
|
- width: 30px;
|
|
|
- background-image: url(../assets/images/arrow-right.png);
|
|
|
- background-size: contain;
|
|
|
- background-repeat: no-repeat;
|
|
|
- background-position: center;
|
|
|
- &::after {
|
|
|
- content: '';
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-wrapper-mine.video-wrap {
|
|
|
- .swiper-root {
|
|
|
- .swiper-wrapper {
|
|
|
- .swiper-slide {
|
|
|
- > video {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- background: #000;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-wrapper-mine.model-wrap {
|
|
|
- .swiper-root {
|
|
|
- .swiper-wrapper {
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-wrapper-mine.audio-wrap {
|
|
|
- .swiper-root {
|
|
|
- .swiper-wrapper {
|
|
|
- .swiper-slide {
|
|
|
- > audio {
|
|
|
- position: absolute;
|
|
|
- top: 50%;
|
|
|
- width: 100%;
|
|
|
- transform: translateY(-50%);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .swiper-wrapper-mine.image-wrap {
|
|
|
- .swiper-root {
|
|
|
- .swiper-wrapper {
|
|
|
- > img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- object-fit: contain;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .share-wrap {
|
|
|
- position: absolute;
|
|
|
- top: 50%;
|
|
|
- transform: translateY(-50%);
|
|
|
- right: 244px;
|
|
|
- > img.code {
|
|
|
- width: 300px;
|
|
|
- height: 300px;
|
|
|
- }
|
|
|
- > img.tip {
|
|
|
- position: absolute;
|
|
|
- left: 50%;
|
|
|
- top: calc(100% + 10px);
|
|
|
- transform: translateX(-50%);
|
|
|
- width: 150px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
-/deep/.swiper-pagination-bullet-active {
|
|
|
- background: #a10e0c;
|
|
|
-}
|
|
|
-
|
|
|
-// .bubble-enter {
|
|
|
-// opacity: 0;
|
|
|
-// top: 1rem !important;
|
|
|
-// }
|
|
|
-// .bubble-enter-to {
|
|
|
-// opacity: 1;
|
|
|
-// top: 0 !important;
|
|
|
-// }
|
|
|
-// .bubble-enter-active {
|
|
|
-// transition: all 0.5s;
|
|
|
-// }
|
|
|
-// .bubble-leave {
|
|
|
-// opacity: 1;
|
|
|
-// top: 0 !important;
|
|
|
-// }
|
|
|
-// .bubble-leave-to {
|
|
|
-// opacity: 0;
|
|
|
-// top: -1rem !important;
|
|
|
-// }
|
|
|
-// .bubble-leave-active {
|
|
|
-// transition: all 0.5s;
|
|
|
-// }
|
|
|
</style>
|