From 87e19b5a396ac8fed6a551828b87d263f6425c31 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 16 十月 2025 10:26:12 +0800
Subject: [PATCH] 2025.10.16 修改季度报告生成逻辑

---
 src/views/sourcetrace/component/PollutedWarnItem.vue      |   21 ++++++++--
 public/underway_season_report.docx                        |    0 
 src/views/sourcetrace/component/PollutedExceptionItem.vue |   19 +++++++--
 src/views/historymode/component/MissionReport.vue         |   36 ++++++++++++-----
 4 files changed, 56 insertions(+), 20 deletions(-)

diff --git a/public/underway_season_report.docx b/public/underway_season_report.docx
index 3322c62..3b709a4 100644
--- a/public/underway_season_report.docx
+++ b/public/underway_season_report.docx
Binary files differ
diff --git a/src/views/historymode/component/MissionReport.vue b/src/views/historymode/component/MissionReport.vue
index 4a0a9d2..e45fe4b 100644
--- a/src/views/historymode/component/MissionReport.vue
+++ b/src/views/historymode/component/MissionReport.vue
@@ -33,19 +33,19 @@
         >
           涓嬭浇鎶ュ憡
         </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]" />
       </el-form-item> -->
-      <el-form-item>
+      <!-- <el-form-item>
         <el-button
           type="primary"
           class="el-button-custom"
@@ -63,7 +63,7 @@
             />
           </el-form-item>
         </el-form-item>
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
   </CardDialog>
 </template>
@@ -145,16 +145,19 @@
       mainFactor: '',
       _abnormalFactors: '',
       sceneCount: 0,
-      _kilometres: '1000'
+      _kilometres: '1000',
+      _keyScene: '1涓浗鎺х偣锛堥潤瀹夌洃娴嬬珯锛夊拰2涓競鎺х偣锛堝拰鐢颁腑瀛︺�佸競鍖楅珮鏂帮級',
+      exceptionCount: 0,
+      _focusScene: ''
     }
   ],
   missionDetailList: [
     {
       _index: 1,
+      missionCode: '',
       _startTime: '2025骞�07鏈�29鏃�',
       _time: '09:00鑷�14:30',
       _kilometres: '1000',
-      _keyScene: '1涓浗鎺х偣锛堥潤瀹夌洃娴嬬珯锛夊拰2涓競鎺х偣锛堝拰鐢颁腑瀛︺�佸競鍖楅珮鏂帮級',
       _dataStatistics: [
         {
           factor: 'PM10',
@@ -235,7 +238,9 @@
 };
 
 const handleGenerateImg = () => {
-  generateClueByRiskArea(params.value).then(() => {});
+  generateClueByRiskArea(params.value).then(() => {
+    generateDocx();
+  });
 };
 
 function generateMissionSummary(param) {
@@ -338,11 +343,21 @@
       return {
         _index: index + 1,
         // _area: `${item.sceneInfo.type}${item.sceneInfo.name}鍛ㄨ竟`,
-        _area: `${item.address}`,
+        _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);
+              }
               return {
                 _factorNames: Object.keys(clue.pollutedData.statisticMap)
                   .map((e) => e)
@@ -353,12 +368,11 @@
                   ) +
                   ' - ' +
                   moment(clue.pollutedData.endTime).format('HH:mm:ss'),
-                _riskRegion: clue.pollutedArea.address
-                  ? clue.pollutedArea.address
-                  : '',
+                _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
diff --git a/src/views/sourcetrace/component/PollutedExceptionItem.vue b/src/views/sourcetrace/component/PollutedExceptionItem.vue
index 2482d6c..a2e9fdd 100644
--- a/src/views/sourcetrace/component/PollutedExceptionItem.vue
+++ b/src/views/sourcetrace/component/PollutedExceptionItem.vue
@@ -38,10 +38,7 @@
         <div>
           <el-text type="info">
             <el-icon><MapLocation /></el-icon>
-            {{
-              '椋庨櫓鍖哄煙锛�' +
-              (item.pollutedArea.address ? item.pollutedArea.address : '')
-            }}
+            {{ '椋庨櫓鍖哄煙锛�' + riskRegion }}
           </el-text>
         </div>
         <!-- <div>
@@ -145,6 +142,20 @@
   return indexArr;
 });
 
+const riskRegion = computed(() => {
+  const _riskRegion = [];
+  if (props.item.pollutedArea.address) {
+    _riskRegion.push(props.item.pollutedArea.address);
+  }
+  if (props.item.pollutedArea.streetNumber) {
+    _riskRegion.push(props.item.pollutedArea.streetNumber);
+  }
+  if (props.item.pollutedArea.roadinter) {
+    _riskRegion.push(props.item.pollutedArea.roadinter);
+  }
+  return _riskRegion.join('锛�');
+});
+
 const emits = defineEmits(['showMarksAndPolygon', 'update:modelValue']);
 
 function showMarksAndPolygon(item) {
diff --git a/src/views/sourcetrace/component/PollutedWarnItem.vue b/src/views/sourcetrace/component/PollutedWarnItem.vue
index 90a8456..b9c97de 100644
--- a/src/views/sourcetrace/component/PollutedWarnItem.vue
+++ b/src/views/sourcetrace/component/PollutedWarnItem.vue
@@ -30,10 +30,7 @@
         <div>
           <el-text type="info">
             <el-icon><MapLocation /></el-icon>
-            {{
-              '鎵�鍦ㄥ尯鍩燂細' +
-              (item.pollutedArea.address ? item.pollutedArea.address : '')
-            }}
+            {{ '鎵�鍦ㄥ尯鍩燂細' + riskRegion }}
           </el-text>
         </div>
         <!-- <div>
@@ -70,7 +67,7 @@
   </BaseCard>
 </template>
 <script setup>
-import { ref } from 'vue';
+import { ref, computed } from 'vue';
 
 const props = defineProps({
   modelValue: Boolean,
@@ -79,6 +76,20 @@
 
 const emits = defineEmits(['showMarksAndPolygon', 'update:modelValue']);
 
+const riskRegion = computed(() => {
+  const _riskRegion = [];
+  if (props.item.pollutedArea.address) {
+    _riskRegion.push(props.item.pollutedArea.address);
+  }
+  if (props.item.pollutedArea.streetNumber) {
+    _riskRegion.push(props.item.pollutedArea.streetNumber);
+  }
+  if (props.item.pollutedArea.roadinter) {
+    _riskRegion.push(props.item.pollutedArea.roadinter);
+  }
+  return _riskRegion.join('锛�');
+});
+
 function showMarksAndPolygon(item) {
   emits('showMarksAndPolygon', item);
 }

--
Gitblit v1.9.3