From e12fa4c39a043b46d0f3335d71e6c3bde0ac547b Mon Sep 17 00:00:00 2001 From: hwj Date: Fri, 23 Jan 2026 18:04:12 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=A4=A7=E5=B1=8F=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/modules/remaining.ts | 12 + src/views/report/dashboardList/index.vue | 338 +++++ .../dashboardPage/dashboard8/Dashboard8.vue | 194 +++ .../dashboard8/components/DashboardHeader.vue | 158 +++ .../dashboard8/components/DayCapacity.vue | 243 ++++ .../dashboard8/components/EnergyTrend.vue | 156 +++ .../dashboard8/components/MonthCapacity.vue | 243 ++++ .../dashboard8/components/OpsTrend.vue | 272 ++++ .../dashboard8/components/QualityTrend.vue | 156 +++ .../dashboard8/components/RealAlarm.vue | 205 +++ .../dashboard8/components/TaskBoard.vue | 296 ++++ .../dashboard8/components/TodayOps.vue | 202 +++ .../dashboard8/components/WeekTrend.vue | 182 +++ .../dashboardPage/dashboard8/dashboard8.html | 1243 +++++++++++++++++ .../report/dashboardPage/dashboard8/utils.ts | 57 + 15 files changed, 3957 insertions(+) create mode 100644 src/views/report/dashboardList/index.vue create mode 100644 src/views/report/dashboardPage/dashboard8/Dashboard8.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/DashboardHeader.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/DayCapacity.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/EnergyTrend.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/MonthCapacity.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/OpsTrend.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/QualityTrend.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/RealAlarm.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/TaskBoard.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/TodayOps.vue create mode 100644 src/views/report/dashboardPage/dashboard8/components/WeekTrend.vue create mode 100644 src/views/report/dashboardPage/dashboard8/dashboard8.html create mode 100644 src/views/report/dashboardPage/dashboard8/utils.ts diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index fdb8c006..383bfe5c 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -599,6 +599,18 @@ const remainingRouter: AppRouteRecordRaw[] = [ ] }, + { + path: '/iot/report/dashboardPage/Dashboard8', + component: () => import('@/views/report/dashboardPage/dashboard8/Dashboard8.vue'), + name: 'IotReportDashboard8', + meta: { + title: '智能制造产线任务总览', + hidden: true, + noTagsView: true, + canTo: true + } + }, + { path: '/:pathMatch(.*)*', component: () => import('@/views/Error/404.vue'), diff --git a/src/views/report/dashboardList/index.vue b/src/views/report/dashboardList/index.vue new file mode 100644 index 00000000..b97115e6 --- /dev/null +++ b/src/views/report/dashboardList/index.vue @@ -0,0 +1,338 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/Dashboard8.vue b/src/views/report/dashboardPage/dashboard8/Dashboard8.vue new file mode 100644 index 00000000..5c1e3c66 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/Dashboard8.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/DashboardHeader.vue b/src/views/report/dashboardPage/dashboard8/components/DashboardHeader.vue new file mode 100644 index 00000000..7bde15b7 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/DashboardHeader.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/DayCapacity.vue b/src/views/report/dashboardPage/dashboard8/components/DayCapacity.vue new file mode 100644 index 00000000..f8a0d240 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/DayCapacity.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/EnergyTrend.vue b/src/views/report/dashboardPage/dashboard8/components/EnergyTrend.vue new file mode 100644 index 00000000..156e192a --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/EnergyTrend.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/MonthCapacity.vue b/src/views/report/dashboardPage/dashboard8/components/MonthCapacity.vue new file mode 100644 index 00000000..82c10cb8 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/MonthCapacity.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/OpsTrend.vue b/src/views/report/dashboardPage/dashboard8/components/OpsTrend.vue new file mode 100644 index 00000000..277c305b --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/OpsTrend.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/QualityTrend.vue b/src/views/report/dashboardPage/dashboard8/components/QualityTrend.vue new file mode 100644 index 00000000..8f732241 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/QualityTrend.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/RealAlarm.vue b/src/views/report/dashboardPage/dashboard8/components/RealAlarm.vue new file mode 100644 index 00000000..c41113eb --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/RealAlarm.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/TaskBoard.vue b/src/views/report/dashboardPage/dashboard8/components/TaskBoard.vue new file mode 100644 index 00000000..d8048d39 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/TaskBoard.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/TodayOps.vue b/src/views/report/dashboardPage/dashboard8/components/TodayOps.vue new file mode 100644 index 00000000..b8e098ab --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/TodayOps.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/components/WeekTrend.vue b/src/views/report/dashboardPage/dashboard8/components/WeekTrend.vue new file mode 100644 index 00000000..7bcd1f72 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/components/WeekTrend.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/dashboard8.html b/src/views/report/dashboardPage/dashboard8/dashboard8.html new file mode 100644 index 00000000..b5fd6196 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/dashboard8.html @@ -0,0 +1,1243 @@ + + + + + + 智能制造产线可视化看板 + + + + + +
+
+ +
+
+
+
+ +
+
+
智能制造产线任务总览
+
INTELLIGENT MANUFACTURING REAL-TIME DASHBOARD
+
+
+
+ + + + + + + 当前在线产线 10 + +
+
+
+ +
+
+ +
+ +
+
+
+ + 产线任务看板 +
+
+ 实时刷新 · 滚动展示 + 已完成 + 进度偏低 +
+
+
+
+ + + + + + + + + + + + +
产线名称排产单产品名称计划数量完工数量完工率
+
+
+
+ + +
+
+
+ + 日产能达成情况 +
+ 当日维度 +
+
+
+
+
+
+
+
+
+
排产单数量
+
+
+
+
+
排产数量
+
+
+
+
+
待生产数量
+
+
+
+
+
产能达成率
+
+
目标 ≥ 80%
+
+
+
+
+
+
+ + +
+
+
+ + 月产能达成情况 +
+ 当月累计 +
+
+
+
+
+
+
+
+
+
排产单数量
+
+
+
+
+
排产数量
+
+
+
+
+
待生产数量
+
+
+
+
+
产能达成率
+
+
目标 ≥ 85%
+
+
+
+
+
+
+
+ + +
+ +
+
+
+ + 周生产趋势 +
+
+ 产量 + 计划 +
+
+
+
+
+
+ + +
+
+
+ + 开机率/稼动率趋势 +
+
+
+ 历史七天(不含当天) +
+
+
+
+
+
+ + +
+
+
+ + 今日开机率/稼动率 +
+ 产线A +
+
+
+
+
+
+ + +
+ +
+
+
+ + 成品检合格率趋势图 +
+ 按天统计(全产线) +
+
+
+
+
+ + +
+
+
+ + 实时报警信息 +
+ 滚动展示 +
+
+
    +
    +
    + + +
    +
    +
    + + 能耗周趋势 +
    + 本周能耗对比 +
    +
    +
    +
    +
    +
    +
    +
    + + + + + diff --git a/src/views/report/dashboardPage/dashboard8/utils.ts b/src/views/report/dashboardPage/dashboard8/utils.ts new file mode 100644 index 00000000..2ba468b1 --- /dev/null +++ b/src/views/report/dashboardPage/dashboard8/utils.ts @@ -0,0 +1,57 @@ +import { onUnmounted } from 'vue' +import * as echarts from 'echarts' + +export const colors = { + blue: '#1e90ff', + cyan: '#22d3ee', + green: '#22c55e', + purple: '#8b5cf6', + warn: '#f59e0b', + danger: '#ef4444' +} + +export const style = { + axisLine: { lineStyle: { color: 'rgba(148,163,184,0.45)' } }, + axisLabel: { color: '#a8b7d8', fontSize: 12 }, + splitLine: { lineStyle: { color: 'rgba(30,64,175,0.55)', type: 'dashed' } }, + legendText: { color: '#e5f0ff', fontSize: 12 } +} + +export function animateCount(el: HTMLElement | null, target: number, suffix: string, duration: number) { + if (!el) return + const start = 0 + const t0 = performance.now() + const step = (t: number) => { + const p = Math.min(1, (t - t0) / duration) + const v = start + (target - start) * p + const out = Number.isInteger(target) ? Math.round(v) : Math.round(v * 10) / 10 + el.textContent = suffix ? `${out}${suffix}` : `${out}` + if (p < 1) requestAnimationFrame(step) + } + requestAnimationFrame(step) +} + +export function useChart(domId: string) { + let chart: echarts.ECharts | null = null + + const init = () => { + const el = document.getElementById(domId) + if (!el) return null + chart = echarts.init(el, 'dark', { renderer: 'canvas' }) + return chart + } + + const resize = () => { + chart?.resize() + } + + onUnmounted(() => { + chart?.dispose() + }) + + return { + init, + resize, + instance: () => chart + } +}