From d0767d8a71f25f875e6989be8434d8519fc71945 Mon Sep 17 00:00:00 2001 From: Zy <1448159279@qq.com> Date: Wed, 22 Apr 2026 17:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E4=BB=BB=E5=8A=A1=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- src/api/system/InspectionTask/type.ts | 27 ++-- .../system/inspection/Overview/index.vue | 125 ++++++++++++------ .../inspection/Plan/addInspectionPlan.vue | 7 +- .../system/inspection/Record/RecordMain.vue | 10 +- src/views/system/inspection/Record/index.vue | 37 +++--- src/views/system/inspection/Task/addTask.vue | 20 +-- src/views/system/inspection/Task/index.vue | 2 - 8 files changed, 142 insertions(+), 90 deletions(-) diff --git a/.env.development b/.env.development index fc339fe..32502d1 100644 --- a/.env.development +++ b/.env.development @@ -9,9 +9,9 @@ VITE_APP_ENV = 'development' # 开发环境 VITE_APP_BASE_API = '/dev-api' # # 开发环境 接口代理地址 -# VITE_APP_PROXY_API = 'http://192.168.1.222:8080' +VITE_APP_PROXY_API = 'http://192.168.1.222:8080' # 开发环境 接口代理地址 -VITE_APP_PROXY_API = 'http://192.168.1.215:8080' +# VITE_APP_PROXY_API = 'http://192.168.1.215:8080' # 图片基础地址 VITE_IMG_URL = 'http://192.168.1.222:8080' diff --git a/src/api/system/InspectionTask/type.ts b/src/api/system/InspectionTask/type.ts index 0291f82..e1d29c8 100644 --- a/src/api/system/InspectionTask/type.ts +++ b/src/api/system/InspectionTask/type.ts @@ -12,17 +12,17 @@ export interface TaskVO { /** * 关联巡检计划ID */ - planId: string | number; + planId: string; /** * 巡检人员ID */ - inspectorId: string | number; + inspectorId: string; /** * 巡检路线ID */ - routeId: string | number; + routeId: string; /** * 起止日期 @@ -34,6 +34,15 @@ export interface TaskVO { */ status: string; + /** 巡检人员信息 */ + inspectorInfo: { + 'userId': string; + 'userName': string; + 'nickName': string; + 'phonenumber': ''; + 'avatar': string; + }[]; + /** * 备注 */ @@ -59,17 +68,17 @@ export interface TaskForm extends BaseEntity { /** * 关联巡检计划ID */ - planId?: string | number; + planId?: string; /** * 巡检人员ID */ - inspectorId?: string | number; + inspectorId?: string; /** * 巡检路线ID */ - routeId?: string | number; + routeId?: string; /** * 起止日期 @@ -101,17 +110,17 @@ export interface TaskQuery extends PageQuery { /** * 关联巡检计划ID */ - planId?: string | number; + planId?: string; /** * 巡检人员ID */ - inspectorId?: string | number; + inspectorId?: string; /** * 巡检路线ID */ - routeId?: string | number; + routeId?: string; /** * 起止日期 diff --git a/src/views/system/inspection/Overview/index.vue b/src/views/system/inspection/Overview/index.vue index d2abd07..cefb3bf 100644 --- a/src/views/system/inspection/Overview/index.vue +++ b/src/views/system/inspection/Overview/index.vue @@ -27,12 +27,10 @@
- -
-
{{ item.name }}
-
{{ item.value }}
-
-
+
+
{{ item.name }}
+
{{ item.value }}
+
@@ -41,10 +39,10 @@ - - + +
- + + - - - + + + + + - + ([]); const loading = ref(true); const showSearch = ref(true); -const total = ref(0); +const total = ref(100); const queryFormRef = ref(); + +const pagerCount = document.body.clientWidth <= 1500 ? 1 : 7; +const layout = document.body.clientWidth <= 1500 ? 'total, sizes, prev, pager, next' : 'total, sizes, prev, pager, next,'; const disabledDate = (time: Date) => { return time.getTime() > Date.now(); }; @@ -117,17 +125,17 @@ const list = ref([ { name: '计划数量', key: 'totalPlans', - value: 20 + value: 0 }, { name: '任务数量', - key: 'totalPlans', - value: 200 + key: 'totalTasks', + value: 0 }, { name: '任务完成数量', - key: 'UncompletedTasks', - value: 40 + key: 'completedTasks', + value: 0 }, { name: ' 完成率', @@ -137,13 +145,13 @@ const list = ref([ { name: '未完成数量', key: 'outUncompletedTasks', - value: 40 + value: 0 } ]); // ! echarts ================================================================= - const activeEchartsindex = ref('totalTasks'); +// echarts tabs const ecartslist = ref([ { name: '全部任务', @@ -176,6 +184,8 @@ const ecartslist = ref([ offsetbottomColor: 'rgb(233, 233, 235)' } ]); + +// echarts options const options = computed(() => ({ grid: { left: '1%', @@ -186,14 +196,26 @@ const options = computed(() => ({ }, xAxis: { data: xAxislist.value }, yAxis: { type: 'value' as const }, - tooltip: { trigger: 'axis' as const }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow', + shadowStyle: { + color: '#f6f8fc', + opacity: 0.3 + } + } + }, series: activeSeries.value // 动态系列 })); // const diffday = ref(0); const activeSeries = ref(); const xAxislist = ref([]); + +// join Echarts Options object function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) { + activeSeries.value = null; const obj = { data: data, type: 'line' as const, @@ -229,12 +251,13 @@ function handleEcartsOptions(data, name, colorlist = ['#1a75ff', '#f2f9ff']) { activeSeries.value = obj; } +// echarts tabs switch function handleEcartsData(row: (typeof ecartslist.value)[number]) { + activeEchartsindex.value = row.key; if (row) { xAxislist.value = []; // 避免修改原数组,创建副本排序 const sortedList = [...itemList.value].sort((a, b) => new Date(a.statDate).getTime() - new Date(b.statDate).getTime()); - console.log(sortedList); // 创建日期到值的映射,标准化日期格式(假设 statDate 为 '2024-04-16 00:00:00',截取前10位) const dataMap = new Map(); sortedList.forEach((item) => { @@ -243,22 +266,16 @@ function handleEcartsData(row: (typeof ecartslist.value)[number]) { }); // 根据 x 轴日期生成数据数组 - console.log(diffday.value); - const xAxisDates = getLastNDays(diffday.value, undefined, 'YYYY.MM.DD'); // 确保格式为 ['2024-04-16', ...] + const xAxisDates = getLastNDays(diffday.value, undefined, 'YYYY/MM/DD'); // 确保格式为 ['2024-04-16', ...] const arr = xAxisDates.map((date) => dataMap.get(date) || 0); + console.log(xAxisDates, dataMap); xAxislist.value = xAxisDates; - - console.log('xAxisDates:', xAxisDates); // 调试 - console.log('dataMap:', dataMap); // 调试 - console.log('arr:', arr); // 调试 - - activeSeries.value = null; - handleEcartsOptions(arr, row.name, [row.color, row.offsetbottomColor]); + handleEcartsOptions(arr, row.name, [row.color]); } } +// 选择日期 function handleStateDate(val) { - console.log(diffDays(val)); diffday.value = diffDays(val); queryParams.value.statDate = `${formatDate(new Date(val), 'YYYY/MM/DD')}-${formatDate(new Date(), 'YYYY/MM/DD')}`; getList(); @@ -266,10 +283,10 @@ function handleStateDate(val) { // ! echarts ================================================================= const day = 1000 * 60 * 60 * 24; +// search options function handleQueryDay(val: number) { const newday = new Date(); // 当前日期 const time = new Date(newday.getTime() - val * day); // 指定日期 - console.log(time, newday); diffday.value = val; // 差值 diffday.value = getNaturalDayDiff(time, newday); queryParams.value.statDate = formatDate(time, 'YYYY/MM/DD'); @@ -283,7 +300,22 @@ const getList = async () => { loading.value = true; const res = await listItem(queryParams.value); itemList.value = res.rows; - handleEcartsData(ecartslist.value[0]); + + list.value.forEach((item) => { + item.value = 0; + }); + + itemList.value.forEach((item) => { + list.value[0].value += item.totalPlans ?? 0; + list.value[1].value += item.totalTasks ?? 0; + list.value[2].value += item.completedTasks ?? 0; + list.value[4].value += item.outUncompletedTasks ?? 0; + }); + if (!Number.isNaN(+list.value[2].value) && !Number.isNaN(+list.value[1].value)) { + list.value[3].value = Math.min((Number(list.value[2].value) / Number(list.value[1].value)) * 100, 100) + '%'; + } + + handleEcartsData(ecartslist.value.find((item) => item.key === activeEchartsindex.value)); total.value = res.total; loading.value = false; }; @@ -300,14 +332,17 @@ onMounted(() => { } .rightSearch { + font-size: 0.85rem; div { - width: 60px; + min-width: 60px; + margin-right: 10px; } i { margin: 0 10px; display: block; padding: 5px 5px; font-style: normal; + cursor: pointer; &:hover { color: #409eff; } @@ -315,13 +350,20 @@ onMounted(() => { } .overviewBox { display: flex; - flex-wrap: nowrap; align-items: center; justify-content: space-between; margin-top: 40px; + gap: 20px; .overviewitem { + flex: 1; min-width: 150px; - padding: 5px -5px; + padding: 25px 15px; + width: 240px; + height: 112px; + border-radius: 10px; + background-color: rgba(255, 255, 255, 1); + box-shadow: 0px 2px 6px 0px rgba(26, 117, 255, 0.2); + border: 1px solid rgba(26, 117, 255, 0.2); .overviewitem_name { color: rgba(102, 102, 102, 1); @@ -346,9 +388,11 @@ onMounted(() => { line-height: 40px; width: 100px; text-align: center; + font-size: 0.75rem; border: 1px solid rgba(220, 223, 230, 1); color: rgba(16, 16, 16, 1); border-left: none; + cursor: pointer; &:first-of-type { border-radius: 4px 0px 0px 0px; border-left: 1px solid rgba(220, 223, 230, 1); @@ -363,5 +407,8 @@ onMounted(() => { } } } + .echartsbody { + max-height: 500px; + } } diff --git a/src/views/system/inspection/Plan/addInspectionPlan.vue b/src/views/system/inspection/Plan/addInspectionPlan.vue index 01b0cfa..3883939 100644 --- a/src/views/system/inspection/Plan/addInspectionPlan.vue +++ b/src/views/system/inspection/Plan/addInspectionPlan.vue @@ -45,7 +45,7 @@ - + @@ -80,6 +80,10 @@ import { ref } from 'vue'; import AMapLoader from '@amap/amap-jsapi-loader'; import { addPlan, getPlan, updatePlan } from '@/api/system/InspectionPlan'; +const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { com_inspection_remind_tiime } = toRefs(proxy?.useDict('com_inspection_remind_tiime')); + +com_inspection_remind_tiime; const route = useRoute(); const router = useRouter(); @@ -127,6 +131,7 @@ const options = ref([ } ]); // 提醒时间 + const remindTimeoptions = ref([ { value: 10, diff --git a/src/views/system/inspection/Record/RecordMain.vue b/src/views/system/inspection/Record/RecordMain.vue index ece4388..1a3ea19 100644 --- a/src/views/system/inspection/Record/RecordMain.vue +++ b/src/views/system/inspection/Record/RecordMain.vue @@ -29,11 +29,9 @@
执行状态 :
-
{{ form.statusLabel }}
-
-
-
创建人 :
-
{{ form.createByName }}
+
+ +
创建时间 :
@@ -68,7 +66,7 @@ import { getRecord } from '@/api/system/InspectionRecord'; import { RecordVO } from '@/api/system/InspectionRecord/type'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; -const { com_pay_method } = toRefs(proxy?.useDict('com_pay_method')); +const { com_inspection_task_status } = toRefs(proxy?.useDict('com_inspection_task_status')); const router = useRouter(); const route = useRoute(); diff --git a/src/views/system/inspection/Record/index.vue b/src/views/system/inspection/Record/index.vue index 329b118..15abc42 100644 --- a/src/views/system/inspection/Record/index.vue +++ b/src/views/system/inspection/Record/index.vue @@ -6,7 +6,9 @@ - + + + @@ -59,7 +53,11 @@ {{ parseTime(scope.row.actualEndTime, '{y}-{m}-{d}') }} - + + +