点位创建优化

This commit is contained in:
licuizhu 2024-01-08 21:25:46 +08:00
parent b2b5bc22b6
commit b90fba0ac8
3 changed files with 74 additions and 39 deletions

View File

@ -21,7 +21,7 @@ function Header (e) {
useEffect(() =>{ useEffect(() =>{
getCurrentUser().then((e) => { getCurrentUser().then((e) => {
const d = e.data; const d = e.data;
token.username = d.username; token.username = d && d.username;
}) })
}) })

View File

@ -23,6 +23,7 @@ class LayerData extends React.Component {
name: '', name: '',
note: '', note: '',
}, },
selectLayerList: [],
} }
} }
@ -63,9 +64,18 @@ class LayerData extends React.Component {
} }
// 选中图层 // 选中图层
onLayerSelect = (selectedKeys, info) => { onLayerSelect = (selectedKeys, info) => {
let selectLayerList = [];
let layerId = info.node.key.split('-')[1]; 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,
'selected': true,
})
}
this.setState({ this.setState({
layerId: layerId layerId: layerId,
selectLayerList: selectLayerList,
}) })
if (info.node.type === 1 || info.node.type === 4) { if (info.node.type === 1 || info.node.type === 4) {
this.props.getLayerPoints(layerId, info.selected, info.node.type); this.props.getLayerPoints(layerId, info.selected, info.node.type);

View File

@ -349,14 +349,10 @@ class BaseMap extends React.Component{
// 选择省 // 选择省
onProvinceChange = (provinceAdcode, data) => { onProvinceChange = (provinceAdcode, data) => {
var self = this; var self = this;
let getLayers = this.state.map.getLayers(); let getLayers = self.state.markerLayerList;
// let getOverlays = this.state.map.getAllOverlays();
for (let i = 0; i < getLayers.length; i++) { for (let i = 0; i < getLayers.length; i++) {
if (getLayers[i].CLASS_NAME === 'AMap.LabelsLayer') { self.state.map.removeMarkerLayer(getLayers[i]);
self.state.map.remove(getLayers[i]);
}
} }
// this.state.map.remove(getOverlays);
data && this.gotoProvince(data) data && this.gotoProvince(data)
this.getCityByProvince(`${provinceAdcode}`); this.getCityByProvince(`${provinceAdcode}`);
this.hideHeatMap(); this.hideHeatMap();
@ -396,15 +392,11 @@ class BaseMap extends React.Component{
//选择市 //选择市
onCityChange = (cityAdcode,data) => { onCityChange = (cityAdcode,data) => {
var self = this; var self = this;
let getLayers = this.state.map.getLayers();
self.startLoading(); self.startLoading();
// let getOverlays = this.state.map.getAllOverlays(); let getLayers = self.state.markerLayerList;
for (let i = 0; i < getLayers.length; i++) { for (let i = 0; i < getLayers.length; i++) {
if (getLayers[i].CLASS_NAME === 'AMap.LabelsLayer') { self.state.map.removeMarkerLayer(getLayers[i]);
self.state.map.remove(getLayers[i]);
}
} }
// this.state.map.remove(getOverlays);
this.getDistrictByCity(`${cityAdcode}`); this.getDistrictByCity(`${cityAdcode}`);
this.refs.getLayerDataFun.getBasicLayerMenu(`${cityAdcode}`).then(() => { this.refs.getLayerDataFun.getBasicLayerMenu(`${cityAdcode}`).then(() => {
self.stopLoading(); self.stopLoading();
@ -446,13 +438,10 @@ class BaseMap extends React.Component{
//选择区 //选择区
onDistrictChange = (provinceAdcode,data) => { onDistrictChange = (provinceAdcode,data) => {
var self = this; var self = this;
let getLayers = this.state.map.getLayers(); self.startLoading();
self.startLoading() let getLayers = self.state.markerLayerList;
// let getOverlays = this.state.map.getAllOverlays();
for (let i = 0; i < getLayers.length; i++) { for (let i = 0; i < getLayers.length; i++) {
if (getLayers[i].CLASS_NAME === 'AMap.LabelsLayer') { self.state.map.removeMarkerLayer(getLayers[i]);
self.state.map.remove(getLayers[i]);
}
} }
// this.state.map.remove(getOverlays); // this.state.map.remove(getOverlays);
this.refs.getLayerDataFun.getBasicLayerMenu(`${provinceAdcode}`).then(() => { this.refs.getLayerDataFun.getBasicLayerMenu(`${provinceAdcode}`).then(() => {
@ -527,6 +516,15 @@ class BaseMap extends React.Component{
} }
enableDrawPoint = () => { enableDrawPoint = () => {
if (this.state.cityAdcode == '' && this.state.districtAdcode == '') {
message.error('请至少选择行政区域至城市再进行点位创建');
return false;
}
let selectLayerList = this.refs.getLayerDataFun.state.selectLayerList;
if (selectLayerList.length == 0) {
message.error('请至少选中一个图层');
return false;
}
this.state.map.addImage( this.state.map.addImage(
'dingwei', 'dingwei',
'https://gw.alipayobjects.com/mdn/rms_3bf4aa/afts/img/A*JL46TZ_iYB0AAAAAAAAAAAAAARQnAQ', 'https://gw.alipayobjects.com/mdn/rms_3bf4aa/afts/img/A*JL46TZ_iYB0AAAAAAAAAAAAAARQnAQ',
@ -555,25 +553,30 @@ class BaseMap extends React.Component{
}); });
this.setState({ this.setState({
pointDrawer: drawer, pointDrawer: drawer,
selectLayerList: selectLayerList,
}); });
} }
//弹出框事件 //弹出框事件
showModal = (newPointLocation) => { showModal = (newPointLocation) => {
queryUserLayers().then((e) => { // queryUserLayers().then((e) => {
let data = e.data; // let data = e.data;
let selectLayerList = []; // let selectLayerList = [];
for (var i in data) { // for (var i in data) {
selectLayerList.push({ // selectLayerList.push({
'value': data[i].id, // 'value': data[i].id,
'label': data[i].name, // 'label': data[i].name,
}) // })
} // }
this.setState({ // this.setState({
isModalOpen: true, // isModalOpen: true,
selectLayerList: selectLayerList, // selectLayerList: selectLayerList,
newPointLocation: newPointLocation, // newPointLocation: newPointLocation,
}); // });
// });
this.setState({
isModalOpen: true,
newPointLocation: newPointLocation,
}); });
}; };
handleOk = (values) => { handleOk = (values) => {
@ -587,10 +590,12 @@ class BaseMap extends React.Component{
"location": this.state.newPointLocation, "location": this.state.newPointLocation,
"provinceAdcode": this.state.provinceAdcode, "provinceAdcode": this.state.provinceAdcode,
}).then((e) => { }).then((e) => {
this.state.pointDrawer.disable();
if (e.success) { if (e.success) {
message.success(e.message || '成功!'); message.success(e.message || '成功!');
this.setState({ this.setState({
isModalOpen: false isModalOpen: false,
pointAdd: {},
}); });
} else { } else {
message.error(e.message || '失败!'); message.error(e.message || '失败!');
@ -600,7 +605,8 @@ class BaseMap extends React.Component{
handleCancel = () => { handleCancel = () => {
this.state.pointDrawer.disable(); this.state.pointDrawer.disable();
this.setState({ this.setState({
isModalOpen: false isModalOpen: false,
pointAdd: {},
}); });
}; };
onLayerNameChange = (e) => { onLayerNameChange = (e) => {
@ -644,6 +650,10 @@ class BaseMap extends React.Component{
}) })
} }
onFinishFailed = (errorInfo) => {
console.log('Failed:', errorInfo);
}
render(){ render(){
return ( return (
<div className={styles.basseMap} id='base_map'> <div className={styles.basseMap} id='base_map'>
@ -688,8 +698,9 @@ class BaseMap extends React.Component{
<LayerData ref="getLayerDataFun" getLayerPoints = {this.getLayerPoints} getLayerShapes = {this.getLayerShapes}/> <LayerData ref="getLayerDataFun" getLayerPoints = {this.getLayerPoints} getLayerShapes = {this.getLayerShapes}/>
<div className={styles.btnRightWrap}> <div className={styles.btnRightWrap}>
<Button type="primary" className={styles.btnRight} onClick={this.enableDrawPoint}>点位创建</Button> <Button type="primary" className={styles.btnRight} onClick={this.enableDrawPoint}>点位创建</Button>
{/* <Button type='primary' danger className={styles.btnRight} onClick={() => this.state.pointDrawer?.disable()}>停止创建</Button> */}
<Modal title="点位创建" open={this.state.isModalOpen} onOk={this.handleOk} onCancel={this.handleCancel} className='add-point-modal'> <Modal title="点位创建" open={this.state.isModalOpen} onOk={this.handleOk} onCancel={this.handleCancel} className='add-point-modal'>
<Form name='base' id='add-point-form' onFinish={this.handleOk}> <Form name='base' id='add-point-form' onFinish={this.handleOk} onFinishFailed={this.onFinishFailed}>
<Form.Item label="选择自定义图层" <Form.Item label="选择自定义图层"
rules={[ rules={[
{ {
@ -700,10 +711,24 @@ class BaseMap extends React.Component{
<Select name='name' value={this.state.pointAdd.layerId} options={this.state.selectLayerList} onChange={this.onLayerNameChange} allowClear> <Select name='name' value={this.state.pointAdd.layerId} options={this.state.selectLayerList} onChange={this.onLayerNameChange} allowClear>
</Select> </Select>
</Form.Item> </Form.Item>
<Form.Item label="点位名称"> <Form.Item label="点位名称"
rules={[
{
required: true,
message: '请输入点位名称!',
}
]}
>
<Input name='note' value={this.state.pointAdd.name} onChange={this.onPointAddNameChange}/> <Input name='note' value={this.state.pointAdd.name} onChange={this.onPointAddNameChange}/>
</Form.Item> </Form.Item>
<Form.Item label="点位地址"> <Form.Item label="点位地址"
rules={[
{
required: true,
message: '请输入点位地址!',
}
]}
>
<Input name='note' value={this.state.pointAdd.address} onChange={this.onPointAddAddressChange}/> <Input name='note' value={this.state.pointAdd.address} onChange={this.onPointAddAddressChange}/>
</Form.Item> </Form.Item>
<Form.Item label="图层备注"> <Form.Item label="图层备注">