Commit 52325ffe authored by wangjiankun's avatar wangjiankun

feat: 楼盘详情除土拍信息和房屋信息的两个图表其他已变为动态

fix: 地图覆盖物鼠标移入移出的样式 多级表头数据不存在时显示---
parent e906af89
...@@ -2,5 +2,5 @@ NODE_ENV = "development" ...@@ -2,5 +2,5 @@ NODE_ENV = "development"
BASE_URL = "./" BASE_URL = "./"
VUE_APP_PUBLIC_PATH = "./" VUE_APP_PUBLIC_PATH = "./"
VUE_APP_API = "http://10.96.7.150:8080/api/v1/" VUE_APP_API = "http://10.96.4.28:9393/api/v1/"
VUE_APP_OSS_SRC = "https://ss1.bdstatic.com" VUE_APP_OSS_SRC = "https://ss1.bdstatic.com"
...@@ -2,7 +2,7 @@ NODE_ENV = 'production' ...@@ -2,7 +2,7 @@ NODE_ENV = 'production'
BASE_URL = 'https://prod.breaker93.com/' BASE_URL = 'https://prod.breaker93.com/'
VUE_APP_PUBLIC_PATH = './' VUE_APP_PUBLIC_PATH = './'
VUE_APP_API = 'https://prod.breaker93.com/api' VUE_APP_API = 'http://106.2.11.235:38091/api/v1/'
VUE_APP_OSS_SRC = '' VUE_APP_OSS_SRC = ''
ACCESS_KEY_ID = 'xxxxxxxxxxxxx' ACCESS_KEY_ID = 'xxxxxxxxxxxxx'
...@@ -11,4 +11,4 @@ REGION = 'oss-cn-hangzhou' ...@@ -11,4 +11,4 @@ REGION = 'oss-cn-hangzhou'
BUCKET = 'staven-prod' BUCKET = 'staven-prod'
PREFIX = 'staven-blog' PREFIX = 'staven-blog'
outputDir = 'prod' outputDir = 'prod'
\ No newline at end of file
...@@ -18,3 +18,14 @@ export function queryAllRegions() { ...@@ -18,3 +18,14 @@ export function queryAllRegions() {
export function queryPlateByRegion(param) { export function queryPlateByRegion(param) {
return xhr.get('/bnsregion/bns-region/RegionAndProjectSize', param) return xhr.get('/bnsregion/bns-region/RegionAndProjectSize', param)
} }
// 楼盘详情查询
export function queryPropertyDetail(id) {
console.log(id)
return xhr.get('/bnsproject/bns-project/withProjectAndProduct/selectDetils/'+ id)
}
// 根据楼盘Id查询楼盘销售信息---供求数据
export function queryPropertySupplyData(projectId) {
return xhr.get('/bnssale/bns-sale/selectProject', {
projectId
})
}
const map = {
'nxmk': '南向面宽',
'qjsmk': '起居室面宽',
'zwmk': '主卧面宽',
'kwmk': '客卧面宽'
}
// 处理板块数据分析中的 房屋面宽数据 使之对应图表数据结构
export function dealHouseData(data) {
let Arr = []
let columArr = ['roomInfo']
Object.keys(map).forEach(key => {
let save = {}
data.forEach(item => {
if(columArr.length - 1 !== data.length) {
columArr.push(item.production)
}
if(!save.roomInfo) {
save.roomInfo = map[key]
}
save[item.production] = item[key]
})
Arr.push(save)
return {
cloum: columArr,
rows: Arr
}
})
}
// 平均化经纬度坐标并返回
export function averagePosition(array) {
let lng = 0
let lat = 0
array.forEach(item => {
lng += item.longitude
lat += item.latitude
})
return {
longitude: (lng/array.length).toFixed(6),
latitude: (lat/array.length).toFixed(6)
}
}
...@@ -96,7 +96,6 @@ export default { ...@@ -96,7 +96,6 @@ export default {
}, },
computed: { computed: {
routes() { routes() {
console.log(this.$router.options.routes)
return this.$router.options.routes; return this.$router.options.routes;
}, },
}, },
......
...@@ -75,14 +75,8 @@ ...@@ -75,14 +75,8 @@
let result let result
if(res.data.flag === 'plateRegion') { if(res.data.flag === 'plateRegion') {
result = res.data.regionByNames[0] result = res.data.regionByNames[0]
result.lng = result.longitude
result.lat = result.latitude
} else { } else {
result = res.data.projectByName result = res.data.projectByName
result.forEach(item => {
item.lng = item.longitude
item.lat = item.latitude
})
} }
window.eventBus.$emit('searchParamChange', { window.eventBus.$emit('searchParamChange', {
type: res.data.flag, type: res.data.flag,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<el-carousel :interval="5000" arrow="always" indicator-position="outside" @change="bannerChange"> <el-carousel :interval="5000" arrow="always" indicator-position="outside" @change="bannerChange">
<el-carousel-item class="carouselCenter" v-for="(item, index) in bannerData" :key="index"> <el-carousel-item class="carouselCenter" v-for="(item, index) in bannerData" :key="index">
<viewer :images="[]" :style="{ width: imgWidth + '%', height: '100%', margin: '0 auto' }"> <viewer :images="[]" :style="{ width: imgWidth + '%', height: '100%', margin: '0 auto' }">
<img :src="item.bannerSrc" :style="{ width: '100%', height: '100%' }"> <img :src="item.filePath" :style="{ width: '100%', height: '100%' }">
</viewer> </viewer>
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
......
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
<bm-overlay <bm-overlay
ref="customOverlay" ref="customOverlay"
pane="labelPane" pane="labelPane"
@mouseenter.native="active = true"
@mouseleave.native="active = false"
:class="{'flex': true}" :class="{'flex': true}"
:style="backGroundType === 'image' ? {} : { width: width + 'px', height: height + 'px', color: textColor, backgroundColor: bgColor, borderRadius: circle }" :style="backGroundType === 'waterDrop' ? {} : { width: width + 'px', height: height + 'px', color: textColor, backgroundColor: active ? activeColor : bgColor , borderRadius: circle }"
@draw="draw"> @draw="draw">
<div <div
:style="{fontSize: fontSize, fontFamily: 'Arial', textAlign: 'center', fontWeight: 'normal'}" :style="{fontSize: fontSize, fontFamily: 'Arial', textAlign: 'center', fontWeight: 'normal'}"
...@@ -19,7 +21,12 @@ ...@@ -19,7 +21,12 @@
<script> <script>
export default { export default {
name: 'overlay', name: 'overlay',
props: ['text', 'position', 'backGroundType', 'textColor', 'bgColor', 'circle', 'width', 'height', 'num', 'fontSize'], props: ['text', 'position', 'backGroundType', 'textColor', 'bgColor', 'circle', 'width', 'height', 'num', 'fontSize', 'activeColor'],
data () {
return {
active: false
}
},
watch: { watch: {
position: { position: {
handler () { handler () {
...@@ -50,10 +57,8 @@ ...@@ -50,10 +57,8 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
filter: grayscale(0%)
} }
.flex:hover{ .flex:hover{
filter: grayscale(50%)
z-index: 9999; z-index: 9999;
} }
.centerImage{ .centerImage{
......
...@@ -28,12 +28,13 @@ ...@@ -28,12 +28,13 @@
<el-row :class="{'dataCell':true, 'prodName': index < 2}">{{item.productionName}}</el-row> <el-row :class="{'dataCell':true, 'prodName': index < 2}">{{item.productionName}}</el-row>
<el-col class="productionDetail" :span="12" v-for="(item2,index) in item.productionProperties" :key="index"> <el-col class="productionDetail" :span="12" v-for="(item2,index) in item.productionProperties" :key="index">
<el-row v-for="(value, key) in dataMap" :key="key" :class="{ 'dataCell': true, 'imgHeigth': value === 'img'}"> <el-row v-for="(value, key) in dataMap" :key="key" :class="{ 'dataCell': true, 'imgHeigth': value === 'img'}">
<div v-if="value === 'string'">{{item2[key] || ''}} <span v-if="key === 'area'">m<sup>2</sup></span> </div> <div v-if="value === 'string'">{{item2[key] || '--'}} <span v-if="key === 'area'">m<sup>2</sup></span> </div>
<viewer :images="[]" v-else-if="value === 'img'"> <viewer :images="[]" v-else-if="value === 'img'">
<img :src="item2[key]" alt="" width="50%" height="80" style="cursor:pointer;"> <img :src="item2[key]" alt="" width="50%" height="80" style="cursor:pointer;">
</viewer> </viewer>
<div v-else-if="value === 'boolean' && item2[key] == 1" class="circle block"></div> <div v-else-if="value === 'boolean' && item2[key] == 1" class="circle block"></div>
<div v-else-if="value === 'boolean' && item2[key] == 0" class="circle hollow"></div> <div v-else-if="value === 'boolean' && item2[key] == 0" class="circle hollow"></div>
<div v-else-if="value === 'boolean' && item2[key] == undefined" class="circle hollow"></div>
</el-row> </el-row>
</el-col> </el-col>
</el-col> </el-col>
...@@ -42,12 +43,13 @@ ...@@ -42,12 +43,13 @@
<div class="table_body" v-else :style="{ width: bodyWidth + '%'}"> <div class="table_body" v-else :style="{ width: bodyWidth + '%'}">
<el-col :span="24" style="min-width: 120px"> <el-col :span="24" style="min-width: 120px">
<el-row v-for="(value, key) in dataMap" :key="key" :class="{ 'dataCell': true, 'imgHeigth': value === 'img' }"> <el-row v-for="(value, key) in dataMap" :key="key" :class="{ 'dataCell': true, 'imgHeigth': value === 'img' }">
<div v-if="value === 'string'">{{tableData[key] || ''}}</div> <div v-if="value === 'string'">{{tableData[key] || '--'}}</div>
<viewer :images="[]" v-else-if="value === 'img'"> <viewer :images="[]" v-else-if="value === 'img'">
<img :src="tableData[key] ? tableData[key] : tableData['bannerSrc']" alt="" width="30%" height="80" style="cursor:pointer;"> <img :src="tableData[key] ? tableData[key] : tableData['bannerSrc']" alt="" width="30%" height="80" style="cursor:pointer;">
</viewer> </viewer>
<div v-else-if="value === 'boolean' && tableData[key] == 1" class="circle block"></div> <div v-else-if="value === 'boolean' && tableData[key] == 1" class="circle block"></div>
<div v-else-if="value === 'boolean' && tableData[key] == 0" class="circle hollow"></div> <div v-else-if="value === 'boolean' && tableData[key] == 0" class="circle hollow"></div>
<div v-else-if="value === 'boolean' && tableData[key] == undefined" >--</div>
</el-row> </el-row>
</el-col> </el-col>
</div> </div>
...@@ -78,38 +80,41 @@ ...@@ -78,38 +80,41 @@
data () { data () {
return { return {
dataMap :{ dataMap :{
area: 'string', 'unitArea': 'string',
hxImg: 'img', 'filePath': 'img',
kj: 'string', 'bayNumber': 'string',
js: 'string', 'roomNumber': 'string',
ting: 'string', 'hallNumber': 'string',
wsj: 'string', 'toiletNumber': 'string',
nxmk: 'string', 'southWidth': 'string',
qjsmk: 'string', 'liveRoomWidth': 'string',
zwmk: 'string', 'masterRoomWidth': 'string',
kwmk: 'string', 'guestRoomWidth': 'string',
QJSDGHT: 'boolean', 'liveRoom-largeHorizontalHall': 'boolean', // 起居室
QJSWSYT: 'boolean', 'liveRoom-balcony': 'boolean',
QJSLDK: 'boolean', 'liveRoom-LDK': 'boolean',
ZWZW: 'boolean', 'masterRoom-masterBathRoom': 'boolean', // 主卧
ZWYMJ: 'boolean', 'masterRoom-cloakRoom': 'boolean',
KWKW: 'boolean', 'masterRoom-brightBathRoom': 'boolean',
CFLDK: 'boolean', 'masterRoom-dryWetDepart': 'boolean',
CFZXCFL: 'boolean', 'masterRoom-function': 'string',
CFDLDX: 'boolean', 'guestRoom-guestBathRoom': 'boolean', // 客卧
CFXS: 'string', 'kitchen-LDK': 'boolean', // 厨房
CTLDK: 'boolean', 'kitchen-SCWesternCook': 'boolean',
CTDLKC: 'boolean', 'kitchen-hallwayCFDX': 'boolean',
SF: 'string', 'kitchen-kitchenStyle': 'string',
WSJMW: 'boolean', 'restaurant-LDK': 'boolean', // 餐厅
WSJGSFL: 'boolean', 'restaurant-independentWindow': 'boolean',
WSJGN: 'string', 'bookRoom-wideHallSingleGuard': 'string', // 书房
YT: 'boolean', 'restRoom-masterBathRoom': 'boolean', // 卫生间
YTWZ: 'string', 'restRoom-dryWetDepart': 'boolean',
CCJ: 'boolean', 'restRoom-function': 'string',
JZJ: 'boolean', 'balcony-designHalcony': 'boolean', // 阳台
XG: 'boolean', 'balcony-location': 'string',
XGCFDX: 'boolean' 'storeRoom-designStoreRoom': 'boolean', //储藏间
'houseSpace-designHouseSpace': 'boolean', // 家政间
'hallway-designHallway': 'boolean', // 玄关
'hallway-designHallwayCFDX': 'boolean'
} }
} }
} }
...@@ -160,7 +165,7 @@ ...@@ -160,7 +165,7 @@
line-height 85px line-height 85px
} }
.dealHeigth{ .dealHeigth{
line-height 34px line-height 32px
} }
} }
.table_body { .table_body {
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
<section class="ProductAnalysis"> <section class="ProductAnalysis">
<div class="header"> <div class="header">
<el-col :span="4"> <el-col :span="4">
<el-select v-model="regionVal" placeholder="行政区"> <el-select v-model="regionVal" @change="changePlateForRegion" placeholder="行政区">
<el-option <el-option
v-for="item in regionOptions" v-for="item in regionOptions"
:key="item.value" :key="item.adminRegionId"
:label="item.label" :label="item.adminRegionName"
:value="item.value"> :value="item.adminRegionName">
</el-option> </el-option>
</el-select> </el-select>
</el-col> </el-col>
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
<el-select v-model="plateVal" placeholder="板块名"> <el-select v-model="plateVal" placeholder="板块名">
<el-option <el-option
v-for="item in plateOptions" v-for="item in plateOptions"
:key="item.value" :key="item.regionId"
:label="item.label" :label="item.regionName"
:value="item.value"> :value="item.regionName">
</el-option> </el-option>
</el-select> </el-select>
</el-col> </el-col>
...@@ -143,6 +143,7 @@ ...@@ -143,6 +143,7 @@
import tableHeader from "./tableHeader"; import tableHeader from "./tableHeader";
import multiHeaderTable from '@comp/multilHeaderTable' import multiHeaderTable from '@comp/multilHeaderTable'
import { demoData } from "./tableHeader"; import { demoData } from "./tableHeader";
import { getRegionPlate } from "../../assets/js/api/plateSupplyManage";
export default { export default {
name: "ProductAnalysis", name: "ProductAnalysis",
components:{ components:{
...@@ -218,21 +219,34 @@ ...@@ -218,21 +219,34 @@
plateOptions: [], plateOptions: [],
plateVal: '', plateVal: '',
timeOptions: [], timeOptions: [],
timeVal: '', timeVal: 2020,
houseTypeOptions: [], houseTypeOptions: [],
houseTypeVal: '', houseTypeVal: '',
areaInterval: '', areaInterval: '',
areaIntervalData: [], areaIntervalData: [],
showMode: 0, showMode: 0,
colorsArr: colors, colorsArr: colors,
headerTable: tableHeader headerTable: tableHeader,
plateMap: {
}
}
},
methods: {
changePlateForRegion (region) {
this.plateVal = ''
if(this.plateMap[region] && this.plateMap[region].length > 0) {
this.plateOptions = this.plateMap[region]
} else {
this.plateOptions = []
}
} }
}, },
created() { created() {
window.eventBus.$on('searchParamChange', (houseData) => { window.eventBus.$on('searchParamChange', (searchResult) => {
this.$router.push({ this.$router.push({
path: '/regionalPlate', path: '/regionalPlate',
query: houseData query: searchResult
}) })
}) })
}, },
...@@ -240,7 +254,29 @@ ...@@ -240,7 +254,29 @@
demo () { demo () {
return demoData return demoData
} }
},
beforeMount() {
for(let i = 2000; i<= 2020; i++) {
this.timeOptions.push({
value: i,
label: i + '年'
})
}
getRegionPlate().then(res => {
this.regionOptions = res.data
res.data.forEach(item => {
if(!this.plateMap[item.adminRegionName]) {
this.plateMap[item.adminRegionName] = item.resultRegionDTOS
}
if(item.resultRegionDTOS && item.resultRegionDTOS.length > 0 && !this.regionVal && !this.plateVal) {
this.plateOptions = item.resultRegionDTOS
this.regionVal = item.adminRegionName
this.plateVal = item.resultRegionDTOS[0].regionName
}
})
})
} }
} }
</script> </script>
......
...@@ -50,7 +50,10 @@ export default [ ...@@ -50,7 +50,10 @@ export default [
trName: '主卧', trName: '主卧',
children: [ children: [
{ trName: '主卫' }, { trName: '主卫' },
{ trName: '衣帽间' } { trName: '衣帽间' },
{ trName: '明卫' },
{ trName: '是否干湿分离' },
{ trName: '功能' },
] ]
}, },
{ {
...@@ -340,37 +343,3 @@ export const demoData = [ ...@@ -340,37 +343,3 @@ export const demoData = [
] ]
}, },
] ]
export const demoDataObject = {
area: '100',
hxImg: require('@assets/img/zlhx.png'),
kj: '3',
js: '3',
ting: '3',
wsj: '3',
nxmk: '3',
qjsmk: '3',
zwmk: '3',
kwmk: '3',
QJSDGHT: 1,
QJSWSYT: 1,
QJSLDK: 0,
ZWZW: 0,
ZWYMJ: 0,
KWKW: 1,
CFLDK: 0,
CFZXCFL: 1,
CFDLDX: 1,
CFXS: 'L型',
CTLDK: 1,
CTDLKC: 1,
SF: '大宽厅',
WSJMW: 1,
WSJGSFL: 1,
WSJGN: '三件套',
YT: 1,
YTWZ: '起居室',
CCJ: 1,
JZJ: 1,
XG: 1,
XGCFDX: 1
}
export const regionData = [ export const regionData = [
{ {
lng: 117.200, longitude: 117.200,
lat: 39.133, latitude: 39.133,
text: '西青区', text: '西青区',
number: 0 number: 0
}, },
{ {
lng: 117.100, longitude: 117.100,
lat: 39.233, latitude: 39.233,
text: '行政区2', text: '行政区2',
number: 5, number: 5,
children: [ children: [
{ {
lng: 117.107, longitude: 117.107,
lat: 39.228, latitude: 39.228,
text: '第一板块', text: '第一板块',
number: 2, number: 2,
radius: 1500, radius: 1500,
children: [ resultBnsProjectDTOS: [
{ {
lng: 117.106, longitude: 117.106,
lat: 39.2281, latitude: 39.2281,
text: '楼盘1', text: '楼盘1',
state: 0 state: 0
}, },
{ {
lng: 117.1074, longitude: 117.1074,
lat: 39.2286, latitude: 39.2286,
text: '楼盘2', text: '楼盘2',
state: 1 state: 1
} }
] ]
}, },
{ {
lng: 117.104, longitude: 117.104,
lat: 39.217, latitude: 39.217,
text: '第二板块', text: '第二板块',
number: 2, number: 2,
radius: 1500, radius: 1500,
children: [ resultBnsProjectDTOS: [
{ {
lng: 117.1048, longitude: 117.1048,
lat: 39.2168, latitude: 39.2168,
text: '楼盘1', text: '楼盘1',
state: 1 state: 1
}, },
{ {
lng: 117.105, longitude: 117.105,
lat: 39.2167, latitude: 39.2167,
text: '楼盘2', text: '楼盘2',
state: 1 state: 1
} }
...@@ -56,8 +56,8 @@ export const regionData = [ ...@@ -56,8 +56,8 @@ export const regionData = [
] ]
}, },
{ {
lng: 117.300, longitude: 117.300,
lat: 39.333, latitude: 39.333,
text: '行政区3', text: '行政区3',
number: 0 number: 0
} }
......
...@@ -15,13 +15,14 @@ ...@@ -15,13 +15,14 @@
@click.native.stop="setShowToPlate(item)" @click.native.stop="setShowToPlate(item)"
:key="index + 'region'" :key="index + 'region'"
v-for="(item,index) in dataType.region" v-for="(item,index) in dataType.region"
:position="{lng: item.lng, lat: item.lat}" :position="{lng: item.longitude, lat: item.latitude}"
:back-ground-type="'color'" :back-ground-type="'color'"
:text="item.text" :text="item.text"
:num="item.number" :num="item.number"
:text-color="'#ffffff'" :text-color="'#ffffff'"
:fontSize="16" :fontSize="16"
:bg-color="'rgb(25,124,230)'" :bg-color="'rgba(25,124,230, 0.6)'"
:active-color="'rgba(25,124,230,1)'"
:bg-img-url="null" :bg-img-url="null"
:circle="'50%'" :circle="'50%'"
:width="90" :width="90"
...@@ -33,40 +34,31 @@ ...@@ -33,40 +34,31 @@
@click.native.stop="setShowToPlateRegion(item, 'plateRegion')" @click.native.stop="setShowToPlateRegion(item, 'plateRegion')"
:key="index + 'plate'" :key="index + 'plate'"
v-for="(item,index) in dataType.plate" v-for="(item,index) in dataType.plate"
:position="{lng: item.lng, lat: item.lat}" :position="{lng: item.longitude, lat: item.latitude}"
:back-ground-type="'color'" :back-ground-type="'color'"
:text="item.text" :text="item.text"
:num="item.number" :num="item.number"
:fontSize="14" :fontSize="14"
:text-color="'#ffffff'" :text-color="'#ffffff'"
:bg-color="'rgb(25,124,230)'" :bg-color="'rgba(25,124,230,0.6)'"
:active-color="'rgba(25,124,230,1)'"
:bg-img-url="null" :bg-img-url="null"
:circle="'50%'" :circle="'50%'"
:width="70" :width="70"
:height="70" :height="70"
></my-overlay> ></my-overlay>
<!-- 蓝色圆形组件=======楼盘-->
<bm-circle
:fill-color="'rgb(224,234,244)'"
:stroke-color="'rgb(43,115,175)'"
v-show="showType === 'plateRegion'"
:center="circleCenter"
:radius="radius"
stroke-color="blue"
:stroke-opacity="1"
:fill-opacity="0"
:stroke-weight="1"></bm-circle>
<my-overlay <my-overlay
v-show="showType === 'plateRegion' && state !== '' ? ( state === 'all' ? true : ( state == item.state ? true : false ) ) : false" v-show="showType === 'plateRegion' && state !== '' ? ( state === 'all' ? true : ( state == item.state ? true : false ) ) : false"
@click.native="ShowInfo(item)" @click.native="ShowInfo(item)"
:key="index + 'plateRegion'" :key="index + 'plateRegion'"
v-for="(item,index) in dataType.plateRegion.resultBnsProjectDTOS" v-for="(item,index) in dataType.plateRegion.resultBnsProjectDTOS"
:position="{lng: item.lng, lat: item.lat}" :position="{lng: item.longitude, lat: item.latitude}"
:back-ground-type="'color'" :back-ground-type="'color'"
:text="item.text" :text="item.text"
:fontSize="12" :fontSize="12"
:text-color="'#ffffff'" :text-color="'#ffffff'"
:bg-color="item.state === 0 ? 'rgb(25,124,230)' : 'rgb(169,209,142)'" :bg-color="item.state === 0 ? 'rgb(25,124,230,0.6)' : 'rgb(169,209,142,0.6)'"
:active-color="item.state === 0 ? 'rgb(25,124,230,1)' : 'rgb(169,209,142,1)'"
:bg-img-url="null" :bg-img-url="null"
:circle="'10px'" :circle="'10px'"
:width="80" :width="80"
...@@ -82,7 +74,7 @@ ...@@ -82,7 +74,7 @@
@click.native="showTowerInfo(item)" @click.native="showTowerInfo(item)"
:key="index + 'property'" :key="index + 'property'"
v-for="(item,index) in dataType.property" v-for="(item,index) in dataType.property"
:position="{lng: item.lng, lat: item.lat}" :position="{lng: item.longitude, lat: item.latitude}"
:back-ground-type="'waterDrop'" :back-ground-type="'waterDrop'"
:text="item.name" :text="item.name"
:text-color="'#ffffff'" :text-color="'#ffffff'"
...@@ -110,7 +102,7 @@ ...@@ -110,7 +102,7 @@
{{item.title}} {{item.title}}
</div> </div>
<div :class="{'plateRegionDetailShowContainer': true }"> <div :class="{'plateRegionDetailShowContainer': true }">
{{dataType.plateRegion[item.prop] || ''}} {{dataType.plateRegion[item.prop] || '---'}}
</div> </div>
</el-col> </el-col>
</div> </div>
...@@ -153,13 +145,13 @@ ...@@ -153,13 +145,13 @@
<div v-else-if="showType === 'property'" class="dealWidth"> <div v-else-if="showType === 'property'" class="dealWidth">
<div class="searchDetailFlex"> <div class="searchDetailFlex">
<img style="cursor: pointer" @click="toPropertyDetail" height="200" :src="require('@assets/img/loupan.png')" alt=""> <img style="cursor: pointer" @click="toPropertyDetail" height="200" :src="require('@assets/img/loupan.png')" alt="">
<p @click="toPropertyDetail" class="propertyName">{{propertyDetailData.name || '楼房名称'}}</p> <p @click="toPropertyDetail" class="propertyName">{{propertyDetailData.name || '---'}}</p>
<p class="propertyDetail" v-html="'价格'+':' + propertyDetailData.price + '/m<sup>2</sup>'"></p> <p class="propertyDetail" v-html="'价格'+':' + propertyDetailData.price + '/m<sup>2</sup>'"></p>
<p class="propertyDetail">{{'产品类型'+ ':' + propertyDetailData.productType}}</p> <p class="propertyDetail">{{'产品类型'+ ':' + propertyDetailData.productType}}</p>
<p class="propertyDetail" <p class="propertyDetail"
v-for="(val, key, index) in propertyDetailDataMap" v-for="(val, key, index) in propertyDetailDataMap"
:key="index" :key="index"
v-html="val + ':' +propertyDetailData[key]"> v-html="val.name + ':' + (propertyDetailData[key] || '---') + val.defaultSetting">
</p> </p>
</div> </div>
</div> </div>
...@@ -178,6 +170,7 @@ ...@@ -178,6 +170,7 @@
import MyOverlay from '@comp/mapOverlay' import MyOverlay from '@comp/mapOverlay'
import propertyControll from '@comp/propertyControll' import propertyControll from '@comp/propertyControll'
import { queryAllRegions } from "../../assets/js/api/unitManage"; import { queryAllRegions } from "../../assets/js/api/unitManage";
import { averagePosition} from "../../assets/js/public";
export default { export default {
name: 'RegionalPlate', name: 'RegionalPlate',
components: { components: {
...@@ -203,11 +196,6 @@ ...@@ -203,11 +196,6 @@
}, // 四种的楼房显示类型 数据预览 }, // 四种的楼房显示类型 数据预览
allData: [], allData: [],
showType: 'region', // 控制楼房显示的变量 showType: 'region', // 控制楼房显示的变量
circleCenter: {
lng: 0,
lat: 0
}, // 若为板块区域详情,圆环的坐标点中心
radius: 1000, // 若为板块区域详情、圆环的半径
zoomType: { zoomType: {
region: 11, region: 11,
plate: 12, plate: 12,
...@@ -225,10 +213,22 @@ ...@@ -225,10 +213,22 @@
propertyDetailData: { propertyDetailData: {
}, // 搜索后点击楼盘 展示详情数据 }, // 搜索后点击楼盘 展示详情数据
propertyDetailDataMap: { propertyDetailDataMap: {
landArea: '占地面积', landArea: {
totalArea: '建筑面积', name: '占地面积',
plotRatio: '容积率', defaultSetting: 'm<sup>2</sup>'
openTime: '开盘时间' },
totalArea: {
name: '建筑面积',
defaultSetting: 'm<sup>2</sup>'
},
plotRatio: {
name: '容积率',
defaultSetting: ''
},
openTime: {
name: '开盘时间',
defaultSetting: ''
}
} // key/value 对应 } // key/value 对应
} }
}, },
...@@ -242,13 +242,13 @@ ...@@ -242,13 +242,13 @@
ShowInfo (item) { ShowInfo (item) {
this.$router.push({ this.$router.push({
path: '/propertiesDetail', path: '/propertiesDetail',
query: item query: { propertyId: item.businessId }
}) })
}, },
toPropertyDetail() { toPropertyDetail() {
this.$router.push({ this.$router.push({
path: '/propertiesDetail', path: '/propertiesDetail',
query: this.propertyDetailData query: { propertyId: this.propertyDetailData.businessId }
}) })
}, },
showTowerInfo(item) { showTowerInfo(item) {
...@@ -265,19 +265,18 @@ ...@@ -265,19 +265,18 @@
return return
} }
this.showType = 'plate' this.showType = 'plate'
this.map.center.lng = item.lng this.map.center.lng = item.longitude
this.map.center.lat = item.lat this.map.center.lat = item.latitude
this.map.setZoom = this.zoomType['plate'] this.map.setZoom = this.zoomType['plate']
this.dataType['plate'] = item.children ? item.children : [] this.dataType['plate'] = item.children ? item.children : []
}, },
setShowToPlateRegion (item) { setShowToPlateRegion (item) {
console.log(item)
this.showType = 'plateRegion' this.showType = 'plateRegion'
this.map.center.lng = item.lng this.map.center.lng = item.longitude
this.map.center.lat = item.lat this.map.center.lat = item.latitude
this.map.setZoom = this.zoomType['plateRegion'] this.map.setZoom = this.zoomType['plateRegion']
this.dataType['plateRegion'] = item.children ? item.children : [] this.dataType['plateRegion'].resultBnsProjectDTOS = item.resultBnsProjectDTOS ? item.resultBnsProjectDTOS : []
this.circleCenter = { lng: item.lng, lat: item.lat }
this.radius = item.radius ? item.radius : 1000
this.detailShow = true this.detailShow = true
}, },
zoomChanged ({type, target}) { zoomChanged ({type, target}) {
...@@ -294,26 +293,30 @@ ...@@ -294,26 +293,30 @@
return type return type
}, },
mapLoaded () { mapLoaded () {
if(this.$router.query) { if(this.$route.query) {
console.log(this.$router.query) const searchResult = this.$route.query
if(searchResult.type === 'plateRegion') {
this.showType = 'plateRegion'
this.map.center.lng = searchResult.data.longitude
this.map.center.lat = searchResult.data.latitude
this.map.setZoom = this.zoomType.plateRegion
this.dataType.plateRegion = searchResult.data
console.log(this.dataType.plateRegion)
} else {
this.showType = 'property'
this.map.center.lng = averagePosition(searchResult.data).longitude
this.map.center.lat = averagePosition(searchResult.data).latitude
this.map.setZoom = this.zoomType.property
this.dataType.property = searchResult.data
this.propertyDetailData = this.dataType.property[0]
console.log(this.propertyDetailData)
}
} else { } else {
// 若无传递值 则查询全部行政区及其下属数目信息 // 若无传递值 则查询全部行政区及其下属数目信息
queryAllRegions().then(res => { queryAllRegions().then(res => {
console.log(res) console.log(res)
}) })
} }
},
average (array) {
let lng = 0
let lat = 0
array.forEach(item => {
lng += item.lng
lat += item.lat
})
return {
lng: (lng/array.length).toFixed(6),
lat: (lat/array.length).toFixed(6)
}
} }
}, },
mounted() { mounted() {
...@@ -326,17 +329,15 @@ ...@@ -326,17 +329,15 @@
window.eventBus.$on('searchParamChange', (searchResult) => { window.eventBus.$on('searchParamChange', (searchResult) => {
if(searchResult.type === 'plateRegion') { if(searchResult.type === 'plateRegion') {
this.showType = 'plateRegion' this.showType = 'plateRegion'
this.map.center.lng = searchResult.data.lng this.map.center.lng = searchResult.data.longitude
this.map.center.lat = searchResult.data.lat this.map.center.lat = searchResult.data.latitude
this.circleCenter = { lng: searchResult.data.lng, lat: searchResult.data.lat }
this.circle = 1000
this.map.setZoom = this.zoomType.plateRegion this.map.setZoom = this.zoomType.plateRegion
this.dataType.plateRegion = searchResult.data this.dataType.plateRegion = searchResult.data
console.log(this.dataType.plateRegion) console.log(this.dataType.plateRegion)
} else { } else {
this.showType = 'property' this.showType = 'property'
this.map.center.lng = this.average(searchResult.data).lng this.map.center.lng = averagePosition(searchResult.data).longitude
this.map.center.lat = this.average(searchResult.data).lat this.map.center.lat = averagePosition(searchResult.data).latitude
this.map.setZoom = this.zoomType.property this.map.setZoom = this.zoomType.property
this.dataType.property = searchResult.data this.dataType.property = searchResult.data
this.propertyDetailData = this.dataType.property[0] this.propertyDetailData = this.dataType.property[0]
......
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
colorArr: colors, colorArr: colors,
plateMap: { plateMap: {
} } // 行政区名称对应
} }
}, },
methods: { methods: {
...@@ -153,8 +153,7 @@ ...@@ -153,8 +153,7 @@
this.plateVal = '' this.plateVal = ''
if(this.plateMap[region] && this.plateMap[region].length > 0) { if(this.plateMap[region] && this.plateMap[region].length > 0) {
this.plateOptions = this.plateMap[region] this.plateOptions = this.plateMap[region]
} } else {
else {
this.plateOptions = [] this.plateOptions = []
} }
} }
...@@ -180,7 +179,15 @@ ...@@ -180,7 +179,15 @@
}) })
this.getSupplyData() this.getSupplyData()
}) })
} },
created() {
window.eventBus.$on('searchParamChange', (searchResult) => {
this.$router.push({
path: '/regionalPlate',
query: searchResult
})
})
},
} }
</script> </script>
......
This diff is collapsed.
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