jiayubo преди 5 дни
родител
ревизия
8bde6316a4
променени са 3 файла, в които са добавени 51 реда и са изтрити 11 реда
  1. 9 1
      src/api/system/dept.js
  2. 1 0
      src/router/example.js
  3. 41 10
      src/views/system/dept/mapSetting.vue

+ 9 - 1
src/api/system/dept.js

@@ -49,4 +49,12 @@ export function delDept(deptId) {
     url: '/system/dept/' + deptId,
     method: 'delete'
   })
-}
+}
+
+// 锚点定位
+export const deptDeptId = (deptId) => {
+  return request({
+    url: `/system/dept/pointList/${deptId}`,
+    method: 'get',
+  })
+}

+ 1 - 0
src/router/example.js

@@ -0,0 +1 @@
+ 

+ 41 - 10
src/views/system/dept/mapSetting.vue

@@ -22,10 +22,30 @@ const { proxy } = getCurrentInstance()
 
 const mapDeptRow = localStorage.getItem('mapDeptRow')
 
-const storePolygonArr = ref(JSON.parse(JSON.parse(mapDeptRow).pointList).map((i) => {
-  return [i.lat, i.lng]
-}))
-
+const storePolygonArr = ref([]);
+
+try {
+  const parsed = JSON.parse(mapDeptRow);
+  if (parsed && parsed.pointList) {
+    const points = JSON.parse(parsed.pointList);
+    if (Array.isArray(points)) {
+      storePolygonArr.value = points.map(point => {
+        if (!Array.isArray(point) || point.length !== 2) {
+          console.error('Invalid coordinate format:', point);
+          return null;
+        }
+        const [lat, lng] = point;
+        if (isNaN(Number(lat)) || isNaN(Number(lng))) {
+          console.error('Invalid coordinate values:', point);
+          return null;
+        }
+        return [Number(lat), Number(lng)];
+      }).filter(Boolean);
+    }
+  }
+} catch (error) {
+  console.error('Error parsing coordinates:', error);
+}
 
 console.log(storePolygonArr.value, '>>>>>>>>>');
 
@@ -63,8 +83,20 @@ function initMap() {
 // 绘制多边形公共方法
 function drawPolygon(pathArr = polygonArr.value) {
   let path = pathArr.map(p => {
-    return new TMap.LatLng(p[0], p[1])
-  })
+    // Validate that both lat and lng are valid numbers
+    const lat = Number(p[0]);
+    const lng = Number(p[1]);
+    if (isNaN(lat) || isNaN(lng)) {
+      console.error('Invalid coordinates:', p);
+      return null;
+    }
+    return new TMap.LatLng(lat, lng);
+  }).filter(Boolean); // Remove any null entries
+
+  if (path.length === 0) {
+    console.error('No valid coordinates to draw polygon');
+    return;
+  }
 
   //初始化polygon
   polygon = new TMap.MultiPolygon({
@@ -204,12 +236,9 @@ function editDrawingPolygon() {
 function saveDrawingPolygon() {
   if (!polygonArr.value || !polygonArr.value.length) {
     console.log('>>>>>>xian hui zhi');
-    
-    // ElMessage.error('请先绘制或调整图形');
     return;
   }
 
-
   editor.stop()
 
   console.log(polygonArr.value, '.>>>>>pointList');
@@ -218,11 +247,13 @@ function saveDrawingPolygon() {
     ...JSON.parse(mapDeptRow),
     pointList: JSON.stringify(polygonArr.value)
   }
+  
   updateDept(payload).then((response) => {
     if (response.code === 200) {
+      // 更新 localStorage
+      localStorage.setItem('mapDeptRow', JSON.stringify(payload));
       proxy.$modal.msgSuccess('地址保存成功');
       open.value = false;
-      //getList();
     } else {
       proxy.$modal.msgError(response.msg || '地址保存失败');
     }