From 9ca85dc3bd39864daf9528d746f4bc6a0963a4c0 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 17 四月 2025 14:05:44 +0800
Subject: [PATCH] 完成走航融合模块

---
 src/views/underwaymix/UnderwayMixMode.vue |  143 +++++++++++++++++------------------------------
 1 files changed, 52 insertions(+), 91 deletions(-)

diff --git a/src/views/underwaymix/UnderwayMixMode.vue b/src/views/underwaymix/UnderwayMixMode.vue
index 8c82db3..0fae038 100644
--- a/src/views/underwaymix/UnderwayMixMode.vue
+++ b/src/views/underwaymix/UnderwayMixMode.vue
@@ -57,7 +57,7 @@
                   v-model="selectedPollutionDegree"
                   multiple
                   clearable
-                  placeholder="閫夋嫨鑳屾櫙"
+                  placeholder="閫夋嫨姹℃煋鑳屾櫙"
                   size="small"
                   style="width: 300px"
                 >
@@ -154,8 +154,17 @@
                 class="el-button-custom"
                 size="small"
                 @click="handleMixClick"
+                :disabled="selectedfusionData.length < 2"
               >
                 {{ '铻嶅悎鍒嗘瀽' }}
+              </el-button>
+              <el-button
+                type="primary"
+                class="el-button-custom"
+                size="small"
+                @click="underwayMixDialogVisible = true"
+              >
+                {{ '铻嶅悎绠$悊' }}
               </el-button>
               <!-- <CheckButton
                 active-text="铻嶅悎鍒嗘瀽"
@@ -179,12 +188,21 @@
         <!-- </el-row> -->
       </el-col>
     </el-row>
-    <GridStyleTool
-      :gridCtrls="gridCtrls"
-      @show-underway="handleUnderwayClick"
-      @on-delete="handleFusionDelete"
-    ></GridStyleTool>
   </el-row>
+  <GridStyleTool
+    class="style-tool"
+    :gridCtrls="gridCtrls"
+    @show-underway="handleUnderwayClick"
+    @on-delete="handleFusionDelete"
+  ></GridStyleTool>
+  <!-- <el-row class="m-t-2">
+    <FactorLegend class="m-t-2" @change="handleLegendTypeChange"></FactorLegend>
+  </el-row> -->
+  <UnderwayMixManage
+    :groupId="groupId"
+    v-model="underwayMixDialogVisible"
+    @onUpdated="fetchFusionData"
+  ></UnderwayMixManage>
   <!-- </div> -->
 </template>
 
@@ -193,12 +211,14 @@
 import moment from 'moment';
 import gridApi from '@/api/gridApi';
 import { SatelliteGrid } from '@/model/SatelliteGrid';
-import GridStyleTool from './component/GridStyleTool.vue';
 import { useGridStore } from '@/stores/grid-info';
 import { TYPE0 } from '@/constant/device-type';
 import { defaultOptions } from '@/constant/radio-options';
 import { useMessageBox } from '@/composables/messageBox';
 import { useCloned } from '@vueuse/core';
+
+import GridStyleTool from './component/GridStyleTool.vue';
+import UnderwayMixManage from './component/UnderwayMixManage.vue';
 
 const gridStore = useGridStore();
 
@@ -209,7 +229,7 @@
 const props = defineProps({
   groupId: {
     type: Number,
-    default: 3
+    default: 2
   }
 });
 const show = ref(true);
@@ -217,14 +237,18 @@
 // 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙�
 const factorType = ref(defaultOptions(TYPE0));
 satelliteGrid.setShowFactorType(toRaw(factorType.value));
+// const factor = computed(()=>{
+
+// })
 
 function handleFactorTypeChange(e, item) {
   factorType.value = item;
-  console.log(toRaw(factorType.value));
+  // console.log(toRaw(factorType.value));
   satelliteGrid.setShowFactorType(toRaw(factorType.value));
 }
 
 const mission = ref(undefined);
+const underwayMixDialogVisible = ref(false);
 
 const gridCellList = ref(undefined);
 const fusionData = ref(undefined);
@@ -392,38 +416,8 @@
     .finally(() => (fusionLoading.value = false));
 }
 
-// 妫�鏌ヨ蛋鑸暟鎹槸鍚﹀拰100绫崇綉鏍煎凡铻嶅悎
-// function checkUnderwayFusionResult() {
-//   const time = moment(mission.value.startTime).format('YYYY-MM-DD HH:mm:ss');
-//   gridApi.fetchGridData(props.groupId, time, 3).then((res) => {
-//     if (res.data.length > 0) {
-//       fusionData.value = res.data[0];
-//     } else {
-//       fusionData.value = undefined;
-//     }
-//   });
-// }
-
 function prepareGrid(gridInfo) {
-  satelliteGrid.gridPrepare(gridInfo, function (polygon) {
-    // const originOption = polygon.getOptions();
-    // //榧犳爣绉诲叆浜嬩欢
-    // polygon.on('mouseover', () => {
-    //   polygon.setOptions({
-    //     //淇敼澶氳竟褰㈠睘鎬х殑鏂规硶
-    //     strokeWeight: 2,
-    //     strokeColor: 'red'
-    //   });
-    // });
-    // //榧犳爣绉诲嚭浜嬩欢
-    // polygon.on('mouseout', () => {
-    //   // polygon.setOptions({
-    //   //   strokeWeight: originOption.strokeWeight,
-    //   //   strokeColor: originOption.strokeColor
-    //   // });
-    //   polygon.setOptions(originOption);
-    // });
-  });
+  satelliteGrid.gridPrepare(gridInfo);
 }
 
 watch(
@@ -461,7 +455,7 @@
           tag: d.id,
           data: gdd,
           extData: {
-            name: `璧拌埅缃戞牸 - ${d.mixDataId}`,
+            name: `璧拌埅缃戞牸 - ${d.missionCode}`,
             type: 0
           }
         });
