From dd2ff26f240bcb79de082f1de4eaf6d2c973b28e Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 20 十月 2025 08:38:01 +0800
Subject: [PATCH] 2025.10.18 修改嫉妒报告生成逻辑

---
 src/views/historymode/component/MissionReport.vue |  148 +++++++++++++++++++++++++++++-------------------
 1 files changed, 89 insertions(+), 59 deletions(-)

diff --git a/src/views/historymode/component/MissionReport.vue b/src/views/historymode/component/MissionReport.vue
index e45fe4b..15ca99d 100644
--- a/src/views/historymode/component/MissionReport.vue
+++ b/src/views/historymode/component/MissionReport.vue
@@ -33,14 +33,14 @@
         >
           涓嬭浇鎶ュ憡
         </el-button>
-        <el-button
+        <!-- <el-button
           type="primary"
           class="el-button-custom"
           @click="handleGenerateImg"
           :loading="docLoading"
         >
           鐢熸垚鍥剧墖
-        </el-button>
+        </el-button> -->
       </el-form-item>
       <!-- <el-form-item>
         <el-image :src="base64Url" fit="fill" :preview-src-list="[base64Url]" />
@@ -83,6 +83,7 @@
 import { Legend } from '@/model/Legend';
 import { getHexColor, getColorBetweenTwoColors } from '@/utils/color';
 import { getGridDataDetailFactorValue } from '@/model/GridDataDetail';
