import React from 'react'; import { Tree, Button, Modal, Form, Input, Radio, message, Menu, Divider } from 'antd'; import { DownOutlined, EyeOutlined, EyeInvisibleOutlined, UnderlineOutlined, UnorderedListOutlined, } from '@ant-design/icons'; import SetLogoImagePath from './SetLogoImagePath' import { createLayer, getBasicLayerMenuApi } from '../../../api'; import '../../../index.less'; import { label } from 'three/examples/jsm/nodes/Nodes.js'; class LayerData extends React.Component { constructor () { super (); this.state = { treeData: [], menuData:[], //菜单数据 layerId: '', isModalOpen: false, addLayer: { id: 0, logoImageColor: 'gray', logoImagePath: '', name: '', note: '', }, selectLayerList: [], } } // 获取基础图层菜单栏,获取列表数据 getBasicLayerMenu = (adcode) => { return getBasicLayerMenuApi({adcode: adcode}).then((e) => { let basicLayeData = e.data; // MenuData let menuDataList = []; for (var m in basicLayeData) { menuDataList.push({ key: basicLayeData[m].id, label: basicLayeData[m].name, icon: , children: this.getLayerList(basicLayeData[m].layerList), }) } this.setState ({ menuData: menuDataList, }) }); } // 获取图层列表 getLayerList = (layerList, i) => { var cLayerList = []; for (let i in layerList) { cLayerList.push({ // key: 0:顺序 ,1:图层id , 2:时间 , 3:名称 , 4:是否为自创图层 key: i + '-' + layerList[i].id + '-' + new Date() + '-' + layerList[i].name + '(' + layerList[i].geoUnitAmount + ')' + '-' + layerList[i].isCustomize, label: layerList[i].name + '(' + layerList[i].geoUnitAmount + ')', // icon 分别为图标和小眼睛(是否显示该图层),后续在选择函数中修改 icon:[,], // icon:({ selected }) => (selected ? [,] // : [,]), typee: layerList[i].type, isCustomize: layerList[i].isCustomize, }) } return cLayerList; } //新建点位后修改涂层数量 changeUnitAmount = (layerId) => { let menu = this.state.menuData; for (let i in menu) { for (let j in menu[i].children) { if (layerId == menu[i].children[j].key.split('-')[1]) { menu[i].children[j].title = 'ooo' ; } } } this.setState ({ menuData: menu }) } // 选中图层 onLayerSelect = (selectedKeys, info) => { let selectLayerList = []; let layerId = info.node.key.split('-')[1]; for (let i in info.selectedNodes) { selectLayerList.push({ 'value': info.selectedNodes[i].key.split('-')[1], 'label': info.selectedNodes[i].title, 'isCustomize': info.selectedNodes[i].isCustomize, }) } this.setState({ layerId: layerId, selectLayerList: selectLayerList, }) if (info.node.type === 1 || info.node.type === 4) { this.props.getLayerPoints(layerId, info.selected, info.node.type); } else if (info.node.type === 2) { this.props.getLayerShapes(layerId, info.selected); } } // 选中图层 selectLayer = (e) => { // 修改选中状态 let menuData = this.state.menuData; this.setState({menuData:[]}) // 将图层列表的数据清空(不清空组件不更新数据) for (let i in menuData) { // 将选中图层的小眼睛改为打开状态(重新写入数据) for (let j in menuData[i].children) { if (e.key === menuData[i].children[j].key) { let iconList = menuData[i].children[j].icon[0]; menuData[i].children[j].icon = []; menuData[i].children[j].icon.push(iconList); menuData[i].children[j].icon.push(); } } } // 改变选择状态并改变地图上的图层 let layerId = e.key.split('-')[1]; if (e.item.props.typee === 1 || e.item.props.typee === 4) { this.props.getLayerPoints(layerId, true, e.item.props.typee); } else if (e.item.props.typee === 2) { this.props.getLayerShapes(layerId, true); } // 将选中图层写入选中图层列表 let selectLayerList = []; for (let m in e.selectedKeys) { selectLayerList.push({ // key: 0:顺序 ,1:图层id , 2:时间 , 3:名称 , 4:是否为自创图层 'value' : e.selectedKeys[m].split('-')[1], 'label' : e.selectedKeys[m].split('-')[3], 'isCustomize' : e.selectedKeys[m].split('-')[4], }) } this.setState({ layerId: layerId, selectLayerList: selectLayerList, menuData: [...menuData] }) } // 取消选中图层 deselectlayer = (e) =>{ // 修改选中状态 let menuData = this.state.menuData; this.setState({menuData:[]}) for (let i in menuData) { for (let j in menuData[i].children) { if (e.key === menuData[i].children[j].key) { let iconList = menuData[i].children[j].icon[0]; menuData[i].children[j].icon = []; menuData[i].children[j].icon.push(iconList); menuData[i].children[j].icon.push(); } } } // 改变选择状态并改变地图上的图层 let layerId = e.key.split('-')[1]; if (e.item.props.typee === 1 || e.item.props.typee === 4) { this.props.getLayerPoints(layerId, false, e.item.props.typee); } else if (e.item.props.typee === 2) { this.props.getLayerShapes(layerId, false); } // 将选中图层写入选中图层列表 let selectLayerList = []; for (let m in e.selectedKeys) { selectLayerList.push({ // key: 0:顺序 ,1:图层id , 2:时间 , 3:名称 , 4:是否为自创图层 'value' : e.selectedKeys[m].split('-')[1], 'label' : e.selectedKeys[m].split('-')[3], 'isCustomize' : e.selectedKeys[m].split('-')[4], }) } this.setState({ layerId: layerId, selectLayerList: selectLayerList, menuData: [...menuData], }) } //弹出框事件 showModal = () => { this.setState({ isModalOpen: true }); }; handleOk = (values) => { let self = this; if (this.state.addLayer.id != 0) { //编辑图层 updateLayer({ id: this.state.addLayer.id, logoImagePath: this.state.addLayer.logoImagePath, name: this.state.addLayer.name, note: this.state.addLayer.note, }).then((e) => { this.setState({ isModalOpen: false }); }) } else { createLayer({ //创建图层 // id: this.state.addLayer.id, cityAdcode: this.props.adcode.cityAdcode, districtAdcode: this.props.adcode.districtAdcode, logoImagePath: this.state.addLayer.logoImagePath, name: this.state.addLayer.name, note: this.state.addLayer.note, }).then((e) => { if (e.success) { message.success(e.message || '图层创建成功!'); this.setState({ isModalOpen: false }); } else { message.error(e.message || '图层创建失败!'); } }).then(() => { let filter = self.props.adcode.districtAdcode || self.props.adcode.cityAdcode; self.getBasicLayerMenu(filter) }) } }; handleCancel = () => { this.setState({ isModalOpen: false }); }; onLayerNameChange = (e) => { this.setState({ addLayer: { id: this.state.addLayer.id, logoImagePath: this.state.addLayer.logoImagePath, note: this.state.addLayer.note, name: e.target.value, logoImageColor: this.state.addLayer.logoImageColor } }) }; onLayerNoteChange = (e) => { this.setState({ addLayer: { id: this.state.addLayer.id, logoImagePath: this.state.addLayer.logoImagePath, name: this.state.addLayer.name, note: e.target.value, logoImageColor: this.state.addLayer.logoImageColor } }) }; onLayerIconColorChange = (e) => { this.setState({ addLayer: { id: this.state.addLayer.id, note: this.state.addLayer.note, name: this.state.addLayer.name, logoImagePath: this.state.addLayer.logoImagePath, logoImageColor: e.target.value } }) }; onLayerIogoImagePathChange = (e) => { this.setState({ addLayer: { id: this.state.addLayer.id, note: this.state.addLayer.note, name: this.state.addLayer.name, logoImagePath: e.target.value, logoImageColor: this.state.addLayer.logoImageColor } }) }; // 根据已选列表变化 changeSelectStatus = () => { for (let n in this.state.selectLayerList) { // 修改选中状态 let menuData = this.state.menuData; this.setState({menuData:[]}) for (let i in menuData) { for (let j in menuData[i].children) { if (this.state.selectLayerList[n].value === menuData[i].children[j].key.split('-')[1]) { let iconList = menuData[i].children[j].icon[0]; menuData[i].children[j].icon = []; menuData[i].children[j].icon.push(iconList); menuData[i].children[j].icon.push(); } } } this.setState({ menuData: [...menuData] }) } } render() { return (
0 ? 'showItem layer-data-title' : 'hideItem layer-data-title'}> 图层数据
); } } export default LayerData