riku
2025-10-17 ec763e1cb7dca873caf4afbc0dfde047b51753d3
2025.10.17
已修改4个文件
已删除1个文件
161 ■■■■■ 文件已修改
public/underway_season_report - 副本.docx 补丁 | 查看 | 原始文档 | blame | 历史
public/underway_season_report.docx 补丁 | 查看 | 原始文档 | blame | 历史
src/components.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/expand/expand.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/historymode/component/MissionReport.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/underway_season_report - ¸±±¾.docx
Binary files differ
public/underway_season_report.docx
Binary files differ
src/components.d.ts
@@ -38,7 +38,6 @@
    ElForm: typeof import('element-plus/es')['ElForm']
    ElFormItem: typeof import('element-plus/es')['ElFormItem']
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElImage: typeof import('element-plus/es')['ElImage']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
    ElLink: typeof import('element-plus/es')['ElLink']
src/utils/expand/expand.js
@@ -30,3 +30,18 @@
  const s = size > this.length ? 0 : this.length - size;
  return this.slice(s, l);
};
Array.prototype.groupBy = function (func) {
  const groups = {};
  this.forEach((item) => {
    const key = func(item);
    if (!groups[key]) {
      groups[key] = [];
    }
    groups[key].push(item);
  });
  return Object.keys(groups).map((key) => ({
    key,
    values: groups[key]
  }));
};
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,72 @@
    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) => {
              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')
                    : '无'
                factor: factorNames,
                clues: clues2.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 {
                    _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 +463,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: 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('、')}`
                : '网格内可能存在隐藏风险源'
          };
        });
        // })
        // item.highRiskGridList.forEach((g, i) => {
        // const g = item.highRiskGridList[0];
        // const i = 0;
        const p = generateGridFusionImg(g.factorType, item.gridFusionList).then(
@@ -453,20 +488,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
            });
          }
        );