站点地图

This commit is contained in:
小小 2025-05-13 16:05:03 +08:00
parent f930438426
commit 96a17e7b20
3 changed files with 157 additions and 58 deletions

View File

@ -42,4 +42,44 @@
background: white; background: white;
width: 100vw; width: 100vw;
padding: 10px; padding: 10px;
border-radius: 15px;
}
.divClose {
position: absolute;
right: 3px;
top: -10px;
}
.divName {
display: flex;
font-size: 16px;
font-weight: bold;
line-height: 20px;
margin-top: 15px;
}
.divAdrress {
margin-top: 5px;
font-size: 12px;
font-weight: 300;
}
.divCountRow {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
text-align: center;
margin-top: 10px;
}
.divCountRow .divCount {
font-size: 20px;
font-weight: bold;
}
.divCountRow .divTitle {
font-size: 14px;
font-weight: 300;
} }

View File

@ -2,7 +2,7 @@
<div :style="{width:'100vw',height}"> <div :style="{width:'100vw',height}">
<map id="mapRef" ref="mapRef" :style="{width:'100vw',height}" show-location :longitude="mapcenter.longitude" <map id="mapRef" ref="mapRef" :style="{width:'100vw',height}" show-location :longitude="mapcenter.longitude"
:latitude="mapcenter.latitude" :markers="markers" :polygons="polygons" :circles="circles" :latitude="mapcenter.latitude" :markers="markers" :polygons="polygons" :circles="circles"
:polyline="polyline" :scale="scale" @tap="mapTap" @poitap="mapTap" /> :polyline="polyline" :scale="scale" @tap="mapTap" @poitap="mapTap" @markertap="markerTap" />
<div class="divNav"> <div class="divNav">
</div> </div>
@ -56,32 +56,40 @@
<div class="b-btn-blue" style="width:100%;" @click="completeDraw">完成绘制</div> <div class="b-btn-blue" style="width:100%;" @click="completeDraw">完成绘制</div>
</div> </div>
</div> </div>
<div class="divSiteInfo" v-if="showSiteInfo">
<div class="divClose" @click="closeSiteInfo">
<uni-icons custom-prefix="iconfont" type="icon-ebikeguanbi" size="25" color="#777777" />
</div>
<div class="divName">
<label style="flex: 1;">{{siteInfo.name}}</label>
<div style="margin-left: 10px;" @click="openSiteInfo">
<uni-icons custom-prefix="iconfont" type="icon-ebikebianji" color="rgb(121 116 116)"
size="20" />
</div>
</div>
<div class="divAdrress">{{siteInfo.address}}</div>
<div class="divCountRow">
<div> <div>
<div>站点信息</div> <div class="divCount">
<div>{{siteInfo.name}}</div>
<div>{{siteInfo.address}}</div>
<div class="divSiteInfo">
<div>
<div>
{{siteInfo.zdrl}} {{siteInfo.zdrl}}
</div> </div>
<div> <div class="divTitle">
站点容量 站点容量
</div> </div>
</div> </div>
<div> <div>
<div> <div class="divCount">
{{siteInfo.sssl}} {{siteInfo.sssl}}
</div> </div>
<div> <div class="divTitle">
实时数量 实时数量
</div> </div>
</div> </div>
<div> <div>
<div> <div class="divCount" :style="{color:siteInfo.xdd<=0?'#EF4B4D':'#00BCD4'}">
{{siteInfo.zdrl-siteInfo.sssl}} {{siteInfo.xdd>0?'+'+siteInfo.xdd:siteInfo.xdd}}
</div> </div>
<div> <div class="divTitle">
需调度 需调度
</div> </div>
</div> </div>
@ -129,7 +137,7 @@
let drawPoint = []; let drawPoint = [];
let areaData = {}; let areaData = {};
let selArea = null; // let selArea = null; //
let regionData = {}; let siteData = {};
let showRegion = ref(false); let showRegion = ref(false);
const iconsize = 16; const iconsize = 16;
@ -157,14 +165,17 @@
const opentype = ref("add"); // const opentype = ref("add"); //
let editId = ""; //ID let editId = ""; //ID
const showSiteInfo = ref(false);
const siteInfo = ref({ const siteInfo = ref({
id: "", id: "",
name: "", name: "",
address: "", address: "",
zdrl: 0, zdrl: 0,
sssl:0 sssl: 0,
xdd:0
}) })
// //
function onZoom(type) { function onZoom(type) {
const i = 10; const i = 10;
@ -215,14 +226,52 @@
drawPoint = []; drawPoint = [];
} }
function closeSiteInfo(){
showSiteInfo.value=false;
}
function markerTap(e) {
const {
markerId
} = e.detail;
const index = markerId;
const {
arrCirclesData,
arrPolygonsData
} = siteData;
const len = arrCirclesData.length;
let data = null;
if (index <= len - 1) {
data = arrCirclesData[markerId];
} else {
data = arrPolygonsData[markerId - len];
}
const {
siteName,
siteRegionId,
siteAdress,
allowedParkingNum
} = data;
const site = {
id: siteRegionId,
name: siteName,
address: siteAdress,
zdrl: allowedParkingNum,
sssl: 0,
xdd:allowedParkingNum-0
}
siteInfo.value=site;
showSiteInfo.value = true;
}
function mapTap(e) { function mapTap(e) {
if (!showDraw.value) return;
const { const {
detail: { detail: {
latitude, latitude,
longitude longitude
} }
} = e; } = e;
if (!showDraw.value) return;
let inside = false; let inside = false;
if (!selArea) { if (!selArea) {
const { const {
@ -243,9 +292,11 @@
showModelMessage("请绘制在运营区域内!") showModelMessage("请绘制在运营区域内!")
return; return;
} }
} } else {
else{ const {
const{shapeType,points}=selArea; shapeType,
points
} = selArea;
if (shapeType == "2") { if (shapeType == "2") {
inside = map.checkPointInPolygon(longitude, latitude, points); inside = map.checkPointInPolygon(longitude, latitude, points);
if (!inside) { if (!inside) {
@ -354,6 +405,13 @@
} }
} }
function openSiteInfo(){
const{id}=siteInfo.value;
uni.redirectTo({
url: `/pages/devops/bikesite/bikesite-info?id=${id}&&type=edit`
})
}
// //
function completeDraw() { function completeDraw() {
if (drawPoint.length == 0) { if (drawPoint.length == 0) {
@ -368,9 +426,10 @@
if (arrPoint.length > 3) { if (arrPoint.length > 3) {
arrPoint.push(arrPoint[0]); arrPoint.push(arrPoint[0]);
} }
console.log("88888888888888888888888",arrPoint);
const points = JSON.stringify(arrPoint); const points = JSON.stringify(arrPoint);
const {operationRegionId}=selArea; const {
operationRegionId
} = selArea;
uni.redirectTo({ uni.redirectTo({
url: `/pages/devops/bikesite/bikesite-info?id=${editId}&points=${points}&radius=${radius.value}&&type=${opentype.value}&&regionid=${operationRegionId}` url: `/pages/devops/bikesite/bikesite-info?id=${editId}&points=${points}&radius=${radius.value}&&type=${opentype.value}&&regionid=${operationRegionId}`
}) })
@ -409,7 +468,6 @@
}; };
map.getRegionData(arrRegionID, (res) => { map.getRegionData(arrRegionID, (res) => {
console.log("11111111111getRegionData", res);
const { const {
arrData, arrData,
arrCircles: arrCircles_region, arrCircles: arrCircles_region,
@ -417,22 +475,23 @@
arrCirclesData: arrCirclesData_region, arrCirclesData: arrCirclesData_region,
arrPolygonsData: arrPolygonsData_region arrPolygonsData: arrPolygonsData_region
} = res; } = res;
regionData = { siteData = {
arrCircles: arrCircles_region, arrCircles: arrCircles_region,
arrPolygons: arrPolygons_region, arrPolygons: arrPolygons_region,
arrCirclesData: arrCirclesData_region, arrCirclesData: arrCirclesData_region,
arrPolygonsData: arrPolygonsData_region arrPolygonsData: arrPolygonsData_region
}; };
const arrMarker = []; const arrMarker = [];
let len = 0;
arrCircles_region.map((item, index) => { arrCircles_region.map((item, index) => {
const { const {
latitude: lat, latitude: lat,
longitude: lng longitude: lng
} = item; } = item;
const len = arrMarker.length;
arrMarker.push(map.addMarker(len + index, lng, lat, "bikesite.png")); arrMarker.push(map.addMarker(len + index, lng, lat, "bikesite.png"));
}); });
len = arrMarker.length;
arrPolygons_region.map((item, index) => { arrPolygons_region.map((item, index) => {
const { const {
points points
@ -441,7 +500,6 @@
latitude: lat, latitude: lat,
longitude: lng longitude: lng
} = points[0]; } = points[0];
const len = arrMarker.length;
arrMarker.push(map.addMarker(len + index, lng, lat, "bikesite.png")); arrMarker.push(map.addMarker(len + index, lng, lat, "bikesite.png"));
}); });
@ -480,7 +538,7 @@
arrPolygons: arrPolygons_region = [], arrPolygons: arrPolygons_region = [],
arrCirclesData, arrCirclesData,
arrPolygonsData arrPolygonsData
} = regionData; } = siteData;
const arrEditC = []; const arrEditC = [];
const arrEditP = []; const arrEditP = [];
if (showSite) { if (showSite) {
@ -545,6 +603,7 @@
onMounted(() => { onMounted(() => {
oMap = map.getMap("mapRef", getCurrentInstance()); oMap = map.getMap("mapRef", getCurrentInstance());
isload = true; isload = true;

View File

@ -178,20 +178,20 @@
const permcode = 'maintenance.applet'; const permcode = 'maintenance.applet';
const permcodes = uni.getStorageSync('permCodes'); const permcodes = uni.getStorageSync('permCodes');
const menus = []; const menus = [];
if (permcodes.length > 0 && permcodes.includes(permcode)) { if (permcodes.length > 0 ) {
btnList.forEach((item) => { btnList.forEach((item) => {
const menu = { const menu = {
key: item.key, key: item.key,
name: item.name name: item.name
} }
let ipermcode = permcode + '.' + item.key.toLowerCase().replace(/-/g, '.'); let ipermcode = permcode + '.' + item.key.toLowerCase().replace(/-/g, '.');
if (permcodes.includes(ipermcode)) { if (permcodes.some(item => item.includes(ipermcode))) {
menus.push(menu) menus.push(menu)
if (item.children) { if (item.children) {
item.children.forEach((child) => { item.children.forEach((child) => {
menu.children = menu.children || []; menu.children = menu.children || [];
let cpermcode = ipermcode + '.' + child.key.toLowerCase().replace(/-/g, '.'); let cpermcode = ipermcode + '.' + child.key.toLowerCase().replace(/-/g, '.');
if (permcodes.includes(cpermcode)) { if (permcodes.some(item => item.includes(cpermcode))) {
const cmenu = { const cmenu = {
key: child.key, key: child.key,
name: child.name, name: child.name,