| | |
| | | |
| | | <script setup> |
| | | import useEchartsResize from '@/hooks/useEchartsResize'; |
| | | import { getJobEventByStatus } from '@/api/home/index'; |
| | | import { getJobEventByStatus, getEventStatusNum } from '@/api/home/index'; |
| | | import { getDateRange } from '@/utils/date' |
| | | import overviewImg2 from '@/assets/images/workbench/tc2.svg'; |
| | | import overviewImg3 from '@/assets/images/workbench/tc3.svg'; |
| | | import overviewImg4 from '@/assets/images/workbench/tc4.svg'; |
| | | import overviewImg5 from '@/assets/images/workbench/tc5.svg'; |
| | | import { useRouter } from 'vue-router' |
| | | import _ from 'lodash' |
| | | const router = useRouter() |
| | | let checked = ref('CURRENT_YEAR'); |
| | | let timeListStr = ['本周', '本月', '本年']; |
| | | let timeListEnum = ['CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR']; |
| | | |
| | | const dateRanges = { |
| | | today: getDateRange('today'), |
| | | week: getDateRange('week'), |
| | | month: getDateRange('month'), |
| | | year: getDateRange('year'), |
| | | } |
| | | |
| | | const params = ref({ |
| | | date_enum: 'CURRENT_YEAR', |
| | | // date_enum: 'CURRENT_YEAR', |
| | | device_sn: '', |
| | | end_date: undefined, |
| | | start_date: undefined, |
| | | source:1,//数据来源 |
| | | end_date: dateRanges['year'][1], // undefined, |
| | | start_date: dateRanges['year'][0], // undefined, |
| | | source:1,//数据来源 |
| | | }); |
| | | const dateSelect = ref('CURRENT_YEAR'); |
| | | const eventTypeList = ref([ |
| | |
| | | ]); |
| | | // 工单统计 |
| | | const getTypeData = () => { |
| | | getJobEventByStatus(params.value).then(res => { |
| | | getEventStatusNum(params.value).then(res => { |
| | | const resList = res?.data?.data || []; |
| | | let totalNum = resList.reduce((sum, item) => sum + (item.num || 0), 0); |
| | | resList.forEach(item => { |
| | | eventTypeList.value.forEach(item1 => { |
| | | if (item1.name === item.name) { |
| | | item1.value = item.num; |
| | | item1.rate = item.rate; |
| | | item1.rate = _.round((item.num/totalNum)*100, 1); |
| | | } |
| | | }); |
| | | }); |
| | |
| | | |
| | | let timeClick = (item, index) => { |
| | | checked.value = item; |
| | | params.value.date_enum = item; |
| | | // params.value.date_enum = item; |
| | | if(item === 'CURRENT_WEEK') { |
| | | params.value.start_date = dateRanges['week'][0] |
| | | params.value.end_date = dateRanges['week'][1] |
| | | } else if(item === 'CURRENT_MONTH') { |
| | | params.value.start_date = dateRanges['month'][0] |
| | | params.value.end_date = dateRanges['month'][1] |
| | | } else { |
| | | params.value.start_date = dateRanges['year'][0] |
| | | params.value.end_date = dateRanges['year'][1] |
| | | } |
| | | |
| | | dateSelect.value = item; |
| | | getTypeData(); |
| | | }; |
| | |
| | | const echartsRef = ref(null); |
| | | let { chart } = useEchartsResize(echartsRef); |
| | | const initChart = val => { |
| | | const totalNum = val.reduce((sum, item) => sum + item.num, 0); |
| | | let totalNum = val.reduce((sum, item) => sum + item.num, 0); |
| | | const data = { |
| | | total: { |
| | | title: '总计', |
| | |
| | | data: val.map(item => ({ |
| | | value: item.num, |
| | | name: item.name, |
| | | rate: item.rate, |
| | | rate: _.round((item.num/totalNum)*100, 1), |
| | | })), |
| | | }; |
| | | console.log(data, '898') |
| | | const containerWidth = chart.value.clientWidth; |
| | | const isSmallScreen = containerWidth < 768; // 移动端判断 |
| | | const echartsOption = { |