Browse Source

清空图层

CzRger 1 year ago
parent
commit
6afb02f95e

+ 8 - 1
src/components/easyMap/func/location.ts

@@ -12,7 +12,7 @@ import LocationImg from '../images/location.png'
 import {ElMessage} from "element-plus";
 
 const layerFlag = ['layerName', 'positionLayer']
-let locationTooltipElement
+export let locationTooltipElement
 export default function Location ({map, position = null, wkt = null, zoom = null, color = '#039ff3'}) {
     try {
         const feat: any = new format.WKT().readFeature(position ? `POINT(${position[0]} ${position[1]})` : wkt)
@@ -75,3 +75,10 @@ export default function Location ({map, position = null, wkt = null, zoom = null
         ElMessage.warning('坐标异常!')
     }
 }
+
+export const clearLocationDom = () => {
+    if (locationTooltipElement) {
+        locationTooltipElement.parentNode.removeChild(locationTooltipElement);
+        locationTooltipElement = null
+    }
+}

+ 28 - 0
src/components/easyMap/func/measure.ts

@@ -12,10 +12,15 @@ import { unByKey } from 'ol/Observable'
 import './dom.scss'
 import {createBox} from "ol/interaction/Draw";
 import {Circle, LineString, Polygon} from "ol/geom";
+import {locationTooltipElement} from "@/components/easyMap/func/location";
+import {v4} from "uuid";
 
 const layerFlag = ['layerName', 'measureLayer']
 let measureTooltipElement;
 let helpTooltipElement;
+let helpTooltipMap = new Map()
+let measureTooltipMap = new Map()
+let dom = []
 const typeMapper = new Map([
     ['line', 'LineString'],
     ['rectangle', 'LineString'],
@@ -58,6 +63,7 @@ export default function Measure (map, typeSelect) {
             map.addLayer(_vector);
         }
         let sketch;
+        const uuid = v4()
         let helpTooltip;
         let measureTooltip;
         let continueMsg = '双击结束测量';
@@ -77,6 +83,7 @@ export default function Measure (map, typeSelect) {
                 positioning: 'bottom-center'
             });
             map.addOverlay(measureTooltip);
+            measureTooltipMap.set(uuid, measureTooltip)
         }
         const createHelpTooltip = () => {
             const id = 'helpTooltipElementId'
@@ -93,6 +100,7 @@ export default function Measure (map, typeSelect) {
                 positioning: 'center-left'
             });
             map.addOverlay(helpTooltip);
+            helpTooltipMap.set(uuid, helpTooltip)
         }
         const formatLength = (line) => {
             // 获取投影坐标系
@@ -210,6 +218,7 @@ export default function Measure (map, typeSelect) {
                 const del: any = document.createElement("div");
                 del.className = "lineDel";
                 measureTooltipElement.append(del);
+                dom.push(del.parentElement.parentElement)
                 del.onclick = () => {
                     _source.removeFeature(evt.feature)
                     const b = del.parentElement.parentElement
@@ -264,3 +273,22 @@ export default function Measure (map, typeSelect) {
         // });
     }
 }
+export const clearMeasureDom = (map) => {
+    if (measureTooltipElement) {
+        measureTooltipElement.parentNode.removeChild(measureTooltipElement);
+        measureTooltipElement = null
+    }
+    if (helpTooltipElement) {
+        helpTooltipElement.parentNode.removeChild(helpTooltipElement);
+        helpTooltipElement = null
+    }
+    measureTooltipMap.forEach((v, k) => {
+        map.removeOverlay(v)
+    })
+    helpTooltipMap.forEach((v, k) => {
+        map.removeOverlay(v)
+    })
+    dom.forEach(v => {
+        v?.parentElement?.removeChild(v)
+    })
+}

+ 23 - 14
src/views/gis/business/enterprise/index.vue

@@ -68,14 +68,13 @@
               <img src="@/assets/images/gis-business/enterprise_list-icon1.png" alt=""/>
               <div class="table-card-item-right">
                 <div class="table-card-item-right-top">
-                  <CusEllipsis :value="`${(enterprise.table.pageNum - 1) * enterprise.table.pageSize + index + 1}.${item.name}`"/>
+                  <CusEllipsis :value="`${(enterprise.table.pageNum - 1) * enterprise.table.pageSize + index + 1}.${item.qymc}`"/>
                 </div>
                 <div class="table-card-item-right-bottom">
                   <img src="@/assets/images/gis-business/enterprise_list-icon2.png" alt=""/>
-                  {{item.type}}
+                  {{item.qykx}}
                 </div>
               </div>
-
             </div>
           </template>
         </div>
@@ -112,6 +111,7 @@ import BusinessMainCom from '../common/business-main.vue'
 import FocusContentCom from '../common/focus-content.vue'
 import PieSimpleChartCom from '../common/pie-simple-chart.vue'
 import StatisticTitleCom from '../common/statistic-title.vue'
+import {enterpriseQuery} from "@/api/modules/enterprise";
 
 export default defineComponent({
   name: '',
@@ -172,25 +172,34 @@ export default defineComponent({
     }
     const handleSearch = () => {
       state.enterprise.table.data = []
-      state.enterprise.table.total = 100
-      for (let i = 0; i < 10; i++) {
-        state.enterprise.table.data.push({
-          name: '永恒印记市场营销策划(海口)有限公司——',
-          type: '零关税自用进口生产设备'
-        })
+      const params = {
+        pageNumber: state.enterprise.table.pageNum,
+        pageSize: state.enterprise.table.pageSize,
+      }
+      if (state.enterprise.form.name) {
+        params.entName = state.enterprise.form.name
+      }
+      if (state.enterprise.form.type) {
+        params.entType = store.getters['dictionary/elementTypeMap'].get(state.enterprise.form.type)
       }
+      that.$api.enterpriseQuery(params).then((res: any) => {
+        if (res.resp_code === 0 && res.datas?.length > 0) {
+          state.enterprise.table.data = res.datas
+          state.enterprise.table.total = res.recordCount
+        }
+      })
     }
     const initStatistic = () => {
       state.loading.statistic = true
       setTimeout(() => {
         state.statistic = {
           qy: {
-            total: 125,
-            lgszyjkscsb: 95,
-            jgzzmgs: 21,
-            lgsjkyfl: 9
+            total: 0,
+            lgszyjkscsb: 0,
+            jgzzmgs: 0,
+            lgsjkyfl: 0
           },
-          warning: 1200
+          warning: 0
         }
         state.loading.statistic = false
       })

+ 12 - 3
src/views/gis/layout/index.vue

@@ -186,6 +186,8 @@ import * as geom from 'ol/geom';
 import VideoPlayKedaCom from "@/views/gis/business/common/VideoPlayKeda.vue";
 import V2Table from "./v2-table.vue";
 import {deviceQuery, enterpriseQuery} from "@/api/modules/enterprise";
+import {clearLocationDom} from '@/components/easyMap/func/location'
+import {clearMeasureDom} from '@/components/easyMap/func/measure'
 
 export default defineComponent({
   name: '',
@@ -333,7 +335,14 @@ export default defineComponent({
     }
     const toolsHandleClick = (item) => {
       if (item.value === 'clear') {
-
+        //  工具-标绘'layerName', 'toolDrawViewsLayer'
+        state.map.getLayers().getArray().filter(v => v.get('layerName') === 'toolDrawViewsLayer')?.[0]?.getSource()?.clear()
+        //  工具-测量'layerName', 'measureLayer'
+        state.map.getLayers().getArray().filter(v => v.get('layerName') === 'measureLayer')?.[0]?.getSource()?.clear()
+        clearMeasureDom(state.map)
+        //  定位'layerName', 'positionLayer'
+        state.map.getLayers().getArray().filter(v => v.get('layerName') === 'positionLayer')?.[0]?.getSource()?.clear()
+        clearLocationDom()
       } else {
         state.toolsCom = markRaw(item.com)
         state.toolsType = (state.toolsType === item.value ? '' : item.value)
@@ -514,7 +523,6 @@ export default defineComponent({
         setCircle()
         state.map.addLayer(state.qyParams.analysisLayer)
       }
-
       state.qyParams.analysisSource.clear()
       state.qyParams.analysisSource.addFeature(state.qyParams.analysisCircle)
       state.qyParams.qyInfo['5'].tableData = []
@@ -841,8 +849,9 @@ export default defineComponent({
           position: absolute;
           width: 100%;
           height: 4px;
-          background: red;
           bottom: -9px;
+          background-image: url("@/views/gis/map-info/qy-info-icon2.png");
+          background-repeat: no-repeat;
         }
         .qy-main-head-tips {
           font-size: 10px;

BIN
src/views/gis/map-info/qy-info-icon2.png