From bf58722dfd03ea1513f3acc7331d4d4403fca76e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 18 Mar 2022 11:48:37 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/school-web
---
src/components/mobileLeftNav/index.vue | 536 +++++++++++++++++++++++++++++++----------------------------
1 files changed, 284 insertions(+), 252 deletions(-)
diff --git a/src/components/mobileLeftNav/index.vue b/src/components/mobileLeftNav/index.vue
index 03a92b6..b3d1f0c 100644
--- a/src/components/mobileLeftNav/index.vue
+++ b/src/components/mobileLeftNav/index.vue
@@ -1,5 +1,5 @@
<template>
- <div class="m-left-nav" :style="[navStyle]">
+ <div :class="['m-left-nav', seeRight ? '' : 'nones']" :style="[navStyle]">
<!-- :style="[coutrolStyle]" -->
<div class="m-left-coutrol" @click="changeIconHide">
<i :class="icons"></i>
@@ -9,8 +9,9 @@
v-for="(item, index) in leftNavData"
:key="index"
@click="leftNavClick(item)"
+ v-show="!item.notShow"
>
- <img :style="[imgStyle]" :src="item.img" alt="" />
+ <img :style="[imgStyle]" :src="item.img" alt />
<span>{{ item.label }}</span>
</li>
</ul>
@@ -19,6 +20,25 @@
<script>
import { mapGetters } from "vuex";
+import {
+ // getListdoor, //出入
+ // getListaed, //AED
+ // getListparking, //停车场
+ getListarchitecture, // 全景
+ getListarchitecture1, // 标签
+ getListroad, // 道路
+ getListcat, // 出入-AED-停车场
+} from "@/api/mobile/piont/index";
+import { getListVideo } from "@/api/mobile/monitor/index";
+
+window.tagLayer = null;
+window.wayLayer = null;
+window.sceneLayer = null;
+window.videoLayer = null;
+window.activityLayer = null;
+window.aedLayer = null;
+window.parkLayer = null;
+window.comeLayer = null;
export default {
name: "mobileLeftNav",
watch: {
@@ -33,18 +53,29 @@
this.imgStyle.right = "0";
}
},
+ seeRight() {
+ if (this.seeRight) {
+ this.leftNavData[0].flag = false;
+ this.leftNavData[0].img = this.leftNavData[0].checked;
+ window[this.leftNavData[0].layer].show = true;
+ } else {
+ const lnd = this.leftNavData;
+ for (const k in lnd) {
+ if (window[this.leftNavData[k].layer]._show) {
+ // console.log(lnd[k].label, "所有开启");
+ this.leftNavData[k].flag = false;
+ this.leftNavData[k].img = this.leftNavData[k].normal;
+ window[this.leftNavData[k].layer].show = false;
+ }
+ }
+ }
+ },
},
computed: {
- ...mapGetters(["iconHide"]),
+ ...mapGetters(["iconHide", "dimensionData", "seeRight"]),
},
data() {
return {
- popupWindow1: false,
- url1: "/img/job/one.jpg",
- srcList1: [
- "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
- "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
- ],
icons: "el-icon-d-arrow-right",
navStyle: {
right: "0px",
@@ -52,28 +83,18 @@
imgStyle: {
right: "0",
},
- // coutrolStyle: {
- // position: " absolute",
- // left: "-26px",
- // top: "114px",
- // right: "auto",
- // width: "25px",
- // height: "60px",
- // backgroundColor: "#fff",
- // borderRadius: "10px",
- // display: "flex",
- // alignItems: "center",
- // justifyContent: "center",
- // transition: "left 3s",
- // },
leftNavData: [
{
- flag: false,
+ flag: true,
label: "标签",
- img: "/img/leftnav/tag.png",
+ // img: "/img/leftnav/tag.png",
+ img: "/img/leftnav/tag-checked.png",
normal: "/img/leftnav/tag.png",
checked: "/img/leftnav/tag-checked.png",
layer: "tagLayer",
+ methods: getListarchitecture1,
+ imgSrc: "https://map.hit.edu.cn/images/tarrow_xq.png",
+ // imgSrc: "img/mobile/pink.png",
},
{
flag: false,
@@ -82,6 +103,8 @@
normal: "/img/leftnav/way.png",
checked: "/img/leftnav/way-checked.png",
layer: "wayLayer",
+ methods: getListroad,
+ imgSrc: "img/mobile/green.png",
},
{
flag: false,
@@ -90,15 +113,31 @@
normal: "/img/leftnav/scene.png",
checked: "/img/leftnav/scene-checked.png",
layer: "sceneLayer",
+ methods: getListarchitecture,
+ imgSrc: "img/leftnav/map-panorama.png",
+ // imgSrc: "img/mobile/blue.png",
},
{
flag: false,
- label: "活动",
- img: "/img/leftnav/activity.png",
- normal: "/img/leftnav/activity.png",
- checked: "/img/leftnav/activity-checked.png",
- layer: "activityLayer",
+ label: "监控",
+ img: "/img/leftnav/monitor.png",
+ normal: "/img/leftnav/monitor.png",
+ checked: "/img/leftnav/monitor-checked.png",
+ layer: "videoLayer",
+ methods: getListVideo,
+ imgSrc: "/img/leftnav/map-monitor.png",
+ // imgSrc: "img/mobile/blue.png",
},
+ // {
+ // flag: false,
+ // label: "活动",
+ // img: "/img/leftnav/activity.png",
+ // normal: "/img/leftnav/activity.png",
+ // checked: "/img/leftnav/activity-checked.png",
+ // layer: "activityLayer",
+ // methods: getListdoor,
+ // imgSrc: "img/mobile/brown.png",
+ // },
{
flag: false,
label: "AED",
@@ -106,6 +145,11 @@
normal: "/img/leftnav/aed.png",
checked: "/img/leftnav/aed-checked.png",
layer: "aedLayer",
+ methods: getListcat,
+ type: 9,
+ imgSrc: "img/leftnav/map-aed.png",
+ // imgSrc: "img/mobile/pink.png",
+ notShow: true,
},
{
flag: false,
@@ -114,6 +158,10 @@
normal: "/img/leftnav/park.png",
checked: "/img/leftnav/park-checked.png",
layer: "parkLayer",
+ methods: getListcat,
+ type: 11,
+ imgSrc: "https://map.hit.edu.cn/images/p-biao.png",
+ // imgSrc: "img/mobile/popcorn.png",
},
{
flag: false,
@@ -122,285 +170,266 @@
normal: "/img/leftnav/come.png",
checked: "/img/leftnav/come-checked.png",
layer: "comeLayer",
+ methods: getListcat,
+ type: 12,
+ imgSrc: "img/leftnav/map-activity.png",
+ // imgSrc: "img/mobile/purple.png",
},
],
- viewer: null,
- DC: null,
- tagLayer: null,
- wayLayer: null,
- sceneLayer: null,
- activityLayer: null,
- aedLayer: null,
- parkLayer: null,
- comeLayer: null,
+ // viewer: null,
+ // tagLayer: null,
+ // wayLayer: null,
+ // sceneLayer: null,
+ // videoLayer: null,
+ // activityLayer: null,
+ // aedLayer: null,
+ // parkLayer: null,
+ // comeLayer: null,
};
},
- created() {
- this.DC = global.DC;
- },
+ created() {},
mounted() {},
methods: {
changeIconHide() {
- let isif = this.iconHide;
+ const isif = this.iconHide;
this.$store.commit("MSET_ICONHIDE", !isif);
},
- generatePosition(num) {
- const list = [];
- for (let i = 0; i < num; i++) {
- const lng = 121.0493 + Math.random() * 0.5;
- const lat = 31.2583 + Math.random() * 0.5;
- list.push(new this.DC.Position(lng, lat, 0));
- }
- return list;
- },
leftNavClick(item) {
- // console.log(item);
- this.popupWindow1 = false;
+ // console.log(123132);
+ // 判断并关闭已开启标签
+ const lnd = this.leftNavData;
+ for (const k in lnd) {
+ // console.log(this[this.leftNavData[k].layer]);
+ if (lnd[k].label == item.label) {
+ // console.log(lnd[k].label, "当前点击");
+ continue;
+ }
+ if (window[this.leftNavData[k].layer]._show) {
+ // console.log(lnd[k].label, "所有开启");
+ this.leftNavData[k].flag = false;
+ this.leftNavData[k].img = this.leftNavData[k].normal;
+ window[this.leftNavData[k].layer].show = false;
+ }
+ }
+
item.flag = !item.flag;
if (item.flag == true) {
item.img = item.checked;
- this[item.layer].show = true;
+ window[item.layer].show = true;
+ // console.log("飞入");
+ // this.flyTo(item);
+ this.$store.dispatch("closeMobileWindowsDom"); // 关闭弹窗
} else {
item.img = item.normal;
- this[item.layer].show = false;
+ window[item.layer].show = false;
}
- this.$store.dispatch("closeWindowsDom"); //关闭弹窗
},
- initialize(viewer) {
+ // flyTo(item) {
+ // const that = this;
+ // const posi = this[item.layer].positions[0];
+ // // console.log(posi);
+ // const lntLat =
+ // that.dimensionData.pitch == -45
+ // ? [posi.lng + 0.00917, posi.lat - 0.0188, 500]
+ // : [posi.lng + 0.01197, posi.lat - 0.00055, 500];
+ // // that.mviewer.camera.flyTo({
+ // // destination: Cesium.Cartesian3.fromDegrees(
+ // // lntLat[0],
+ // // lntLat[1],
+ // // lntLat[2]
+ // // ),
+ // // });
+ // // return;
+ // this.$store.dispatch("mapFlyTo", {
+ // // 飞入
+ // lntLat: lntLat,
+ // // lntLat: [posi.lng + 0.01187, posi.lat - 0.0308, 4000],
+ // // lntLat: [121.50492752204283, 31.21567802276832, 2530],
+ // heading: that.dimensionData.heading,
+ // pitch: that.dimensionData.pitch,
+ // roll: that.dimensionData.roll,
+ // noOpen: true,
+ // });
+ // },
+ initialize() {
var that = this;
- viewer.scene.globe.depthTestAgainstTerrain = false;
- this.viewer = viewer;
- this.tagLayer = new this.DC.HtmlLayer("tagLayer");
- viewer.addLayer(this.tagLayer);
+ global.viewer.scene.globe.depthTestAgainstTerrain = false;
+ window.tagLayer = new global.DC.HtmlLayer("tagLayer");
+ global.viewer.addLayer(tagLayer);
- this.wayLayer = new this.DC.HtmlLayer("wayLayer");
- viewer.addLayer(this.wayLayer);
+ window.wayLayer = new global.DC.HtmlLayer("wayLayer");
+ global.viewer.addLayer(wayLayer);
- this.sceneLayer = new this.DC.VectorLayer("sceneLayer");
- viewer.addLayer(this.sceneLayer);
+ // sceneLayer = new global.DC.VectorLayer("sceneLayer");
+ window.sceneLayer = new global.DC.HtmlLayer("sceneLayer");
+ global.viewer.addLayer(sceneLayer);
- this.activityLayer = new this.DC.VectorLayer("activityLayer");
- viewer.addLayer(this.activityLayer);
+ window.videoLayer = new global.DC.HtmlLayer("videoLayer");
+ global.viewer.addLayer(videoLayer);
- this.aedLayer = new this.DC.VectorLayer("aedLayer");
- viewer.addLayer(this.aedLayer);
+ // activityLayer = new global.DC.VectorLayer("activityLayer");
+ window.activityLayer = new global.DC.HtmlLayer("activityLayer");
+ global.viewer.addLayer(activityLayer);
- this.parkLayer = new this.DC.HtmlLayer("parkLayer");
- viewer.addLayer(this.parkLayer);
+ // aedLayer = new global.DC.VectorLayer("aedLayer");
+ window.aedLayer = new global.DC.HtmlLayer("aedLayer");
+ global.viewer.addLayer(aedLayer);
- this.comeLayer = new this.DC.VectorLayer("comeLayer");
- viewer.addLayer(this.comeLayer);
+ window.parkLayer = new global.DC.HtmlLayer("parkLayer");
+ global.viewer.addLayer(parkLayer);
- const positions1 = this.generatePosition(50);
- positions1.forEach((item, index) => {
- const divIcon = new this.DC.DivIcon(
- item,
- `
+ // comeLayer = new global.DC.VectorLayer("comeLayer");
+ window.comeLayer = new global.DC.HtmlLayer("comeLayer");
+ global.viewer.addLayer(comeLayer);
+
+ const ourNum = that.leftNavData.length;
+ for (let n = 0; n < ourNum; n++) {
+ const ourD = this.leftNavData[n];
+ const d = ourD.type ? { lifetype: ourD.type } : {};
+ ourD.methods(d).then((res) => {
+ let dom;
+ const data = res.data.data;
+ const position = that.changePoiton(data);
+ const num = data.length;
+ for (let k = 0; k < num; k++) {
+ if (ourD.label == "标签") {
+ dom = `
<div class="tag-entitys-box">
<div class="tag-content">
- 南门口
+ ${data[k].mechanismname}
</div>
<div class="tag-angle-content">
- <img src="https://map.hit.edu.cn/images/tarrow_xq.png">
+ <img src="${ourD.imgSrc}">
</div>
</div>
- `
- );
- // e.overlay._position._lng,
- // e.overlay._position._lat - 0.012,
- //订阅事件1
- divIcon.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.overlay._position._lng, e.overlay._position._lat],
- { name: "标签" }
- );
- });
- this.tagLayer.addOverlay(divIcon); //标签
- });
-
- const positions2 = this.generatePosition(50);
- positions2.forEach((item, index) => {
- const divIcon = new this.DC.DivIcon(
- item,
- `
+ `;
+ } else if (ourD.label == "道路") {
+ // <div class="way-title" style="border: white 1px solid; padding-left: 2px;font-size: 12px; background: #0066ff; width: 12px;line-height: 13px; padding:2px 1px 2px 1px; color:white;">
+ // ${data[k].mechanismname}
+ // </div>
+ dom = `
<div class="way-entitys-box">
<div class="way-title" style="border: white 1px solid; padding-left: 2px;font-size: 12px; background: #0066ff; width: 12px;line-height: 13px; padding:2px 1px 2px 1px; color:white;">
- 工建街
+ ${data[k].roadname}
</div>
<div class="way-sign-box">
<img src="https://map.hit.edu.cn/images/roadsign3.png">
</div>
</div>
- `
- );
- //订阅事件2
- divIcon.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.overlay._position._lng, e.overlay._position._lat],
- { name: "道路" }
- );
- });
- this.wayLayer.addOverlay(divIcon); //道路
- });
-
- const positions3 = this.generatePosition(50);
- positions3.forEach((item) => {
- const billboard = new this.DC.Billboard(
- item,
- "/img/leftnav/map-panorama.png"
- );
- billboard.size = [16, 16];
- //订阅事件3
- billboard.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.wgs84Position.lng, e.wgs84Position.lat],
- { name: "实景" }
- );
- });
- this.sceneLayer.addOverlay(billboard); //实景
- });
-
- const positions10 = this.generatePosition(50);
- positions10.forEach((item) => {
- const label = new this.DC.Label(item, "活动");
- label.setStyle({
- fillColor: this.DC.Color.ORANGERED,
- font: "10px sans-serif",
- pixelOffset: { x: 0, y: -16 },
- });
- this.activityLayer.addOverlay(label);
-
- const billboard = new this.DC.Billboard(
- item,
- "/img/leftnav/map-aed.png"
- // "/img/leftnav/map-panorama.png"
- );
- billboard.size = [16, 16];
- //订阅事件10
- billboard.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.wgs84Position.lng, e.wgs84Position.lat],
- { name: "活动" }
- );
- });
- this.activityLayer.addOverlay(billboard); //活动
- });
-
- const positions4 = this.generatePosition(10);
- positions4.forEach((item, index) => {
- const label = new this.DC.Label(item, "建筑AED");
- label.setStyle({
- fillColor: this.DC.Color.ORANGERED,
- font: "10px sans-serif",
- pixelOffset: { x: 0, y: -16 },
- });
- this.aedLayer.addOverlay(label);
-
- const billboard = new this.DC.Billboard(
- item,
- "/img/leftnav/map-aed.png"
- );
- billboard.size = [16, 16];
- //订阅事件4
- billboard.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.wgs84Position.lng, e.wgs84Position.lat],
- { name: "建筑AED" }
- );
- });
- this.aedLayer.addOverlay(billboard); //AED
- });
-
- const positions5 = this.generatePosition(120);
- positions5.forEach((item, index) => {
- const divIcon = new this.DC.DivIcon(
- item,
- `
+ `;
+ } else if (ourD.label == "实景") {
+ // <div class="way-title" style="border: white 1px solid; padding-left: 2px;font-size: 12px; background: #0066ff; width: 12px;line-height: 13px; padding:2px 1px 2px 1px; color:white;">
+ // ${data[k].mechanismname}
+ // </div>
+ dom = `
+ <div class="scene-entitys-box">
+ <div>${data[k].mechanismname}</div>
+ <img src="/img/leftnav/map-panorama.png" alt="">
+ </div>
+ `;
+ } else if (ourD.label == "AED") {
+ dom = `
+ <div class="mobiletag-entitys-box">
+ <div class="tag-content">
+ ${data[k].mechanismname}
+ </div>
+ <div class="tag-angle-content">
+ <img src="${ourD.imgSrc}">
+ </div>
+ </div>
+ `;
+ } else if (ourD.label == "停车") {
+ dom = `
<div class="park-entitys-box">
- <div class="park-title" alt="校外街路侧停车场">
+ <div class="park-title" alt="${data[k].mechanismname}">
</div>
<div class="park-sign-box">
<div>
- <img src="https://map.hit.edu.cn/images/p-biao.png" width="14" height="14" alt="校外街路侧停车场" title="校外街路侧停车场">
+ <img src="https://map.hit.edu.cn/images/p-biao.png" width="14" height="14" alt="${data[k].mechanismname}" title="${data[k].mechanismname}">
</div>
<div>
<img src="https://map.hit.edu.cn/images/roadsign.png" width="5" height="21">
</div>
</div>
</div>
- `
- );
- //订阅事件5
- divIcon.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.overlay._position._lng, e.overlay._position._lat],
- { name: "校外街路侧停车场" }
- );
+ `;
+ } else if (ourD.label == "出入") {
+ dom = `
+ <div class="mobiletag-entitys-box-pink">
+ <div class="tag-content">
+ ${data[k].mechanismname}
+ </div>
+ <div class="tag-angle-content">
+ <img src="${ourD.imgSrc}">
+ </div>
+ </div>
+ `;
+ } else if (ourD.label == "监控") {
+ dom = `
+ <div class="monitor-entitys-box">
+ <div>${data[k].mechanismname}</div>
+ <img class="monitor-entitys-box" src="/img/leftnav/map-monitor.png" alt="">
+ </div>
+ `;
+ }
+ const divIcon = new global.DC.DivIcon(position[k], dom);
+ // 订阅事件
+ divIcon.on(global.DC.MouseEventType.CLICK, (e) => {
+ // console.log(data[k]);
+ const d = {
+ name:
+ data[k].mechanismname ||
+ data[k].roadname ||
+ (ourD.label == "监控" ? "监控" : "无显示名字"),
+ bgImg: data[k].tpurl,
+ video: data[k].videourl || "",
+ from: "labels",
+ introduce: data[k].introduce,
+ panoramaurl: data[k].panoramaurl,
+ };
+ // 定制化窗体
+ that.openPopupS(
+ e.position,
+ [e.overlay._position._lng, e.overlay._position._lat],
+ d
+ );
+ });
+ window[that.leftNavData[n].layer].addOverlay(divIcon); // 加入图标
+ }
+ window[that.leftNavData[n].layer].positions = position;
+ if (that.leftNavData[n].layer == "tagLayer") {
+ // that.leftNavData[n].img = that.leftNavData[n].checked;
+ } else {
+ window[that.leftNavData[n].layer].show = false;
+ }
});
- this.parkLayer.addOverlay(divIcon);
- });
-
- const positions6 = this.generatePosition(10);
- positions6.forEach((item, index) => {
- const label = new this.DC.Label(item, "123");
- label.setStyle({
- fillColor: this.DC.Color.PURPLE,
- outlineColor: this.DC.Color.WHITE, // 边框颜色
- outlineWidth: 2, // 边框大小,
- font: "10px sans-serif",
- pixelOffset: { x: 0, y: -16 },
- });
- this.comeLayer.addOverlay(label);
-
- const billboard = new this.DC.Billboard(
- item,
- "/img/leftnav/map-activity.png"
- );
- billboard.size = [16, 16];
- //订阅事件6
- billboard.on(DC.MouseEventType.CLICK, (e) => {
- // 定制化窗体
- that.openPopupS(
- e.position,
- [e.wgs84Position.lng, e.wgs84Position.lat],
- { name: "123" }
- );
- });
- this.comeLayer.addOverlay(billboard);
- });
-
- this.tagLayer.show = false;
- this.wayLayer.show = false;
- this.sceneLayer.show = false;
- this.activityLayer.show = false;
- this.aedLayer.show = false;
- this.parkLayer.show = false;
- this.comeLayer.show = false;
+ }
+ // setTimeout(() => {
+ // this.tagLayer.show = false;
+ // }, 500);
+ },
+ changePoiton(data) {
+ // console.log(data);
+ const list = [];
+ const num = data.length;
+ for (let i = 0; i < num; i++) {
+ list.push(new global.DC.Position(data[i].jd, data[i].wd, 0));
+ }
+ return list;
},
mobileOpenImgs1() {
- let imgsDom = document.getElementById("mobileBigImgs");
+ const imgsDom = document.getElementById("mobileBigImgs");
imgsDom.click();
},
goOn1() {},
openPopupS(position, lntLat, query) {
- let that = this;
+ const that = this;
// 定制化窗体
- let d = {
+ const d = {
position,
lntLat,
query: { ...(query || {}), position, lntLat },
+ useJWD: true, // 仅使用经纬度
};
that.$store.dispatch("setMobileWindows", d);
},
@@ -408,7 +437,7 @@
};
</script>
-<style scoped lang='scss'>
+<style scoped lang="scss">
.m-left-nav {
position: fixed;
bottom: 30px;
@@ -420,7 +449,7 @@
.m-left-coutrol {
position: absolute;
left: -24px;
- top: 96px;
+ top: 79px;
width: 25px;
height: 60px;
background-color: #fff;
@@ -468,4 +497,7 @@
}
}
}
+.nones {
+ display: none;
+}
</style>
--
Gitblit v1.9.3