From 5aca6f3b247ee1ca2acce3bbe2561781b2635e1a Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期四, 27 三月 2025 16:18:53 +0800
Subject: [PATCH] 大屏地图对接口
---
src/components/MapPanel.vue | 125 ++++++++++++++++-------------------------
1 files changed, 48 insertions(+), 77 deletions(-)
diff --git a/src/components/MapPanel.vue b/src/components/MapPanel.vue
index 38f4db6..aa6172c 100644
--- a/src/components/MapPanel.vue
+++ b/src/components/MapPanel.vue
@@ -7,6 +7,7 @@
<script>
import AMapLoader from '@amap/amap-jsapi-loader'
import { mapState } from 'vuex'
+import { getHouseMapDistribution } from './service'
export default {
name: 'MapPanel',
@@ -14,12 +15,27 @@
return {
map: null,
markers: [],
+ currentMakers: [],
infoWindow: null
}
},
watch: {
mapMarkerStatus(newVal) {
- console.log(newVal)
+ if (newVal === 'all') {
+ this.markers = this.currentMakers
+ this.$nextTick(() => {
+ this.map.clearMap()
+ this.addMapMarkers()
+ })
+ } else {
+ let arr = this.currentMakers.filter(item => item.info.statusText == newVal)
+ this.markers = arr
+ this.$nextTick(() => {
+ this.map.clearMap()
+ this.addMapMarkers()
+ })
+ }
+
}
},
computed: {
@@ -28,12 +44,33 @@
]),
},
mounted() {
- this.$nextTick(() => {
- this.initMap()
- window.addEventListener('resize', () => {
- this.map && this.map.resize()
+ getHouseMapDistribution().then(res => {
+ if (res.code === 200) {
+ res.data.map((item, index) => {
+ item.position = [item.longitude, item.latitude]
+ item.info = {
+ address: item.houseAddress,
+ name: item.houseName,
+ status: item.houseStatus,
+ rentStatus: item.rentStatus,
+ statusText: item.houseStatus == 1 ? '待出租' : item.houseStatus == 2 ? '已出租' : item.houseStatus == 3 ? '维修中' : '欠费',
+ tenant: item.tenant,
+ rent: item.rent,
+ color: item.houseStatus == 1 ? '#FDAE03' : item.houseStatus == 2 ? '#618CE9' : item.houseStatus == 3 ? '#F64E4F' : '#0FBE6B'
+ }
+ return item
+ })
+ this.currentMakers = JSON.parse(JSON.stringify(res.data))
+ this.markers = res.data
+ }
+ this.$nextTick(() => {
+ this.initMap()
+ window.addEventListener('resize', () => {
+ this.map && this.map.resize()
+ })
})
})
+
},
beforeDestroy() {
window.removeEventListener('resize', () => {
@@ -57,70 +94,7 @@
this.addMapMarkers()
},
addMapMarkers() {
- const markers = [
- {
- position: [91.172119, 29.652941],
- info: {
- address: '西花部汾罚藏医院',
- name: '名称名称名称',
- status: 'vacant',
- statusText: '待出租',
- tenant: '张三',
- currentRent: 1600,
- totalRent: 20000,
- quarterlyPaid: 500,
- quarterlyRent: 2000,
- color: '#faad14'
- }
- },
- {
- position: [91.182119, 29.662941],
- info: {
- address: '拉萨市城关区江苏路15号',
- name: '泊江大道B栋',
- status: 'rented',
- statusText: '已出租',
- tenant: '-',
- currentRent: 3000,
- totalRent: 15000,
- quarterlyPaid: 1000,
- quarterlyRent: 4500,
- color: '#4fd9ff'
- }
- },
- {
- position: [91.162119, 29.642941],
- info: {
- address: '拉萨市城关区北京中路8号',
- name: '新城大道C区',
- status: 'maintenance',
- statusText: '维修中',
- tenant: '-',
- currentRent: 0,
- totalRent: 16000,
- quarterlyPaid: 0,
- quarterlyRent: 5400,
- color: '#ff4d4f'
- }
- },
- {
- position: [91.192119, 29.672941],
- info: {
- address: '拉萨市城关区夺底路33号',
- name: '高江路D座',
- status: 'overdue',
- statusText: '欠费',
- tenant: '西藏联通',
- currentRent: 12000,
- totalRent: 20000,
- quarterlyPaid: 4000,
- quarterlyRent: 6600,
- color: '#39c5bb'
- }
- }
- ]
-
- markers.forEach(marker => {
+ this.markers.forEach(marker => {
const content = `
<div class="marker-container">
<svg width="120" height="120" viewBox="0 0 120 120">
@@ -170,20 +144,17 @@
},
showInfoWindow(marker, info) {
const content = `
- <div class="map-info-card" style="color:#000;background-color: #fff !important;padding: 10px;border-radius: 12px;box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);">
- <div class="info-header">
- <div class="info-title">房屋详情</div>
- </div>
+ <div class="map-info-card" style="min-width:300px !important;color:#fff;background-color: rgba(146, 146, 146, 0.5) !important;padding: 10px;border-radius: 12px;box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);border-radius:0px 35px 35px 0px;">
<div class="info-body">
<div class="info-item">房屋地址:${info.address}</div>
<div class="info-item">房屋名称:${info.name}</div>
<div class="info-item">房屋状态:<span class="status-tag" style="background: rgba(${info.color.replace(/[^\d,]/g, '')}, 0.1); color: ${info.color};">${info.statusText}</span></div>
<div class="info-item">租户:${info.tenant}</div>
<div class="info-item">
- 租金状态:${info.currentRent}/${info.totalRent}
+ 租金状态:${info.rentStatus}
</div>
<div class="info-item">
- 本季租金:${info.quarterlyPaid}/${info.quarterlyRent}
+ 本季租金:${info.rent}
</div>
</div>
</div>
@@ -231,7 +202,7 @@
.info-title {
font-size: 16px;
font-weight: bold;
- color: #fff;
+ color: #fff !important;
margin-bottom: 12px;
padding-bottom: 8px;
border-bottom: 1px solid #eee;
@@ -303,7 +274,7 @@
.map-info-card {
border: 1px solid rgba(79, 217, 255, 0.2);
overflow: hidden;
- width: 300px;
+ width: 300px !important;
backdrop-filter: blur(12px);
.info-header {
--
Gitblit v1.7.1