Browse Source

fix: 补充查询内容

feature-v1.0.0
Befend 1 month ago
parent
commit
40c59cc7cb
  1. 22
      src/api/map/index.ts
  2. 4
      src/views/Main/DailyPatrolCard/index.vue
  3. 69
      src/views/Main/MapSearch/index.vue

22
src/api/map/index.ts

@ -38,12 +38,26 @@ export const getLayerData = async (url: string, params: any) => {
}; };
//从水库-水库点图层中,根据水库名称/水平编码,从geojson中查询水库列表 //从水库-水库点图层中,根据水库名称/水平编码,从geojson中查询水库列表
export const getReservoirList = async (layerData: any, searchName: string) => { export const getReservoirList = async (layerData: any, searchName: string) => {
const filter = searchName
? `RES_NAME LIKE '%${searchName}%' OR RES_CODE LIKE '%${searchName}%'`
: "1=1";
//
const { serviceToken, text } = layerData; const { serviceToken, text } = layerData;
if (!text) return; if (!text) return;
let filter = "1=1";
switch (layerData.nameCn) {
case "水库点":
filter = searchName
? `RES_NAME LIKE '%${searchName}%' OR RES_CODE LIKE '%${searchName}%'`
: "1=1";
break;
case "水闸":
filter = searchName
? `WAGA_NAME LIKE '%${searchName}%' OR WAGA_CODE LIKE '%${searchName}%'`
: "1=1";
break;
case "堤防":
filter = searchName
? `DIKE_NAME LIKE '%${searchName}%' OR DIKE_CODE LIKE '%${searchName}%'`
: "1=1";
break;
}
const queryArr = text.split(";"); const queryArr = text.split(";");
let dataUrl = queryArr[0]; let dataUrl = queryArr[0];
const datasourceName = queryArr[1]; const datasourceName = queryArr[1];

4
src/views/Main/DailyPatrolCard/index.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="daily-patrol-card"> <div class="daily-patrol-card">
<div class="sy-water-cart-second-title">日常巡查</div> <div class="sy-water-cart-second-title">巡查养护</div>
<div class="echart-wrapper" ref="chartRef"></div> <div class="echart-wrapper" ref="chartRef"></div>
<div class="appraise-progress"> <div class="appraise-progress">
<div class="tips"> <div class="tips">
@ -148,7 +148,7 @@ const initChart = () => {
trigger: "item", trigger: "item",
// formatter: '{a} <br/>{b}: {c} ({d}%)' // formatter: '{a} <br/>{b}: {c} ({d}%)'
}, },
color: ["#FFDD77", "#FF9A23", "#F26161", "#28CE8E"], color: ["#28CE8E", "#FFDD77", "#FF9A23", "#F26161"],
legend: [ legend: [
{ {
top: "15%", top: "15%",

69
src/views/Main/MapSearch/index.vue

@ -4,12 +4,7 @@
<iconpark-icon name="search" size="16" fill="#fff"></iconpark-icon> <iconpark-icon name="search" size="16" fill="#fff"></iconpark-icon>
</span> </span>
<el-popover <el-popover placement="bottom" :width="280" :visible="popoverVisible" popper-class="map-search-popper">
placement="bottom"
:width="280"
:visible="popoverVisible"
popper-class="map-search-popper"
>
<template #reference> <template #reference>
<el-input <el-input
class="map-search-input" class="map-search-input"
@ -24,10 +19,7 @@
共搜索到<span>{{ searchResultList.length }}</span 共搜索到<span>{{ searchResultList.length }}</span
>条结果 >条结果
</div> </div>
<div <div v-if="searchResultList.length > 0" class="map-search-result-list">
v-if="searchResultList.length > 0"
class="map-search-result-list"
>
<div <div
class="map-search-result-list-item" class="map-search-result-list-item"
v-for="(item, index) in searchResultList" v-for="(item, index) in searchResultList"
@ -35,18 +27,32 @@
@click.stop="flyTo(item)" @click.stop="flyTo(item)"
> >
<div class="title"> <div class="title">
<span class="name">{{ item?.properties?.RES_NAME }}</span> <span class="name">{{
<span class="tag">{{ item?.properties?.ENG_SCAL }}</span> item?.properties?.RES_NAME ?? item?.properties?.DIKE_NAME ?? item?.properties?.WAGA_NAME
</div> }}</span>
<div class="item"> <span class="tag"
<i></i>工程代码{{ item?.properties?.RES_CODE }} >{{
item?.properties?.ENG_SCAL ?? item?.properties?.DIKE_GRAD ?? item?.properties?.WAGA_SCALE
}}</span
>
</div> </div>
<div class="item"> <div class="item">
<i></i>工程类型{{ item?.properties?.RES_TYPE }} <i></i>工程代码{{
item?.properties?.RES_CODE ?? item?.properties?.DIKE_CODE ?? item?.properties?.WAGA_CODE
}}
</div> </div>
<div class="item"> <div class="item">
<i></i>工程地址{{ item?.properties?.RES_LOC }} <i></i>工程类型{{
item?.properties?.RES_TYPE ?? item?.properties?.DIKE_GRAD ?? item?.properties?.WAGA_TYPE
}}
</div> </div>
<template v-if="!item?.properties?.START_LOC && !item?.properties?.END_LOC">
<div class="item"><i></i>工程地址{{ item?.properties?.RES_LOC ?? item?.properties?.WAGA_LOC }}</div>
</template>
<template v-else>
<div class="item"><i></i>堤防起点{{ item?.properties?.START_LOC }}</div>
<div class="item"><i></i>堤防终点{{ item?.properties?.END_LOC }}</div>
</template>
</div> </div>
</div> </div>
<div v-else class="map-search-result-list no-data"> <div v-else class="map-search-result-list no-data">
@ -90,34 +96,35 @@ const showPopover = () => {
const searchValue = ref(""); const searchValue = ref("");
const searchResultList = ref<any[]>([]); const searchResultList = ref<any[]>([]);
const layerData = computed(() => const layerDatas = computed(() => projectStore.selectedLayers.filter((f: any) => f.isSupportFastQuery === "1"));
projectStore.selectedLayers.find((f: any) => f.isSupportFastQuery === "1")
);
const changeInputValue = async (value: string) => { const changeInputValue = async (value: string) => {
const searchStr = (value ?? "").trim(); const searchStr = (value ?? "").trim();
if (!layerData.value) return; if (!layerDatas.value?.length) return;
if (!searchStr) { if (!searchStr) {
searchResultList.value = []; searchResultList.value = [];
return; return;
} }
showPopover(); showPopover();
const data = await getReservoirList(layerData.value, searchStr); const promiseList: any[] = [];
searchResultList.value = data?.features ?? []; layerDatas.value.forEach((layerData: any) => {
promiseList.push(getReservoirList(layerData, searchStr));
});
Promise.all(promiseList).then((res: any) => {
let features: any = [];
res.forEach((item: any) => {
features = features.concat(item?.features ?? []);
});
searchResultList.value = features ?? [];
});
}; };
const flyTo = (item: any) => { const flyTo = (item: any) => {
const coordinates = item?.geometry?.coordinates; const coordinates = item?.geometry?.coordinates;
if (!coordinates) return; if (!coordinates) return;
popoverVisible.value = false; popoverVisible.value = false;
const center = SyCim.Parse.parsePosition( const center = SyCim.Parse.parsePosition(`${coordinates[0]},${coordinates[1]},10`).toCartesian3();
`${coordinates[0]},${coordinates[1]},10`
).toCartesian3();
const boundingSphere = new Cesium.BoundingSphere(center, 100); const boundingSphere = new Cesium.BoundingSphere(center, 100);
viewer.camera.flyToBoundingSphere(boundingSphere, { viewer.camera.flyToBoundingSphere(boundingSphere, {
offset: new Cesium.HeadingPitchRange( offset: new Cesium.HeadingPitchRange(viewer.camera.heading, viewer.camera.pitch, 500),
viewer.camera.heading,
viewer.camera.pitch,
500
),
duration: 2, duration: 2,
}); });
}; };

Loading…
Cancel
Save