From 450e3911ec15d94d49f2df2e037ecc60c77c8e1a Mon Sep 17 00:00:00 2001 From: git_rabbit Date: Fri, 24 Oct 2025 17:05:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=9C=8B=E6=9D=BF=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E5=A4=87=E7=9B=91=E6=8E=A7=E7=9C=8B?= =?UTF-8?q?=E6=9D=BF=E5=B9=B6=E4=BC=98=E5=8C=96=E7=8E=B0=E6=9C=89=E7=9C=8B?= =?UTF-8?q?=E6=9D=BF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加设备监控看板组件,展示设备实时数据和报警记录 - 调整轮播看板高度为95vh以更好利用屏幕空间 - 统一各看板数据接口,使用新的carouselBoard API - 优化质量统计、生产工单和毛坯库存看板的显示内容和样式 - 添加车间滚动大屏路由配置 --- src/api/kanbanManagement/carouselBoard.js | 46 +++ src/router/index.js | 326 +++++++++--------- .../components/DeviceMonitoringCard.vue | 323 +++++++++++++++++ .../components/QualityStatisticsCard.vue | 198 +++++++++-- .../components/WmBlankInventoryCard.vue | 21 +- .../components/WorkorderOnlineCard.vue | 14 +- .../kanbanManagement/CarouselBoard/index.vue | 9 +- 7 files changed, 718 insertions(+), 219 deletions(-) create mode 100644 src/api/kanbanManagement/carouselBoard.js create mode 100644 src/views/kanbanManagement/CarouselBoard/components/DeviceMonitoringCard.vue diff --git a/src/api/kanbanManagement/carouselBoard.js b/src/api/kanbanManagement/carouselBoard.js new file mode 100644 index 0000000..da6d90f --- /dev/null +++ b/src/api/kanbanManagement/carouselBoard.js @@ -0,0 +1,46 @@ +import request from "@/utils/request"; + +// 获取质量大屏轮播数据 +export function getQualityStatisticsCarouselBoardData(data) { + return request({ + url: "/BI/CarouselBoard/getQualityStatisticsCarouselBoardData", + method: "POST", + data: data, + }); +} + +// 获取生产大屏轮播数据 +export function getWorkOrderCarouselBoardData(data) { + return request({ + url: "/BI/CarouselBoard/getWorkOrderCarouselBoardData", + method: "POST", + data: data, + }); +} + +// 获取毛坯大屏轮播数据 +export function getBlankInventoryCarouselBoardData(data) { + return request({ + url: "/BI/CarouselBoard/getBlankInventoryCarouselBoardData", + method: "POST", + data: data, + }); +} + +// 获取设备报警大屏轮播数据 +export function getEquipmentAlarmCarouselBoardData(data) { + return request({ + url: "/BI/CarouselBoard/getEquipmentAlarmCarouselBoardData", + method: "POST", + data: data, + }); +} + +// 获取设备实时参数信息大屏轮播数据 +export function getEquipmentLiveCarouselBoardData(data) { + return request({ + url: "/BI/CarouselBoard/getEquipmentLiveCarouselBoardData", + method: "POST", + data: data, + }); +} diff --git a/src/router/index.js b/src/router/index.js index 3e87206..93952cd 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,10 +1,10 @@ -import Vue from 'vue' -import Router from 'vue-router' +import Vue from "vue"; +import Router from "vue-router"; -Vue.use(Router) +Vue.use(Router); /* Layout */ -import Layout from '@/layout' +import Layout from "@/layout"; /** * Note: 路由配置项 @@ -26,161 +26,167 @@ import Layout from '@/layout' // 公共路由 export const constantRoutes = [ - { - path: '/redirect', - component: Layout, - hidden: true, - children: [ - { - path: '/redirect/:path(.*)', - component: (resolve) => require(['@/views/redirect'], resolve), - }, - ], - }, - { - path: '/login', - component: (resolve) => require(['@/views/login'], resolve), - hidden: true, - }, - { - path: '/register', - component: (resolve) => require(['@/views/register'], resolve), - hidden: true, - }, - { - path: '/404', - component: (resolve) => require(['@/views/error/404'], resolve), - hidden: true, - }, - { - path: '/401', - component: (resolve) => require(['@/views/error/401'], resolve), - hidden: true, - }, - { - path: '', - component: Layout, - redirect: 'index', - children: [ - { - path: 'index', - component: (resolve) => require(['@/views/index'], resolve), - name: 'Index', - meta: { title: '首页', icon: 'dashboard', affix: true }, - }, - ], - }, - { - path: '/user', - component: Layout, - hidden: true, - redirect: 'noredirect', - children: [ - { - path: 'profile', - component: (resolve) => require(['@/views/system/user/profile/index'], resolve), - name: 'Profile', - meta: { title: '个人中心', icon: 'user' }, - }, - ], - }, - { - path: '/echarts', - component: (resolve) => require(['@/views/components/Echarts'], resolve), - hidden: true, - }, - { - path: '/icons', - component: (resolve) => require(['@/views/components/icons/index'], resolve), - hidden: true, - }, - // 质量检验中的初次检验 - { - path: '/firstFQC', - component: (resolve) => require(['@/views/qualityManagement/FQC/firstFQC.vue'], resolve), - hidden: true, - }, - { - path: '/againFQC', - component: (resolve) => require(['@/views/qualityManagement/FQC/againFQC.vue'], resolve), - hidden: true, - }, - { - path: '/thirtyFQC', - component: (resolve) => require(['@/views/qualityManagement/FQC/thirtyFQC.vue'], resolve), - hidden: true, - }, - { - path: '/polishManagement/WmPolishWorkOrder', - component: (resolve) => require(['@/views/wmsManagement/WmPolishInventory/WmPolishWorkOrder.vue'], resolve), - hidden: true, - }, - { - path: '/polishManagement/PolishReport', - component: (resolve) => require(['@/views/wmsManagement/WmPolishInventory/PolishReport.vue'], resolve), - hidden: true, - }, - { - path: '/polishManagement/PolishFQC', - component: (resolve) => require(['@/views/wmsManagement/WmPolishInventory/PolishFQC.vue'], resolve), - hidden: true, - }, - // 看板 - { - path: '/kanbanManagement/FqcQualityDataBoard', - component: (resolve) => require(['@/views/kanbanManagement/FqcQualityDataBoard/index.vue'], resolve), - hidden: true, - }, - { - path: '/kanbanManagement/productionBoard', - component: (resolve) => require(['@/views/kanbanManagement/productionBoard/index.vue'], resolve), - hidden: true, - }, - { - path: '/gp12Management/touchScreen', - component: (resolve) => require(['@/views/qualityManagement/gp12/touchScreen/main/index.vue'], resolve), - hidden: true, - }, - { - path: '/BackEndManagement/BackendTouchScreen', - component: (resolve) => require(['@/views/qualityManagement/backend/touchScreen/main/index.vue'], resolve), - hidden: true, - }, - // 车间生产看板 - { - path: '/kanbanManagement/mainProductionBoard', - component: (resolve) => require(['@/views/kanbanManagement/mainProductionBoard.vue'], resolve), - hidden: true, - }, - // 设备管理 - { - name: 'Fullscreen', - path: '/fullscreen', - component: () => import('@/views/deviceManagement/datascreen/index.vue'), - hidden: true - }, - // { - // name: 'Fullscreen2', - // path: '/fullscreen2', - // component: () => import('@/views/andonManagement/analysis/fullscreen/index.vue'), - // hidden: true - // }, - { - name: 'TheTaskExecuteView', - path: '/TheTaskExecuteView', - component: () => import('@/views/deviceManagement/deviceTaskExecute/TheTaskExecuteView.vue'), - hidden: true - }, - // { - // path: '/qualityManagement/FQC/qualityStatistics', - // component: (resolve) => require(['@/views/qualityManagement/FQC/qualityStatistics.vue'], resolve), - // hidden: true - // }, -] + { + path: "/redirect", + component: Layout, + hidden: true, + children: [ + { + path: "/redirect/:path(.*)", + component: (resolve) => require(["@/views/redirect"], resolve), + }, + ], + }, + { + path: "/login", + component: (resolve) => require(["@/views/login"], resolve), + hidden: true, + }, + { + path: "/register", + component: (resolve) => require(["@/views/register"], resolve), + hidden: true, + }, + { + path: "/404", + component: (resolve) => require(["@/views/error/404"], resolve), + hidden: true, + }, + { + path: "/401", + component: (resolve) => require(["@/views/error/401"], resolve), + hidden: true, + }, + { + path: "", + component: Layout, + redirect: "index", + children: [ + { + path: "index", + component: (resolve) => require(["@/views/index"], resolve), + name: "Index", + meta: { title: "首页", icon: "dashboard", affix: true }, + }, + ], + }, + { + path: "/user", + component: Layout, + hidden: true, + redirect: "noredirect", + children: [ + { + path: "profile", + component: (resolve) => require(["@/views/system/user/profile/index"], resolve), + name: "Profile", + meta: { title: "个人中心", icon: "user" }, + }, + ], + }, + { + path: "/echarts", + component: (resolve) => require(["@/views/components/Echarts"], resolve), + hidden: true, + }, + { + path: "/icons", + component: (resolve) => require(["@/views/components/icons/index"], resolve), + hidden: true, + }, + // 质量检验中的初次检验 + { + path: "/firstFQC", + component: (resolve) => require(["@/views/qualityManagement/FQC/firstFQC.vue"], resolve), + hidden: true, + }, + { + path: "/againFQC", + component: (resolve) => require(["@/views/qualityManagement/FQC/againFQC.vue"], resolve), + hidden: true, + }, + { + path: "/thirtyFQC", + component: (resolve) => require(["@/views/qualityManagement/FQC/thirtyFQC.vue"], resolve), + hidden: true, + }, + { + path: "/polishManagement/WmPolishWorkOrder", + component: (resolve) => require(["@/views/wmsManagement/WmPolishInventory/WmPolishWorkOrder.vue"], resolve), + hidden: true, + }, + { + path: "/polishManagement/PolishReport", + component: (resolve) => require(["@/views/wmsManagement/WmPolishInventory/PolishReport.vue"], resolve), + hidden: true, + }, + { + path: "/polishManagement/PolishFQC", + component: (resolve) => require(["@/views/wmsManagement/WmPolishInventory/PolishFQC.vue"], resolve), + hidden: true, + }, + // 看板 + { + path: "/kanbanManagement/FqcQualityDataBoard", + component: (resolve) => require(["@/views/kanbanManagement/FqcQualityDataBoard/index.vue"], resolve), + hidden: true, + }, + { + path: "/kanbanManagement/productionBoard", + component: (resolve) => require(["@/views/kanbanManagement/productionBoard/index.vue"], resolve), + hidden: true, + }, + { + path: "/gp12Management/touchScreen", + component: (resolve) => require(["@/views/qualityManagement/gp12/touchScreen/main/index.vue"], resolve), + hidden: true, + }, + { + path: "/BackEndManagement/BackendTouchScreen", + component: (resolve) => require(["@/views/qualityManagement/backend/touchScreen/main/index.vue"], resolve), + hidden: true, + }, + // 车间生产看板 + { + path: "/kanbanManagement/mainProductionBoard", + component: (resolve) => require(["@/views/kanbanManagement/mainProductionBoard.vue"], resolve), + hidden: true, + }, + // 车间滚动大屏 + { + path: "/kanbanManagement/CarouselBoard", + component: (resolve) => require(["@/views/kanbanManagement/CarouselBoard/index.vue"], resolve), + hidden: true, + }, + // 设备管理 + { + name: "Fullscreen", + path: "/fullscreen", + component: () => import("@/views/deviceManagement/datascreen/index.vue"), + hidden: true, + }, + // { + // name: 'Fullscreen2', + // path: '/fullscreen2', + // component: () => import('@/views/andonManagement/analysis/fullscreen/index.vue'), + // hidden: true + // }, + { + name: "TheTaskExecuteView", + path: "/TheTaskExecuteView", + component: () => import("@/views/deviceManagement/deviceTaskExecute/TheTaskExecuteView.vue"), + hidden: true, + }, + // { + // path: '/qualityManagement/FQC/qualityStatistics', + // component: (resolve) => require(['@/views/qualityManagement/FQC/qualityStatistics.vue'], resolve), + // hidden: true + // }, +]; export default new Router({ - base: process.env.VUE_APP_ROUTER_PREFIX, - mode: 'history', // 去掉url中的# - // scrollBehavior: () => ({ y: 0 }), - routes: constantRoutes, -}) + base: process.env.VUE_APP_ROUTER_PREFIX, + mode: "history", // 去掉url中的# + // scrollBehavior: () => ({ y: 0 }), + routes: constantRoutes, +}); diff --git a/src/views/kanbanManagement/CarouselBoard/components/DeviceMonitoringCard.vue b/src/views/kanbanManagement/CarouselBoard/components/DeviceMonitoringCard.vue new file mode 100644 index 0000000..dd5585b --- /dev/null +++ b/src/views/kanbanManagement/CarouselBoard/components/DeviceMonitoringCard.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/src/views/kanbanManagement/CarouselBoard/components/QualityStatisticsCard.vue b/src/views/kanbanManagement/CarouselBoard/components/QualityStatisticsCard.vue index c280697..e4f7472 100644 --- a/src/views/kanbanManagement/CarouselBoard/components/QualityStatisticsCard.vue +++ b/src/views/kanbanManagement/CarouselBoard/components/QualityStatisticsCard.vue @@ -1,42 +1,150 @@