From 1f96f089eb3546c682313d29513be04ac72e2de5 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 31 十月 2023 16:21:08 +0800
Subject: [PATCH] Merge branch 'master' of ssh://114.215.109.124:29418/grid-management-vue

---
 src/stores/grid.js |   37 +++++++++++++++++++++++++++++++------
 1 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/src/stores/grid.js b/src/stores/grid.js
index c31dc65..23dac47 100644
--- a/src/stores/grid.js
+++ b/src/stores/grid.js
@@ -2,21 +2,27 @@
 import { defineStore } from 'pinia';
 import mapGrid from '@/components/map/mapGrid';
 import baseMapUtil from '@/components/map/baseMapUtil';
+import gridInfoApi from '@/api/grid/gridInfoApi';
+import { parseToGridInfo } from '@/model/gridRecord';
 
 export const useGridStore = defineStore('grid', () => {
   // 褰撳墠鍔犺浇鐨勭綉鏍兼暟鎹泦鍚�
   const gridList = ref([]);
+  // 褰撳墠鏄惁鏈夐�変腑鏂规
+  const hasScheme = ref(false);
   // 褰撳墠閫変腑鎿嶄綔鐨勭綉鏍间俊鎭�
-  const selectedGrid = ref({});
+  const selectedGrid = ref();
   // 褰撳墠閫変腑鎿嶄綔鐨勭綉鏍兼槸鍚﹀浜庡彲缂栬緫鐘舵��
   const isEdit = ref(false);
+  // 璁板綍褰撳墠缃戞牸璺緞淇℃伅
+  var selectedPath = undefined;
 
   /**
    * 妫�鏌ュ綋鍓嶆槸鍚︽湁閫変腑鐨勭綉鏍�
    * @returns {Boolean}
    */
   function _checkGridExist() {
-    return selectedGrid.value != undefined;
+    return selectedGrid.value && selectedGrid.value.id != undefined;
   }
 
   /**鏁版嵁澧炲垹**************************************************************/
@@ -27,7 +33,16 @@
   function setGrid(index) {
     if (index >= 0 && index < gridList.value.length) {
       selectedGrid.value = gridList.value[index];
+      selectedPath = selectedGrid.value.overlays.getPath().join(';');
     }
+  }
+
+  /**
+   * 鍙栨秷閫変腑
+   */
+  function clearSelect() {
+    selectedGrid.value = undefined;
+    selectedPath = undefined;
   }
 
   /**
@@ -36,6 +51,7 @@
    */
   function setGridList(list) {
     gridList.value = list;
+    hasScheme.value = true;
   }
 
   /**
@@ -88,7 +104,14 @@
    */
   function saveSelectedGrid() {
     if (!_checkGridExist()) return;
-    selectedGrid.value.gSide = selectedGrid.value.overlays.getPath();
+    const newPath = selectedGrid.value.overlays.getPath().join(';');
+    if (selectedPath != newPath) {
+      const _data = parseToGridInfo(selectedGrid.value);
+      return gridInfoApi.updateGrid(_data).then(() => {
+        selectedGrid.value.sides =
+          selectedGrid.value.overlays.getPath();
+      });
+    }
   }
 
   /**
@@ -98,7 +121,7 @@
     if (!_checkGridExist()) return;
     baseMapUtil.removeView(selectedGrid.value.overlays);
     selectedGrid.value.overlays = mapGrid.drawPolygon(
-      selectedGrid.value.gSide
+      selectedGrid.value.sides
     );
   }
 
@@ -112,7 +135,7 @@
       showGrid(i);
       grids.push(l.overlays);
     });
-    baseMapUtil.setFitView(grids, 1);
+    baseMapUtil.setFitView(...grids);
   }
 
   /**
@@ -123,15 +146,17 @@
     if (item.overlays) {
       baseMapUtil.setFitView(item.overlays);
     } else {
-      item.overlays = mapGrid.drawPolygon(item.gSide);
+      item.overlays = mapGrid.drawPolygon(item.sides);
     }
   }
 
   return {
+    hasScheme,
     gridList,
     selectedGrid,
     isEdit,
     setGrid,
+    clearSelect,
     setGridList,
     addGrid,
     deleteGrid,

--
Gitblit v1.9.3