| | |
| | | :loading="loading" |
| | | > |
| | | <template #step1="{ onSearch }"> |
| | | <ProdQueryOptCompare :loading="loading" @submit="onSearch"></ProdQueryOptCompare> |
| | | <ProdQueryOptCompare |
| | | :loading="loading" |
| | | @submit="onSearch" |
| | | ></ProdQueryOptCompare> |
| | | </template> |
| | | <template #step2="{ contentHeight }"> |
| | | <el-scrollbar :height="contentHeight"> |
| | |
| | | import * as echarts from 'echarts'; |
| | | import dayjs from 'dayjs'; |
| | | import BaseProdProcess from '@/views/fysp/data-product/components/BaseProdProcess.vue'; |
| | | import ProdQueryOptCompare from '@/views/fysp/data-product/components/ProdQueryOptCompare.vue'; |
| | | import dataprodmiddleApi from '@/api/fysp/dataprodmiddleApi.js'; |
| | | import { conversionFromTable } from '@/utils/excel'; |
| | | import { useProdStepChange } from '@/views/fysp/data-product/prod-step-change.js'; |
| | | import { barChartOption, downloadChartImage } from '@/utils/echart-util.js'; |
| | | import ProdQueryOptCompare from '@/views/fysp/data-product/components/ProdQueryOptCompare.vue'; |
| | | import Proxy from '@/views/fysp/data-product/middle-data-product/ProdProblemCountSummaryProxy.js'; |
| | | |
| | | const { active, changeActive } = useProdStepChange(); |
| | | const loading = ref(false); |
| | |
| | | let chart; |
| | | |
| | | const tableData = computed(() => { |
| | | return tableData1.value.map((item) => { |
| | | const last = tableData2.value.find( |
| | | (item2) => item2.townCode === item.townCode |
| | | ); |
| | | item.ratio = Math.round(item.ratio * 10) / 10 || 0; |
| | | return { |
| | | ...item, |
| | | lastSceneCount: last?.sceneCount || 0, |
| | | lastProblemCount: last?.problemCount || 0, |
| | | lastRatio: Math.round((last?.ratio || 0) * 10) / 10 || 0 |
| | | }; |
| | | }); |
| | | // return tableData1.value.map((item) => { |
| | | // const last = tableData2.value.find( |
| | | // (item2) => item2.townCode === item.townCode |
| | | // ); |
| | | // item.ratio = Math.round(item.ratio * 10) / 10 || 0; |
| | | // return { |
| | | // ...item, |
| | | // lastSceneCount: last?.sceneCount || 0, |
| | | // lastProblemCount: last?.problemCount || 0, |
| | | // lastRatio: Math.round((last?.ratio || 0) * 10) / 10 || 0 |
| | | // }; |
| | | // }); |
| | | return Proxy.combineData(tableData1.value, tableData2.value); |
| | | }); |
| | | |
| | | function onStep1(opts) { |
| | |
| | | if (chart == undefined) { |
| | | chart = echarts.init(chartRef.value); |
| | | } |
| | | const year = dayjs(opt1.startTime).year(); |
| | | const month1 = dayjs(opt1.startTime).month() + 1; |
| | | const month2 = dayjs(opt2.startTime).month() + 1; |
| | | const time = `${year}年${month1}月、${month2}月`; |
| | | const option = barChartOption(); |
| | | option.title.text = `${time}${opt1.districtName}各街道(镇)${opt1.sceneTypeName}扬尘污染问题数均值对比`; |
| | | // const year = dayjs(opt1.startTime).year(); |
| | | // const month1 = dayjs(opt1.startTime).month() + 1; |
| | | // const month2 = dayjs(opt2.startTime).month() + 1; |
| | | // const time = `${year}年${month1}月、${month2}月`; |
| | | // const option = barChartOption(); |
| | | // option.title.text = `${time}${opt1.districtName}各街道(镇)${opt1.sceneTypeName}扬尘污染问题数均值对比`; |
| | | |
| | | option.xAxis.name = '街道(镇)'; |
| | | option.xAxis.data = tableData.value.map((item) => item.townName); |
| | | option.yAxis.name = '问题数均值'; |
| | | // option.xAxis.name = '街道(镇)'; |
| | | // option.xAxis.data = tableData.value.map((item) => item.townName); |
| | | // option.yAxis.name = '问题数均值'; |
| | | |
| | | option.series = [ |
| | | { |
| | | name: `${month1}月`, |
| | | type: 'bar', // 图表类型改为柱状图 |
| | | data: tableData.value.map((item) => item.ratio), |
| | | label: { |
| | | show: true, |
| | | position: 'top', // 标签显示在柱子顶部 |
| | | formatter: '{c}' // 标签格式:数量 |
| | | } |
| | | }, |
| | | { |
| | | name: `${month2}月`, |
| | | type: 'bar', // 图表类型改为柱状图 |
| | | data: tableData.value.map((item) => item.lastRatio), |
| | | label: { |
| | | show: true, |
| | | position: 'top', // 标签显示在柱子顶部 |
| | | formatter: '{c}' // 标签格式:数量 |
| | | } |
| | | } |
| | | ]; |
| | | // option.series = [ |
| | | // { |
| | | // name: `${month1}月`, |
| | | // type: 'bar', // 图表类型改为柱状图 |
| | | // data: tableData.value.map((item) => item.ratio), |
| | | // label: { |
| | | // show: true, |
| | | // position: 'top', // 标签显示在柱子顶部 |
| | | // formatter: '{c}' // 标签格式:数量 |
| | | // } |
| | | // }, |
| | | // { |
| | | // name: `${month2}月`, |
| | | // type: 'bar', // 图表类型改为柱状图 |
| | | // data: tableData.value.map((item) => item.lastRatio), |
| | | // label: { |
| | | // show: true, |
| | | // position: 'top', // 标签显示在柱子顶部 |
| | | // formatter: '{c}' // 标签格式:数量 |
| | | // } |
| | | // } |
| | | // ]; |
| | | const option = Proxy.genChartOption(opt1, opt2, tableData.value); |
| | | chart.setOption(option); |
| | | } |
| | | |