feat: 新增酸轧系统实时跟踪和实绩功能

- 添加实时跟踪页面,支持查询Gauge和Shape数据
- 新增实绩页面,展示钢卷生产数据和工艺图表
- 优化钢卷追踪结果展示,增加创建步骤卷号显示
- 调整酸轧系统菜单结构,新增"实绩"和"实时"选项
- 扩展工艺图表展示,增加开卷机、温度等参数
- 修改计划列表分页大小为10
- 移除无用代码和注释
This commit is contained in:
2026-04-29 10:40:16 +08:00
parent 5a56094e4f
commit 73c461f0e4
10 changed files with 762 additions and 59 deletions

View File

@@ -62,33 +62,33 @@
{value: '1988150380649967617', label: '镀锌分条成品'},
{value: '1988151027466170370', label: '拉矫分条成品'},
],
'酸轧修复工序': [
{value: '1988150044862377986', label: '酸连轧原料库'},
{value: '1988150099140866050', label: '酸连轧成品库'},
{value: '1988150263284953089', label: '镀锌原料库'},
{value: '1988150545175736322', label: '脱脂原料库'},
],
'镀锌修复工序': [
{value: '1988150263284953089', label: '镀锌原料库'},
{value: '1988150323162836993', label: '镀锌成品库'},
{value: '1988150487185289217', label: '镀锌纵剪分条原料库'},
],
'脱脂修复工序': [
{value: '1988150545175736322', label: '脱脂原料库'},
{value: '1988150586938421250', label: '脱脂成品库'},
],
'拉矫修复工序': [
{value: '1988150854442741762', label: '拉矫原料库'},
{value: '1988150915591499777', label: '拉矫成品库'},
],
'双机架修复工序': [
{value: '1992873386047643650', label: '双机架原料库'},
{value: '1992873437713080322', label: '双机架成品库'},
],
'镀铬修复工序': [
{value: '1988151076996706306', label: '镀铬原料库'},
{value: '1988151132361519105', label: '镀铬成品库'},
],
// '酸轧修复工序': [
// {value: '1988150044862377986', label: '酸连轧原料库'},
// {value: '1988150099140866050', label: '酸连轧成品库'},
// {value: '1988150263284953089', label: '镀锌原料库'},
// {value: '1988150545175736322', label: '脱脂原料库'},
// ],
// '镀锌修复工序': [
// {value: '1988150263284953089', label: '镀锌原料库'},
// {value: '1988150323162836993', label: '镀锌成品库'},
// {value: '1988150487185289217', label: '镀锌纵剪分条原料库'},
// ],
// '脱脂修复工序': [
// {value: '1988150545175736322', label: '脱脂原料库'},
// {value: '1988150586938421250', label: '脱脂成品库'},
// ],
// '拉矫修复工序': [
// {value: '1988150854442741762', label: '拉矫原料库'},
// {value: '1988150915591499777', label: '拉矫成品库'},
// ],
// '双机架修复工序': [
// {value: '1992873386047643650', label: '双机架原料库'},
// {value: '1992873437713080322', label: '双机架成品库'},
// ],
// '镀铬修复工序': [
// {value: '1988151076996706306', label: '镀铬原料库'},
// {value: '1988151132361519105', label: '镀铬成品库'},
// ],
}
if (

View File

@@ -741,6 +741,12 @@
<div ref="chartSpeed" class="chart-box" />
<div ref="chartMillSpeed" class="chart-box" />
<div ref="chartTension" class="chart-box" />
<div ref="chartPorSpeed" class="chart-box" />
<div ref="chartPorTens" class="chart-box" />
<div ref="chartTrim" class="chart-box" />
<div ref="chartTemp" class="chart-box" />
<div ref="chartMesh" class="chart-box" />
<div ref="chartElong" class="chart-box" />
</div>
<el-empty v-else-if="!perfLoading" description="暂无生产工艺数据" :image-size="56" style="margin-top: 24px" />
</div>
@@ -1223,8 +1229,11 @@ export default {
const c2 = echarts.init(this.$refs.chartMillSpeed);
c2.setOption(this.baseOption(
'轧机出口速度 (m/min)', xData,
[this.makeLine('millexitspeed', pick('millexitspeed'))],
'轧机速度 (m/min)', xData,
[
this.makeLine('入口速度 millentryspeed', pick('millentryspeed')),
this.makeLine('出口速度 millexitspeed', pick('millexitspeed'))
],
'm/min'
));
@@ -1239,7 +1248,88 @@ export default {
'N'
));
this.chartInstances = [c1, c2, c3];
let c4, c5, c6, c7, c8, c9;
if (this.$refs.chartPorSpeed) {
c4 = echarts.init(this.$refs.chartPorSpeed);
c4.setOption(this.baseOption(
'开卷机速度 (m/min)', xData,
[
this.makeLine('开卷速度 porspeed', pick('porspeed')),
this.makeLine('最大 porspeedmax', pick('porspeedmax')),
this.makeLine('最小 porspeedmin', pick('porspeedmin'))
],
'm/min'
));
}
if (this.$refs.chartPorTens) {
c5 = echarts.init(this.$refs.chartPorTens);
c5.setOption(this.baseOption(
'开卷机张力 (N)', xData,
[
this.makeLine('开卷张力 portens', pick('portens')),
this.makeLine('最大 portensmax', pick('portensmax')),
this.makeLine('最小 portensmin', pick('portensmin'))
],
'N'
));
}
if (this.$refs.chartTrim) {
c6 = echarts.init(this.$refs.chartTrim);
c6.setOption(this.baseOption(
'剪切参数', xData,
[
this.makeLine('剪切张力 trimtens', pick('trimtens')),
this.makeLine('剪切宽度 trimwidth', pick('trimwidth')),
this.makeLine('trtens', pick('trtens'))
],
''
));
}
if (this.$refs.chartTemp) {
c7 = echarts.init(this.$refs.chartTemp);
c7.setOption(this.baseOption(
'温度趋势 (℃)', xData,
[
this.makeLine('1号测温 tk1temp', pick('tk1temp')),
this.makeLine('2号测温 tk2temp', pick('tk2temp')),
this.makeLine('3号测温 tk3temp', pick('tk3temp')),
this.makeLine('4号测温 tk4temp', pick('tk4temp')),
this.makeLine('漂洗温度 rinsetemp', pick('rinsetemp'))
],
'℃'
));
}
if (this.$refs.chartMesh) {
c8 = echarts.init(this.$refs.chartMesh);
c8.setOption(this.baseOption(
'网纹辊参数', xData,
[
this.makeLine('网纹辊1 tlmesh1', pick('tlmesh1')),
this.makeLine('网纹辊2 tlmesh2', pick('tlmesh2')),
this.makeLine('网纹辊3 tlmesh3', pick('tlmesh3'))
],
''
));
}
if (this.$refs.chartElong) {
c9 = echarts.init(this.$refs.chartElong);
c9.setOption(this.baseOption(
'延伸率', xData,
[
this.makeLine('延伸率 tlelong', pick('tlelong')),
this.makeLine('总张力 tltens', pick('tltens')),
this.makeLine('teltens', pick('teltens'))
],
''
));
}
this.chartInstances = [c1, c2, c3, c4, c5, c6, c7, c8, c9].filter(c => c);
this.resizeHandler = () => this.chartInstances.forEach(c => { if (c) c.resize(); });
window.addEventListener('resize', this.resizeHandler);
},

