From 79f38bf628df38ace38b885425bdfaded00aabda Mon Sep 17 00:00:00 2001
From: SmileXin <13622060635@163.com>
Date: Fri, 21 Jun 2024 03:31:01 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E5=88=A0=E9=99=A4=E7=82=B9=E4=BD=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/index.js | 8 ++
src/pages/BaseMap/index.js | 286 +++++++++++++++++++++++++++++++++----
src/pages/BaseMap/pop.js | 101 +------------
3 files changed, 264 insertions(+), 131 deletions(-)
diff --git a/src/api/index.js b/src/api/index.js
index 3102244c..da666830 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -56,6 +56,14 @@ export function getLayerPointsApi( params ) {
});
}
+// 获取地图单位的数据详细
+export function getDetailByIdApi( params ) {
+ return request('/api/basicMap/getDetailById', {
+ method: 'GET',
+ params: params
+ });
+}
+
// 获取大盘统计数据
export function getDashboardData() {
return request('/api/dashboard/getDashboardData', {
diff --git a/src/pages/BaseMap/index.js b/src/pages/BaseMap/index.js
index 81fba472..f7576697 100644
--- a/src/pages/BaseMap/index.js
+++ b/src/pages/BaseMap/index.js
@@ -1,17 +1,21 @@
import React from 'react';
-import { Select, Input, Card, Col, Row, Button, message, Modal, Spin, Form } from 'antd';
+import { Select, Input, Card, Col, Row, Button, message, Modal, Spin, Form, Alert, Space } from 'antd';
+import {ExclamationCircleFilled } from '@ant-design/icons';
import LayerData from './LayerData';
// import LayerList from './LayerList';
import { AimOutlined } from '@ant-design/icons';
import Header from '../../components/Header/index.js';
-import { createPoint, queryUserLayers, getLayerPointsApi, getAllProvinceApi, getCityByProvinceApi, getDistrictByCityApi, getLayerShapesApi, getPointByAddressApi } from '../../api';
+import { createPoint, getDetailByIdApi, queryUserLayers, getLayerPointsApi, getAllProvinceApi, getCityByProvinceApi, getDistrictByCityApi, getLayerShapesApi, getPointByAddressApi, deletePoint } from '../../api';
import Pop from './pop'
import { GaodeMap ,Scene, Heatmap, PolygonLayer, Marker, MarkerLayer, Popup, MouseLocation, CanvasLayer } from '@antv/l7';
+const { confirm } = Modal;
// import { DrawPoint, DrawEvent } from '@antv/l7-draw';
import icon04 from '../../assets/icon/icon04.svg'
import styles from './index.less';
+import pop from './pop';
+import { remove } from 'react-cookies';
const { Option } = Select;
@@ -56,13 +60,20 @@ class BaseMap extends React.Component{
loading: false,
markerLayerList: [], // 点位图层
isModalOpen: false,
+ isEditModalOpen: false,
+ editPointId: '',
selectLayerList: [],
pointAdd: {},
+ pointEdit:{},
pointDrawer: null,
newPointLocation: '',
mouseLocation:{},
disabled: false,
popParameter: {},
+ isAlertOpen: false,
+ deletePointId: '',
+ pop: null,
+ removeMarker: null,
}
}
startLoading = () => {
@@ -128,8 +139,6 @@ class BaseMap extends React.Component{
item.value = 15;
return item;
});
- console.log('layerPointsData', layerPointsData);
-
if (nodeType === 1) {
// 在地图上添加点位
this.setMarkers(layerPointsData, layerId);
@@ -165,7 +174,7 @@ class BaseMap extends React.Component{
let map = this.state.map;
let LabelsData = data || [];
let markerLayer = new MarkerLayer({name: layerId});
- let el, popup, marker, icon;
+ let el, popup, marker, icon, popHtml;
// 设置地图上的点位(图标)
for (let i = 0; i < LabelsData.length; i++) {
el = document.createElement('label');
@@ -186,39 +195,122 @@ class BaseMap extends React.Component{
// 设置弹框(点击事件)
marker.on('click', (e) => {
// 获取弹框内的html
- this.setState({popParameter: LabelsData[i]});
- let popHtml = document.getElementById('custom-pop');
- document.getElementById('marker' + i).style.width = '32px';
- document.getElementById('marker' + i).style.height = '32px';
- popup = new Popup({
- offsets: [0, 30],
- closeOnClick: true,
- autoClose: true,
- })
- .setLnglat(e.lngLat)
- .setHTML(popHtml.innerHTML)
- // console.log('edit-button', document.getElementsByClassName('edit-button')[0]);
- popup.on('hide', () => {
- document.getElementById('marker' + i).style.width = '26px';
- document.getElementById('marker' + i).style.height = '26px';
+ this.setState({popParameter: LabelsData[i]},() => {
+ popHtml = document.getElementById('custom-pop');
+ popup = new Popup({
+ offsets: [0, 30],
+ closeOnClick: true,
+ autoClose: true,
+ })
+ .setLnglat(e.lngLat)
+ .setHTML(popHtml.innerHTML)
+ document.getElementById('marker' + i).style.width = '32px';
+ document.getElementById('marker' + i).style.height = '32px';
+ // 给弹框添加事件
+ popup.on('hide', () => {
+ document.getElementById('marker' + i).style.width = '26px';
+ document.getElementById('marker' + i).style.height = '26px';
+ });
+ this.setState({pop: popup})
+ popup.on('open', () => {
+ // 编辑按钮
+ document.getElementsByClassName('edit-button')[0].onclick = () => {
+ // getDetailByIdApi({id:LabelsData[i].pointId,layerId:LabelsData[i].belongLayerId}).then((e) => {
+ // if (e.success) {
+ // console.log('获取点位详情成功',e);
+ // }else{
+ // alert('获取点位详情失败');
+ // console.log('获取点位详情失败',e);
+ // }
+ // })
+ if (this.state.cityAdcode == '' && this.state.districtAdcode == '') {
+ message.error('请至少选择行政区域至城市再进行点位创建');
+ return false;
+ }
+ let selectLayerList = this.refs.getLayerDataFun.state.selectLayerList;
+ selectLayerList = selectLayerList.filter((item) => {
+ if (item.isCustomize == 1) {
+ return item;
+ }
+ })
+ if (selectLayerList.length == 0) {
+ message.error('请至少选中一个个人图层');
+ return false;
+ };
+ this.setState({
+ selectLayerList:selectLayerList,
+ pointEdit:
+ {
+ pointId: LabelsData[i].pointId.toString(),
+ layerId: LabelsData[i].belongLayerId,
+ name: LabelsData[i].pointName,
+ // note: LabelsData[i].note,
+ address: LabelsData[i].address,
+ },
+ isEditModalOpen: true
+ })
+ };
+ // 删除按钮
+ document.getElementsByClassName('delete-button')[0].onclick = () => {
+ confirm({
+ icon: