diff --git a/src/api/base/processSnapshot.js b/src/api/base/processSnapshot.js new file mode 100644 index 0000000..c13c1af --- /dev/null +++ b/src/api/base/processSnapshot.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 查询工艺快照列表 +export function listProcessSnapshot(query) { + return request({ + url: '/base/processSnapshot/list', + method: 'get', + params: query + }) +} + +// 查询工艺快照详情(含参数) +export function getProcessSnapshotDetail(snapshotId) { + return request({ + url: '/base/processSnapshot/detail/' + snapshotId, + method: 'get' + }) +} + +// 查询工艺快照基本信息 +export function getProcessSnapshot(snapshotId) { + return request({ + url: '/base/processSnapshot/' + snapshotId, + method: 'get' + }) +} + +// 新增工艺快照 +export function addProcessSnapshot(data) { + return request({ + url: '/base/processSnapshot', + method: 'post', + data: data + }) +} + +// 修改工艺快照 +export function updateProcessSnapshot(data) { + return request({ + url: '/base/processSnapshot', + method: 'put', + data: data + }) +} + +// 删除工艺快照 +export function delProcessSnapshot(snapshotIds) { + return request({ + url: '/base/processSnapshot/' + snapshotIds, + method: 'delete' + }) +} + +// 对比两个快照 +export function compareSnapshots(snapshotId1, snapshotId2) { + return request({ + url: '/base/processSnapshot/compare', + method: 'get', + params: { snapshotId1, snapshotId2 } + }) +} diff --git a/src/api/baseDeviceParamVal/val.js b/src/api/baseDeviceParamVal/val.js index 9ba1f63..0a89ace 100644 --- a/src/api/baseDeviceParamVal/val.js +++ b/src/api/baseDeviceParamVal/val.js @@ -85,3 +85,21 @@ export function getDeviceStartTimeList() { method: 'get' }) } + +// 参数追溯列表(分页) +export function getTraceList(query) { + return request({ + url: '/baseDeviceParamVal/val/trace/list', + method: 'get', + params: query + }) +} + +// 获取SPC分析数据 +export function getSPCData(query) { + return request({ + url: '/baseDeviceParamVal/val/spcData', + method: 'get', + params: query + }) +} diff --git a/src/router/index.js b/src/router/index.js index 73f5812..0e9538b 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -535,6 +535,34 @@ export const dynamicRoutes = [ }, ], }, + { + path: "/device/Monitor", + component: Layout, + hidden: true, + permissions: ["baseDeviceParamVal:val:list"], + children: [ + { + path: "trace", + component: () => import("@/views/baseDeviceParamVal/trace/index"), + name: "DeviceParamValTrace", + meta: {title: "参数追溯", activeMenu: "/device/Monitor/val"}, + }, + ], + }, + { + path: "/base/processSnapshot", + component: Layout, + hidden: true, + permissions: ["base:processSnapshot:list"], + children: [ + { + path: "index", + component: () => import("@/views/base/processSnapshot/index"), + name: "ProcessSnapshot", + meta: {title: "工艺快照", activeMenu: "/device/Monitor/val"}, + }, + ], + }, ] // 防止连续点击多次路由报错 diff --git a/src/views/base/processSnapshot/index.vue b/src/views/base/processSnapshot/index.vue new file mode 100644 index 0000000..317d777 --- /dev/null +++ b/src/views/base/processSnapshot/index.vue @@ -0,0 +1,607 @@ + + + + + + + 返回监控 + + + + + + + + + + + + + + + + + + + + + + + + 查询 + 重置 + 创建快照 + + + + + + + + + 快照列表 ({{ total }}) + 取消对比 + + + + + + {{ getSnapshotTypeText(snapshot.snapshotType) }} + + + + {{ snapshot.deviceName || snapshot.deviceCode }} + {{ parseTime(snapshot.snapshotTime) }} + + 对比 + 删除 + + + + + 暂无快照数据 + + + + + + + + + + + 快照详情 + + {{ getSnapshotTypeText(selectedSnapshot.snapshotType) }} + + + + 设备: {{ selectedSnapshot.deviceName || selectedSnapshot.deviceCode }} + 时间: {{ parseTime(selectedSnapshot.snapshotTime) }} + 工单: {{ selectedSnapshot.orderCode }} + + + 参数列表 ({{ snapshotParams.length }}) + + + + + + + {{ scope.row.paramValue }} + + + + + {{ parseTime(scope.row.collectTime, '{m}-{d} {h}:{i}:{s}') }} + + + + + + + + + 请从左侧选择一个快照查看详情 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + + 快照1: {{ compareSnapshot1 ? parseTime(compareSnapshot1.snapshotTime) : '-' }} + → + 快照2: {{ compareSnapshot2 ? parseTime(compareSnapshot2.snapshotTime) : '-' }} + + + + + + + + + 已变化 + 未变化 + + + + + 变化参数: {{ compareResult.filter(r => r.isChanged === 'Y').length }} + 未变化参数: {{ compareResult.filter(r => r.isChanged !== 'Y').length }} + + + + + 暂无对比数据 + + + + 关闭 + + + + + + + + diff --git a/src/views/baseDeviceParamVal/trace/index.vue b/src/views/baseDeviceParamVal/trace/index.vue new file mode 100644 index 0000000..efdb1f6 --- /dev/null +++ b/src/views/baseDeviceParamVal/trace/index.vue @@ -0,0 +1,455 @@ + + + + + + + 返回监控 + + + + + + + + + + {{ item.deviceName || item.deviceCode }} + {{ item.deviceCode }} + + + + + + + + + + + + + 查询 + 重置 + 导出 + SPC分析 + + + + + + + + + + + {{ scope.row.paramValue }} + + + + + {{ parseTime(scope.row.collectTime) }} + + + + + {{ parseTime(scope.row.recordTime) }} + + + + + + + + + + + + + + 设备: {{ spcData.deviceCode }} + 参数: {{ spcData.paramName }} + 样本数: {{ spcData.sampleSize }} + + + + + + + 统计指标 + + 均值 (X̄){{ spcData.mean }} + 标准差 (σ){{ spcData.stdDev }} + + + + + + 控制限 + + UCL (上控制限){{ spcData.ucl }} + CL (中心线){{ spcData.cl }} + LCL (下控制限){{ spcData.lcl }} + + + + + + 过程能力 + + CPK{{ spcData.cpk }} + USL (上规格限){{ spcData.usl }} + LSL (下规格限){{ spcData.lsl }} + + + + + + + CPK ≥ 1.33: 优秀 + 1.0 ≤ CPK < 1.33: 合格 + CPK < 1.0: 需改进 + + + + + 暂无SPC数据,请确保查询条件正确 + + + + 关闭 + + + + + + + + diff --git a/src/views/baseDeviceParamVal/val/index.vue b/src/views/baseDeviceParamVal/val/index.vue index ad4a16b..ca9aa04 100644 --- a/src/views/baseDeviceParamVal/val/index.vue +++ b/src/views/baseDeviceParamVal/val/index.vue @@ -54,6 +54,20 @@ @change="onAutoRefreshChange" /> 刷新 + + + + 功能导航 + + + + 参数追溯 + + + 工艺快照 + + + @@ -211,7 +225,7 @@ export default { clockTimer: null, // 自动刷新 autoRefresh: true, - refreshIntervalMs: 10000, + refreshIntervalMs: 10000, // 10000毫秒 = 10秒 refreshTimer: null, // 设备列表 deviceList: [], @@ -229,7 +243,7 @@ export default { alertLoading: false, showAlertPanel: false, alertTimer: null, - alertCheckIntervalMs: 30000, // 30秒检查一次预警 + alertCheckIntervalMs: 60000, // 60秒检查一次预警 lastAlertIds: [], // 记录上次的预警ID,用于判断是否有新预警 }; }, @@ -398,8 +412,8 @@ export default { /** 加载预警列表 */ loadAlerts() { this.alertLoading = true; - listProcessAlert({ - pageNum: 1, + listProcessAlert({ + pageNum: 1, pageSize: 20, alertStatus: '0' // 只查询未处理的预警 }).then(response => { @@ -497,6 +511,27 @@ export default { this.loadAlerts(); }); }).catch(() => {}); + }, + /** 功能导航菜单 */ + handleMenuCommand(command) { + if (command === 'trace') { + // 跳转到参数追溯页面,携带当前选中的设备信息 + this.$router.push({ + path: '/device/Monitor/trace', + query: this.selectedDevice ? { + deviceCode: this.selectedDevice.deviceCode, + deviceName: this.selectedDevice.deviceName + } : {} + }); + } else if (command === 'snapshot') { + // 跳转到工艺快照页面 + this.$router.push({ + path: '/base/processSnapshot/index', + query: this.selectedDevice ? { + deviceCode: this.selectedDevice.deviceCode + } : {} + }); + } } } };