|
@@ -11,9 +11,10 @@
|
|
|
<el-tabs v-model="activeName" class="targets-tabs" type="border-card">
|
|
|
<el-tab-pane :label="'估价对象' + t.tid" :name="t.tid" :lazy="true" v-for="(t, index) in targets">
|
|
|
<div class="targetTable">
|
|
|
- <el-table :data="t.aims" border stripe size="default"
|
|
|
+ <el-table :data="t.aims" border stripe size="default" ref="multipleTableRef"
|
|
|
:header-row-style="{ color: '#333333', 'font-size': '16px' }"
|
|
|
- style="color: #333333; font-size: 16px;">
|
|
|
+ style="color: #333333; font-size: 16px;" @selection-change="handleSelectionChange">
|
|
|
+ <el-table-column type="selection" width="55" align="center" />
|
|
|
<el-table-column prop="tid" label="估价对象" width="80" align="center" />
|
|
|
<el-table-column prop="tno" label="序号" width="60" align="center" />
|
|
|
<el-table-column prop="certificateNo" label="权属证书号" width="220" align="center" />
|
|
@@ -33,8 +34,8 @@
|
|
|
<el-table-column prop="landType" label="地类(用途)" width="60" align="center" /> -->
|
|
|
<el-table-column label="操作" width="160" align="center">
|
|
|
<template v-slot="scope">
|
|
|
- <el-button type="text" @click="addEntityInfo(scope.row.id, scope.row.no)">实物信息</el-button>
|
|
|
- <el-button type="text" @click="addEntityInfo(scope.row.id, scope.row.no)">区位信息</el-button>
|
|
|
+ <el-button type="text" @click="addEntityInfo(scope.row.tid, scope.row.tno)">实物信息</el-button>
|
|
|
+ <el-button type="text" @click="getAreaInfoByLngLat(scope.row.lngLat)">区位信息</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -51,7 +52,7 @@
|
|
|
</el-checkbox-button>
|
|
|
</el-checkbox-group> -->
|
|
|
</div>
|
|
|
- <amap :targetPoint="targetPoint"></amap>
|
|
|
+ <amap ref="map" :targetPoint="targetPoint" @getPOIData="getPOIData"></amap>
|
|
|
</div>
|
|
|
|
|
|
|
|
@@ -517,6 +518,190 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog v-model="areaInfoDialog" width="85%" align-center @closed="cleanLngLat">
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">道路</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshRoad"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in road">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">公共交通</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshPublicTransport"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in publicTransport">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">停车场</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshPark"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in park">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">商场</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshBusiness"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in business">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">周边小区</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshCommunity"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in community">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">教育机构</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshEducation"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in education">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">医院</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshHospital"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in hospital">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">银行</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshBank"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in bank">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">酒店宾馆</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshHotal"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in hotel">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoType">
|
|
|
+ <el-divider content-position="left">
|
|
|
+ <span class="infoTitle">风景名胜</span>
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="light"
|
|
|
+ content="刷新"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <span class="refresh" @click="refreshSpot"><el-icon><Refresh /></el-icon></span>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-divider>
|
|
|
+ <div style="padding-left: 100px;">
|
|
|
+ <span class="infoItem" closable type="primary" v-for="(r ,index) in spot">
|
|
|
+ {{ r.name }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -524,8 +709,8 @@
|
|
|
<script>
|
|
|
import houseGuaranty from '@/api/houseGuaranty';
|
|
|
import houseTargetEntity from '@/api/houseTargetEntity';
|
|
|
+import houseTargetArea from '@/api/houseGuarantyArea';
|
|
|
import amap from '../../../components/MapContainer/index.vue';
|
|
|
-import ampRequest from '@/api/amap';
|
|
|
|
|
|
export default {
|
|
|
|
|
@@ -536,21 +721,20 @@ export default {
|
|
|
created() {
|
|
|
this.docId = this.$route.query.id;
|
|
|
this.getTargets();
|
|
|
-
|
|
|
},
|
|
|
|
|
|
watch:{
|
|
|
activeName:{
|
|
|
handler(nv,ov){
|
|
|
- const aims = this.targets.filter(item=>item.tid = nv)
|
|
|
- this.targetPoint = aims;
|
|
|
+ const target = this.targets.filter(item=>item.tid = nv)
|
|
|
+ this.targetPoint = target.aims;
|
|
|
},
|
|
|
immediate:true
|
|
|
},
|
|
|
targets:{
|
|
|
- handler(nv,ov){
|
|
|
- this.targetPoint = nv[0].aims;
|
|
|
- }
|
|
|
+ handler(){
|
|
|
+ this.updatePoint();
|
|
|
+ },
|
|
|
}
|
|
|
|
|
|
},
|
|
@@ -603,24 +787,31 @@ export default {
|
|
|
tId: null,
|
|
|
tNo: null,
|
|
|
|
|
|
- targetPoint:[
|
|
|
- // {
|
|
|
- // name:"成都高新区民丰大道西段400号附11号2层",
|
|
|
- // point:[104.062866,30.574925]
|
|
|
- // }
|
|
|
- // ,
|
|
|
- // {
|
|
|
- // name:"成都高新区民丰大道西段400号附11号1层",
|
|
|
- // point:[104.063866,30.575925]
|
|
|
- // }
|
|
|
- ],
|
|
|
- mapDialog:false
|
|
|
+ targetPoint:[],
|
|
|
+ mapDialog:false,
|
|
|
+ areaInfoDialog:false,
|
|
|
+ road:[],
|
|
|
+ publicTransport:[],
|
|
|
+ park:[],
|
|
|
+ business:[],
|
|
|
+ community:[],
|
|
|
+ education:[],
|
|
|
+ hospital:[],
|
|
|
+ bank:[],
|
|
|
+ hotel:[],
|
|
|
+ spot:[],
|
|
|
+ redius:'1000',
|
|
|
+ curLngLat:null
|
|
|
|
|
|
}
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
+ updatePoint(){
|
|
|
+ this.targetPoint = this.targets[0].aims;
|
|
|
+ },
|
|
|
+
|
|
|
getTargets() {
|
|
|
houseGuaranty.getTargetsById(this.docId).then(res => {
|
|
|
if (res.code === 200) {
|
|
@@ -732,11 +923,113 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
|
|
|
- getLngLat(){
|
|
|
- ampRequest.getLngLat("成都市武侯区锦城大道666号").then(res=>{
|
|
|
- console.log(res)
|
|
|
+ handleSelectionChange(val){
|
|
|
+ this.targetPoint = val;
|
|
|
+ },
|
|
|
+ getPOIData(data){
|
|
|
+ if (data.infoType=='ROAD'){
|
|
|
+ this.road = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='PUBLIC-TRANSPORT'){
|
|
|
+ this.publicTransport = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='PARK'){
|
|
|
+ this.park = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='BUSINESS'){
|
|
|
+ this.business = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='COMMUNITY'){
|
|
|
+ this.community = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='EDUCATION'){
|
|
|
+ this.education = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='HOSPITAL'){
|
|
|
+ this.hospital = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='BANK'){
|
|
|
+ this.bank = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='HOTEL'){
|
|
|
+ this.hotel = data.pois
|
|
|
+ }
|
|
|
+ if (data.infoType=='SPOT'){
|
|
|
+ this.spot = data.pois
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ getAreaInfoByLngLat(lngLat){
|
|
|
+ houseTargetArea.getByLngLat(lngLat).then(res=>{
|
|
|
+ if (res.code===200 && res.data!=null){
|
|
|
+
|
|
|
+ }else{
|
|
|
+ this.getAMapInfo();
|
|
|
+ }
|
|
|
+ this.areaInfoDialog = true;
|
|
|
})
|
|
|
+ },
|
|
|
+
|
|
|
+ getAMapInfo(lngLat){
|
|
|
+ this.curLngLat = lngLat;
|
|
|
+ this.$refs.map.collectRoad(this.redius,lngLat);
|
|
|
+ this.$refs.map.collectPublicTransport(this.redius,lngLat);
|
|
|
+ this.$refs.map.colletPark(this.redius,lngLat);
|
|
|
+ this.$refs.map.collectBusiness(this.redius,lngLat);
|
|
|
+ this.$refs.map.collectCommunity(this.redius,lngLat);
|
|
|
+ // this.$refs.map.collectEducation(this.redius,lngLat);
|
|
|
+ // this.$refs.map.collectHospital(this.redius,lngLat);
|
|
|
+ // this.$refs.map.collectBank(this.redius,lngLat);
|
|
|
+ // this.$refs.map.collectHotal(this.redius,lngLat);
|
|
|
+ // this.$refs.map.collectSpot(this.redius,lngLat);
|
|
|
+
|
|
|
+ },
|
|
|
+ refreshRoad(){
|
|
|
+ this.$refs.map.collectRoad(this.redius,this.curLngLat);
|
|
|
+
|
|
|
+ },
|
|
|
+ refreshPublicTransport(){
|
|
|
+ this.$refs.map.collectPublicTransport(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshPark(){
|
|
|
+ this.$refs.map.colletPark(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshBusiness(){
|
|
|
+ this.$refs.map.collectBusiness(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshCommunity(){
|
|
|
+ this.$refs.map.collectCommunity(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshEducation(){
|
|
|
+ this.$refs.map.collectEducation(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshHospital(){
|
|
|
+ this.$refs.map.collectHospital(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshBank(){
|
|
|
+ this.$refs.map.collectBank(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshHotal(){
|
|
|
+ this.$refs.map.collectHotal(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ refreshSpot(){
|
|
|
+ this.$refs.map.collectSpot(this.redius,this.curLngLat);
|
|
|
+ },
|
|
|
+ cleanLngLat(){
|
|
|
+ this.curLngLat=null;
|
|
|
+ this.road=[];
|
|
|
+ this.publicTransport=[];
|
|
|
+ this.park=[];
|
|
|
+ this.business=[];
|
|
|
+ this.community=[];
|
|
|
+ this.education=[];
|
|
|
+ this.hospital=[];
|
|
|
+ this.bank=[];
|
|
|
+ this.hotel=[];
|
|
|
+ this.spot=[];
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -763,6 +1056,30 @@ export default {
|
|
|
float: right;
|
|
|
margin-top: 30px;
|
|
|
}
|
|
|
+.infoType{
|
|
|
+ width: 100%;
|
|
|
+ font-size: 16px;
|
|
|
+ padding: 10px;
|
|
|
+}
|
|
|
+.infoTitle{
|
|
|
+ font-weight: bold;
|
|
|
+ font-size: 20px;
|
|
|
+ margin-right: 10px;
|
|
|
+}
|
|
|
+.infoItem{
|
|
|
+ margin-left: 10px;
|
|
|
+ padding: 5px;
|
|
|
+ font-size: 18px;
|
|
|
+ white-space: nowrap;
|
|
|
+}
|
|
|
+.infoItem:hover{
|
|
|
+ cursor: pointer;
|
|
|
+ color: #ff6154;
|
|
|
+}
|
|
|
+.refresh:hover{
|
|
|
+ color: #ff6154;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
|
|
|
/* .el-radio-group {
|
|
|
--el-radio-group-width: 220px;
|
|
@@ -849,4 +1166,11 @@ export default {
|
|
|
:deep(.el-button--text){
|
|
|
color:#ff6154;
|
|
|
}
|
|
|
+:deep(.el-checkbox__input.is-indeterminate .el-checkbox__inner){
|
|
|
+ background-color:#ff6154;
|
|
|
+ border-color:#ff6154;
|
|
|
+}
|
|
|
+:deep(.el-checkbox__inner:hover){
|
|
|
+ border-color:#ff6154;
|
|
|
+}
|
|
|
</style>
|