View File

@@ -27,6 +27,12 @@
<el-col :span="16" class="detail-value">{{ step.time }}</el-col>
</el-row>
<!-- 新增步骤专属显示卷号 -->
<el-row class="detail-row" v-if="step.action === '创建'">
<el-col :span="8" class="detail-label">卷号</el-col>
<el-col :span="16" class="detail-value">{{ step.original.current_coil_no }}</el-col>
</el-row>
<!-- 旧钢卷关键信息操作前- 新增优化展示核心字段hover弹窗更多信息 -->
<el-row class="detail-row" v-if="step.oldCoilInfoList && step.oldCoilInfoList.length">
<el-col :span="8" class="detail-label">操作前钢卷</el-col>

View File

@@ -162,8 +162,6 @@ const DICT_SPEC_TYPE = 'wms_process_spec_type'
const DICT_LINE = 'wms_process_spec_line'
const DEFAULT_SPEC_TYPES = [
{ dictLabel: '工艺规程', dictValue: 'PROCESS', dictSort: 10 },
{ dictLabel: '标准', dictValue: 'STANDARD', dictSort: 20 }
]
export default {
@@ -303,19 +301,19 @@ export default {
}
let tableLines = []
try {
const res = await listProductionLine({ pageNum: 1, pageSize: 500 })
tableLines = (res.rows || []).map(p => {
const idStr = this.normalizeLineIdString(p.lineId) || (p.lineId != null ? String(p.lineId).trim() : '')
return {
lineId: idStr,
lineName: p.lineName,
lineCode: p.lineCode
}
}).filter(p => p.lineId)
} catch (e2) {
console.error('产线列表加载失败', e2)
}
// try {
// const res = await listProductionLine({ pageNum: 1, pageSize: 500 })
// tableLines = (res.rows || []).map(p => {
// const idStr = this.normalizeLineIdString(p.lineId) || (p.lineId != null ? String(p.lineId).trim() : '')
// return {
// lineId: idStr,
// lineName: p.lineName,
// lineCode: p.lineCode
// }
// }).filter(p => p.lineId)
// } catch (e2) {
// console.error('产线列表加载失败', e2)
// }
const tableIdSet = new Set(tableLines.map(l => String(l.lineId)))
const next = []