日志优化+PRODUCING到PRODUCT状态转化优化

This commit is contained in:
2026-01-21 19:28:27 +08:00
parent 08c3b469a1
commit 3957f04eee
2 changed files with 65 additions and 30 deletions

View File

@@ -20,14 +20,13 @@
<el-form-item label="Alarm Type" prop="logtype">
<!-- 报警类型 -->
<el-select v-model="queryForm.logtype" placeholder="Please select alarm type" clearable>
<!-- 请选择报警类型 -->
<el-option label="System Alarm" value="system"></el-option>
<!-- 系统报警 -->
<el-option label="Device Alarm" value="device"></el-option>
<!-- 设备报警 -->
<el-option label="Network Alarm" value="network"></el-option>
<!-- 网络报警 -->
<el-option label="Security Alarm" value="security"></el-option>
<!-- 请选择报警模块 -->
<el-option label="INFORMATION" value="INFORMATION"></el-option>
<!-- 监控模块 -->
<el-option label="WARN" value="WARN"></el-option>
<!-- 管理模块 -->
<el-option label="ERROR" value="ERROR"></el-option>
<!-- 安全报警 -->
</el-select>
</el-form-item>
@@ -35,16 +34,21 @@
<el-form-item label="Alarm Module" prop="module">
<!-- 报警模块 -->
<el-select v-model="queryForm.module" placeholder="Please select alarm module" clearable>
<!-- 请选择报警模块 -->
<el-option label="Monitor Module" value="monitor"></el-option>
<!-- 监控模块 -->
<el-option label="Admin Module" value="admin"></el-option>
<!-- 管理模块 -->
<el-option label="Analysis Module" value="analysis"></el-option>
<!-- 分析模块 -->
<el-option label="Storage Module" value="storage"></el-option>
<!-- 存储模块 -->
<!-- 请选择报警模块 -->
<el-option label="TRACK Alarm" value="TRACK"></el-option>
<!-- 焊机报警 -->
<el-option label="WELDER Alarm" value="WELDER"></el-option>
<!-- 物料保存报警 -->
<el-option label="MATMAP-SAVE Alarm" value="MATMAP-SAVE"></el-option>
<!-- 物料映射报警 -->
<el-option label="MATMAP-TRACK Alarm" value="MATMAP-TRACK"></el-option>
<!-- 位置时间报警 -->
<el-option label="POSITIME Alarm" value="POSITIME"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Alarm Content" prop="logtext">

View File

