From 0b9095227438cb35f5a8759aee8f3b32a732151c Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 21 Dec 2021 16:42:40 +0800
Subject: [PATCH] 校内机构等模块中弹框封装,及部分接口对接,及部分样式更改
---
src/components/map/component/mapPopup.vue | 179 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 144 insertions(+), 35 deletions(-)
diff --git a/src/components/map/component/mapPopup.vue b/src/components/map/component/mapPopup.vue
index 0eea98a..f96a9e1 100644
--- a/src/components/map/component/mapPopup.vue
+++ b/src/components/map/component/mapPopup.vue
@@ -17,6 +17,14 @@
<div class="label-wrap">
<div class="title">
{{stateName}}
+ <img @click="audioPlay"
+ class="audio-control"
+ src="/img/navicon/audio.png"
+ alt="">
+ <img @click="closeMapPopupBox"
+ class="close-box"
+ src="/img/navicon/close.png"
+ alt="">
</div>
<div class="label-content">
<div class="arc-bcg">
@@ -25,13 +33,19 @@
</div>
<div v-show="siteName != null && siteName != ''"
class="site">
- <strong>地址:</strong>{{siteName}}
+ <strong>地址:</strong>
+ {{siteName}}
+ </div>
+ <div v-show="telephone != null && telephone != ''"
+ class="phone">
+ <strong>电话:</strong>
+ {{telephone}}
</div>
<div v-show="introduceText != null && introduceText != ''"
class="introduce">
- <p>
- <strong>介绍:</strong>
- {{introduceText}}
+ <p ref="DomIntroduceText">
+ <strong>介绍:</strong>
+ <span v-html="introduceText"></span>
</p>
</div>
<div class="popup-nav">
@@ -59,33 +73,33 @@
</li>
</ul>
</div>
- <div class="arc-box">
+ <div v-show="teachList.length > 0 || liveList.length > 0"
+ class="arc-box">
<ul class="tab-btn">
- <li class="on">教学科研行政</li>
- <li>生活服务</li>
+ <li v-show="teachList.length > 0"
+ :class="{'on': tabBtnFlag == '教学科研行政'}"
+ @click="tabBtnClick('教学科研行政')">教学科研行政</li>
+ <li v-show="liveList.length > 0"
+ :class="{'on': tabBtnFlag == '生活服务'}"
+ @click="tabBtnClick('生活服务')">生活服务</li>
</ul>
<div class="btm-content">
<div class="on">
<ul>
- <li>
+ <li v-for="(item, index) in teachList"
+ :key="index"
+ @click="mechanismDetailPopup(item)">
<i class="popup-icon location-icon deblurring"></i>
- 教学楼
- </li>
- <li>
- <i class="popup-icon location-icon deblurring"></i>
- 教学楼
+ {{item}}
</li>
</ul>
</div>
<div>
<ul>
- <li>
+ <li v-for="(item, index) in liveList"
+ :key="index">
<i class="popup-icon location-icon deblurring"></i>
- 生活楼
- </li>
- <li>
- <i class="popup-icon location-icon deblurring"></i>
- 生活楼
+ {{item}}
</li>
</ul>
</div>
@@ -111,6 +125,10 @@
<div class="content-wrap">
<div class="title">
{{stateName}}
+ <img @click="closePanoramaPopupBox"
+ class="close-box"
+ src="/img/navicon/close.png"
+ alt="">
</div>
<div class="content">
<iframe :src="panoramaUrl"
@@ -146,8 +164,8 @@
<el-image v-show="false"
style="width: 100px; height: 100px"
- :src="url"
- :preview-src-list="srcList"
+ :src="popupImgAtlas[0]"
+ :preview-src-list="popupImgAtlas"
ref="popupImgs">
</el-image>
@@ -155,26 +173,32 @@
:comeName="comeName"
:getToName="getToName"
v-show="campusNavFlag" />
+
+ <audio ref="audioControlPlay"
+ style="position: fixed; left: 111111111px;"
+ v-html="audioSource"
+ @ended="overAudio">
+
+ </audio>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
+import { getMechanismDetail } from '@/api/pc/public/arc'
export default {
name: 'mapPopup',
data () {
return {
DC: null,
+ tabBtnFlag: '教学科研行政',
campusNavFlag: false,
comeName: '',
getToName: '',
QRCodeFlag: false,
- url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
- srcList: [
- 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
- 'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
- ]
+ audioSource: '',
+ audioFlag: false
}
},
computed: {
@@ -192,6 +216,8 @@
'stateName',
// 地址
'siteName',
+ // 电话
+ 'telephone',
// 介绍
'introduceText',
// 全景地址
@@ -199,21 +225,23 @@
// 详情弹框显示关闭
'detailsPopup',
// 全景弹框显示关闭
- 'panoramaPopup'
+ 'panoramaPopup',
+
+ 'popupImgAtlas',
+ // 教学
+ 'teachList',
+ // 科研
+ 'liveList'
])
},
created () {
this.DC = global.DC
-
- this.$nextTick(() => {
- $('#map_popup_content').on('click', '.tab-btn li', function (e) {
- $(this).addClass('on').siblings().removeClass('on')
-
- $(this).parent().siblings().children(`div:eq(${$(this).index()})`).addClass('on').siblings().removeClass('on')
- })
- })
},
methods: {
+ tabBtnClick (param) {
+ this.tabBtnFlag = param
+ },
+
closeCampusNav () {
this.campusNavFlag = false
this.$refs.campusNavRoute.clearLayer()
@@ -244,6 +272,10 @@
},
panoramaClick () {
+ if (this.audioFlag == true) {
+ this.$refs.audioControlPlay.pause()
+ this.audioFlag = false
+ }
// eslint-disable-next-line new-cap
var positions = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position.fromArray(this.pointPosition))
this.viewer.scene.globe.depthTestAgainstTerrain = false
@@ -256,6 +288,83 @@
})
this.$store.commit('SET_DETAILSPOPUP', false)
this.$store.commit('SET_PANORAMAPOPUP', true)
+ },
+
+ closeMapPopupBox () {
+ if (this.audioFlag == true) {
+ this.$refs.audioControlPlay.pause()
+ this.audioFlag = false
+ }
+ this.audioSource = ''
+ this.$store.commit('SET_DETAILSPOPUP', false)
+ },
+
+ closePanoramaPopupBox () {
+ this.$store.commit('SET_PANORAMAURL', '')
+ this.$store.commit('SET_PANORAMAPOPUP', false)
+ },
+
+ audioPlay () {
+ if (this.audioSource == '') {
+ var zhText = encodeURI(this.$refs.DomIntroduceText.innerText)
+ this.audioSource = `<source src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=4&text=${zhText}" type="audio/mpeg"><embed height="0" width="0" src="http://tts.baidu.com/text2audio?text=${zhText}">`
+ console.log(this.audioSource)
+ this.$refs.audioControlPlay.play()
+ this.audioFlag = true
+ } else {
+ if (this.audioFlag == true) {
+ this.$refs.audioControlPlay.pause()
+ this.audioFlag = false
+ } else {
+ this.$refs.audioControlPlay.play()
+ this.audioFlag = true
+ }
+ }
+ },
+
+ overAudio () {
+ this.audioFlag = false
+ },
+
+ mechanismDetailPopup (param) {
+ getMechanismDetail({ mechanismname: param }).then(res => {
+ console.log(res)
+ var result = res.data.data
+ this.$store.commit('CLEAR_ALL', null)
+
+ var imgArr = result.tpurl.split(',')
+
+ this.$store.commit('SET_POPUPBGURL', imgArr[0])
+ this.$store.commit('SET_POPUPQRURL', result.codeurl)
+ this.$store.commit('SET_POINTPOSITION', [Number(result.jd), Number(result.wd), Number(result.gd), Number(result.heading), Number(result.pitch), Number(result.roll)])
+ this.$store.commit('SET_STATENAME', result.mechanismname)
+ this.$store.commit('SET_SITENAME', result.address)
+ this.$store.commit('SET_TELEPHONE', result.telephone)
+ this.$store.commit('SET_INTRODUCETEXT', result.introduce)
+ this.$store.commit('SET_POPUPIMGATLAS', imgArr)
+
+ this.newPopup(result)
+ this.viewer.flyToPosition(
+ new this.DC.Position(Number(result.jd), Number(result.wd), 3000, Number(result.heading), Number(result.pitch), Number(result.roll)),
+ function () {
+ },
+ 3
+ )
+ })
+ },
+
+ newPopup (item) {
+ const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(Number(item.jd), Number(item.wd), Number(item.gd), Number(item.heading), Number(item.pitch), Number(item.roll)))
+ // eslint-disable-next-line no-unused-vars
+ var popup = new this.DC.DivForms(this.viewer, {
+ domId: 'divFormsDomBox',
+ position: [
+ position
+ ]
+ })
+
+ this.$store.commit('SET_PANORAMAPOPUP', false)
+ this.$store.commit('SET_DETAILSPOPUP', true)
}
}
--
Gitblit v1.9.3