<template>
|
<public-box class="public-org-nav-bar">
|
<template slot="public-box-header">
|
<div class="title">
|
<img class="icon deblurring" :src="headerLog" alt />
|
<span>{{ title }}</span>
|
</div>
|
<img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
|
</template>
|
<template slot="public-box-content">
|
<div class="tab" v-show="false">
|
<ul>
|
<li
|
:class="{ on: item.flag }"
|
v-for="(item, index) in titleList"
|
:key="index"
|
@click="topNavClick(item, index)"
|
>
|
{{ item.title }}
|
</li>
|
</ul>
|
</div>
|
<ul>
|
<li
|
v-for="(item, index) in itemNavList"
|
:key="index"
|
@click="mapPopup(item.details)"
|
>
|
<img :src="item.icon" alt />
|
<span>{{ item.navTitle }}</span>
|
</li>
|
</ul>
|
</template>
|
</public-box>
|
</template>
|
|
<script>
|
import { mapGetters } from "vuex";
|
import { getList, getLifeList } from "@/api/pc/service/index";
|
|
export default {
|
name: "ServiceNavBar",
|
data() {
|
return {
|
itemNavList: [],
|
DC: null,
|
ourLayer: null,
|
};
|
},
|
props: {
|
title: {
|
type: String,
|
},
|
headerLog: {
|
type: String,
|
},
|
arcCode: {
|
type: Number,
|
},
|
},
|
computed: {
|
...mapGetters([
|
"viewer",
|
"popupBgUrl",
|
"pupupQRUrl",
|
// 点信息
|
"pointPosition",
|
// 点名称
|
"stateName",
|
// 地址
|
"siteName",
|
// 介绍
|
"introduceText",
|
// 全景地址
|
"panoramaUrl",
|
]),
|
},
|
created() {
|
this.DC = global.DC;
|
this.titleList = [];
|
//三江校区//"土木楼"//"科学园"//"黄河路"//"红旗校区"
|
getList().then((res) => {
|
res.data.data.forEach((item) => {
|
// console.log(item, "see");
|
this.titleList.push({
|
title: item.dictValue,
|
flag: false,
|
key: item.dictKey,
|
});
|
});
|
|
this.titleList[0].flag = true;
|
|
this.getChilsNavs(this.titleList[0].key);
|
});
|
},
|
mounted() {},
|
methods: {
|
closeModel() {
|
this.$parent.closeModel();
|
},
|
topNavClick(item, index) {
|
this.titleList.forEach((item) => {
|
item.flag = false;
|
});
|
|
this.titleList[index].flag = true;
|
|
this.getChilsNavs(item.key);
|
},
|
getChilsNavs(campus) {
|
this.itemNavList = [];
|
let that = this;
|
// console.log(this.arcCode, "see22");
|
//判断是否是当前所需要图层并创建 属性为 this.arrCode
|
if (this.ourLayer != null) {
|
this.ourLayer.clear();
|
} else {
|
this.ourLayer = new this.DC.HtmlLayer("Layer" + this.arcCode);
|
this.viewer.addLayer(this.ourLayer);
|
}
|
// console.log(this.ourLayer, "see");
|
getLifeList({ lifetype: this.arcCode, campus: campus }).then((res) => {
|
res.data.data.records.forEach((item) => {
|
// console.log(item, "see");
|
this.itemNavList.push({
|
navTitle: item.mechanismname,
|
icon: "/img/navicon/tag.png",
|
details: item,
|
});
|
//创建图标 做生活设施分层标签
|
that.addDivIcon(item, this.ourLayer);
|
});
|
});
|
},
|
addDivIcon(item, mylayer) {
|
let that = this;
|
const divIcon = new global.DC.DivIcon(
|
new global.DC.Position(Number(item.jd), Number(item.wd), 0),
|
`
|
<div class="tag-entitys-box">
|
<div class="tag-content">
|
${item.mechanismname}
|
</div>
|
<div class="tag-angle-content">
|
<img src="https://map.hit.edu.cn/images/tarrow_xq.png">
|
</div>
|
</div>
|
`
|
);
|
//订阅事件
|
divIcon.on(global.DC.MouseEventType.CLICK, (e) => {
|
// console.log(item, "see");
|
// that.openPopups({
|
// lng: e.overlay.position.lng,
|
// lat: e.overlay.position.lat,
|
// item: item,
|
// });
|
that.mapPopup(item);
|
});
|
mylayer.addOverlay(divIcon);
|
},
|
mapPopup(param) {
|
var result = param;
|
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_PANORAMAURL", result.panoramaurl);
|
this.$store.commit("SET_POPUPIMGATLAS", imgArr);
|
|
if (result.videourl && result.videourl != "") {
|
this.$store.commit("SET_MONITORURL", result.videourl);
|
}
|
|
this.newPopup(result);
|
this.viewer.flyToPosition(
|
new this.DC.Position(
|
Number(result.jd),
|
Number(result.wd),
|
300,
|
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))
|
);
|
// 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_MONITORPOPUP", false);
|
this.$store.commit("SET_DETAILSPOPUP", true);
|
},
|
},
|
destroyed() {
|
if (this.ourLayer != null) {
|
this.ourLayer.remove();
|
this.ourLayer = null;
|
}
|
this.$store.commit("SET_DETAILSPOPUP", false);
|
},
|
};
|
</script>
|
|
<style scoped lang="scss"></style>
|