| | |
| | | <!-- <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" |
| | |
| | | /> |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | </el-form> |
| | | </CardDialog> |
| | | </template> |
| | |
| | | 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({ |
| | |
| | | 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', |
| | |
| | | }; |
| | | |
| | | const handleGenerateImg = () => { |
| | | generateClueByRiskArea(params.value).then(() => {}); |
| | | generateClueByRiskArea(params.value).then(() => { |
| | | generateDocx(); |
| | | }); |
| | | }; |
| | | |
| | | function generateMissionSummary(param) { |
| | |
| | | item._time = formatDateTimeRange(item.startTime, item.endTime); |
| | | item._airQulity = `AQI:${item.aqi}(${item.pollutionDegree})`; |
| | | item._abnormalFactors = item.abnormalFactors |
| | | .map((factor) => factor) |
| | | .map((factor) => factorName[factor]) |
| | | .join('、'); |
| | | item._kilometres = Math.round(item.kilometres / 1000); |
| | | |
| | |
| | | |
| | | radioOptions(TYPE0).forEach((f) => { |
| | | const _factor = item.dataStatistics.find((e) => e.factor == f.name); |
| | | item[`avgValue_${f.name}`] = _factor?.avgValue ?? '-'; |
| | | item[`maxValue_${f.name}`] = _factor?.maxValue ?? '-'; |
| | | item[`minValue_${f.name}`] = _factor?.minValue ?? '-'; |
| | | item[`avgValue_${f.name}`] = _factor?.avgValue.toFixed(0) ?? '-'; |
| | | item[`maxValue_${f.name}`] = _factor?.maxValue.toFixed(0) ?? '-'; |
| | | item[`minValue_${f.name}`] = _factor?.minValue.toFixed(0) ?? '-'; |
| | | }); |
| | | |
| | | return item; |
| | |
| | | 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.address}`, |
| | | clueByFactorList: item.clueByFactorList.map((cbf) => { |
| | | return { |
| | | factor: cbf.factor, |
| | | clues: cbf.clues.map((clue) => { |
| | | 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: clue.pollutedArea.address |
| | | ? clue.pollutedArea.address |
| | | : '', |
| | | _exceptionType: clue.pollutedData.exception, |
| | | _images: generateChartImg(clue.pollutedData), |
| | | _conclusion: clue.pollutedSource.conclusion, |
| | | _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') |
| | | : '无' |
| | | }; |
| | | }) |
| | | }; |
| | | }) |
| | | }; |
| | | }) |
| | | }; |
| | | }); |
| | | }; |
| | | }); |
| | | }); |
| | | } |
| | | |
| | |
| | | _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( |
| | |
| | | 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 |
| | | }); |
| | | } |
| | | ); |