From e70f39fc4e1d4265b8b2294d301b5454eb35a589 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 28 Nov 2025 16:08:24 +0800
Subject: [PATCH] Merge branch 'feature/v8.0/8.0.3' into test

---
 src/views/tickets/orderLog.vue                |   15 ++-----
 src/views/wel/components/proportionStatic.vue |   42 ++++++++++++++++-----
 src/utils/date.js                             |   27 +++++++++++++
 src/api/home/index.js                         |    8 ++++
 src/views/wel/components/backlog.vue          |    2 +
 5 files changed, 74 insertions(+), 20 deletions(-)

diff --git a/src/api/home/index.js b/src/api/home/index.js
index 3b7e45f..0715709 100644
--- a/src/api/home/index.js
+++ b/src/api/home/index.js
@@ -6,6 +6,14 @@
     method: 'get',
   });
 };
+// 大屏首页=>事件状态数量
+export const getEventStatusNum = data => {
+  return request({
+    url: '/drone-device-core/jobEvent/eventStatusNum',
+    method: 'post',
+    data,
+  })
+}
 // 事件概况分类数
 export const getJobEventByStatus = data => {
   return request({
diff --git a/src/utils/date.js b/src/utils/date.js
index 35d9eb7..0e22793 100644
--- a/src/utils/date.js
+++ b/src/utils/date.js
@@ -1,3 +1,11 @@
+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;
 
@@ -56,3 +64,22 @@
 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
+}
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index d88bbbb..595c86c 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -91,19 +91,14 @@
 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'
@@ -116,11 +111,10 @@
 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)
 
@@ -150,7 +144,6 @@
   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') {
@@ -334,7 +327,6 @@
       ...cloneDeep(orderListParams.searchParams)
     }
     const res = await orderLogExport(apiParams)
-    console.log(res, '导出')
     downloadXls(res.data, `智飞工单${dayjs().format('YYYY-MM-DD')}.xlsx`)
     ElMessage.success('导出成功')
 
@@ -447,6 +439,9 @@
   filteredTabs()
   getTableList()
   updateGlobalCounts()
+  if (route.query.id) {
+    route.query.status === '1' ? handleCheckDetail({ id:  route.query.id}, '工单审核') : handleCheckDetail({ id:  route.query.id}, '工单详情')
+  }
 })
 </script>
 
diff --git a/src/views/wel/components/backlog.vue b/src/views/wel/components/backlog.vue
index c106d5c..d2b2162 100644
--- a/src/views/wel/components/backlog.vue
+++ b/src/views/wel/components/backlog.vue
@@ -155,11 +155,13 @@
 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 {
diff --git a/src/views/wel/components/proportionStatic.vue b/src/views/wel/components/proportionStatic.vue
index 7601a16..81f6a4c 100644
--- a/src/views/wel/components/proportionStatic.vue
+++ b/src/views/wel/components/proportionStatic.vue
@@ -46,22 +46,32 @@
 
 <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([
@@ -72,13 +82,14 @@
 ]);
 //  工单统计
 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);
         }
       });
     });
@@ -94,7 +105,18 @@
 
 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();
 };
@@ -110,7 +132,7 @@
 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: '总计',
@@ -119,7 +141,7 @@
     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;

--
Gitblit v1.9.3