riku
2025-10-17 ec763e1cb7dca873caf4afbc0dfde047b51753d3
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,28 +340,41 @@
    removeNoPollutedSource: param.removeNoPollutedSource
  };
  return dataAnalysisApi.fetchClueByRiskArea(_param).then((res) => {
    templateParam.clueByAreaList = res.data.map((item, index) => {
    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: `${item.township}`,
        clueByFactorList: item.clueByFactorList.map((cbf) => {
          _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 {
            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);
              }
                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) => e)
                      .map((e) => factorName(e))
                  .join('、'),
                _time:
                  moment(clue.pollutedData.startTime).format(
@@ -368,7 +382,11 @@
                  ) +
                  ' - ' +
                  moment(clue.pollutedData.endTime).format('HH:mm:ss'),
                _riskRegion: _riskRegion.join(','),
                    _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,
@@ -445,19 +463,11 @@
        _missionDes: `${item.missionList.map((m) => m.missionCode).join('、')}共${item.missionList.length}次`
      };
      const _highRiskGridList = [];
      item.highRiskGridList.forEach((g, i) => {
        // const g = item.highRiskGridList[0];
        // const i = 0;
        const p = generateGridFusionImg(g.factorType, item.gridFusionList).then(
          (url) => {
            const { url1, url2 } = url;
            _highRiskGridList.push({
              index: i + 1,
              factor: g.factorType,
              // 标准色网格图
              gridImgUrl1: url1,
              // 对比色网格图
              gridImgUrl2: url2,
      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]}`,
@@ -467,6 +477,23 @@
                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(
          (url) => {
            const { url1, url2 } = url;
            _highRiskGridList.push({
              index: i + 1,
              factor: factorName(g.factorType),
              // 标准色网格图
              gridImgUrl1: url1,
              // 对比色网格图
              gridImgUrl2: url2,
              infoDes: infoDes
            });
          }
        );