diff --git a/src/api/aiSupervision/layerConfigApi.js b/src/api/aiSupervision/layerConfigApi.js index 5e077cd..d6ec225 100644 --- a/src/api/aiSupervision/layerConfigApi.js +++ b/src/api/aiSupervision/layerConfigApi.js @@ -89,6 +89,14 @@ export function getLayerListApi(data) { }); } +export function saveOrUpdateScene(data) { + return request({ + url: `/map/scene/saveOrUpdateScene`, + method: 'post', + data + }); +} + export function getSceneDetail(id) { return request({ url: `/map/scene/findSceneById/${id}`, @@ -148,15 +156,63 @@ export function deleteLayerApi(id) { } // 获取图层详情 -export function queryServiceInfoApi(url) { - return new Promise(async (resolve, reject) => { - const result = await axios.get(`${url}.json`); - if (result.status === 200 && result.data) { - const layerId = result.data.layers.find((f) => f.parentLayerId === -1)?.subLayerIds?.[0]; - const data = await axios.get(`${url}/${layerId}?f=json`); - if (data.status === 200 && data.data) { - resolve(data.data); - } +export function queryServiceInfoApi(url, layer) { + switch (layer.type) { + case '021102': { + return new Promise(async (resolve, reject) => { + const result = await axios.get(`${url}.json`); + if (result.status === 200 && result.data) { + const layerId = result.data.layers.find((f) => f.parentLayerId === -1)?.subLayerIds?.[0]; + const data = await axios.get(`${url}/${layerId}?f=json`); + if (data.status === 200 && data.data) { + resolve(data.data); + } + } + }); } - }); + case '081100': + return new Promise(async (resolve, reject) => { + const name = layer.name; + const splitUrl = url?.split('map-')[0]; + const newUrl = `${splitUrl}data-supermap_shuili/rest/data/datasources/shuili/datasets/${name}/fields.json`; + const result = await axios.get(newUrl); + if (result.status === 200 && result.data) { + const fields = result.data.fieldNames.map((item) => { + return { + name: item, + alias: item, + type: '-' + }; + }); + resolve({ fields }); + } + }); + case '030300': + return new Promise(async (resolve, reject) => { + const result = await axios.get( + `${url}?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=${layer.index}` + ); + if (result.status === 200 && result.data) { + const xmlDom = new window.DOMParser().parseFromString(result.data, 'text/xml'); + const elements = xmlDom.getElementsByTagName('xs:element'); + let fields = []; + for (let i = 0; i < elements.length; i++) { + const item = elements[i]; + const nillable = item.attributes?.nillable; + if (nillable) { + const name = item.attributes.name.value; + const type = item.attributes.type.value.split(':')?.[1]; + fields.push({ + name, + alias: name, + type + }); + } + } + resolve({ fields }); + } + }); + default: + break; + } } diff --git a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue index df61939..bf54cf1 100644 --- a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue +++ b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue @@ -146,7 +146,14 @@ - + +
+
+ + + 搜索 +
+
@@ -156,7 +163,7 @@ - + @@ -276,13 +283,17 @@ export default { multipleSelection: [], activeFields: [], fieldsTable: [], - queryServiceUrlMap: new Map() + queryServiceUrlMap: new Map(), + fieldValue: '' }; }, watch: { keyword() { this.debouncedGetLayerList(); }, + fieldValue() { + this.searchField(); + }, dialogFormVisible(val) { if (val === false) { this.initData(); @@ -291,21 +302,12 @@ export default { 'editDataInfoForm.serviceUrl'(val) { if (val) { if (!this.queryServiceUrlMap.has(val)) { - queryServiceInfoApi(val).then((res) => { - this.fieldsTable = - res?.fields?.map((item) => { - return { - field: item.name, - fieldName: item.alias, - fieldType: item.type, - isShow: this.activeFields.includes(item.name) ? 1 : 0 - }; - }) || []; - this.queryServiceUrlMap.set(val, this.fieldsTable); - }); + this.queryLayerByUrl(val); } else { this.fieldsTable = this.queryServiceUrlMap.get(val); } + } else { + this.fieldsTable = []; } } }, @@ -320,6 +322,13 @@ export default { }); }, methods: { + searchField() { + if (this.fieldValue === '') { + this.fieldsTable = this.queryServiceUrlMap.get(this.editDataInfoForm.serviceUrl); + } else { + this.fieldsTable = this.fieldsTable.filter((item) => item.field.includes(this.fieldValue)); + } + }, goBack() { this.$router.go(-1); }, @@ -489,6 +498,29 @@ export default { }, handleSelectionChange(val) { this.multipleSelection = val; + }, + showFieldExtend() { + return ['021102', '081100', '030300'].includes(this.editDataInfoForm.serviceType); + }, + queryLayerByUrl(url) { + queryServiceInfoApi(url, { + type: this.editDataInfoForm.serviceType, + url: url, + index: this.editDataInfoForm.serviceIndex, + name: this.editDataInfoForm.serviceName, + alias: this.editDataInfoForm.serviceNameAlias + }).then((res) => { + this.fieldsTable = + res?.fields?.map((item) => { + return { + field: item.name, + fieldName: item.alias, + fieldType: item.type, + isShow: this.activeFields.includes(item.name) ? 1 : 0 + }; + }) || []; + this.queryServiceUrlMap.set(url, this.fieldsTable); + }); } } }; @@ -588,6 +620,26 @@ header { } } .el-dialog { + .field-box { + display: flex; + justify-content: end; + .field-filter { + width: 400px; + margin-bottom: 16px; + display: flex; + border-radius: 4px; + border: 1px solid #d9d9d9; + + ::v-deep .el-input__inner { + border: none; + } + .search-btn { + border: none; + border-radius: 0px; + border-left: 1px solid #d9d9d9; + } + } + } .fn-btns { margin-bottom: 10px; } diff --git a/src/views/dike/runManage/dangerWeakProject/inspectTasks/index.vue b/src/views/dike/runManage/dangerWeakProject/inspectTasks/index.vue index 2737e70..cf40aea 100644 --- a/src/views/dike/runManage/dangerWeakProject/inspectTasks/index.vue +++ b/src/views/dike/runManage/dangerWeakProject/inspectTasks/index.vue @@ -304,9 +304,19 @@ export default { {{ formatAdcd(scope.row.adcdStart) }} - + - +