|
|
@ -4,66 +4,81 @@ |
|
|
|
<div class="m-crumb"> |
|
|
|
<div class="router_line"></div> |
|
|
|
<div class="div_router"> |
|
|
|
<span class="router_parents" |
|
|
|
v-for="(item, index) in runAgencyArray" |
|
|
|
@click="handleClickAgency(index)" |
|
|
|
:key="index">{{ item.name }}<span class="arrow">></span></span> |
|
|
|
<span |
|
|
|
class="router_parents" |
|
|
|
v-for="(item, index) in runAgencyArray" |
|
|
|
@click="handleClickAgency(index)" |
|
|
|
:key="index" |
|
|
|
>{{ item.name }}<span class="arrow">></span></span |
|
|
|
> |
|
|
|
|
|
|
|
<span class="router_child">{{ orgData.name }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<people v-if="orgLevel === 'people'" |
|
|
|
:uid="selUserId" /> |
|
|
|
|
|
|
|
<div v-show="orgLevel !== 'people'" |
|
|
|
class="g-cnt"> |
|
|
|
<div class="m-map" |
|
|
|
@click="handleClickMapBox"> |
|
|
|
<grid-map ref="map" |
|
|
|
v-if="orgData.id" |
|
|
|
@clickAgency="clickAgencyItem" |
|
|
|
@clickDotBtn="handleClickDotBtn" |
|
|
|
:srcGridData="orgData" |
|
|
|
:dotList="dotList" |
|
|
|
:dotIcoList="dotIcoList" |
|
|
|
:dotList2="dotList2" |
|
|
|
:dotIcoList2="dotIcoList2" |
|
|
|
:gridCountData="gridCountData" |
|
|
|
:pitch="0" /> |
|
|
|
<people v-if="orgLevel === 'people'" :uid="selUserId" /> |
|
|
|
|
|
|
|
<div v-show="orgLevel !== 'people'" class="g-cnt"> |
|
|
|
<div class="m-map" @click="handleClickMapBox"> |
|
|
|
<grid-map |
|
|
|
ref="map" |
|
|
|
v-if="orgData.id" |
|
|
|
@clickAgency="clickAgencyItem" |
|
|
|
@clickDotBtn="handleClickDotBtn" |
|
|
|
:srcGridData="orgData" |
|
|
|
:dotList="dotList" |
|
|
|
:dotIcoList="dotIcoList" |
|
|
|
:dotList2="dotList2" |
|
|
|
:dotIcoList2="dotIcoList2" |
|
|
|
:gridCountData="gridCountData" |
|
|
|
:pitch="0" |
|
|
|
/> |
|
|
|
|
|
|
|
<div class="m-mapmenu"> |
|
|
|
<sidemenu-left :orgId="orgId" |
|
|
|
@change="handleChangeMenuLeft"></sidemenu-left> |
|
|
|
<sidemenu-left |
|
|
|
:orgId="orgId" |
|
|
|
@change="handleChangeMenuLeft" |
|
|
|
></sidemenu-left> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="m-search"> |
|
|
|
<div class="input"> |
|
|
|
<img src="@/assets/img/shuju/command/search.png" /> |
|
|
|
<input type="text" |
|
|
|
placeholder="请输入" |
|
|
|
@keyup.enter="handleSearch" |
|
|
|
v-model="searchName" /> |
|
|
|
<div class="btn" |
|
|
|
@click="handleSearch">搜索</div> |
|
|
|
<img class="i-search" src="@/assets/img/shuju/command/search.png" /> |
|
|
|
<input |
|
|
|
type="text" |
|
|
|
placeholder="请输入" |
|
|
|
@keyup.enter="handleSearch" |
|
|
|
v-model="searchName" |
|
|
|
/> |
|
|
|
<img |
|
|
|
class="i-close" |
|
|
|
@click="clearSearch" |
|
|
|
src="@/assets/img/shuju/command/close.png" |
|
|
|
/> |
|
|
|
<div class="btn" @click="handleSearch">搜索</div> |
|
|
|
</div> |
|
|
|
<div class="result" |
|
|
|
v-if="showedSearchResult"> |
|
|
|
<div class="result" v-if="showedSearchResult"> |
|
|
|
<template v-for="item in searchResult"> |
|
|
|
<div :key="'searchResult' + item.type" |
|
|
|
class="result-item" |
|
|
|
v-show="item.list.length > 0"> |
|
|
|
<div |
|
|
|
:key="'searchResult' + item.type" |
|
|
|
class="result-item" |
|
|
|
v-show="item.list.length > 0" |
|
|
|
> |
|
|
|
<div class="result-type">{{ item.title }}</div> |
|
|
|
<div class="result-more" |
|
|
|
@click.stop="handleClickSearchResultMore(item)" |
|
|
|
v-show="item.allList.length > 2"> |
|
|
|
<div |
|
|
|
class="result-more" |
|
|
|
@click.stop="handleClickSearchResultMore(item)" |
|
|
|
v-show="item.allList.length > 2" |
|
|
|
> |
|
|
|
更多 |
|
|
|
</div> |
|
|
|
<div class="result-ul"> |
|
|
|
<div class="result-li z-toe" |
|
|
|
:key="item.type + 'li' + index" |
|
|
|
v-for="(li, index) in item.list" |
|
|
|
@click.stop="handleClickSearchLi(li, item)"> |
|
|
|
<div |
|
|
|
class="result-li z-toe" |
|
|
|
:key="item.type + 'li' + index" |
|
|
|
v-for="(li, index) in item.list" |
|
|
|
@click.stop="handleClickSearchLi(li, item)" |
|
|
|
> |
|
|
|
<span v-if="item.type == 'position'">{{ |
|
|
|
li.name + " " + li.address |
|
|
|
}}</span> |
|
|
@ -77,14 +92,15 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="result-panel" |
|
|
|
v-show="item.showedMore"> |
|
|
|
<div class="result-panel" v-show="item.showedMore"> |
|
|
|
<div class="result-type">{{ item.title }}</div> |
|
|
|
<div class="result-ul"> |
|
|
|
<div class="result-li z-toe" |
|
|
|
:key="item.type + 'li2_' + index" |
|
|
|
v-for="(li, index) in item.allList" |
|
|
|
@click.stop="handleClickSearchLi(li, item)"> |
|
|
|
<div |
|
|
|
class="result-li z-toe" |
|
|
|
:key="item.type + 'li2_' + index" |
|
|
|
v-for="(li, index) in item.allList" |
|
|
|
@click.stop="handleClickSearchLi(li, item)" |
|
|
|
> |
|
|
|
<span v-if="item.type == 'position'">{{ |
|
|
|
li.name + " " + li.address |
|
|
|
}}</span> |
|
|
@ -103,37 +119,38 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="m-sidebar" |
|
|
|
v-show="false"> |
|
|
|
<div class="wrap" |
|
|
|
:class="[{ 'wrap-hidden': !showAgencyList }]"> |
|
|
|
<div @click="hideAgencyList" |
|
|
|
class="arrow_tip"> |
|
|
|
<img src="@/assets/img/modules/visual/popup.png" |
|
|
|
alt /> |
|
|
|
<div class="m-sidebar" v-show="false"> |
|
|
|
<div class="wrap" :class="[{ 'wrap-hidden': !showAgencyList }]"> |
|
|
|
<div @click="hideAgencyList" class="arrow_tip"> |
|
|
|
<img src="@/assets/img/modules/visual/popup.png" alt /> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="div_agency_list"> |
|
|
|
<div class="agency_main"> |
|
|
|
<el-scrollbar style="height: 98%" |
|
|
|
wrap-style="overflow-x:hidden"> |
|
|
|
<div v-if="subAgencyArray.length > 0" |
|
|
|
class="agency_list"> |
|
|
|
<div v-for="(item, index) in subAgencyArray" |
|
|
|
:key="index" |
|
|
|
@click="clickAgencyItem(item, index)" |
|
|
|
:class="[ |
|
|
|
<el-scrollbar |
|
|
|
style="height: 98%" |
|
|
|
wrap-style="overflow-x:hidden" |
|
|
|
> |
|
|
|
<div v-if="subAgencyArray.length > 0" class="agency_list"> |
|
|
|
<div |
|
|
|
v-for="(item, index) in subAgencyArray" |
|
|
|
:key="index" |
|
|
|
@click="clickAgencyItem(item, index)" |
|
|
|
:class="[ |
|
|
|
'agency_item', |
|
|
|
{ agency_item_on: index % 2 == 0 }, |
|
|
|
]"> |
|
|
|
]" |
|
|
|
> |
|
|
|
<div class="agency_item_name">{{ item.name }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
<img src="@/assets/img/modules/visual/noData.png" |
|
|
|
alt="" |
|
|
|
srcset="" |
|
|
|
class="no-data-img" /> |
|
|
|
<img |
|
|
|
src="@/assets/img/modules/visual/noData.png" |
|
|
|
alt="" |
|
|
|
srcset="" |
|
|
|
class="no-data-img" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</el-scrollbar> |
|
|
|
</div> |
|
|
@ -150,32 +167,43 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="list"> |
|
|
|
<sidemenu :orgId="orgId" |
|
|
|
@change="handleChangeMenu" |
|
|
|
:grandIcoList="dotIcoList"></sidemenu> |
|
|
|
<sidemenu |
|
|
|
:orgId="orgId" |
|
|
|
@change="handleChangeMenu" |
|
|
|
:grandIcoList="dotIcoList" |
|
|
|
></sidemenu> |
|
|
|
</div> |
|
|
|
</cpt-card> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<event-info v-if="pageType==='watch-event'" |
|
|
|
ref="ref_event" |
|
|
|
:eventId="eventId" |
|
|
|
@handleClose="handleClose" /> |
|
|
|
|
|
|
|
<service-info v-if="pageType==='create-service'" |
|
|
|
ref="ref_service" |
|
|
|
@handleClose="handleClose" /> |
|
|
|
|
|
|
|
<demand-info v-if="pageType==='create-demand'" |
|
|
|
ref="ref_demand" |
|
|
|
:icResiUserId="icResiUserId" |
|
|
|
@handleClose="handleClose" /> |
|
|
|
|
|
|
|
<qsydw v-if="pageType==='watch-xuncha'" |
|
|
|
ref="ref_xuncha" |
|
|
|
:enterpriseId="enterpriseId" |
|
|
|
@handleClose="handleClose" /> |
|
|
|
<event-info |
|
|
|
v-if="pageType === 'watch-event'" |
|
|
|
ref="ref_event" |
|
|
|
:eventId="eventId" |
|
|
|
@handleClose="handleClose" |
|
|
|
/> |
|
|
|
|
|
|
|
<service-info |
|
|
|
v-if="pageType === 'create-service'" |
|
|
|
ref="ref_service" |
|
|
|
@handleClose="handleClose" |
|
|
|
/> |
|
|
|
|
|
|
|
<demand-info |
|
|
|
v-if="pageType === 'create-demand'" |
|
|
|
ref="ref_demand" |
|
|
|
:icResiUserId="icResiUserId" |
|
|
|
:selGridId="selGridId" |
|
|
|
@handleClose="handleClose" |
|
|
|
/> |
|
|
|
|
|
|
|
<qsydw |
|
|
|
v-if="pageType === 'watch-xuncha'" |
|
|
|
ref="ref_xuncha" |
|
|
|
:enterpriseId="enterpriseId" |
|
|
|
@handleClose="handleClose" |
|
|
|
/> |
|
|
|
|
|
|
|
<!-- <people v-if="pageType==='watch-resi'" |
|
|
|
:uid="icResiUserId" |
|
|
@ -202,7 +230,7 @@ import qsydw from "@/views/modules/visual/command/cpts/qsydw"; |
|
|
|
|
|
|
|
let loading; //加载动画 |
|
|
|
|
|
|
|
function iniSearchResult () { |
|
|
|
function iniSearchResult() { |
|
|
|
return [ |
|
|
|
{ |
|
|
|
type: "position", |
|
|
@ -248,7 +276,7 @@ export default { |
|
|
|
eventInfo, |
|
|
|
serviceInfo, |
|
|
|
demandInfo, |
|
|
|
qsydw |
|
|
|
qsydw, |
|
|
|
}, |
|
|
|
|
|
|
|
props: {}, |
|
|
@ -257,7 +285,7 @@ export default { |
|
|
|
...mapGetters(["clientHeight"]), |
|
|
|
}, |
|
|
|
|
|
|
|
data () { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
showAgencyList: false, |
|
|
|
|
|
|
@ -396,28 +424,28 @@ export default { |
|
|
|
showedSearchResult: false, |
|
|
|
searchResult: iniSearchResult(), |
|
|
|
|
|
|
|
pageType: '', |
|
|
|
icResiUserId: '', |
|
|
|
selGridId: '', |
|
|
|
eventId: '', |
|
|
|
enterpriseId: '', |
|
|
|
pageType: "", |
|
|
|
icResiUserId: "", |
|
|
|
selGridId: "", |
|
|
|
eventId: "", |
|
|
|
enterpriseId: "", |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
watch: { |
|
|
|
categoryKeys () { |
|
|
|
categoryKeys() { |
|
|
|
this.requestMapDot(); |
|
|
|
}, |
|
|
|
categoryKeys2 () { |
|
|
|
categoryKeys2() { |
|
|
|
this.requestMapDot2(); |
|
|
|
}, |
|
|
|
searchName () { |
|
|
|
searchName() { |
|
|
|
this.showedSearchResult = false; |
|
|
|
this.searchResult = iniSearchResult(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
async mounted () { |
|
|
|
async mounted() { |
|
|
|
//加载组织数据 |
|
|
|
await this.loadOrgData(); |
|
|
|
await this.requestMapDot(); |
|
|
@ -425,36 +453,35 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
handleClickDotBtn (type, info) { |
|
|
|
|
|
|
|
this.pageType = type |
|
|
|
handleClickDotBtn(type, info) { |
|
|
|
this.pageType = type; |
|
|
|
if (type == "create-service") { |
|
|
|
// 点击网格发起服务 |
|
|
|
} else if (type == "watch-resi") { |
|
|
|
this.toSubAgency('people', info.icResiUserId) |
|
|
|
this.icResiUserId = info.icResiUserId |
|
|
|
this.toSubAgency("people", info.icResiUserId); |
|
|
|
this.icResiUserId = info.icResiUserId; |
|
|
|
// 查看居民详情 |
|
|
|
} else if (type == "watch-event") { |
|
|
|
// 查看事件 |
|
|
|
this.eventId = info.icEventId; |
|
|
|
} else if (type == "create-demand") { |
|
|
|
// 发起需求 |
|
|
|
this.icResiUserId = info.icResiUserId |
|
|
|
this.selGridId = info.gridId |
|
|
|
this.icResiUserId = info.icResiUserId; |
|
|
|
this.selGridId = info.gridId; |
|
|
|
} else if (type == "watch-xuncha") { |
|
|
|
|
|
|
|
this.enterpriseId = info.enterpriseId |
|
|
|
this.enterpriseId = info.enterpriseId; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleClose () { |
|
|
|
handleClose() { |
|
|
|
this.pageType = ""; |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickMapBox () { |
|
|
|
handleClickMapBox() { |
|
|
|
this.showedSearchResult = false; |
|
|
|
}, |
|
|
|
|
|
|
|
handleTo (item) { |
|
|
|
handleTo(item) { |
|
|
|
this.$router.push({ |
|
|
|
path: `/main-shuju/visual-basicinfo-people-list`, |
|
|
|
query: { |
|
|
@ -465,12 +492,12 @@ export default { |
|
|
|
}, |
|
|
|
}); |
|
|
|
}, |
|
|
|
hideAgencyList () { |
|
|
|
hideAgencyList() { |
|
|
|
this.showAgencyList = !this.showAgencyList; |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async loadOrgData () { |
|
|
|
async loadOrgData() { |
|
|
|
const url = "/gov/org/agency/maporg"; |
|
|
|
let params = { |
|
|
|
orgId: this.orgId, |
|
|
@ -493,13 +520,13 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleChangeMenuLeft (obj) { |
|
|
|
handleChangeMenuLeft(obj) { |
|
|
|
this.coverageTypes2 = [obj.coverageType]; |
|
|
|
this.categoryKeys2 = [obj.categoryKey]; |
|
|
|
this.placeType2 = obj.placeType; |
|
|
|
}, |
|
|
|
|
|
|
|
handleChangeMenu (list) { |
|
|
|
handleChangeMenu(list) { |
|
|
|
console.log("handleChangeMenu", list); |
|
|
|
let categoryKeys = []; |
|
|
|
let coverageTypes = []; |
|
|
@ -518,6 +545,7 @@ export default { |
|
|
|
subitem.categories.forEach((subitem2) => { |
|
|
|
if (subitem2.selected) { |
|
|
|
categoryKeys.push(subitem2.categoryKey); |
|
|
|
coverageTypes.push(subitem2.coverageType); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
@ -527,7 +555,7 @@ export default { |
|
|
|
this.requestMapDot(); |
|
|
|
}, |
|
|
|
|
|
|
|
async requestMapDot () { |
|
|
|
async requestMapDot() { |
|
|
|
if (!this.orgId) return; |
|
|
|
const url = "/data/aggregator/coverage/dataList"; |
|
|
|
let params = { |
|
|
@ -547,7 +575,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async requestMapDot2 () { |
|
|
|
async requestMapDot2() { |
|
|
|
if (!this.orgId) return; |
|
|
|
this.requestMapDot2Count(); |
|
|
|
const url = "/data/aggregator/coverage/dataList-left"; |
|
|
@ -571,7 +599,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async requestMapDot2Count () { |
|
|
|
async requestMapDot2Count() { |
|
|
|
const url = "/data/aggregator/coverage/dataList-left-subtotal"; |
|
|
|
let params = { |
|
|
|
orgId: this.orgId, |
|
|
@ -591,13 +619,13 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//子组件点击房间,刷新右侧list |
|
|
|
refreshInfoList (selId, type) { |
|
|
|
refreshInfoList(selId, type) { |
|
|
|
this.orgId = selId; |
|
|
|
this.level = ""; |
|
|
|
}, |
|
|
|
|
|
|
|
//返回所选组织 |
|
|
|
handleClickAgency (index) { |
|
|
|
handleClickAgency(index) { |
|
|
|
//如果是从小区返回,清空一下小区的人员显示列表 |
|
|
|
if (this.orgLevel === "neighborHood") { |
|
|
|
this.$nextTick(() => { |
|
|
@ -629,7 +657,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//点击组织列表数据 |
|
|
|
clickAgencyItem (item, index) { |
|
|
|
clickAgencyItem(item, index) { |
|
|
|
console.log(item); |
|
|
|
if (item.level == "grid") { |
|
|
|
} else { |
|
|
@ -646,7 +674,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//下钻到下一级 type点击的类型:polygon 点击多边形(分为点击组织/小区) people 点击详情 |
|
|
|
async toSubAgency (type, e) { |
|
|
|
async toSubAgency(type, e) { |
|
|
|
//点击小区neighborHood显示楼栋,点击非小区,进入下一级地图 |
|
|
|
if (type === "people") { |
|
|
|
this.runNum++; |
|
|
@ -694,7 +722,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//刷新地图 |
|
|
|
async refreshMap (isRefreshView) { |
|
|
|
async refreshMap(isRefreshView) { |
|
|
|
//加载组织数据 |
|
|
|
await this.loadOrgData(); |
|
|
|
|
|
|
@ -702,7 +730,7 @@ export default { |
|
|
|
await this.requestMapDot2(); |
|
|
|
}, |
|
|
|
|
|
|
|
async handleSearch () { |
|
|
|
async handleSearch() { |
|
|
|
const { searchName } = this; |
|
|
|
if (!searchName) { |
|
|
|
return this.$message.error("请输入搜索内容"); |
|
|
@ -748,7 +776,12 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async searchPos () { |
|
|
|
clearSearch() { |
|
|
|
this.searchName = ""; |
|
|
|
this.$refs.map.removeDotMarker(); |
|
|
|
}, |
|
|
|
|
|
|
|
async searchPos() { |
|
|
|
let data = await this.$refs.map.searchPos(this.searchName); |
|
|
|
|
|
|
|
console.log("检索位置", data); |
|
|
@ -769,9 +802,9 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickSearchLi (li) { |
|
|
|
console.log('handleClickSearchLi', li) |
|
|
|
if(!li.longitude){ |
|
|
|
handleClickSearchLi(li) { |
|
|
|
console.log("handleClickSearchLi", li); |
|
|
|
if (!li.longitude) { |
|
|
|
return this.$message.error("请先设置坐标"); |
|
|
|
} |
|
|
|
this.$refs.map.setDotMarker(li, [ |
|
|
@ -781,7 +814,7 @@ export default { |
|
|
|
this.showedSearchResult = false; |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickSearchResultMore (item) { |
|
|
|
handleClickSearchResultMore(item) { |
|
|
|
console.log(item); |
|
|
|
let res = !item.showedMore; |
|
|
|
if (res) { |
|
|
@ -790,7 +823,7 @@ export default { |
|
|
|
item.showedMore = !item.showedMore; |
|
|
|
}, |
|
|
|
//开启加载动画 |
|
|
|
startLoading () { |
|
|
|
startLoading() { |
|
|
|
loading = Loading.service({ |
|
|
|
lock: true, //是否锁定 |
|
|
|
text: "正在加载……", //加载中需要显示的文字 |
|
|
@ -799,7 +832,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//结束加载动画 |
|
|
|
endLoading () { |
|
|
|
endLoading() { |
|
|
|
//clearTimeout(timer); |
|
|
|
if (loading) { |
|
|
|
loading.close(); |
|
|
|