Commit 4590423c authored by 郭铭瑶's avatar 郭铭瑶 🤘

修改图标显示逻辑

parent ec56dfe7
<!DOCTYPE html> <!DOCTYPE html>
<html id="html"> <html id="html">
<head>
<meta charset="utf-8"> <head>
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>浦东新区电梯加装地图</title> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1">
<style> <title>浦东新区电梯加装地图</title>
html { <style>
font-size: 1.6vh; html {
} font-size: 16vh;
</style> }
<script language="javascript" src="http://webapi.amap.com/maps?v=1.4.15&key=ee2b5d5c0c44c768f1d2593eb4a7dfa6&plugin=Map3D,AMap.DistrictSearch,AMap.ControlBar,ElasticMarker"></script> </style>
</head> <script language="javascript"
<body> src="http://webapi.amap.com/maps?v=1.4.15&key=ee2b5d5c0c44c768f1d2593eb4a7dfa6&plugin=Map3D,AMap.DistrictSearch,AMap.ControlBar,ElasticMarker"></script>
<div id="app"></div> </head>
<!-- built files will be auto injected -->
</body> <body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html> </html>
...@@ -18,7 +18,7 @@ html, body ...@@ -18,7 +18,7 @@ html, body
#app #app
width 100% width 100%
height: 100% height: 100%
font-size 1rem font-size .1rem
overflow hidden overflow hidden
font-family 'Avenir', Helvetica, Arial, sans-serif font-family 'Avenir', Helvetica, Arial, sans-serif
-webkit-font-smoothing antialiased -webkit-font-smoothing antialiased
......
...@@ -2,7 +2,6 @@ import Vue from 'vue' ...@@ -2,7 +2,6 @@ import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
const Main = () => import('@/views/main.vue') const Main = () => import('@/views/main.vue')
const HouseMap = () => import('@/views/house-map.vue') const HouseMap = () => import('@/views/house-map.vue')
// const Test = () => import('@/views/test.vue')
Vue.use(Router) Vue.use(Router)
...@@ -18,10 +17,5 @@ export default new Router({ ...@@ -18,10 +17,5 @@ export default new Router({
name: 'house-map', name: 'house-map',
component: HouseMap, component: HouseMap,
} }
// {
// path: '/test',
// name: 'test',
// component: Test,
// },
] ]
}) })
let BASE_URL = '' const BASE_URL = 'http://10.220.105.137:81/api'
let STATIC_URL = '' let STATIC_URL = ''
switch (process.env.NODE_ENV) { switch (process.env.NODE_ENV) {
case 'production': case 'production':
BASE_URL = ''
STATIC_URL = 'http://10.220.105.137:81/elev/static' STATIC_URL = 'http://10.220.105.137:81/elev/static'
break break
default: default:
BASE_URL = '' STATIC_URL = 'http://localhost:8080/static'
STATIC_URL = 'http://localhost:8081/static'
}; };
export default { export default {
BASE_URL, BASE_URL,
STATIC_URL, STATIC_URL,
GET_ELE_DATA: BASE_URL + '/service-report/public/elv/consentRate',
GET_ANNOUNCE_DATA: BASE_URL + '/service-report/public/successcase',
// http://211.136.105.193/apiv2/service-report/public/inform/1 //加装 已公告数据 // http://211.136.105.193/apiv2/service-report/public/inform/1 //加装 已公告数据
// 0-未签约 1-已公告 2-已开工 3-已完工 // 0-未签约 1-已公告 2-已开工 3-已完工
......
...@@ -11,30 +11,18 @@ export default{ ...@@ -11,30 +11,18 @@ export default{
return [] return []
} }
}, },
switchImg(ratio) { switchRate(ratio) {
if (!ratio) ratio = 0 if (!ratio) return 0
if (ratio < 1) { const result = ratio * 100
ratio = ratio * 100 if (result >= 100) return 100
} return result
if (ratio <= 10) return 1
if (ratio <= 20) return 2
if (ratio <= 30) return 3
if (ratio <= 40) return 4
if (ratio <= 50) return 5
if (ratio <= 60) return 6
if (ratio <= 70) return 7
if (ratio <= 80) return 8
if (ratio <= 90) return 9
if (ratio <= 100) return 10
}, },
switchIcon(ratio) { switchIcon(ratio) {
if (!ratio) ratio = 0 if (!ratio) ratio = 0
if (ratio < 1) { ratio = ratio * 100
ratio = ratio * 100
}
if (ratio <= 50) return 'star1' if (ratio <= 50) return 'star1'
if (ratio <= 75) return 'star2' if (ratio <= 75) return 'star2'
if (ratio <= 100) return 'star3' return 'star3'
}, },
switchColor(color) { switchColor(color) {
if (!color) return null if (!color) return null
...@@ -56,9 +44,9 @@ export default{ ...@@ -56,9 +44,9 @@ export default{
case 1: case 1:
return '已公告' return '已公告'
case 2: case 2:
return '已工' return '已工'
case 3: case 3:
return '已工' return '已工'
default: default:
return '暂无状态' return '暂无状态'
} }
......
...@@ -149,19 +149,19 @@ export default { ...@@ -149,19 +149,19 @@ export default {
position relative position relative
.icon-tooltip .icon-tooltip
position absolute position absolute
bottom 2rem bottom .2rem
left 2rem left .2rem
z-index 100 z-index 100
p p
display flex display flex
align-items center align-items center
color #000 color #000
font-weight bold font-weight bold
margin-bottom 1rem margin-bottom .1rem
font-size 1.4rem font-size .14rem
img img
width 2rem width .2rem
margin-right 1rem margin-right .1rem
</style> </style>
<style lang="stylus"> <style lang="stylus">
.amap-logo .amap-logo
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
@click="handleView(item)" @click="handleView(item)"
size="small" size="small"
type="text" type="text"
:title="item.name"
long> long>
{{item.name}} {{item.name}}
</Button> </Button>
...@@ -50,7 +51,7 @@ ...@@ -50,7 +51,7 @@
<Drawer :closable="false" width="24%" v-model="detailDrawer"> <Drawer :closable="false" width="24%" v-model="detailDrawer">
<div slot="header"> <div slot="header">
<h2>{{detailDrawerData.community}}</h2> <h2>{{detailDrawerData.community}}</h2>
<p style="font-weight:normal;color:#666;margin-top:.5rem;">{{detailDrawerData.buildingNo}}</p> <p style="font-weight:normal;color:#666;margin-top:.05rem;">{{detailDrawerData.buildingNo}}</p>
</div> </div>
<div class="drawer-content"> <div class="drawer-content">
<div> <div>
...@@ -62,12 +63,12 @@ ...@@ -62,12 +63,12 @@
<!-- <p class="title">加装可能性</p> --> <!-- <p class="title">加装可能性</p> -->
<img v-for="i in $com.switchStarNum(detailDrawerData.intention)" :key="i" class="star" src="@/assets/images/star1.png"/> <img v-for="i in $com.switchStarNum(detailDrawerData.intention)" :key="i" class="star" src="@/assets/images/star1.png"/>
</div> </div>
<div> <div v-show="detailDrawerData.totUnit || detailDrawerData.ratio">
<p class="title">加装意愿收集</p> <p class="title">加装意愿收集</p>
<p class="sub-title"><span>已投/应投</span><span>{{Math.round((detailDrawerData.agree + detailDrawerData.disagree) / detailDrawerData.totUnit * 100)}}%</span></p> <p class="sub-title" v-show="detailDrawerData.totUnit"><span>已投/应投</span><span>{{Math.round((detailDrawerData.agree + detailDrawerData.disagree) / detailDrawerData.totUnit * 100)}}%</span></p>
<img class="bar" :src="require(`@/assets/images/${$com.switchImg((detailDrawerData.agree + detailDrawerData.disagree) / detailDrawerData.totUnit)}.png`)"/> <div class="bar" v-show="detailDrawerData.totUnit"><div class="inner" :style="`width:${$com.switchRate((detailDrawerData.agree + detailDrawerData.disagree) / detailDrawerData.totUnit)}%`"/></div>
<p class="sub-title"><span>同意/不同意</span><span>{{Math.round(detailDrawerData.ratio * 100)}}%</span></p> <p class="sub-title" v-show="detailDrawerData.ratio"><span>同意/不同意</span><span>{{Math.round(detailDrawerData.ratio * 100)}}%</span></p>
<img class="bar" :src="require(`@/assets/images/${$com.switchImg(detailDrawerData.ratio)}.png`)"/> <div class="bar" v-show="detailDrawerData.ratio"><div class="inner" :style="`width:${$com.switchRate(detailDrawerData.ratio)}%`"/></div>
</div> </div>
<div> <div>
<p class="title">加装情况</p> <p class="title">加装情况</p>
...@@ -102,7 +103,7 @@ export default { ...@@ -102,7 +103,7 @@ export default {
viewMode: '3D', // 开启3D视图,默认为关闭 viewMode: '3D', // 开启3D视图,默认为关闭
buildingAnimation:true, // 楼块出现是否带动画 buildingAnimation:true, // 楼块出现是否带动画
expandZoomRange:true, expandZoomRange:true,
zooms: [10,20], zooms: [15,20],
center: [121.544379, 31.221517], // 浦东新区 center: [121.544379, 31.221517], // 浦东新区
showIndoorMap: false, showIndoorMap: false,
// mapStyle:'amap://styles/light', // mapStyle:'amap://styles/light',
...@@ -270,13 +271,14 @@ export default { ...@@ -270,13 +271,14 @@ export default {
building: [], building: [],
}, },
eleDataSource: [], eleDataSource: [],
announceSource: [],
} }
}, },
mounted() { mounted() {
this.$nextTick(this.initMap) this.$nextTick(this.initMap)
}, },
methods: { methods: {
initMap(area) { initMap() {
this.map = new AMap.Map('elevatorMapContainer', this.mapConfig) this.map = new AMap.Map('elevatorMapContainer', this.mapConfig)
this.addController() this.addController()
this.initMenu() this.initMenu()
...@@ -290,18 +292,21 @@ export default { ...@@ -290,18 +292,21 @@ export default {
top: '10px', top: '10px',
} }
})) }))
// this.map.on('click', e => {
// console.log(e.lnglat.getLng() + ',' + e.lnglat.getLat())
// })
}, },
async initMenu() { // 初始化列表菜单 async initMenu() { // 初始化列表菜单
const streets = Object.keys(this.streetDic) const streets = Object.keys(this.streetDic)
if (this.$route.query && this.$route.query.name) { // 判断路由有街镇则显示该街镇列表 if (this.$route.query && this.$route.query.name) { // 判断路由有街镇则显示该街镇列表
const streetName = this.$route.query.name const streetName = this.$route.query.name
/** ----请求电梯加装数据----- */ /** ----请求电梯加装数据----- */
const {data} = await axios.get(`http://10.220.105.137:81/api/service-report/public/elv/consentRate?strName=${streetName}`) const {data} = await axios.get(`${this.$api.GET_ELE_DATA}?strName=${streetName}`)
this.eleDataSource = data && data.data && data.data.content // 请求 this.eleDataSource = data && data.data && data.data.content
/** ---------------------- */ const announceData = []
const {data: data2} = await axios.get(`${this.$api.GET_ANNOUNCE_DATA}?strName=${streetName}`)
data2 && data2.data && data2.data.content.forEach(item => {
if (!item.content || item.content.length === 0) return
announceData.push(...item.content)
})
this.announceSource = announceData
const result = streets.find(key => streetName.indexOf(this.streetDic[key]) >= 0) // 取得相符的街镇数据 const result = streets.find(key => streetName.indexOf(this.streetDic[key]) >= 0) // 取得相符的街镇数据
this.streetList = [result] this.streetList = [result]
this.$nextTick(() => { // 为了展开默认街镇小区列表 this.$nextTick(() => { // 为了展开默认街镇小区列表
...@@ -313,11 +318,10 @@ export default { ...@@ -313,11 +318,10 @@ export default {
initStreet() { // 初始化街镇 initStreet() { // 初始化街镇
const streetData = require(`@/mock/${this.curStreet}.js`).default const streetData = require(`@/mock/${this.curStreet}.js`).default
this.curStreetData = streetData this.curStreetData = streetData
this.map.setZoomAndCenter(15, streetData.location) this.map.setZoomAndCenter(16, streetData.location)
this.highlightArea(streetData) this.highlightArea(streetData)
}, },
highlightArea(area) { // 高亮区域 highlightArea(area) { // 高亮区域
if (this.$route.query && this.$route.query.community) return
if (!area.path || area.path <= 0) return if (!area.path || area.path <= 0) return
if (this.curStreetPolygon) { // 先清除已存在的高亮区域 if (this.curStreetPolygon) { // 先清除已存在的高亮区域
this.map.clearMap() this.map.clearMap()
...@@ -384,10 +388,7 @@ export default { ...@@ -384,10 +388,7 @@ export default {
this.showInfoTips(null, location, {title: name, content: address}) this.showInfoTips(null, location, {title: name, content: address})
}, },
addMarker(name) { // 点击小区后展示各楼栋的marker addMarker(name) { // 点击小区后展示各楼栋的marker
// this.map.remove(this.markerCollection) // 移除之前的marker // 07-01注释 为了初始化的时候就全部显示 // {
const markerCollection = []
// const {data} = await axios.get('http://yapi.omniview.pro/mock/279/public/elv/consentRate')
// const mock = [{
// 'unitNo': '20号', // 'unitNo': '20号',
// 'streetId': '12345', // 'streetId': '12345',
// 'streetName': '街道', // 'streetName': '街道',
...@@ -400,20 +401,21 @@ export default { ...@@ -400,20 +401,21 @@ export default {
// 'agree': 10,//同意 // 'agree': 10,//同意
// 'disagree': 10, //不同意 // 'disagree': 10, //不同意
// 'status' : '2' // 'status' : '2'
// }] // }
const communityName = name && (name + '').replace('(补)', '').replace('(补)', '') const communityName = name && (name + '').replace('(补)', '').replace('(补)', '')
const datasource = this.eleDataSource.filter(e => e.sectName.indexOf(communityName) >= 0 || communityName.indexOf(e.sectName) >= 0) // 筛选出返回数据中的相关小区数据 const datasource = this.eleDataSource.filter(e => (e.sectName && e.sectName.indexOf(communityName) >= 0) || communityName.indexOf(e.sectName) >= 0) // 筛选出返回数据中的相关小区数据
this.markerCollection = this.initMarker(name, datasource) this.markerCollection = this.initMarker(name, datasource)
this.map.add(this.markerCollection) this.map.add(this.markerCollection)
}, },
addSpecialMarker() { // 添加地图中特殊的标志点(已公告、同意率>50%等) addSpecialMarker() { // 添加地图中特殊的标志点(已公告、同意率>50%等)
this.addAnnounceMarker()
const markers = [] const markers = []
this.eleDataSource.forEach(item => { this.eleDataSource.forEach(item => {
if (item.ratio >= 0.5) { // 同意率>50% if (item.ratio >= 0.5) { // 同意率>50%
const communityName = item.sectName && (item.sectName + '').replace('(补)', '').replace('(补)', '') const communityName = item.sectName && (item.sectName + '').replace('(补)', '').replace('(补)', '')
const cur = this.buildingData.building.find(e => { const cur = this.buildingData.building.find(e => {
const name = e.name && (e.name + '').replace('(补)', '').replace('(补)', '') const name = e.name && (e.name + '').replace('(补)', '').replace('(补)', '')
return (communityName.indexOf(name) >= 0 || name.indexOf(communityName) >= 0) && ((e.buildingNo + '').indexOf(item.unitNo) >= 0 || item.unitNo.indexOf(e.buildingNo) >= 0) && (e.lon && e.lat) return (communityName.indexOf(name) >= 0 || name.indexOf(communityName) >= 0) && this.isSameUnit(e.buildingNo, item.unitNo) && (e.lon && e.lat)
}) // 查找出返回数据中的同一幢楼栋数据 }) // 查找出返回数据中的同一幢楼栋数据
if (!cur) return if (!cur) return
const marker = new AMap.Marker({ const marker = new AMap.Marker({
...@@ -440,37 +442,51 @@ export default { ...@@ -440,37 +442,51 @@ export default {
}) })
markers.push(marker) markers.push(marker)
} }
if (item.status == '1') { // 状态为已公告 })
const communityName = item.sectName && (item.sectName + '').replace('(补)', '').replace('(补)', '') this.map.add(markers)
const cur = this.buildingData.building.find(e => { },
const name = e.name && (e.name + '').replace('(补)', '').replace('(补)', '') async addAnnounceMarker() { // 添加已公告的点
return (communityName.indexOf(name) >= 0 || name.indexOf(communityName) >= 0) && (e.buildingNo && e.buildingNo.indexOf(item.unitNo) >= 0 || item.unitNo.indexOf(e.buildingNo) >= 0) && (e.lon && e.lat) const streetName = this.$route.query && this.$route.query.name
}) // 查找出返回数据中的同一幢楼栋数据 if (!streetName) return
if (!cur) return const {data} = await axios.get(`${this.$api.STATIC_URL}/mock/announce.json`)
const marker = new AMap.Marker({ const markers = []
position: [cur.lon, cur.lat], data.forEach(item => {
offset: new AMap.Pixel(-10, -65), if (item.street.indexOf(streetName) < 0) return
icon: new AMap.Icon({ const communityName = item.community && (item.community + '').replace('(补)', '').replace('(补)', '')
size: [20, 30], item.building.match(/([1-9]*)号/)
image: require('@/assets/images/notice.gif'), item.unitNo = RegExp.$1
}), const datasource = this.eleDataSource.filter(e => (e.sectName && e.sectName.indexOf(communityName) >= 0) || communityName.indexOf(e.sectName) >= 0) // 筛选出返回数据中的相关小区数据
extData: { const curObj = datasource.find(e => this.isSameUnit(e.unitNo, item.unitNo)) // 查找出返回数据中的同一幢楼栋数据
community: cur.name, const cur = this.buildingData.building.find(e => {
buildingNo: cur.buildingNo, const name = e.name && (e.name + '').replace('(补)', '').replace('(补)', '')
intention: cur.intention, return (communityName.indexOf(name) >= 0 || name.indexOf(communityName) >= 0) && this.isSameUnit(e.buildingNo, item.unitNo) && (e.lon && e.lat)
lon: cur.lon, }) // 查找出返回数据中的同一幢楼栋数据
lat: cur.lat, if (!cur) return
color: cur.color, const curInfo = this.announceSource.find(e => e.address === item.building)
...item const marker = new AMap.Marker({
}, position: [cur.lon, cur.lat],
}).on('click', e => { offset: new AMap.Pixel(-10, -65),
this.detailDrawer = true icon: new AMap.Icon({
this.detailDrawerData = marker.getExtData() size: [20, 30],
const {lon, lat} = this.detailDrawerData image: require('@/assets/images/notice.gif'),
this.showInfoTips(e, [e.lnglat.getLng(), e.lnglat.getLat()], marker.getExtData(), this.addPrism(lon, lat)) }),
}) extData: {
markers.push(marker) community: cur.name,
} buildingNo: cur.buildingNo,
intention: cur.intention,
lon: cur.lon,
lat: cur.lat,
color: cur.color,
...curObj,
status: (curInfo && curInfo.status) || 1,
},
}).on('click', e => {
this.detailDrawer = true
this.detailDrawerData = marker.getExtData()
const {lon, lat} = this.detailDrawerData
this.showInfoTips(e, [e.lnglat.getLng(), e.lnglat.getLat()], marker.getExtData(), this.addPrism(lon, lat))
})
markers.push(marker)
}) })
this.map.add(markers) this.map.add(markers)
}, },
...@@ -483,13 +499,15 @@ export default { ...@@ -483,13 +499,15 @@ export default {
const curObj = buildingDatas.find(e => e.unitNo.indexOf(item.buildingNo + '') >= 0 || (item.buildingNo + '').indexOf(e.unitNo) >= 0) // 查找出返回数据中的同一幢楼栋数据 const curObj = buildingDatas.find(e => e.unitNo.indexOf(item.buildingNo + '') >= 0 || (item.buildingNo + '').indexOf(e.unitNo) >= 0) // 查找出返回数据中的同一幢楼栋数据
if (!curObj) return if (!curObj) return
if (curObj.ratio < 0.25) return // if (curObj.ratio < 0.25) return
if (!curObj.disagree && !curObj.agree) return // 2021-04-27 改成只要有投票就标记一颗星
if(item && item.lon && item.lat && item.intention) { if(item && item.lon && item.lat && item.intention) {
const marker = new AMap.Marker({ const marker = new AMap.Marker({
position: [item.lon, item.lat], position: [item.lon, item.lat],
icon: new AMap.Icon({ icon: new AMap.Icon({
size: [20, 15], size: [14, 14],
image: require(`@/assets/images/${this.$com.switchIcon(curObj.ratio)}.png`), // image: require(`@/assets/images/${this.$com.switchIcon(curObj.ratio)}.png`),
image: require('@/assets/images/star1.png'),
}), }),
extData: { extData: {
community: item.name, community: item.name,
...@@ -524,19 +542,20 @@ export default { ...@@ -524,19 +542,20 @@ export default {
` `
}) })
} else { // 展示楼栋信息 } else { // 展示楼栋信息
const img = require(`@/assets/images/${this.$com.switchImg(data.ratio)}.png`) const content = data.ratio ? `
<p style="display:flex;align-items:center;justify-content:space-between;">
<div class="bar"><div class="inner" style="width:${this.$com.switchRate(data.ratio)}%"/></div>
<b style="color:#333;float:right;margin-right:.05rem;">${Math.round(data.ratio * 100)}%</b>
</p>` : ''
infoWindow = new AMap.InfoWindow({ infoWindow = new AMap.InfoWindow({
content: ` content: `
<div> <div class="info-window">
<b>${data.community}</b> <b>${data.community}</b>
<p style="margin:0.5rem 0;">${data.community} ${data.buildingNo}</p> <p style="margin:0.05rem 0;">${data.community} ${data.buildingNo}</p>
<p style="display:flex;align-items:center;justify-content:space-between;"> ${content}
<img style="width:80%;height:2rem;margin:0.5rem 0;" src='${img}'"/>
<b style="color:#34a2ff;">${Math.round(data.ratio * 100)}%</b>
</p>
</div> </div>
` `
}).on('close', e => { }).on('close', () => {
if (!prism) return if (!prism) return
prism.clear() prism.clear()
}) })
...@@ -575,23 +594,21 @@ export default { ...@@ -575,23 +594,21 @@ export default {
this.$router.replace({path: '/'}) this.$router.replace({path: '/'})
location.reload() location.reload()
}, },
isSameUnit(a, b) { // 判断是否同一个门牌号
if (!a || !b) return false
const unit1 = (a + '').replace(/[^0-9]/ig,'')
const unit2 = (b + '').replace(/[^0-9]/ig,'')
return unit1.indexOf(unit2) >= 0 || unit2.indexOf(unit1) >= 0
},
}, },
computed: { computed: {
tableHeight() { tableHeight() {
return screen.height / 2 return screen.height / 2
}, },
curCommunity() { // 小区列表大致颜色 curCommunity() { // 小区列表大致颜色
if (this.$route.query && this.$route.query.community) {
const {community} = this.$route.query
return [...this.curStreetData.community].filter(item => item.name.indexOf(community) >= 0 || community.indexOf(item.name) >= 0)
}
return [...this.curStreetData.community] return [...this.curStreetData.community]
}, },
curBuildingData() { // 附加的自描的楼栋 curBuildingData() { // 附加的自描的楼栋
if (this.$route.query && this.$route.query.community) {
const {community} = this.$route.query
return [...this.buildingData.community].filter(item => item.name.indexOf(community) >= 0 || community.indexOf(item.name) >= 0)
}
return [...this.buildingData.community] return [...this.buildingData.community]
}, },
}, },
...@@ -607,10 +624,7 @@ export default { ...@@ -607,10 +624,7 @@ export default {
this.curCommunity.forEach(item => { this.curCommunity.forEach(item => {
this.addMarker(item.name) this.addMarker(item.name)
}) })
this.addSpecialMarker() // TODO 是否先清除之前的? this.addSpecialMarker()
if (this.$route.query && this.$route.query.community) { // 如果有输入小区名则直接聚焦该小区
this.handleView(this.curCommunity[0])
}
} }
} }
} }
...@@ -624,80 +638,92 @@ export default { ...@@ -624,80 +638,92 @@ export default {
position relative position relative
.back-btn .back-btn
float right float right
margin-right 1rem margin-right .1rem
.menu .menu
position absolute position absolute
width 18% width 18%
text-align left text-align left
top 1rem top .1rem
left 1rem left .1rem
z-index 100 z-index 100
.community-list .community-list
>div >div
display flex display flex
justify-content space-between justify-content space-between
height .26rem
line-height @height
a a
display block display block
min-width 5rem min-width .5rem
text-align right text-align right
.tab-menu .tab-menu
position absolute position absolute
top 1rem top .1rem
left calc(18% + 2rem) left calc(18% + 0.2rem)
z-index 100 z-index 100
background #fff background #fff
.drawer-content .drawer-content
>div >div
margin-bottom 2rem margin-bottom .2rem
.title .title
font-size 1rem font-size .1rem
font-weight bold font-weight bold
margin-bottom .5rem margin-bottom .05rem
.sub-title .sub-title
display flex display flex
justify-content space-between justify-content space-between
margin .5rem 0 margin .05rem 0
span span
font-size .9rem font-size .09rem
color #666 color #666
&:last-child &:last-child
font-weight bold font-weight bold
color #34a2ff color #34a2ff
.condition .condition
width 50% width 50%
height 3rem height .3rem
background #8fd618 background #8fd618
border-radius .2rem border-radius .02rem
img.star img.star
width 10% width 10%
margin-right 5% margin-right 5%
img.bar .bar
background #d9ebff
width 100% width 100%
height 2rem height .2rem
position relative
border-radius .04rem
.inner
position absolute
left 0
top 0
bottom 0
background linear-gradient(to right, #0077ff, #44b1ff)
border-radius inherit
.status .status
display flex display flex
align-items center align-items center
img img
width 3rem width .3rem
height @width height @width
margin-right 1rem margin-right .1rem
.icon-tooltip .icon-tooltip
position absolute position absolute
top 1rem top .1rem
left calc(18% + 2rem) left calc(18% + 0.2rem)
z-index 100 z-index 100
p p
display flex display flex
align-items center align-items center
color #000 color #000
font-weight bold font-weight bold
margin-bottom 1rem margin-bottom .1rem
text-align left text-align left
span span
display inline-block display inline-block
width 4rem width .4rem
height 2rem height .2rem
margin-right 1rem margin-right .1rem
&:nth-child(1) &:nth-child(1)
span span
background #c60101 background #c60101
...@@ -708,9 +734,9 @@ export default { ...@@ -708,9 +734,9 @@ export default {
span span
background #95f500 background #95f500
img img
width 1.5rem width .15rem
height auto height auto
margin 0 2rem 0 1.5rem margin 0 .2rem 0 .15rem
</style> </style>
<style lang="stylus"> <style lang="stylus">
.amap-logo .amap-logo
...@@ -720,17 +746,33 @@ export default { ...@@ -720,17 +746,33 @@ export default {
img img
width 100% width 100%
height 100% height 100%
.menu .menu.ivu-collapse
.ivu-collapse-content .ivu-collapse-item
max-height 80vh font-size .11rem
overflow-y auto font-weight bold
overflow-x hidden .ivu-collapse-header
padding 0 1rem height .3rem
.ivu-collapse-content-box line-height @height
padding 1rem 0 padding 0 .12rem
button .ivu-icon
text-align left margin-right .05rem
font-size 1rem .ivu-collapse-content
max-height 80vh
overflow-y auto
overflow-x hidden
padding 0 .1rem
.ivu-collapse-content-box
padding .1rem 0
button
text-align left
font-size .11rem
overflow hidden
>span
display inline-block
width 100%
overflow hidden
white-space nowrap
text-overflow ellipsis
.tab-menu .tab-menu
.ivu-tabs-bar .ivu-tabs-bar
margin-bottom 0 margin-bottom 0
...@@ -738,4 +780,19 @@ export default { ...@@ -738,4 +780,19 @@ export default {
.ivu-tabs-tab .ivu-tabs-tab
&:last-child &:last-child
margin-right 0 margin-right 0
.info-window
font-size .1rem
.bar
background #d9ebff
min-width 1rem
height .16rem
position relative
border-radius .04rem
.inner
position absolute
left 0
top 0
bottom 0
background linear-gradient(to right, #0077ff, #44b1ff)
border-radius inherit
</style> </style>
<template>
<div id="container">
<!-- <Collapse v-model="curStreet" @on-change="handleSelect" class="menu" accordion>
<Panel v-for="street in streetList" :key="street" :name="street">
{{areaList[street].name}}小区列表
<div slot="content" class="community-list">
<div v-for="(item, index) in areaList[street].community" :key="item.name + index" style="display:flex;justify-content:space-between;">
<Button
@click="handleView(item)"
size="small"
type="text"
long>
{{item.name}}
</Button>
<a @click="handleDetail(item)" style="display:block;min-width:5rem;text-align:right;">详情</a>
</div>
</div>
</Panel>
</Collapse>
<Modal v-model="detailModal" width="90%" :footer-hide="true">
<Table :columns="columns" :data="detailData" size="small" :max-height="tableHeight"/>
</Modal> -->
</div>
</template>
<script>
// const {AMap} = window
// const star1 = require('@/assets/images/star1.png')
// const star2 = require('@/assets/images/star2.png')
// const star3 = require('@/assets/images/star3.png')
// import {mockCommunity, mockBuilding} from '@/mock/index.js'
// export default {
// name: 'Test',
// data() {
// return {
// map: null,
// buildingOptions: {
// hideWithoutStyle:false,//是否隐藏设定区域外的楼块
// areas:[
// { //围栏1
// //visible:false,//是否可见
// rejectTexture:true,//是否屏蔽自定义地图的纹理
// color1: 'ff99ff00',//楼顶颜色
// color2: 'ff999900',//楼面颜色
// path: [
// [121.498447,31.217582],
// [121.498466,31.218851],
// [121.497402,31.218943],
// [121.497423,31.217595],
// ]
// },
// {
// rejectTexture:true,//是否屏蔽自定义地图的纹理
// color1: 'ffcc0000',//楼顶颜色
// color2: 'ffaa0000',//楼面颜色
// path: [
// [121.497898,31.217932],
// [121.498456,31.217945],
// [121.498445,31.218445],
// [121.49791,31.218376],
// ]
// },
// {
// rejectTexture:true,//是否屏蔽自定义地图的纹理
// color1: 'ffffff00',//楼顶颜色
// color2: 'ffffcc00',//楼面颜色
// path: [
// [121.498696,31.218295],
// [121.498679,31.217744],
// [121.499197,31.217747],
// [121.499243,31.218324],
// ]
// },
// ]
// },
// mapConfig: {
// resizeEnable: true,
// rotateEnable:true,
// pitchEnable:true,
// showLabel: true,
// zoom: 15,
// pitch:0,
// rotation:45,
// viewMode:'3D',//开启3D视图,默认为关闭
// buildingAnimation:true,//楼块出现是否带动画
// expandZoomRange:true,
// zooms: [10,20],
// center: [121.544379, 31.221517], // 浦东新区
// showIndoorMap:false,
// // mapStyle:'amap://styles/light',
// features:['bg','road'],
// },
// areaList: mockCommunity,
// buildingList: mockBuilding,
// streetList: [],
// curStreetPolygon: null,
// curStreet: null,
// markerList: [],
// detailModal: false,
// columns: [
// {
// title: '小区',
// key: 'name',
// minWidth: 100,
// fixed: 'left',
// align: 'center',
// },
// {
// title: '楼栋号',
// key: 'buildingNo',
// minWidth: 100,
// fixed: 'left',
// align: 'center',
// },
// {
// title: '房屋性质',
// key: 'type',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '房龄',
// key: 'age',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '层高',
// key: 'high',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '4层以上是否有70岁以上老人',
// key: 'hasOld',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '4层以上是否有行动不便的残障人员',
// key: 'hasDisabled',
// minWidth: 150,
// align: 'center',
// },
// {
// title: '是否已有业主发起加梯动员',
// key: 'hasMobilizatin',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '楼内邻里关系是否和睦',
// key: 'hasPeace',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '楼内业主自住率是否高于80%',
// key: 'hasSelf',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '一楼是否非居',
// key: 'hasNonliving',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '是否有地下层',
// key: 'hasUnderground',
// minWidth: 130,
// align: 'center',
// },
// {
// title: '占用车道',
// key: 'hasLane',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '占用绿化',
// key: 'hasGreening',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '占用车位',
// key: 'hasParking',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '楼间距',
// key: 'spacing',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '连廊长度',
// key: 'corridorLength',
// minWidth: 100,
// align: 'center',
// },
// {
// title: '居民意愿',
// key: 'intention',
// minWidth: 100,
// align: 'center',
// },
// ],
// detailData: [],
// }
// },
// mounted() {
// this.$nextTick(this.initMap)
// },
// methods: {
// initMap(area) {
// this.map = new AMap.Map('container', this.mapConfig)
// // this.initLayers()
// this.addController()
// // this.addMarker()
// this.addEvents()
// this.highlightPudong()
// this.initMenu()
// },
// initMenu() {
// const streets = Object.keys(this.areaList)
// if (this.$route.query && this.$route.query.name) { // 判断路由有街镇则显示该街镇列表,没街镇显示所有街镇列表
// const streetName = this.$route.query.name
// let result = null
// streets.forEach(street => {
// if (streetName.indexOf(this.areaList[street].name) >= 0) {
// result = street
// }
// })
// this.streetList = [result]
// this.$nextTick(() => { // 为了展开默认街镇小区列表
// this.curStreet = result
// this.handleSelect([this.curStreet])
// })
// } else {
// this.streetList = streets
// }
// },
// handleView({name, address, location}) {
// this.map.setZoomAndCenter(18, location)
// this.showDetail(null, location, {title: name, content: address})
// this.addMarker(name)
// },
// handleDetail({name}) {
// if (!this.buildingList[`${this.curStreet}Building`]) return
// this.detailData = this.buildingList[`${this.curStreet}Building`].building.filter(item => item.name.indexOf(name) >= 0)
// this.detailModal = true
// },
// handleSelect(key) {
// if (!key || key.length <= 0) return
// this.map.setZoomAndCenter(15, this.areaList[key[0]].location)
// if (this.curStreetPolygon) {
// // this.map.remove(this.curStreetPolygon) // 移除之前的街镇区域底色
// this.map.clearMap()
// }
// this.initLayers(key)
// this.highlightArea(this.areaList[key[0]])
// },
// initLayers(street = null) { // 添加基础图层和建筑物图层
// const keys = Object.keys(this.areaList)
// if (keys.length <= 0) return
// const communityList = []
// if (street) {
// communityList.push(...this.areaList[street].community)
// if (this.buildingList[`${street}Building`]) {
// communityList.push(...this.buildingList[`${street}Building`].community) // 添加个别不同色的,手动上色的楼栋
// }
// } else {
// keys.forEach(key => {
// communityList.push(...this.areaList[key].community)
// })
// }
// const buildingOptions = {
// areas: communityList.map(item => {
// if (item.type != 'building') {
// new AMap.Polygon({
// zIndex: 10,
// bubble:false,
// fillColor: 'green',
// fillOpacity:0.2,
// strokeWeight:1,
// path: item.path,
// map:this.map
// }).on('click', e => {
// const location = [e.lnglat.getLng(), e.lnglat.getLat()]
// console.log(e.lnglat.getLng() + ',' + e.lnglat.getLat())
// // this.handleView(item)
// })
// }
// return {
// rejectTexture:true,//是否屏蔽自定义地图的纹理
// color1: this.$com.switchBuildingColor(item.level)[0],//楼顶颜色
// color2: this.$com.switchBuildingColor(item.level)[1],//楼面颜色
// path: item.path || []
// }
// })
// }
// const buildingLayer = new AMap.Buildings({zIndex:130,merge:false,sort:false,zooms:[10,20]})
// buildingLayer.setStyle(buildingOptions)
// this.map.setLayers([
// new AMap.TileLayer({}),
// buildingLayer
// ])
// // 框起的建筑物区域底板颜色(不写则无底色,不影响建筑颜色)
// // new AMap.Polygon({
// // bubble:false,
// // fillColor: 'green',
// // fillOpacity:0.2,
// // strokeWeight:1,
// // path: buildingOptions.areas[0].path,
// // map:this.map
// // }).on('click', e => {
// // const location = [e.lnglat.getLng(), e.lnglat.getLat()]
// // this.map.setZoomAndCenter(18.8, location)
// // })
// // new AMap.Polygon({
// // bubble:true,
// // fillOpacity:0.2,
// // strokeWeight:1,
// // path:this.buildingOptions.areas[1].path,
// // map:this.map
// // })
// },
// addController() { // 添加地图控制器
// this.map.addControl(new AMap.ControlBar({
// showZoomBar:false,
// showControlButton:true,
// position:{
// right:'10px',
// top:'10px'
// }
// }))
// },
// addMarker(name) {
// this.map.remove(this.markerList) // 移除之前的marker
// if (!this.buildingList[`${this.curStreet}Building`]) return
// const whichImage = (intention) => {
// if (intention.indexOf('一') >= 0) {
// return {
// src: star1,
// size: [10, 15],
// }
// } else if (intention.indexOf('二') >= 0 || intention.indexOf('两') >= 0) {
// return {
// src: star2,
// size: [15, 15],
// }
// } else if (intention.indexOf('三') >= 0) {
// return {
// src: star3,
// size: [20, 15],
// }
// }
// }
// const markerList = []
// this.buildingList[`${this.curStreet}Building`].building.forEach(item => {
// if(item.name.indexOf(name) >= 0 && item.lon && item.lat && item.intention) {
// const image = whichImage(item.intention)
// const style = {
// img:image.src,
// size:image.size,//可见区域的大小
// fitZoom:18,//最合适的级别
// scaleFactor:2,//地图放大一级的缩放比例系数
// maxScale:1.4,//最大放大比例
// minScale:0.8//最小放大比例
// }
// const marker = new AMap.ElasticMarker({
// position: [item.lon, item.lat],
// zooms:[16,20],
// extData: {
// title: item.buildingNo,
// content: `居民意愿度:${item.intention}`
// },
// styles:[
// {
// icon:{
// ancher:[0,30],//锚点
// ...style,
// }
// },
// {
// icon:{
// ancher:[0,45],//锚点
// ...style,
// }
// },
// {
// icon:{
// ancher:[0,60],//锚点
// ...style,
// }
// },
// {
// icon:{
// ancher:[0,80],//锚点
// ...style,
// }
// },
// {
// icon:{
// ancher:[0,100],//锚点
// ...style,
// }
// }
// ],
// zoomStyleMapping: {
// 16:0,
// 17:1,
// 18:2,
// 19:3,
// 20:4,
// }
// }).on('click', e => {
// const location = [e.lnglat.getLng(), e.lnglat.getLat()]
// this.showDetail(e, location, marker.getExtData())
// })
// markerList.push(marker)
// }
// })
// this.map.add(markerList)
// this.markerList = markerList
// // new AMap.Marker({
// // map: this.map,
// // position: [121.498973,31.218018],
// // extData: {
// // title: '测试点击',
// // content: '测试额外附加数据',
// // },
// // icon: new AMap.Icon({
// // size: new AMap.Size(30, 30), //图标大小
// // image: require('@/assets/images/attorney.png'),
// // // imageOffset: new AMap.Pixel(0, -60)
// // })
// // }).on('click', e => {
// // const location = [e.lnglat.getLng(), e.lnglat.getLat()]
// // this.showDetail(e, location, marker.getExtData())
// // })
// },
// showDetail(e, location, data) {
// // TODO
// const infoWindow = new AMap.InfoWindow({
// content: `
// <div>
// <b>${data.title}</b>
// <p>${data.content || '暂无其他信息'}</p>
// </div>
// `
// })
// infoWindow.open(this.map, location)
// },
// addEvents() {
// this.map.on('click', e => {
// const location = [e.lnglat.getLng(), e.lnglat.getLat()]
// // this.map.setZoomAndCenter(18.8, location)
// console.log(e.lnglat.getLng() + ',' + e.lnglat.getLat())
// })
// },
// highlightArea(area) {
// if (!area.path || area.path <= 0) return
// const polygon = new AMap.Polygon({
// zIndex: 1,
// strokeWeight: 3,
// strokeStyle:'dashed',
// path: area.path,
// fillOpacity: 0.2,
// fillColor: '#80d8ff',
// strokeColor: '#0091ea'
// }).on('click', e => {
// console.log(e.lnglat.getLng() + ',' + e.lnglat.getLat())
// })
// this.curStreetPolygon = polygon
// // const outer = [
// // new AMap.LngLat(-360,90,true),
// // new AMap.LngLat(-360,-90,true),
// // new AMap.LngLat(360,-90,true),
// // new AMap.LngLat(360,90,true),
// // ]
// // const holes = [area.path]
// // const pathArray = [
// // outer
// // ]
// // pathArray.push.apply(pathArray,holes)
// // const polygon1 = new AMap.Polygon( {
// // pathL:pathArray,
// // //线条颜色,使用16进制颜色代码赋值。默认值为#006600
// // strokeColor: 'rgb(20,164,173)',
// // strokeWeight: 4,
// // //轮廓线透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
// // strokeOpacity:0.5,
// // //多边形填充颜色,使用16进制颜色代码赋值,如:#FFAA00
// // fillColor: 'rgba(255,255,255,0.3)',
// // //多边形填充透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
// // fillOpacity: 1,
// // //轮廓线样式,实线:solid,虚线:dashed
// // strokeStyle:'dashed',
// // /*勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在
// // ie9+浏览器有效 取值:
// // 实线:[0,0,0]
// // 虚线:[10,10] ,[10,10] 表示10个像素的实线和10个像素的空白(如此反复)组成的虚线
// // 点画线:[10,2,10], [10,2,10] 表示10个像素的实线和2个像素的空白 + 10个像素的实
// // 线和10个像素的空白 (如此反复)组成的虚线*/
// // strokeDasharray:[10,2,10]
// // })
// // polygon1.setPath(pathArray)
// // this.map.add(polygon1)
// this.map.add([polygon])
// },
// highlightPudong() {
// // new AMap.DistrictSearch({
// // level: 'district',
// // subdistric: 1,
// // }).search('浦东新区', (status, result) => {
// // console.log('---浦东新区街镇---', result.districtList[0].districtList)
// // })
// // 给浦东新区添加蓝色遮罩
// // new AMap.DistrictSearch({
// // level: 'district',
// // extensions: 'all',
// // subdistric: 1,
// // }).search('浦东新区', (staus, result) => {
// // var bounds = result.districtList[0].boundaries
// // var polygon = new AMap.Polygon({
// // strokeWeight: 1,
// // path: bounds[0],
// // fillOpacity: 0.4,
// // fillColor: '#80d8ff',
// // strokeColor: '#0091ea'
// // })
// // this.map.add([polygon])
// // })
// // 只显示浦东新区,其他置灰
// // new AMap.DistrictSearch({
// // extensions:'all',
// // subdistrict:0
// // }).search('浦东新区',(status,result) => {
// // // 外多边形坐标数组和内多边形坐标数组
// // const outer = [
// // new AMap.LngLat(-360,90,true),
// // new AMap.LngLat(-360,-90,true),
// // new AMap.LngLat(360,-90,true),
// // new AMap.LngLat(360,90,true),
// // ]
// // const holes = result.districtList[0].boundaries
// // const pathArray = [
// // outer
// // ]
// // pathArray.push.apply(pathArray,holes)
// // const polygon = new AMap.Polygon( {
// // pathL:pathArray,
// // //线条颜色,使用16进制颜色代码赋值。默认值为#006600
// // strokeColor: 'rgb(20,164,173)',
// // strokeWeight: 4,
// // //轮廓线透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
// // strokeOpacity:0.5,
// // //多边形填充颜色,使用16进制颜色代码赋值,如:#FFAA00
// // fillColor: 'rgba(255,255,255,0.3)',
// // //多边形填充透明度,取值范围[0,1],0表示完全透明,1表示不透明。默认为0.9
// // fillOpacity: 1,
// // //轮廓线样式,实线:solid,虚线:dashed
// // strokeStyle:'dashed',
// // /*勾勒形状轮廓的虚线和间隙的样式,此属性在strokeStyle 为dashed 时有效, 此属性在
// // ie9+浏览器有效 取值:
// // 实线:[0,0,0]
// // 虚线:[10,10] ,[10,10] 表示10个像素的实线和10个像素的空白(如此反复)组成的虚线
// // 点画线:[10,2,10], [10,2,10] 表示10个像素的实线和2个像素的空白 + 10个像素的实
// // 线和10个像素的空白 (如此反复)组成的虚线*/
// // strokeDasharray:[10,2,10]
// // })
// // polygon.setPath(pathArray)
// // this.map.add(polygon)
// // })
// },
// },
// computed: {
// tableHeight() {
// return screen.height / 2
// }
// }
// }
// </script>
<style lang="stylus" scoped>
#container
width 100%
height 100%
resize both
position relative
cursor auto
.menu
position absolute
width 18%
text-align left
top 1rem
left 1rem
z-index 100
max-height 90vh
overflow-y auto
</style>
<style lang="stylus">
.amap-logo
.amap-copyright
display none !important
.amap-icon
img
width 100%
height 100%
.menu
.ivu-collapse-content
max-height 80vh
overflow-y auto
overflow-x hidden
padding 0 1rem
.ivu-collapse-content-box
padding 1rem 0
button
text-align left
font-size 1rem
</style>
[
{"street": "东明", "community": "品华苑", "building":"环林西路608弄8号"},
{"street": "北蔡", "community": "莲文苑", "building":"莲园路77弄3号"},
{"street": "北蔡", "community": "莲宏苑小区", "building":"北中路247弄18号"},
{"street": "周家渡", "community": "昌里东路395弄99号", "building":"昌里东路395弄99号"},
{"street": "南码头", "community": "临沂六村", "building":"临沂路181弄31号"},
{"street": "潍坊", "community": "潍坊十村", "building":"潍坊路154弄、140弄14号"},
{"street": "潍坊", "community": "潍坊八村", "building":"浦电路305弄16号"},
{"street": "潍坊", "community": "潍坊八村", "building":"浦电路305弄19号"},
{"street": "潍坊", "community": "潍坊八村", "building":"浦电路331弄21号"},
{"street": "唐镇", "community": "新雅南小区(宏伟)", "building":"丽雅路122弄17号"},
{"street": "金杨", "community": "金樟小区", "building":"栖山路1489、1555弄3号"},
{"street": "川沙", "community": "王桥苑", "building":"川环南路1155弄"},
{"street": "金杨", "community": "金杨四居", "building":"金杨路685弄43号"},
{"street": "周家渡", "community": "成山路300弄", "building":"成山路300弄29号"},
{"street": "川沙", "community": "龙馨华庭", "building":"普庆路115弄25号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄41号"},
{"street": "川沙", "community": "金钟苑", "building":"妙境路55弄3号"},
{"street": "惠南", "community": "东城华都", "building":"靖海路525弄17号"},
{"street": "南码头", "community": "临沂六村", "building":"临沂六村288弄16号"},
{"street": "东明", "community": "三林苑", "building":"三林路1466弄66号"},
{"street": "周家渡", "community": "云台二", "building":"昌里东路190弄14号"},
{"street": "上钢", "community": "济阳一村", "building":"德州路420弄9号"},
{"street": "上钢", "community": "济阳三村", "building":"西营路114弄7号"},
{"street": "惠南", "community": "爱盛家园", "building":"文友街16弄10号"},
{"street": "川沙", "community": "界龙阳光苑", "building":"南桥路1100弄17号"},
{"street": "惠南", "community": "海燕苑", "building":"工农南路196弄10号"},
{"street": "北蔡", "community": "华佳花园", "building":"高科西路3000弄13号"},
{"street": "北蔡", "community": "华佳花园", "building":"高科西路3000弄42号"},
{"street": "北蔡", "community": "华佳花园", "building":"高科西路3000弄18号"},
{"street": "惠南", "community": "东城花苑", "building":"靖海路388弄东城二村一区7号"},
{"street": "惠南", "community": "南城苑", "building":"福汇路62弄南城苑小区9号"},
{"street": "惠南", "community": "南城苑", "building":"福汇路62弄南城苑小区11号"},
{"street": "惠南", "community": "南城苑", "building":"福汇路62弄南城苑小区12号"},
{"street": "周家渡", "community": "齐四小区", "building":"南码头1351弄1号"},
{"street": "金杨", "community": "罗山八村", "building":"博山东路128弄28号"},
{"street": "上钢", "community": "上钢一村", "building":"上钢一村35号"},
{"street": "川沙", "community": "佳运公寓", "building":"川环南路579弄13号"},
{"street": "三林", "community": "长清苑", "building":"杨新路281弄43号"},
{"street": "三林", "community": "东林苑", "building":"西营南路68弄43号"},
{"street": "金杨", "community": "金云苑", "building":"德平路58弄7号"},
{"street": "惠南", "community": "彩虹园", "building":"城西路102弄11号"},
{"street": "惠南", "community": "东城二村", "building":"拱极路2381弄59号"},
{"street": "惠南", "community": "东城华都", "building":"靖海路525弄2号"},
{"street": "惠南", "community": "鑫通公寓", "building":"南门大街21号7号"},
{"street": "惠南", "community": "鑫通公寓", "building":"南门大街21号8号"},
{"street": "惠南", "community": "鑫通公寓", "building":"南门大街21号9号"},
{"street": "川沙", "community": "玉宇小区", "building":"新川路856弄13号"},
{"street": "川沙", "community": "玉宇小区", "building":"新川路856弄1号"},
{"street": "北蔡", "community": "华佳花园", "building":"高科西路3000号39号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄37号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄33号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄31号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄35号"},
{"street": "川沙", "community": "云川公寓", "building":"民贤路28弄11号"},
{"street": "周家渡", "community": "昌七小区", "building":"南码头路1675弄37号"},
{"street": "康桥", "community": "双秀北园", "building":"沪南公路3150弄37号"},
{"street": "潍坊", "community": "潍坊九村", "building":"浦电路330弄61号"},
{"street": "潍坊", "community": "潍坊九村", "building":"浦电路330弄62号"},
{"street": "浦兴", "community": "金藤苑", "building":"五莲路780弄42号"},
{"street": "惠南", "community": "爱盛家园", "building":"文师街69弄11号"},
{"street": "北蔡", "community": "海东公寓", "building":"莲园路100弄36号"},
{"street": "浦兴", "community": "荷五小区", "building":"长岛路1398弄29号"},
{"street": "浦兴", "community": "荷五小区", "building":"长岛路1398弄35号"},
{"street": "金杨", "community": "黄山始信苑", "building":"博山东路553弄36号"},
{"street": "金杨", "community": "黄山一村", "building":"博山东路440弄34号"},
{"street": "周家渡", "community": "上南七村", "building":"上南七村118号"},
{"street": "金杨", "community": "金杨四居", "building":"金杨路685弄54号"},
{"street": "周家渡", "community": "洪山花苑", "building":"洪山路300弄3号"},
{"street": "川沙", "community": "妙栏路265弄", "building":"妙栏路265弄37号"},
{"street": "川沙", "community": "妙栏路265弄", "building":"妙栏路265弄38号"},
{"street": "张江", "community": "张江新苑", "building":"紫薇路35弄13号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄29号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄47号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄75号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄128号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄56号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄33号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄109号"},
{"street": "东明", "community": "杉林新月家园", "building":"环林东路879弄138号"},
{"street": "东明", "community": "三林苑", "building":"三林路1466弄16号"},
{"street": "周家渡", "community": "上南四村", "building":"上南路1251弄1号"},
{"street": "高桥", "community": "欧高路138弄", "building":"欧高路138弄10号"},
{"street": "周家渡", "community": "昌五小区", "building":"昌五小区650弄14号"},
{"street": "周浦", "community": "汇丽苑", "building":"关岳路229弄64号"},
{"street": "川沙", "community": "瀚龙苑", "building":"华夏东路860弄28号"},
{"street": "川沙", "community": "玉宇小区", "building":"新川路856弄12号"},
{"street": "川沙", "community": "玉宇小区", "building":"新川路856弄2号"},
{"street": "周家渡", "community": "上南三村", "building":"上南三村85号"},
{"street": "洋泾", "community": "博山小区", "building":"博山路50弄、78弄74号"},
{"street": "张江", "community": "兰沁苑", "building":"紫薇路750弄38号"},
{"street": "洋泾", "community": "明珠苑", "building":"张杨路2238弄45号"},
{"street": "周家渡", "community": "上南八村", "building":"洪山路237弄21号"},
{"street": "高行", "community": "东沟二村", "building":"东靖路东沟北路7号"},
{"street": "高行", "community": "东沟二村", "building":"东靖路东沟北路9号"},
{"street": "高行", "community": "东沟二村", "building":"东靖路东沟北路14号"},
{"street": "高行", "community": "东沟二村", "building":"东靖路东沟北路24号"},
{"street": "浦兴", "community": "东陆新村四街坊", "building":"凌河路38弄32号"},
{"street": "浦兴", "community": "东陆新村四街坊", "building":"凌河路38弄74号"},
{"street": "金桥", "community": "佳虹小区", "building":"永业路193弄2号"},
{"street": "金桥", "community": "佳虹小区", "building":"永业路193弄3号"},
{"street": "周家渡", "community": "上南三村", "building":"上南路1251弄87号"},
{"street": "洋泾", "community": "博山小区", "building":"博山路50弄、78弄67号"},
{"street": "南码头", "community": "绿洲小区", "building":"浦三路741弄18号"},
{"street": "北蔡", "community": "莲宏苑小区", "building":"莲园路468弄19号"},
{"street": "北蔡", "community": "莲宏苑小区", "building":"北中路247弄17号"},
{"street": "北蔡", "community": "莲宏苑小区", "building":"北中路247弄16号"},
{"street": "上钢", "community": "济阳二三村", "building":"德州路465弄10号"},
{"street": "上钢", "community": "济阳二三村", "building":"德州路465弄2号"},
{"street": "川沙", "community": "龙馨华庭", "building":"普庆路115弄5号"},
{"street": "三林", "community": "华城丽苑", "building":"杨思路301弄1号"},
{"street": "泥城", "community": "云欣苑", "building":"云汉路1096弄13号"},
{"street": "泥城", "community": "云欣苑", "building":"云汉路1096弄40号"},
{"street": "泥城", "community": "云欣苑", "building":"云汉路1096弄42号"},
{"street": "唐镇", "community": "金枫公寓", "building":"虹盛东路39弄10号"},
{"street": "东明", "community": "品华苑", "building":"环林西路608弄75号"},
{"street": "惠南", "community": "申云小区", "building":"广衍路18弄6号"},
{"street": "金杨", "community": "罗山一村", "building":"德平路25弄19号"},
{"street": "周浦", "community": "汇丽苑", "building":"关岳路229弄10号"},
{"street": "金杨", "community": "广洋苑", "building":"居家桥路699弄12号"},
{"street": "书院", "community": "新舒苑北苑", "building":"丽正路1059弄71号"},
{"street": "高东", "community": "高东馨苑", "building":"光泽路428弄6号"},
{"street": "高东", "community": "盛世东苑", "building":"光泽路120弄74号"},
{"street": "航头", "community": "聚航苑", "building":"航梅路526弄78支弄158号"},
{"street": "航头", "community": "聚航苑", "building":"航梅路526弄78支弄142号"},
{"street": "塘桥", "community": "国地公寓", "building":"浦东南路2244弄3号"},
{"street": "唐镇", "community": "新雅南小区(宏伟)", "building":"丽雅路122弄19号"},
{"street": "金杨", "community": "金杨四居", "building":"金杨路685弄50号"},
{"street": "三林", "community": "上河苑", "building":"杨新路282弄10号"},
{"street": "塘桥", "community": "山泉花苑", "building":"峨山路485弄1号"},
{"street": "周浦", "community": "康馨苑", "building":"上南路6932弄12号"},
{"street": "周浦", "community": "惠浦公寓", "building":"康沈路1870弄9号"},
{"street": "唐镇", "community": "金枫公寓", "building":"虹盛东路39弄8号"},
{"street": "唐镇", "community": "金枫公寓", "building":"虹盛东路39弄13号"},
{"street": "唐镇", "community": "东唐苑", "building":"唐镇路321弄2号"},
{"street": "金桥", "community": "永业小区", "building":"永业路94弄22号"},
{"street": "惠南", "community": "龙源星城", "building":"人民东路22弄2号"},
{"street": "金桥", "community": "金色米兰苑", "building":"佳乐路255弄53号"},
{"street": "塘桥", "community": "国地公寓", "building":"浦东南路2244弄1号"},
{"street": "南码头", "community": "东盛公寓", "building":"浦三路821弄30号"},
{"street": "周浦", "community": "圣蓝苑", "building":"康沈路1527弄33号"},
{"street": "宣桥", "community": "明祥苑", "building":"闵家浜路60弄6号"},
{"street": "宣桥", "community": "明祥苑", "building":"闵家浜路50弄12号"},
{"street": "上钢", "community": "上钢六村", "building":"长清路、成山路10号"},
{"street": "惠南", "community": "东城花都", "building":"靖海路525弄7号"},
{"street": "惠南", "community": "时代华庭", "building":"拱极路2289弄25号"},
{"street": "南码头", "community": "临沂六村", "building":"浦三路288弄31号"},
{"street": "新场", "community": "古馨苑", "building":"新环西路800弄2号"},
{"street": "合庆", "community": "华邦佳苑", "building":"华夏东路3038弄4号"},
{"street": "万祥", "community": "万祥馨苑", "building":"万和路75号"},
{"street": "川沙", "community": "情谊苑", "building":"新德路602弄13号楼"},
{"street": "南码头", "community": "铭城园", "building":"浦三路28弄2号楼"},
{"street": "东明", "community": "红枫苑", "building":"环林西路848弄18号楼"},
{"street": "惠南", "community": "香桂园", "building":"育海路88弄24号楼"},
{"street": "北蔡", "community": "莲溪一村", "building":"北中路354弄30号楼"},
{"street": "洋泾", "community": "泾华小区", "building":"浦东大道1700弄6号楼"},
{"street": "金桥", "community": "永业小区", "building":"永业路94弄37号"},
{"street": "塘桥", "community": "山泉花苑", "building":"峨山路485弄4号"},
{"street": "高行", "community": "华高庭院", "building":"金高路1051弄2号"},
{"street": "潍坊", "community": "众盛公寓", "building":"浦电路53弄7号"},
{"street": "川沙", "community": "云川公寓", "building":"民贤路28弄13号"},
{"street": "川沙", "community": "云川公寓", "building":"民贤路28弄16号"},
{"street": "北蔡", "community": "锦华花园", "building":"锦绣路2866弄3号"},
{"street": "北蔡", "community": "锦华花园", "building":"锦绣路2866弄4号"},
{"street": "川沙", "community": "新川苑", "building":"新川路640弄6号"},
{"street": "洋泾", "community": "巨野公寓", "building":"沈家弄路870弄4号"},
{"street": "塘桥", "community": "山泉花苑", "building":"峨山路485弄3号"},
{"street": "沪东", "community": "伟业一村", "building":"莱阳路881弄31号"},
{"street": "东明", "community": "兰庭苑", "building":"上南路4185弄17号"},
{"street": "花木", "community": "由中苑", "building":"严民路221弄17号"},
{"street": "金杨", "community": "罗山一村", "building":"浦东大道2388弄12号"},
{"street": "曹路", "community": "民雪路108弄住宅小区", "building":"民雪路108弄"},
{"street": "金杨", "community": "金杨八居", "building":"金杨路750弄65号"},
{"street": "周家渡", "community": "上南四村", "building":"上南路1251弄16号"},
{"street": "川沙", "community": "佳腾花园", "building":"华夏东路1782号8号"},
{"street": "南码头", "community": "东方路3721弄小区", "building":"东方路3721弄1-8号"},
{"street": "川沙", "community": "华沙二村", "building":"新川路709弄11号"},
{"street": "川沙", "community": "华沙二村", "building":"新川路709弄18号"},
{"street": "东明", "community": "三林苑", "building":"永泰路1129弄17号"},
{"street": "花木", "community": "芳华路53号", "building":"芳华路53号"},
{"street": "金杨", "community": "金浜小区", "building":"栖山路1689弄1号"},
{"street": "金杨", "community": "金浜小区", "building":"栖山路1689弄2号"},
{"street": "北蔡", "community": "海东公寓", "building":"莲园路100弄11号"},
{"street": "川沙", "community": "鹤兴苑", "building":"乔家浜路81弄3号"},
{"street": "高桥", "community": "张杨北路5449弄小区", "building":"张杨北路5449弄2号"},
{"street": "川沙", "community": "恒乐苑", "building":"新川路922弄5号"},
{"street": "张江", "community": "孙桥花苑", "building":"孙桥路306弄16号"},
{"street": "川沙", "community": "云川公寓", "building":"民贤路28弄9号"},
{"street": "东明", "community": "三林苑", "building":"永泰路1129弄25号"},
{"street": "东明", "community": "三林苑", "building":"永泰路1129弄34号"},
{"street": "金桥", "community": "永业小区", "building":"永业路94弄19号"},
{"street": "金桥", "community": "永业小区", "building":"永业路42弄11号"},
{"street": "三林", "community": "长清苑", "building":"杨新路281弄40号"},
{"street": "金桥", "community": "永业小区", "building":"永业路42弄7号"},
{"street": "金桥", "community": "永业小区", "building":"永业路42弄5号"},
{"street": "东明", "community": "红柿苑8号", "building":"环林西路777弄8号"},
{"street": "曹路", "community": "阳光苑", "building":"民耀路98弄26号"},
{"street": "北蔡", "community": "华佳花园", "building":"高科西路3000号39号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄37号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄33号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄31号"},
{"street": "陆家嘴", "community": "福山小区", "building":"乳山路235弄35号"}
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment