From 7d02024c5351e620dcc2d49f36331e4a37228ea4 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期四, 20 三月 2025 22:35:51 +0800
Subject: [PATCH] 走航融合(待完成)

---
 src/model/SatelliteGrid.js                        |   30 +++++++++------
 src/views/underwaymix/UnderwayMixMode.vue         |    3 +
 src/utils/map/grid.js                             |   22 +++++++----
 src/views/underwaymix/component/GridStyleTool.vue |   17 ++++++++
 4 files changed, 50 insertions(+), 22 deletions(-)

diff --git a/src/model/SatelliteGrid.js b/src/model/SatelliteGrid.js
index dad244c..0067b78 100644
--- a/src/model/SatelliteGrid.js
+++ b/src/model/SatelliteGrid.js
@@ -196,11 +196,7 @@
     // 鏍规嵁缁樺埗棰滆壊鏂瑰紡缁樺埗缃戞牸
     let resGridViews;
     if (customColor) {
-      resGridViews = gridMapUtil.drawGridColorCustom(
-        res,
-        gridDataDetail,
-        style.opacity
-      );
+      resGridViews = gridMapUtil.drawGridColorCustom(res, gridDataDetail);
     } else {
       resGridViews = gridMapUtil.drawGridColor(
         res,
@@ -383,8 +379,7 @@
           if (useCustomColor) {
             gridMapUtil.drawGridColorCustom(
               v.lastGridViews,
-              lastGridDataDetail,
-              { opacity, zIndex }
+              lastGridDataDetail
             );
           } else {
             gridMapUtil.drawGridColor(
@@ -435,18 +430,19 @@
   /**
    * 灏嗗缁勭綉鏍艰繘琛岃瀺鍚�
    * 閲嶅彔鐨勭綉鏍艰繘琛岀洃娴嬫暟鎹潎鍊艰绠楀苟閲嶆柊璁$畻瀵瑰簲棰滆壊锛屽舰鎴愭柊鐨勪竴缁勮瀺鍚堢綉鏍�
-   * @param {...String} tags 闇�瑕佽瀺鍚堢殑缃戞牸鏍囩锛屽綋涓虹┖鏃讹紝榛樿铻嶅悎鎵�鏈夌綉鏍�
+   * @param {Array} tags 闇�瑕佽瀺鍚堢殑缃戞牸鏍囩锛屽綋涓虹┖鏃讹紝榛樿铻嶅悎鎵�鏈夌綉鏍�
    */
-  mixGrid(tags) {
+  mixGrid(tags, isMixGridHighlight) {
     tags.sort((a, b) => {
       return a < b ? -1 : 1;
     });
     const mixTag = tags.join('-');
     if (this.mapViewsMap.has(mixTag)) {
       this.changeVisibility({
-        tag: mixTag,
+        tags: [mixTag],
         showGridViews: true
       });
+      this.changeGridColor({ tag: mixTag, isMixGridHighlight });
     } else {
       // const mixMapViews = this._createNewMapViews();
       // 鏍规嵁鏍囩tag锛岃幏鍙栧搴斿缁勭綉鏍兼暟鎹�
@@ -501,11 +497,13 @@
         data: resGridDataDetail,
         grid: {
           style: {
-            isMixGridHighlight: true
+            isMixGridHighlight:
+              isMixGridHighlight == undefined ? true : isMixGridHighlight
           }
         },
         extData: {
-          name: `璧拌埅铻嶅悎 - ${mixTag}`
+          name: `璧拌埅铻嶅悎 - ${mixTag}`,
+          type: 1
         }
       });
     }
@@ -513,6 +511,14 @@
     return mixTag;
   }
 
+  /**
+   * 缁樺埗鐑姏鍥剧綉鏍�
+   * @param {string} tag
+   */
+  drawHeatGrid(tag) {
+    
+  }
+
   _getMapViews(...tags) {
     let _mapViewsList = [],
       _gridDataDetailList = [];
diff --git a/src/utils/map/grid.js b/src/utils/map/grid.js
index 18241d1..235b390 100644
--- a/src/utils/map/grid.js
+++ b/src/utils/map/grid.js
@@ -264,7 +264,8 @@
         strokeWeight: 1, //绾挎潯瀹藉害锛岄粯璁や负 2
         strokeColor: 'white', //绾挎潯棰滆壊
         fillOpacity: 0,
-        extData: p.extData
+        extData: p.extData,
+        zIndex: 11
       });
 
       if (typeof event === 'function') {
@@ -349,7 +350,12 @@
    * @param {number} opacity 閫忔槑搴�
    */
   drawGridColor(gridViews, gridDataDetail, factorName, style) {
-    let { strokeWeight, strokeColor, opacity, zIndex } = style;
+    let {
+      strokeWeight = 1,
+      strokeColor = 'white',
+      opacity = 1,
+      zIndex = 11
+    } = style;
     const res = [];
     // 閬嶅巻鍗槦閬ユ祴鏁版嵁鏁扮粍
     gridDataDetail.forEach((d, i) => {
@@ -369,9 +375,11 @@
 
         const _extData = grid.getExtData();
         grid.setOptions({
-          ...style,
+          strokeWeight,
+          strokeColor,
+          zIndex,
           fillColor: _color, //澶氳竟褰㈠~鍏呴鑹�
-          fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1,
+          fillOpacity: opacity,
           extData: {
             ..._extData,
             gridData: d
@@ -393,8 +401,7 @@
     return res;
   },
 
-  drawGridColorCustom(gridViews, gridDataDetail, style) {
-    const { strokeWeight, strokeColor, opacity, zIndex } = style;
+  drawGridColorCustom(gridViews, gridDataDetail) {
 
     var max, min;
     gridDataDetail.forEach((t) => {
@@ -424,9 +431,8 @@
           ratio
         );
         grid.setOptions({
-          ...style,
           fillColor: _color, //澶氳竟褰㈠~鍏呴鑹�
-          fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1
+          // fillOpacity: style.opacity ? style.opacity : color[3] == 0 ? 0 : 1
         });
 
         res.push(grid);
diff --git a/src/views/underwaymix/UnderwayMixMode.vue b/src/views/underwaymix/UnderwayMixMode.vue
index 3d321e7..38a403a 100644
--- a/src/views/underwaymix/UnderwayMixMode.vue
+++ b/src/views/underwaymix/UnderwayMixMode.vue
@@ -259,7 +259,8 @@
           tag: d.id,
           data: gdd,
           extData: {
-            name: `璧拌埅缃戞牸 - ${d.mixDataId}`
+            name: `璧拌埅缃戞牸 - ${d.mixDataId}`,
+            type: 0
           }
         });
         gridCtrls.value = [satelliteGrid];
diff --git a/src/views/underwaymix/component/GridStyleTool.vue b/src/views/underwaymix/component/GridStyleTool.vue
index 76d636a..e21302d 100644
--- a/src/views/underwaymix/component/GridStyleTool.vue
+++ b/src/views/underwaymix/component/GridStyleTool.vue
@@ -16,7 +16,7 @@
             <div v-for="(g, i) in gridCtrlList" :key="i">
               {{ g.name }}
               <div v-for="(value, t) in g.views" :key="t">
-                <!-- {{ value[0] }} -->
+                <span v-if="value.extData.type == 0">{{ value.tag + '.' }}</span>
                 {{ value.extData.name }}
                 <!-- {{ key }} -->
                 <!-- <el-text>{{ g.name }}</el-text> -->
@@ -53,10 +53,18 @@
                   >
                   </CheckButton>
                   <CheckButton
+                    v-if="value.extData.type == 0"
                     active-text="鏄剧ず璧拌埅杞ㄨ抗"
                     inactive-text="闅愯棌璧拌埅杞ㄨ抗"
                     :default-value="false"
                     @change="(e) => handleUnderwayClick(e, i, value)"
+                  >
+                  </CheckButton>
+                  <CheckButton
+                    v-if="value.extData.type == 1"
+                    active-text="楂樹寒铻嶅悎缃戞牸"
+                    :default-value="true"
+                    @change="(e) => handleHighlightGridClick(e, i, value)"
                   >
                   </CheckButton>
                 </el-row>
@@ -188,11 +196,18 @@
     dataId: value.tag
   });
 }
+
+function handleHighlightGridClick(e, index, value) {
+  toRaw(props.gridCtrls[index]).mixGrid(value.tag.split('-'), e);
+}
 </script>
 <style scoped>
 .content-wrap {
   min-width: 300px;
   min-height: 600px;
+  max-height: 80vh;
+  height: 80vh;
+  padding: 4px 16px;
 }
 
 :deep(.el-input-number) {

--
Gitblit v1.9.3