@@ -484,59 +478,17 @@
 
 let mixTag;
 function handleMixClick() {
-  // mixActive.value = !mixActive.value;
   const tags = selectedfusionData.value.map((v) => v.id);
   satelliteGrid.changeVisibility({
     showGridViews: false,
     showDataTxt: false,
     showRankTxt: false
   });
-  // if (mixActive.value) {
   gridApi.mixUnderwayGridData(props.groupId, tags).then((res) => {
     mixTag = satelliteGrid.mixGrid2({ tags, gridDataDetailList: res.data });
     satelliteGrid.setDefaultGridClickEvent([mixTag]);
     gridCtrls.value = [satelliteGrid];
   });
-
-  // satelliteGrid.setGridEvent([mixTag], 'click', (gridCell, gridDataDetail) => {
-  //   gridStore.selectedGridCellAndDataDetail = {
-  //     gridCell,
-  //     gridDataDetail
-  //   };
-  // });
-  // gridCtrls.value = [satelliteGrid];
-  // } else {
-  // satelliteGrid.changeVisibility({
-  //   tags,
-  //   showGridViews: true
-  // });
-  // }
-}
-
-let heatTag;
-const heatMapSearchLength = 4;
-function handleHeatMapClick() {
-  heatActive.value = !heatActive.value;
-  satelliteGrid.changeVisibility({
-    showGridViews: false,
-    showDataTxt: false,
-    showRankTxt: false
-  });
-  if (heatActive.value) {
-    const data = satelliteGrid.gridDataDetailMap.get(mixTag);
-    gridApi
-      .buildUnderwayHeatmap(props.groupId, data, heatMapSearchLength)
-      .then((res) => {
-        heatTag = satelliteGrid.drawHeatGrid2(mixTag, res.data);
-        satelliteGrid.setDefaultGridClickEvent([heatTag]);
-        gridCtrls.value = [satelliteGrid];
-      });
-  } else {
-    satelliteGrid.changeVisibility({
-      tags: [mixTag],
-      showGridViews: true
-    });
-  }
 }
 
 function handleHeatMapSearchClick() {
@@ -564,7 +516,7 @@
   } else {
     const d = fusionDataList.value.find((v) => v.id == dataId);
     const mission = missionStore.missionList.find((v) => {
-      return v.missionCode == d.mixDataId;
+      return v.missionCode == d.missionCode;
     });
     mapLine.hideLine(mission.missionCode);
     done();
@@ -573,14 +525,17 @@
 function handleFusionDelete(index, tag) {
   const f = selectedfusionData.value.find((v) => v.id == tag);
   if (f) {
-    // const i = selectedfusionData.value.indexOf(f);
-    // selectedfusionData.value.splice(i, 1);
+    const i = selectedfusionData.value.indexOf(f);
+    selectedfusionData.value.splice(i, 1);
+    lastSelectedfusionData.value = useCloned(
+      selectedfusionData.value
+    ).cloned.value;
     tableRef.value.toggleRowSelection(f, false);
   }
 }
 
 function handleSelectionChange(val) {
-  console.log(val);
+  // console.log(val);
 
   const deleted = lastSelectedfusionData.value.filter((v) => {
     return !val.find((t) => t.id == v.id);
@@ -616,7 +571,7 @@
         tag: d.id,
         data: gdd,
         extData: {
-          name: `璧拌埅缃戞牸 - ${d.mixDataId}`,
+          name: `璧拌埅缃戞牸 - ${d.missionCode}`,
           type: 0
         }
       });
@@ -640,7 +595,7 @@
           tag: d.id,
           data: gdd,
           extData: {
-            name: `璧拌埅缃戞牸 - ${d.mixDataId}`,
+            name: `璧拌埅缃戞牸 - ${d.missionCode}`,
             type: 0
           }
         });
@@ -660,7 +615,7 @@
     }
   });
 
-  lastSelectedfusionData.value = useCloned(val).cloned.value
+  lastSelectedfusionData.value = useCloned(val).cloned.value;
   selectedfusionData.value = val;
 }
 
@@ -717,7 +672,7 @@
   if (isUnmounted.value) return Promise.resolve();
   const d = fusionDataList.value.find((v) => v.id == dataId);
   const mission = missionStore.missionList.find((v) => {
-    return v.missionCode == d.mixDataId;
+    return v.missionCode == d.missionCode;
   });
 
   if (factorDataMap.has(mission.missionCode)) {
@@ -745,6 +700,12 @@
 }
 </script>
 <style scoped>
+.style-tool {
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+
 :deep(.el-table) {
   --el-table-bg-color: transparent;
   --el-table-row-hover-bg-color: var(--select_color);

--
Gitblit v1.9.3