Commit baea56c4 authored by 张志伟's avatar 张志伟

perf:管网配置界面支持修改图层的显隐

parent 71af921b
Pipeline #95221 waiting for manual action with stages
......@@ -328,3 +328,14 @@
.schemeBox {
height: calc(100% - 51px);
}
.layerTitle{
display: flex;
align-items: center;
gap: 5px;
.layerTitle_icon{
width: 3px;
border-radius: 2px;
height: 16px;
background-color: #4699f4;
}
}
import React, { useEffect, useState, useRef } from 'react';
import { Spin, notification, Table, Modal, Tooltip } from 'antd';
import { Spin, notification, Table, Modal, Tooltip, message } from 'antd';
import { ApartmentOutlined, PartitionOutlined } from '@ant-design/icons';
import Tree from '@/components/ExpendableTree';
import { GetLayerList, GetMetaDataPreview, GetLayerMetaDataPreview } from '@/services/gis/gis';
import { GetLayerList, GetMetaDataPreview, GetLayerMetaDataPreview, EditLayerMetaDataInfo } from '@/services/gis/gis';
import { set } from 'lodash';
import styles from '../SchemeConfig.less';
const MeteDataModal = props => {
......@@ -12,8 +12,8 @@ const MeteDataModal = props => {
const [isLoading, setIsLoading] = useState(false);
const [loading, setLoading] = useState(false);
const [expendKey, setExpendKey] = useState(''); // 保存默认展开项
const [recored, setRecored] = useState('');
const setRowClassName = e => (e.layerID === recored.layerID ? styles.clickRowStyle : '');
const [selectLayerIds,setSelectLayerIds] = useState ([])
const layerList = useRef([])
useEffect(() => {
if (visible) {
......@@ -24,12 +24,50 @@ const MeteDataModal = props => {
}
}, [visible]);
const handleLayerTree = (list) =>{
let treeList = []
list.forEach(i=>{
if(i.parentLayerId == -1){
let param= {
title:<span onClick={()=>{onSelect(i)}}>{i.title}</span>,
key:i.key,
children:list.filter(j=>j.parentLayerId === i.layerID).map(k=>{
return {
title: <span onClick={()=>{onSelect(k)}}>{k.title}</span>,
key:k.key,
children:[]
}
})
}
treeList.push(param)
}
})
return treeList
}
const getMeteData = () => {
setIsLoading(true)
GetLayerList({ serviceName: metaData.GISServerProjectName }).then(res => {
setIsLoading(false)
if (res.success) {
getTree();
setMetedataList(res.root);
setRecored(res.root[0]);
let allKeys = []
let roots = []
res.root.forEach(i=>{
if(i.layerID){
let key = `${i.parentLayerId}_${i.layerID}`
let params = {
...i,
title:i.layerName,
key,
}
allKeys.push(key)
roots.push(params)
}
})
layerList.current = roots
setSelectLayerIds(allKeys)
setMetedataList(handleLayerTree(roots));
} else {
notification.error({
message: '提示',
......@@ -43,21 +81,15 @@ const MeteDataModal = props => {
const getTree = () => {
setLoading(true);
GetMetaDataPreview({ serviceName: metaData.GISServerProjectName }).then(res => {
console.log(res);
setExpendKey('0-0');
setLoading(false);
setCurrentMeta(res);
});
};
const columns = [
{
title: '图层',
dataIndex: 'layerName',
width: 150,
key: 'layerName',
},
];
const handleCheck = (keys) =>{
setSelectLayerIds(keys)
}
// 渲染机构树
const mapTree = org => {
......@@ -95,8 +127,6 @@ const MeteDataModal = props => {
};
const onSelect = e => {
console.log(e);
setRecored(e);
setLoading(true);
if (e.layerID != null) {
GetLayerMetaDataPreview({
......@@ -111,7 +141,29 @@ const MeteDataModal = props => {
}
};
const onSubmit = () => {};
const onSubmit = () => {
let items = [];
layerList.current.forEach(i => {
let defaultVisibility = selectLayerIds.includes(i.key)
if(i.parentLayerId == -1 ){
defaultVisibility = selectLayerIds.some(j=>j.includes(`${i.layerID}_`))
}
let name = i.layerName.split(':')[1]
items.push({
name,
infos: {
defaultVisibility,
},
});
});
EditLayerMetaDataInfo(metaData.GISServerProjectName,items).then(res=>{
if(res.code ==0){
return message.success(res.data)
}else{
return message.info(res?.data || '元数据信息修改失败!')
}
})
};
return (
<Modal
visible={visible}
......@@ -128,22 +180,24 @@ const MeteDataModal = props => {
<Spin spinning={isLoading}>
<div style={{ width: '1000px', height: '640px', display: 'flex' }}>
<div style={{ width: '300px' }}>
<Table
onRow={record => ({
onClick: e => {
onSelect(record);
}, // 点击行
})}
bordered
rowClassName={setRowClassName}
pagination={false}
style={{ width: '300px' }}
columns={columns}
dataSource={metedataList}
size="small"
scroll={{
y: '600px',
<div
className={styles.layerTitle}
onClick={() => {
onSelect();
}}
>
<div className={styles.layerTitle_icon} />
<span>地图文档</span>
</div>
<Tree
showIcon="true"
blockNode
defaultExpandAll
treeData={metedataList}
checkable
autoExpandParent={true}
onCheck={handleCheck}
checkedKeys={selectLayerIds}
/>
</div>
<Spin spinning={loading}>
......
import { get, post, PUBLISH_SERVICE, CITY_SERVICE, PANDA_GIS } from '@/services/index';
import { request } from '@wisdom-utils/utils';
// 1.获取全部地图方案配置
export const GetAllConfig = param => get(`${CITY_SERVICE}/OMS.svc/GetAllConfig`, param);
// 2.获取元数据
......@@ -26,3 +29,16 @@ export const GetLayerMetaDataPreview = param =>
// 查看
export const LayerSetting = param => get(`${PANDA_GIS}/MapLayer/LayerSetting`, param);
// 编辑图层元数据信息
export const EditLayerMetaDataInfo = (mapServerName,data) =>
request({
url:`${PANDA_GIS}/MetaData/EditLayerMetaDataInfo?mapServerName=${mapServerName}`,
method: 'post',
headers: {
accept: 'text/plain',
'Content-Type': 'application/json',
},
data: JSON.stringify(data),
})
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment