日志优化+PRODUCING到PRODUCT状态转化优化
This commit is contained in:
@@ -20,14 +20,13 @@
|
|||||||
<el-form-item label="Alarm Type" prop="logtype">
|
<el-form-item label="Alarm Type" prop="logtype">
|
||||||
<!-- 报警类型 -->
|
<!-- 报警类型 -->
|
||||||
<el-select v-model="queryForm.logtype" placeholder="Please select alarm type" clearable>
|
<el-select v-model="queryForm.logtype" placeholder="Please select alarm type" clearable>
|
||||||
<!-- 请选择报警类型 -->
|
<!-- 请选择报警模块 -->
|
||||||
<el-option label="System Alarm" value="system"></el-option>
|
<el-option label="INFORMATION" value="INFORMATION"></el-option>
|
||||||
<!-- 系统报警 -->
|
<!-- 监控模块 -->
|
||||||
<el-option label="Device Alarm" value="device"></el-option>
|
<el-option label="WARN" value="WARN"></el-option>
|
||||||
<!-- 设备报警 -->
|
<!-- 管理模块 -->
|
||||||
<el-option label="Network Alarm" value="network"></el-option>
|
<el-option label="ERROR" value="ERROR"></el-option>
|
||||||
<!-- 网络报警 -->
|
|
||||||
<el-option label="Security Alarm" value="security"></el-option>
|
|
||||||
<!-- 安全报警 -->
|
<!-- 安全报警 -->
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -35,16 +34,21 @@
|
|||||||
<el-form-item label="Alarm Module" prop="module">
|
<el-form-item label="Alarm Module" prop="module">
|
||||||
<!-- 报警模块 -->
|
<!-- 报警模块 -->
|
||||||
<el-select v-model="queryForm.module" placeholder="Please select alarm module" clearable>
|
<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="TRACK Alarm" value="TRACK"></el-option>
|
||||||
<!-- 管理模块 -->
|
<!-- 焊机报警 -->
|
||||||
<el-option label="Analysis Module" value="analysis"></el-option>
|
<el-option label="WELDER Alarm" value="WELDER"></el-option>
|
||||||
<!-- 分析模块 -->
|
<!-- 物料保存报警 -->
|
||||||
<el-option label="Storage Module" value="storage"></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-select>
|
||||||
|
|
||||||
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="Alarm Content" prop="logtext">
|
<el-form-item label="Alarm Content" prop="logtext">
|
||||||
|
|||||||
@@ -524,11 +524,13 @@ import FurCurrent from './components/FurCurrent.vue'
|
|||||||
// 基于后端 DeviceEnum 的前端映射(区域、来源、参数字段)
|
// 基于后端 DeviceEnum 的前端映射(区域、来源、参数字段)
|
||||||
const DEVICE_META = {
|
const DEVICE_META = {
|
||||||
POR1: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['tensionPorBr1', 'stripSpeed'] },
|
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'] },
|
WELDER: { sectionType: 'ENTRY', sourceType: 'ENTRY', paramFields: ['weldStatus'] },
|
||||||
ENL1: { sectionType: 'PROCESS', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
|
ENL1: { sectionType: 'PROCESS', sourceType: 'ENTRY', paramFields: ['celLength', 'celCapacity', 'tensionCel', 'celLengthMax', 'celLengthMin', 'bR4or5toBR6Tension'] },
|
||||||
ENL2: { 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'] },
|
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'] },
|
CLEAN: { sectionType: 'PROCESS', sourceType: 'FURNACE', paramFields: ['cleaningVoltage', 'cleaningCurrent'] },
|
||||||
FUR1: { sectionType: 'PROCESS', sourceType: 'FURNACE', paramFields: ['phfExitStripTemp'] },
|
FUR1: { sectionType: 'PROCESS', sourceType: 'FURNACE', paramFields: ['phfExitStripTemp'] },
|
||||||
@@ -551,6 +553,8 @@ const DEVICE_META = {
|
|||||||
|
|
||||||
CXL1: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['cxlLength', 'cxlCapacity', 'tensionCxl'] },
|
CXL1: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['cxlLength', 'cxlCapacity', 'tensionCxl'] },
|
||||||
CXL2: { 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'] },
|
TR: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: ['coilLength', 'speedExitSection', 'tensionBr9Tr'] },
|
||||||
EXC: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: [] },
|
EXC: { sectionType: 'EXIT', sourceType: 'EXIT', paramFields: [] },
|
||||||
WEIGHT: { 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)
|
// Parameter field labels (English with Chinese comments)
|
||||||
// 参数字段标签(英文显示,中文注释)
|
// 参数字段标签(英文显示,中文注释)
|
||||||
const PARAM_LABELS = {
|
const PARAM_LABELS = {
|
||||||
tensionPorBr1: 'Pay-off Tension 1#', // 开卷张力1#
|
tensionPorBr1: 'Pay-off Tension', // 开卷张力1#
|
||||||
tensionPorBr2: 'Pay-off Tension 2#', // 开卷张力2#
|
|
||||||
stripSpeed: 'Strip Speed', // 带钢速度
|
stripSpeed: 'Strip Speed', // 带钢速度
|
||||||
weldStatus: 'Welder Status', // 焊机状态
|
weldStatus: 'Welder Status', // 焊机状态
|
||||||
celLength: 'Entry Loop Position', // 入口活套位置
|
celLength: 'Entry Loop Position', // 入口活套位置
|
||||||
@@ -568,7 +571,12 @@ const PARAM_LABELS = {
|
|||||||
tensionCel: 'Entry Loop Tension', // 入口活套张力
|
tensionCel: 'Entry Loop Tension', // 入口活套张力
|
||||||
celLengthMax: 'Entry Loop Max Length', // 入口活套最大长度
|
celLengthMax: 'Entry Loop Max Length', // 入口活套最大长度
|
||||||
celLengthMin: 'Entry Loop Min 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', // 清洗电压
|
cleaningVoltage: 'Cleaning Voltage', // 清洗电压
|
||||||
cleaningCurrent: 'Cleaning Current', // 清洗电流
|
cleaningCurrent: 'Cleaning Current', // 清洗电流
|
||||||
// 别名字段(用于前端逻辑)
|
// 别名字段(用于前端逻辑)
|
||||||
@@ -598,9 +606,7 @@ const PARAM_LABELS = {
|
|||||||
tensionCxl: 'Exit Loop Tension', // 出口活套张力
|
tensionCxl: 'Exit Loop Tension', // 出口活套张力
|
||||||
coilLength: 'Coil Length', // 钢卷长度
|
coilLength: 'Coil Length', // 钢卷长度
|
||||||
speedExitSection: 'Exit Section Speed', // 出口段速度
|
speedExitSection: 'Exit Section Speed', // 出口段速度
|
||||||
tensionBr9Tr: 'BR9-TR Tension', // BR9-TR张力
|
tensionBr9Tr: 'Recoiler Tension', // 卷取机张力
|
||||||
tensionBr8Tm: 'BR8-TM Tension', // BR8-TM张力
|
|
||||||
tensionTmBr9: 'TM-BR9 Tension', // TM-BR9张力
|
|
||||||
tensionBr8Br9: 'BR8-BR9 Tension', // BR8-BR9张力
|
tensionBr8Br9: 'BR8-BR9 Tension', // BR8-BR9张力
|
||||||
tensionBr9toBr10Br11: 'BR9-BR10/11 Tension', // BR9到BR10/11张力
|
tensionBr9toBr10Br11: 'BR9-BR10/11 Tension', // BR9到BR10/11张力
|
||||||
tensionBr10Br11toBr12: 'BR10/11-BR12 Tension', // BR10/11到BR12张力
|
tensionBr10Br11toBr12: 'BR10/11-BR12 Tension', // BR10/11到BR12张力
|
||||||
@@ -853,9 +859,10 @@ export default {
|
|||||||
},
|
},
|
||||||
furnaceSectionMetrics() {
|
furnaceSectionMetrics() {
|
||||||
return this.buildSectionMetrics('FURNACE', [
|
return this.buildSectionMetrics('FURNACE', [
|
||||||
// 'cleaningVoltage', 'cleaningCurrent',
|
'bR4or5toBR6Tension',
|
||||||
|
// 'cleaningVoltage', 'cleaningCurrent',
|
||||||
'phfExitStripTemp', 'rtfExitStripTemp', 'jcsExitStripTemp', 'scsExitStripTemp'
|
'phfExitStripTemp', 'rtfExitStripTemp', 'jcsExitStripTemp', 'scsExitStripTemp'
|
||||||
|
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
coatSectionMetrics() {
|
coatSectionMetrics() {
|
||||||
@@ -869,7 +876,12 @@ export default {
|
|||||||
},
|
},
|
||||||
// 入口段设备列表(依据 DeviceEnum.sectionType)
|
// 入口段设备列表(依据 DeviceEnum.sectionType)
|
||||||
entryDevicesList() {
|
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)
|
// 熔炉段设备列表(PROCESS 且来源 FURNACE)
|
||||||
furnaceDevicesList() {
|
furnaceDevicesList() {
|
||||||
@@ -882,7 +894,17 @@ export default {
|
|||||||
// 出口段设备列表(EXIT,常规设备)
|
// 出口段设备列表(EXIT,常规设备)
|
||||||
exitDevicesList() {
|
exitDevicesList() {
|
||||||
const exitDevices = this.getDevicesBySection('EXIT')
|
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() {
|
exitOtherDevicesList() {
|
||||||
@@ -988,7 +1010,6 @@ export default {
|
|||||||
celCapacity: '%',
|
celCapacity: '%',
|
||||||
cxlCapacity: '%',
|
cxlCapacity: '%',
|
||||||
tensionPorBr1: 'daN',
|
tensionPorBr1: 'daN',
|
||||||
tensionPorBr2: 'daN',
|
|
||||||
tensionBr5Tm: 'daN',
|
tensionBr5Tm: 'daN',
|
||||||
tensionTlBr7: 'daN',
|
tensionTlBr7: 'daN',
|
||||||
tensionCxl: 'daN',
|
tensionCxl: 'daN',
|
||||||
@@ -1029,8 +1050,10 @@ export default {
|
|||||||
return null
|
return null
|
||||||
},
|
},
|
||||||
buildSectionMetrics(sectionType, fields) {
|
buildSectionMetrics(sectionType, fields) {
|
||||||
const source = this.getSectionSource(sectionType)
|
const sectionSource = this.getSectionSource(sectionType)
|
||||||
return fields.map(f => {
|
return fields.map(f => {
|
||||||
|
// bR4or5toBR6Tension 在 entry 测量对象里,但需要展示在退火炉段
|
||||||
|
const source = f === 'bR4or5toBR6Tension' ? this.realtimeData.entry : sectionSource
|
||||||
const raw = source ? this.getFieldValueWithAlias(source, f) : null
|
const raw = source ? this.getFieldValueWithAlias(source, f) : null
|
||||||
const unit = this.getFieldUnit(f)
|
const unit = this.getFieldUnit(f)
|
||||||
return {
|
return {
|
||||||
@@ -1040,6 +1063,8 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
matchReel(deviceId) {
|
matchReel(deviceId) {
|
||||||
|
if (deviceId === 'ENL') deviceId = 'ENL1'
|
||||||
|
if (deviceId === 'CXL') deviceId = 'CXL1'
|
||||||
if (!['POR1', 'POR2', 'ENL1', 'ENL2', 'CXL1', 'CXL2'].includes(deviceId)) return true
|
if (!['POR1', 'POR2', 'ENL1', 'ENL2', 'CXL1', 'CXL2'].includes(deviceId)) return true
|
||||||
if (!this.realtimeData.entry) return false
|
if (!this.realtimeData.entry) return false
|
||||||
const reel = this.realtimeData.entry.payOffReelNumber
|
const reel = this.realtimeData.entry.payOffReelNumber
|
||||||
@@ -1542,6 +1567,12 @@ export default {
|
|||||||
|
|
||||||
// 根据设备ID获取设备信息
|
// 根据设备ID获取设备信息
|
||||||
getDeviceInfo(deviceId) {
|
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)
|
return this.matMapList.find(item => item.positionNameEn === deviceId)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user