@@ -524,11 +524,13 @@ import FurCurrent from './components/FurCurrent.vue'
// 基于后端 DeviceEnum 的前端映射(区域、来源、参数字段)
const DEVICE_META = {
POR1: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['tensionPorBr1', 'stripSpeed'] },
POR2: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['tensionPorBr2', 'stripSpeed'] },
POR2: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['stripSpeed'] },
WELDER: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['weldStatus'] },
ENL1: { sectionType: 'PROCESS', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
ENL2: { sectionType: 'PROCESS', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
ENL3: { sectionType: 'PROCESS', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
// UI 合并显示用:入口活套(逻辑合并 ENL1/2/3
ENL: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
CLEAN: { sectionType: 'PROCESS', sourceType: 'FURNACE', paramFields: ['cleaningVoltage', 'cleaningCurrent'] },
FUR1: { sectionType: 'PROCESS', sourceType: 'FURNACE', paramFields: ['phfExitStripTemp'] },
@@ -551,6 +553,8 @@ const DEVICE_META = {
CXL1: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['cxlLength', 'cxlCapacity', 'tensionCxl'] },
CXL2: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['cxlLength', 'cxlCapacity', 'tensionCxl'] },
// UI 合并显示用:出口活套(逻辑合并 CXL1/2
CXL: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['cxlLength', 'cxlCapacity', 'tensionCxl'] },
TR: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['coilLength', 'speedExitSection', 'tensionBr9Tr'] },
EXC: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: [] },
WEIGHT: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: [] }
@@ -559,8 +563,7 @@ const DEVICE_META = {
// Parameter field labels (English with Chinese comments)
// 参数字段标签(英文显示,中文注释)
const PARAM_LABELS = {
tensionPorBr1: 'Pay-off Tension 1#', // 开卷张力1#
tensionPorBr2: 'Pay-off Tension 2#', // 开卷张力2#
tensionPorBr1: 'Pay-off Tension', // 开卷张力1#
stripSpeed: 'Strip Speed', // 带钢速度
weldStatus: 'Welder Status', // 焊机状态
celLength: 'Entry Loop Position', // 入口活套位置
@@ -568,7 +571,12 @@ const PARAM_LABELS = {
tensionCel: 'Entry Loop Tension', // 入口活套张力
celLengthMax: 'Entry Loop Max Length', // 入口活套最大长度
celLengthMin: 'Entry Loop Min Length', // 入口活套最小长度
bR4or5toBR6Tension: 'BR4/5 to BR6 Tension', // BR4/5到BR6张力
bR4or5toBR6Tension: 'Annealing Furnace Tension', // 退火炉张力
tensionBr1Br2: 'Entry Loop Tension', // 入口活套张力
tensionBr2Br3: 'Cleaning Section Tension', // 清洗段张力
tensionBr6toBr7Br8: 'Post-coating Cooling Tension', // 镀后冷却张力
tensionBr8Tm: 'Temper Mill Entry Tension', // 光整机入口张力
tensionTmBr9: 'Temper Mill Exit Tension', // 光整机出口张力
cleaningVoltage: 'Cleaning Voltage', // 清洗电压
cleaningCurrent: 'Cleaning Current', // 清洗电流
// 别名字段(用于前端逻辑)
@@ -598,9 +606,7 @@ const PARAM_LABELS = {
tensionCxl: 'Exit Loop Tension', // 出口活套张力
coilLength: 'Coil Length', // 钢卷长度
speedExitSection: 'Exit Section Speed', // 出口段速度
tensionBr9Tr: 'BR9-TR Tension', // BR9-TR张力
tensionBr8Tm: 'BR8-TM Tension', // BR8-TM张力
tensionTmBr9: 'TM-BR9 Tension', // TM-BR9张力
tensionBr9Tr: 'Recoiler Tension', // 卷取机张力
tensionBr8Br9: 'BR8-BR9 Tension', // BR8-BR9张力
tensionBr9toBr10Br11: 'BR9-BR10/11 Tension', // BR9到BR10/11张力
tensionBr10Br11toBr12: 'BR10/11-BR12 Tension', // BR10/11到BR12张力
@@ -853,9 +859,10 @@ export default {
},
furnaceSectionMetrics() {
return this.buildSectionMetrics('FURNACE', [
// 'cleaningVoltage', 'cleaningCurrent',
'bR4or5toBR6Tension',
// 'cleaningVoltage', 'cleaningCurrent',
'phfExitStripTemp', 'rtfExitStripTemp', 'jcsExitStripTemp', 'scsExitStripTemp'
])
},
coatSectionMetrics() {
@@ -869,7 +876,12 @@ export default {
},
// 入口段设备列表(依据 DeviceEnum.sectionType
entryDevicesList() {
return this.getDevicesBySection('ENTRY')
const devices = this.getDevicesBySection('ENTRY')
const looper = this.matMapList.find(d => ['ENL1', 'ENL2', 'ENL3'].includes(d.positionNameEn))
if (!looper) return devices
return devices
.filter(d => !['ENL1', 'ENL2', 'ENL3'].includes(d.positionNameEn))
.concat([{ ...looper, positionNameEn: 'ENL', positionNameCn: 'Entry Looper' }])
},
// 熔炉段设备列表PROCESS 且来源 FURNACE
furnaceDevicesList() {
@@ -882,7 +894,17 @@ export default {
// 出口段设备列表EXIT常规设备
exitDevicesList() {
const exitDevices = this.getDevicesBySection('EXIT')
return exitDevices.filter(d => !['INS', 'EXC', 'WEIGHT'].includes(d.positionNameEn))
const looper = this.matMapList.find(d => ['CXL1', 'CXL2'].includes(d.positionNameEn))
const base = exitDevices.filter(d => !['INS', 'EXC', 'WEIGHT', 'CXL1', 'CXL2'].includes(d.positionNameEn))
if (!looper) return base
const tr = this.matMapList.find(d => d.positionNameEn === 'TR')
if (!tr) return base.concat([{ ...looper, positionNameEn: 'CXL', positionNameCn: 'Exit Looper' }])
const idx = base.findIndex(d => d.positionNameEn === 'TR')
const cxlDevice = { ...looper, positionNameEn: 'CXL', positionNameCn: 'Exit Looper' }
if (idx < 0) return base.concat([cxlDevice])
return base.slice(0, idx).concat([cxlDevice]).concat(base.slice(idx))
},
// 出口其他设备列表
exitOtherDevicesList() {
@@ -988,7 +1010,6 @@ export default {
celCapacity: '%',
cxlCapacity: '%',
tensionPorBr1: 'daN',
tensionPorBr2: 'daN',
tensionBr5Tm: 'daN',
tensionTlBr7: 'daN',
tensionCxl: 'daN',
@@ -1029,8 +1050,10 @@ export default {
return null
},
buildSectionMetrics(sectionType, fields) {
const source = this.getSectionSource(sectionType)
const sectionSource = this.getSectionSource(sectionType)
return fields.map(f => {
// bR4or5toBR6Tension 在 entry 测量对象里,但需要展示在退火炉段
const source = f === 'bR4or5toBR6Tension' ? this.realtimeData.entry : sectionSource
const raw = source ? this.getFieldValueWithAlias(source, f) : null
const unit = this.getFieldUnit(f)
return {
@@ -1040,6 +1063,8 @@ export default {
})
},
matchReel(deviceId) {
if (deviceId === 'ENL') deviceId = 'ENL1'
if (deviceId === 'CXL') deviceId = 'CXL1'
if (!['POR1', 'POR2', 'ENL1', 'ENL2', 'CXL1', 'CXL2'].includes(deviceId)) return true
if (!this.realtimeData.entry) return false
const reel = this.realtimeData.entry.payOffReelNumber
@@ -1542,6 +1567,12 @@ export default {
// 根据设备ID获取设备信息
getDeviceInfo(deviceId) {
if (deviceId === 'ENL') {
return this.matMapList.find(item => ['ENL1', 'ENL2', 'ENL3'].includes(item.positionNameEn))
}
if (deviceId === 'CXL') {
return this.matMapList.find(item => ['CXL1', 'CXL2'].includes(item.positionNameEn))
}
return this.matMapList.find(item => item.positionNameEn === deviceId)
},