| | |
| | | import * as echarts from 'echarts'; |
| | | import { jobNumBar } from '@/api/home/task'; |
| | | import dayjs from 'dayjs'; |
| | | import useEchartsResize from '@/hooks/useEchartsResize' |
| | | import { useStore } from 'vuex'; |
| | | |
| | | const store = useStore(); |
| | | |
| | | // 日期 |
| | | const currenDate = dayjs().format('YYYY-MM-DD'); |
| | | const newTime = ref([currenDate, currenDate]); |
| | | |
| | | const chartRef = ref(null); |
| | | let chart = null; |
| | | let { chart } = useEchartsResize(chartRef) |
| | | |
| | | |
| | | const option = { |
| | | tooltip: { |
| | |
| | | }; |
| | | |
| | | // 获取任务时间统计数据 |
| | | const getJobNumBar = (value,date_enum) => { |
| | | jobNumBar({date_enum}).then(res => { |
| | | const getJobNumBar = (value) => { |
| | | jobNumBar(value).then(res => { |
| | | if (res.data.code !== 0) return; |
| | | option.xAxis.data = res.data.data.map(item => item.name); |
| | | option.series[0].data = res.data.data.map(item => item.value); |
| | | chart.setOption(option); |
| | | chart.value.setOption(option); |
| | | }); |
| | | }; |
| | | |
| | | onBeforeUnmount(() => { |
| | | if (chart) { |
| | | chart.dispose(); |
| | | chart = null; |
| | | // 添加监听 |
| | | watch(() => store.state.task.taskSearchParams, (newVal) => { |
| | | if (newVal) { |
| | | getJobNumBar(newVal); |
| | | (newVal); |
| | | } |
| | | window.removeEventListener('resize', handleResize); |
| | | }); |
| | | }, { deep: true }); |
| | | |
| | | onMounted(() => { |
| | | chart = echarts.init(chartRef.value); |
| | | getJobNumBar(newTime.value, 'CURRENT_YEAR'); |
| | | |
| | | if (chart && !chart.isDisposed()) { |
| | | chart.resize(); |
| | | } |
| | | getJobNumBar({date_enum: 'TODAY'}); |
| | | }); |
| | | |
| | | onUnmounted(() => { |
| | | window.removeEventListener('resize', chart?.resize); |
| | | chart?.dispose(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | height: 100%; |
| | | margin-left: 14px; |
| | | .title { |
| | | margin-top: 10px; |
| | | font-size: 14px; |
| | | margin-top: 10px; |
| | | width: 502px; |
| | | height: 28.6px; |
| | | background: url('@/assets/images/task/task-num-total.png') no-repeat center / 100% 100%; |
| | |
| | | height: 200px; |
| | | } |
| | | } |
| | | </style> |
| | | </style> |