+import { factorName } from '@/constant/factor-name';
 
 // 鍊熺敤鍗槦閬ユ祴妯″潡涓殑100绫崇綉鏍�
 const props = defineProps({
@@ -339,55 +340,75 @@
     removeNoPollutedSource: param.removeNoPollutedSource
   };
   return dataAnalysisApi.fetchClueByRiskArea(_param).then((res) => {
-    templateParam.clueByAreaList = res.data.map((item, index) => {
-      return {
-        _index: index + 1,
-        // _area: `${item.sceneInfo.type}${item.sceneInfo.name}鍛ㄨ竟`,
-        _area: `${item.township}`,
-        clueByFactorList: item.clueByFactorList.map((cbf) => {
-          return {
-            factor: cbf.factor,
-            clues: cbf.clues.map((clue) => {
-              const _riskRegion = [];
-              if (clue.pollutedArea.address) {
-                _riskRegion.push(clue.pollutedArea.address);
-              }
-              if (clue.pollutedArea.streetNumber) {
-                _riskRegion.push(clue.pollutedArea.streetNumber);
-              }
-              if (clue.pollutedArea.roadinter) {
-                _riskRegion.push(clue.pollutedArea.roadinter);
-              }
+    templateParam.clueByAreaList = res.data
+      .groupBy((e) => e.township)
+      .map((item, index) => {
+        const { key: township, values: clues } = item;
+        return {
+          _index: index + 1,
+          // _area: `${item.sceneInfo.type}${item.sceneInfo.name}鍛ㄨ竟`,
+          _area: `${township}`,
+          clueByFactorList: clues
+            .groupBy((e) => e.factorTag)
+            .map((item2, index2) => {
+              const { key: factorTag, values: clues2 } = item2;
+              const factorNames = [...new Set(clues2.flatMap((e) => e.factors))]
+                .map((e) => factorName[e])
+                .join('銆�');
               return {
-                _factorNames: Object.keys(clue.pollutedData.statisticMap)
-                  .map((e) => e)
-                  .join('銆�'),
-                _time:
-                  moment(clue.pollutedData.startTime).format(
-                    'YYYY-MM-DD HH:mm:ss'
-                  ) +
-                  ' - ' +
-                  moment(clue.pollutedData.endTime).format('HH:mm:ss'),
-                _riskRegion: _riskRegion.join('锛�'),
-                _exceptionType: clue.pollutedData.exception,
-                _images: generateChartImg(clue.pollutedData),
-                _conclusion: clue.pollutedSource.conclusion,
-                _hasScene: clue.pollutedSource.sceneList.length > 0,
-                _scenes:
-                  clue.pollutedSource.sceneList.length > 0
-                    ? clue.pollutedSource.sceneList
-                        .map(
-                          (s, index) =>
-                            `${index + 1}. ${s.name}锛�${s.type}锛屼綅浜�${s.location}锛岃窛${s.closestStation.name}${parseInt(s.length)}绫筹紱`
-                        )
-                        .join('\n')
-                    : '鏃�'
+                index: index2 + 1,
+                factor: factorNames,
+                clues: clues2.map((item3, index3) => {
+                  // const _riskRegion = [];
+                  // if (clue.pollutedArea.address) {
+                  //   _riskRegion.push(clue.pollutedArea.address);
+                  // }
+                  // if (clue.pollutedArea.streetNumber) {
+                  //   _riskRegion.push(clue.pollutedArea.streetNumber);
+                  // }
+                  // if (clue.pollutedArea.roadinter) {
+                  //   _riskRegion.push(clue.pollutedArea.roadinter);
+                  // }
+                  const clue = item3.clue
+                  return {
+                    index: index3+1,
+                    _title:
+                      (clue.pollutedArea.street ?? '') +
+                      (clue.pollutedArea.streetNumber ?? '') +
+                      (clue.pollutedArea.direction ?? ''),
+                    _factorNames: Object.keys(clue.pollutedData.statisticMap)
+                      .map((e) => factorName[e])
+                      .join('銆�'),
+                    _time:
+                      moment(clue.pollutedData.startTime).format(
+                        'YYYY-MM-DD HH:mm:ss'
+                      ) +
+                      ' - ' +
+                      moment(clue.pollutedData.endTime).format('HH:mm:ss'),
+                    _riskRegion:
+                      (clue.pollutedArea.address ?? '') +
+                      (clue.pollutedArea.street ?? '') +
+                      (clue.pollutedArea.streetNumber ?? '') +
+                      (clue.pollutedArea.direction ?? ''),
+                    _exceptionType: clue.pollutedData.exception,
+                    _images: generateChartImg(clue.pollutedData),
+                    _conclusion: clue.pollutedSource.conclusion,
+                    _hasScene: clue.pollutedSource.sceneList.length > 0,
+                    _scenes:
+                      clue.pollutedSource.sceneList.length > 0
+                        ? clue.pollutedSource.sceneList
+                            .map(
+                              (s, index) =>
+                                `${index + 1}. ${s.name}锛�${s.type}锛屼綅浜�${s.location}锛岃窛${s.closestStation.name}${parseInt(s.length)}绫筹紱`
+                            )
+                            .join('\n')
+                        : '鏃�'
+                  };
+                })
               };
             })
-          };
-        })
-      };
-    });
+        };
+      });
   });
 }
 
@@ -445,7 +466,24 @@
         _missionDes: `${item.missionList.map((m) => m.missionCode).join('銆�')}鍏�${item.missionList.length}娆
       };
       const _highRiskGridList = [];
-      item.highRiskGridList.forEach((g, i) => {
+      Object.keys(item.highRiskGridMap).forEach((key, i) => {
+        const g = item.highRiskGridMap[key][0];
+
+        const infoDes = item.highRiskGridMap[key].map((e) => {
+          return {
+            factorValue: e.factorValue,
+            // 鍥涜嚦鑼冨洿锛岄『搴忎负鏈�灏忕粡搴︼紝鏈�澶х粡搴︼紝鏈�灏忕含搴︼紝鏈�澶х含搴�
+            _boundsDes: `缁忓害${e.bounds[0]}鑷�${e.bounds[1]}锛岀含搴�${e.bounds[2]}鑷�${e.bounds[3]}`,
+            // 娑夊強琛楅晣
+            town: e.town,
+            _scenesDes:
+              e.highRiskScenes.length > 0
+                ? `娑夊強鐨勬薄鏌撳満鏅寘鎷�${e.highRiskScenes.map((s) => s.name).join('銆�')}`
+                : '缃戞牸鍐呭彲鑳藉瓨鍦ㄩ殣钘忛闄╂簮'
+          };
+        });
+        // })
+        // item.highRiskGridList.forEach((g, i) => {
         // const g = item.highRiskGridList[0];
         // const i = 0;
         const p = generateGridFusionImg(g.factorType, item.gridFusionList).then(
@@ -453,20 +491,12 @@
             const { url1, url2 } = url;
             _highRiskGridList.push({
               index: i + 1,
-              factor: g.factorType,
+              factor: factorName[g.factorType],
               // 鏍囧噯鑹茬綉鏍煎浘
               gridImgUrl1: url1,
               // 瀵规瘮鑹茬綉鏍煎浘
               gridImgUrl2: url2,
-              factorValue: g.factorValue,
-              // 鍥涜嚦鑼冨洿锛岄『搴忎负鏈�灏忕粡搴︼紝鏈�澶х粡搴︼紝鏈�灏忕含搴︼紝鏈�澶х含搴�
-              _boundsDes: `缁忓害${g.bounds[0]}鑷�${g.bounds[1]}锛岀含搴�${g.bounds[2]}鑷�${g.bounds[3]}`,
-              // 娑夊強琛楅晣
-              town: g.town,
-              _scenesDes:
-                g.highRiskScenes.length > 0
-                  ? `娑夊強鐨勬薄鏌撳満鏅寘鎷�${g.highRiskScenes.map((s) => s.name).join('銆�')}`
-                  : '缃戞牸鍐呭彲鑳藉瓨鍦ㄩ殣钘忛闄╂簮'
+              infoDes: infoDes
             });
           }
         );

--
Gitblit v1.9.3