From 8cce3a75f0d1c1280204485a1c26f6e069276773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E4=BC=9F=E6=B4=8B?= Date: Thu, 13 Mar 2025 16:26:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BE=E5=B1=82=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/map/index.ts | 65 +++++++++++--- src/assets/card/no-data.png | Bin 0 -> 4200 bytes src/components.d.ts | 3 + src/theme/popover.scss | 20 ++++- src/views/Main/MapSearch/index.vue | 136 ++++++++++++++++++++--------- 5 files changed, 166 insertions(+), 58 deletions(-) create mode 100644 src/assets/card/no-data.png diff --git a/src/api/map/index.ts b/src/api/map/index.ts index 57899c9..4ee0f43 100644 --- a/src/api/map/index.ts +++ b/src/api/map/index.ts @@ -1,27 +1,26 @@ -import { request } from '../axios'; -import axios from 'axios'; +import { request } from "../axios"; +import axios from "axios"; // 获取场景列表 export const getSceneListData = async (data: any) => { return request({ url: `/map/scene/sceneList`, - method: 'post', + method: "post", data: { pageNum: 1, pageSize: 10, data: { - id: '', - name: data.name + id: "", + name: data.name, }, params: { - order: 'asc', - orderBy: 'pub_date' - } - } + order: "asc", + orderBy: "pub_date", + }, + }, }); }; - export const getLayerLegend = async (url: string) => { return axios.get(url); }; @@ -30,10 +29,48 @@ export const getLayerLegend = async (url: string) => { export const getLayerData = async (url: string, params: any) => { return request({ url, - method: 'post', + method: "post", data: params, headers: { - 'Content-Type': 'multipart/form-data' - } + "Content-Type": "multipart/form-data", + }, }); -}; \ No newline at end of file +}; +//从水库-水库点图层中,根据水库名称/水平编码,从geojson中查询水库列表 +export const getReservoirList = async (layerData: any, searchName: string) => { + const attributeFilter = searchName + ? `RES_NAME LIKE '%${searchName}%' OR RES_CODE LIKE '%${searchName}%'` + : "1=1"; + // + const { url } = layerData; + let newUrl = decodeURI(url).split("maps/")[0].replace("map-", "data-"); + const reg2 = /([^/]+)$/; + const decodeUrl: any = decodeURI(url); + const newLayerName: any = decodeUrl?.match?.(reg2)?.[1]; + const l = newLayerName?.split("%40"); + const datasourceName = `${l?.[1]}:${l?.[0]}`; + let queryUrl = `${newUrl}data/featureResults.geojson?returnContent=true`; + const result = await axios.post( + queryUrl, + JSON.stringify({ + getFeatureMode: "SQL", + datasetNames: [datasourceName], + maxFeatures: 100, + queryParameter: { + attributeFilter: attributeFilter, + }, + }), + { + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + }, + } + ); + if (result?.data?.features?.length > 0) { + return result.data; + } + return { + type: "FeatureCollection", + features: [], + }; +}; diff --git a/src/assets/card/no-data.png b/src/assets/card/no-data.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cde2df124e3968c11b7b6fff53c0e71d9d96e7 GIT binary patch literal 4200 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 - - - + +