Merge remote-tracking branch 'origin/feature/v8.0/8.0.4' into feature/v8.0/8.0.4
| | |
| | | method: 'get', |
| | | }); |
| | | }; |
| | | // 大屏首页=>事件状态数量 |
| | | export const getEventStatusNum = data => { |
| | | return request({ |
| | | url: '/drone-device-core/jobEvent/eventStatusNum', |
| | | method: 'post', |
| | | data, |
| | | }) |
| | | } |
| | | // 事件概况分类数 |
| | | export const getJobEventByStatus = data => { |
| | | return request({ |
| | |
| | | import dayjs from 'dayjs' |
| | | import 'dayjs/locale/zh-cn' |
| | | import weekday from 'dayjs/plugin/weekday' |
| | | |
| | | // 配置 dayjs |
| | | dayjs.locale('zh-cn') |
| | | dayjs.extend(weekday) |
| | | |
| | | export const calcDate = (date1, date2) => { |
| | | let date3 = date2 - date1; |
| | | |
| | |
| | | export function dateNow() { |
| | | return dateFormat(new Date(), 'yyyyMMddhhmmss'); |
| | | } |
| | | |
| | | export const getDateRange = (unit, formatStr = 'YYYY-MM-DD HH:mm:ss') => { |
| | | const todayDate = dayjs() |
| | | let returnArr = [dayjs(), todayDate] |
| | | if (unit === 'today') { |
| | | returnArr = [dayjs(), todayDate] |
| | | } |
| | | if (unit === 'week') { |
| | | returnArr = [dayjs().weekday(0), todayDate] |
| | | } |
| | | if (unit === 'month') { |
| | | returnArr = [dayjs().startOf('month'), todayDate] |
| | | } |
| | | if (unit === 'year') { |
| | | returnArr = [dayjs().startOf('year'), todayDate] |
| | | } |
| | | returnArr = [returnArr[0].startOf('day').format(formatStr), returnArr[1].endOf('day').format(formatStr)] |
| | | return returnArr |
| | | } |
| | |
| | | import AddEditDetails from './component/AddEditDetails.vue' |
| | | import NProgress from 'nprogress' |
| | | import { useStore } from 'vuex' |
| | | import { useRoute } from 'vue-router' |
| | | import { downloadXls } from '@/utils/util' |
| | | import { |
| | | getList, |
| | | saveUpdateOrderLog, |
| | | orderLogDetails, |
| | | orderLogRecall, |
| | | orderLogReject, |
| | | orderLogPass, |
| | | orderLogExport, |
| | | jobStatusNum, |
| | | userPublish, |
| | | deleteOrderLog, |
| | | getWaylineMaxTerrainHeight |
| | | } from '@/api/tickets/orderLog' |
| | | import { newGetWorkspacesPage } from '@/api/resource/wayline' |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz' |
| | |
| | | import { aiImagesPage } from '@/api/dataCenter/dataCenter'; |
| | | |
| | | const store = useStore() |
| | | const route = useRoute() |
| | | |
| | | const userInfo = computed(() => store.state.user.userInfo) |
| | | const permission = computed(() => store.state.user.permission); |
| | | |
| | | console.log(userInfo,permission, '8888') |
| | | |
| | | const isShowAddEditDetails = ref(false) |
| | | |
| | |
| | | activeTab.value = tabsList.value[0].name |
| | | // tab值传 |
| | | orderListParams.status = tabsList.value[0].value |
| | | console.log('8878797', tabsList.value) |
| | | // tabsList.value |
| | | // .map(tab => { |
| | | // if (tab.name === 'all') { |
| | |
| | | ...cloneDeep(orderListParams.searchParams) |
| | | } |
| | | const res = await orderLogExport(apiParams) |
| | | console.log(res, '导出') |
| | | downloadXls(res.data, `智飞工单${dayjs().format('YYYY-MM-DD')}.xlsx`) |
| | | ElMessage.success('导出成功') |
| | | |
| | |
| | | filteredTabs() |
| | | getTableList() |
| | | updateGlobalCounts() |
| | | if (route.query.id) { |
| | | route.query.status === '1' ? handleCheckDetail({ id: route.query.id}, '工单审核') : handleCheckDetail({ id: route.query.id}, '工单详情') |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | |
| | | try { |
| | | const response = await getstatusCount(params) |
| | | const statusCount = response.data.data || {} |
| | | const totalCount = Object.values(statusCount).reduce((sum, count) => sum + (count || 0), 0) |
| | | const totalCount = Object.entries(statusCount).reduce((sum, [key, count]) => { |
| | | if (key === '6') return sum |
| | | return sum + (count || 0) |
| | | }, 0) |
| | | tabs.value.forEach(tab => { |
| | | if (tab.name === 'all') { |
| | | tab.count = totalCount |
| | |
| | | const jumporder = val => { |
| | | if (checked.value === '智飞工单') { |
| | | const id = val.id |
| | | const status = val.status |
| | | getaddOrderRecord(id) |
| | | router.replace({ |
| | | path: `/tickets/orderLog`, |
| | | query: { |
| | | id, |
| | | status, |
| | | }, |
| | | }) |
| | | } else { |
| | |
| | | |
| | | <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[0].num; |
| | | 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), |
| | | })), |
| | | }; |
| | | const containerWidth = chart.value.clientWidth; |