feat: 将界面文本从英文翻译为中文

This commit is contained in:
砂糖
2026-01-07 11:07:16 +08:00
parent 2045fd9c43
commit 0c943c8500

View File

@@ -1,11 +1,11 @@
<template> <template>
<div class="track-container"> <div class="track-container">
<!-- Set Values Floating Panel / 设定值悬浮窗 --> <!-- Set Values Floating Panel / 设定值悬浮窗 -->
<FloatingPanel ref="setValuesPanel" title="Set Values" width="720px" storageKey="TRACK_SET_VALUES"> <FloatingPanel ref="setValuesPanel" title="设定值" width="720px" storageKey="TRACK_SET_VALUES">
<LatestSetValues :driveData="setupValue.drive" :furnaceData="setupValue.furnace" /> <LatestSetValues :driveData="setupValue.drive" :furnaceData="setupValue.furnace" />
</FloatingPanel> </FloatingPanel>
<FloatingPanel ref="furCurrentPanel" title="Furnace Current" width="400px" storageKey="TRACK_FUR_CURRENT"> <FloatingPanel ref="furCurrentPanel" title="炉火实时参数" width="400px" storageKey="TRACK_FUR_CURRENT">
<FurCurrent :driveData="realtimeData.furnace" /> <FurCurrent :driveData="realtimeData.furnace" />
</FloatingPanel> </FloatingPanel>
<el-row :gutter="20"> <el-row :gutter="20">
@@ -14,7 +14,7 @@
<!-- Loading Status / 加载状态 --> <!-- Loading Status / 加载状态 -->
<div v-if="isLoading" class="loading-container"> <div v-if="isLoading" class="loading-container">
<el-icon class="is-loading"><i class="el-icon-loading"></i></el-icon> <el-icon class="is-loading"><i class="el-icon-loading"></i></el-icon>
<span>Loading...</span> <span>加载中...</span>
<!-- 加载中... --> <!-- 加载中... -->
</div> </div>
@@ -23,36 +23,36 @@
<!-- Left: status icons --> <!-- Left: status icons -->
<div class="ws-status-left"> <div class="ws-status-left">
<!-- Set Values Floating Window Trigger / 设定值悬浮窗触发按钮 --> <!-- Set Values Floating Window Trigger / 设定值悬浮窗触发按钮 -->
<el-tooltip content="Set Values" placement="top"> <el-tooltip content="设定值" placement="top">
<el-button type="text" class="ws-open-btn" @click="openSetValuesPanel"> <el-button type="text" class="ws-open-btn" @click="openSetValuesPanel">
<i class="el-icon-setting"></i> <i class="el-icon-setting"></i>
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="Measurement Data" placement="top"> <el-tooltip content="测量数据" placement="top">
<!-- 测量数据 --> <!-- 测量数据 -->
<el-badge :is-dot="true" :type="socketStatus.measure ? 'success' : 'danger'"> <el-badge :is-dot="true" :type="socketStatus.measure ? 'success' : 'danger'">
<i class="el-icon-data-analysis"></i> <i class="el-icon-data-analysis"></i>
</el-badge> </el-badge>
</el-tooltip> </el-tooltip>
<el-tooltip content="Position Tracking" placement="top"> <el-tooltip content="位置追踪" placement="top">
<!-- 位置追踪 --> <!-- 位置追踪 -->
<el-badge :is-dot="true" :type="socketStatus.position ? 'success' : 'danger'"> <el-badge :is-dot="true" :type="socketStatus.position ? 'success' : 'danger'">
<i class="el-icon-location"></i> <i class="el-icon-location"></i>
</el-badge> </el-badge>
</el-tooltip> </el-tooltip>
<el-tooltip content="Operation Signal" placement="top"> <el-tooltip content="操作信号" placement="top">
<!-- 操作信号 --> <!-- 操作信号 -->
<el-badge :is-dot="true" :type="socketStatus.signal ? 'success' : 'danger'"> <el-badge :is-dot="true" :type="socketStatus.signal ? 'success' : 'danger'">
<i class="el-icon-bell"></i> <i class="el-icon-bell"></i>
</el-badge> </el-badge>
</el-tooltip> </el-tooltip>
<el-tooltip content="Material Mapping" placement="top"> <el-tooltip content="物料映射" placement="top">
<!-- 物料映射 --> <!-- 物料映射 -->
<el-badge :is-dot="true" :type="socketStatus.matmap ? 'success' : 'danger'"> <el-badge :is-dot="true" :type="socketStatus.matmap ? 'success' : 'danger'">
<i class="el-icon-map-location"></i> <i class="el-icon-map-location"></i>
</el-badge> </el-badge>
</el-tooltip> </el-tooltip>
<el-tooltip content="Calculation Result" placement="top"> <el-tooltip content="计算结果" placement="top">
<!-- 计算结果 --> <!-- 计算结果 -->
<el-badge :is-dot="true" :type="socketStatus.calcSetup ? 'success' : 'danger'"> <el-badge :is-dot="true" :type="socketStatus.calcSetup ? 'success' : 'danger'">
<i class="el-icon-s-marketing"></i> <i class="el-icon-s-marketing"></i>
@@ -62,8 +62,8 @@
<!-- Right: quick links --> <!-- Right: quick links -->
<div class="ws-status-right"> <div class="ws-status-right">
<el-button type="primary" size="small" @click="$router.push('/furnace')">Furnace Setup</el-button> <el-button type="primary" size="small" @click="$router.push('/furnace')">炉火设置</el-button>
<el-button type="primary" size="small" @click="$router.push('/drive')">Drive Setup</el-button> <el-button type="primary" size="small" @click="$router.push('/drive')">传动设置</el-button>
</div> </div>
</div> </div>
@@ -71,9 +71,9 @@
<!-- Entry Section / 入口段区域 --> <!-- Entry Section / 入口段区域 -->
<div class="section-area entry-area"> <div class="section-area entry-area">
<div class="section-header"> <div class="section-header">
Entry Section 入口段
<!-- 入口段 --> <!-- 入口段 -->
<span class="section-info" v-if="positionData.entrySpeed">Speed: {{ positionData.entrySpeed.toFixed(1) }} m/min</span> <span class="section-info" v-if="positionData.entrySpeed">速度: {{ positionData.entrySpeed.toFixed(1) }} m/min</span>
<!-- 速度 --> <!-- 速度 -->
</div> </div>
<div class="section-summary" v-if="entrySectionMetrics.length"> <div class="section-summary" v-if="entrySectionMetrics.length">
@@ -101,14 +101,14 @@
<!-- Furnace Section / 熔炉段区域 --> <!-- Furnace Section / 熔炉段区域 -->
<div class="section-area furnace-area"> <div class="section-area furnace-area">
<div class="section-header"> <div class="section-header">
Furnace Section 熔炉段
<!-- 熔炉段 --> <!-- 熔炉段 -->
<span class="section-info" v-if="positionData.technologySpeed">Speed: {{ positionData.technologySpeed.toFixed(1) }} m/min</span> <span class="section-info" v-if="positionData.technologySpeed">速度: {{ positionData.technologySpeed.toFixed(1) }} m/min</span>
<!-- 速度 --> <!-- 速度 -->
<!-- 展开 --> <!-- 展开 -->
<el-button type="text" size="small" @click="openFurCurrentPanel"> <el-button type="text" size="small" @click="openFurCurrentPanel">
<i class="el-icon-paperclip"></i> <i class="el-icon-paperclip"></i>
more 更多
</el-button> </el-button>
</div> </div>
<div class="section-summary" v-if="furnaceSectionMetrics.length"> <div class="section-summary" v-if="furnaceSectionMetrics.length">
@@ -135,8 +135,12 @@
<!-- Coating Section / 涂层段区域 --> <!-- Coating Section / 涂层段区域 -->
<div class="section-area coat-area"> <div class="section-area coat-area">
<div class="section-header">Coating Section</div> <div class="section-header">
涂层段
<!-- 涂层段 --> <!-- 涂层段 -->
<span class="section-info" v-if="positionData.coatSpeed">速度: {{ positionData.coatSpeed.toFixed(1) }} m/min</span>
<!-- 速度 -->
</div>
<div class="section-summary" v-if="coatSectionMetrics.length"> <div class="section-summary" v-if="coatSectionMetrics.length">
<div class="summary-item" v-for="item in coatSectionMetrics" :key="item.label"> <div class="summary-item" v-for="item in coatSectionMetrics" :key="item.label">
<span class="summary-label">{{ item.label }}</span> <span class="summary-label">{{ item.label }}</span>
@@ -162,9 +166,9 @@
<!-- Exit Section / 出口段区域 --> <!-- Exit Section / 出口段区域 -->
<div class="section-area exit-area"> <div class="section-area exit-area">
<div class="section-header"> <div class="section-header">
Exit Section 出口段
<!-- 出口段 --> <!-- 出口段 -->
<span class="section-info" v-if="positionData.exitSpeed">Speed: {{ positionData.exitSpeed.toFixed(1) }} m/min</span> <span class="section-info" v-if="positionData.exitSpeed">速度: {{ positionData.exitSpeed.toFixed(1) }} m/min</span>
<!-- 速度 --> <!-- 速度 -->
</div> </div>
<div class="section-summary" v-if="exitSectionMetrics.length"> <div class="section-summary" v-if="exitSectionMetrics.length">
@@ -191,8 +195,10 @@
<!-- Other Section / 其他段区域 --> <!-- Other Section / 其他段区域 -->
<div class="section-area" v-if="exitOtherDevicesList.length"> <div class="section-area" v-if="exitOtherDevicesList.length">
<div class="section-header">Other Section</div> <div class="section-header">
其他段
<!-- 其他段 --> <!-- 其他段 -->
</div>
<div class="device-grid other-exit-grid"> <div class="device-grid other-exit-grid">
<div v-for="device in exitOtherDevicesList" :key="device.positionNameEn" class="device-card" :class="{ <div v-for="device in exitOtherDevicesList" :key="device.positionNameEn" class="device-card" :class="{
active: selectedCard && selectedCard.positionNameEn === device.positionNameEn, active: selectedCard && selectedCard.positionNameEn === device.positionNameEn,
@@ -217,7 +223,7 @@
<!-- Production Plan List / 生产计划列表 --> <!-- Production Plan List / 生产计划列表 -->
<div class="panel"> <div class="panel">
<div class="panel-title"> <div class="panel-title">
<i class="el-icon-s-order"></i> Production Plan <i class="el-icon-s-order"></i> 生产计划
<!-- 生产计划 --> <!-- 生产计划 -->
</div> </div>
<div class="plan-list-vertical"> <div class="plan-list-vertical">
@@ -234,18 +240,18 @@
<div class="plan-item-top"> <div class="plan-item-top">
<div class="plan-order-dot" :class="getPlanOrderClass(plan.status)">{{ index + 1 }}</div> <div class="plan-order-dot" :class="getPlanOrderClass(plan.status)">{{ index + 1 }}</div>
<div class="plan-title-text"> <div class="plan-title-text">
<div class="plan-id">Plan ID: {{ plan.planid || '-' }}</div> <div class="plan-id">计划号: {{ plan.planid || '-' }}</div>
<!-- 计划ID --> <!-- 计划ID -->
<div class="plan-coil">Coil ID: {{ plan.coilid || '-' }}</div> <div class="plan-coil">钢卷号: {{ plan.coilid || '-' }}</div>
<!-- 钢卷号 --> <!-- 钢卷号 -->
</div> </div>
<el-tag :type="getPlanStatusTagType(plan.status)" size="mini">{{ getPlanStatusText(plan.status) }}</el-tag> <el-tag :type="getPlanStatusTagType(plan.status)" size="mini">{{ getPlanStatusText(plan.status) }}</el-tag>
</div> </div>
<div class="plan-item-bottom"> <div class="plan-item-bottom">
<span>Steel Grade: {{ plan.steelGrade || '-' }}</span> <span>钢种: {{ plan.steelGrade || '-' }}</span>
<!-- 钢种 --> <!-- 钢种 -->
<span>Sequence: {{ plan.seqid || '-' }}</span> <span>顺序号: {{ plan.seqid || '-' }}</span>
<!-- 顺序 --> <!-- 顺序 -->
</div> </div>
</div> </div>
</div> </div>
@@ -265,7 +271,7 @@
<i class="el-icon-location"></i> <i class="el-icon-location"></i>
</div> </div>
<div class="position-info"> <div class="position-info">
<div class="position-label">Current Position</div> <div class="position-label">当前位置</div>
<!-- 当前位置 --> <!-- 当前位置 -->
<div class="position-name">{{ selectedPlanPosition.positionNameCn }}</div> <div class="position-name">{{ selectedPlanPosition.positionNameCn }}</div>
<div class="position-code">{{ selectedPlanPosition.positionNameEn }}</div> <div class="position-code">{{ selectedPlanPosition.positionNameEn }}</div>
@@ -273,41 +279,41 @@
</div> </div>
<el-descriptions :column="1" border size="small"> <el-descriptions :column="1" border size="small">
<el-descriptions-item label="Plan ID">{{ selectedPlan.planid || '-' }}</el-descriptions-item> <el-descriptions-item label="计划号">{{ selectedPlan.planid || '-' }}</el-descriptions-item>
<!-- 计划ID --> <!-- 计划ID -->
<el-descriptions-item label="Coil ID">{{ selectedPlan.coilid || '-' }}</el-descriptions-item> <el-descriptions-item label="钢卷号">{{ selectedPlan.coilid || '-' }}</el-descriptions-item>
<!-- 钢卷号 --> <!-- 钢卷号 -->
<el-descriptions-item label="Sequence">{{ selectedPlan.seqid || '-' }}</el-descriptions-item> <el-descriptions-item label="顺序号">{{ selectedPlan.seqid || '-' }}</el-descriptions-item>
<!-- 顺序号 --> <!-- 顺序号 -->
<el-descriptions-item label="Status"> <el-descriptions-item label="状态">
<!-- 状态 --> <!-- 状态 -->
<el-tag :type="getPlanStatusTagType(selectedPlan.status)" size="small" effect="dark"> <el-tag :type="getPlanStatusTagType(selectedPlan.status)" size="small" effect="dark">
{{ getPlanStatusText(selectedPlan.status) }} {{ getPlanStatusText(selectedPlan.status) }}
</el-tag> </el-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Steel Grade">{{ selectedPlan.steelGrade || '-' }}</el-descriptions-item> <el-descriptions-item label="钢种">{{ selectedPlan.steelGrade || '-' }}</el-descriptions-item>
<!-- 钢种 --> <!-- 钢种 -->
<el-descriptions-item label="Entry Thickness"> <el-descriptions-item label="入口厚度">
<!-- 入口厚度 --> <!-- 入口厚度 -->
{{ selectedPlan.entryThick ? selectedPlan.entryThick + ' mm' : '-' }} {{ selectedPlan.entryThick ? selectedPlan.entryThick + ' mm' : '-' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Entry Width"> <el-descriptions-item label="入口宽度">
<!-- 入口宽度 --> <!-- 入口宽度 -->
{{ selectedPlan.entryWidth ? selectedPlan.entryWidth + ' mm' : '-' }} {{ selectedPlan.entryWidth ? selectedPlan.entryWidth + ' mm' : '-' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Entry Weight"> <el-descriptions-item label="入口重量">
<!-- 入口重量 --> <!-- 入口重量 -->
{{ selectedPlan.entryWeight ? selectedPlan.entryWeight + ' t' : '-' }} {{ selectedPlan.entryWeight ? selectedPlan.entryWeight + ' t' : '-' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Entry Length"> <el-descriptions-item label="入口长度">
<!-- 入口长度 --> <!-- 入口长度 -->
{{ selectedPlan.entryLength ? selectedPlan.entryLength + ' mm' : '-' }} {{ selectedPlan.entryLength ? selectedPlan.entryLength + ' mm' : '-' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Order No">{{ selectedPlan.orderNo || '-' }}</el-descriptions-item> <el-descriptions-item label="订单号">{{ selectedPlan.orderNo || '-' }}</el-descriptions-item>
<!-- 订单号 --> <!-- 订单号 -->
<el-descriptions-item label="Unit Code">{{ selectedPlan.unitCode || '-' }}</el-descriptions-item> <el-descriptions-item label="机组号">{{ selectedPlan.unitCode || '-' }}</el-descriptions-item>
<!-- 机组号 --> <!-- 机组号 -->
<el-descriptions-item label="Plan Type">{{ selectedPlan.planType || '-' }}</el-descriptions-item> <el-descriptions-item label="计划类型">{{ selectedPlan.planType || '-' }}</el-descriptions-item>
<!-- 计划类型 --> <!-- 计划类型 -->
</el-descriptions> </el-descriptions>
@@ -316,15 +322,15 @@
<div class="info-subtitle">Time Information</div> <div class="info-subtitle">Time Information</div>
<!-- 时间信息 --> <!-- 时间信息 -->
<el-descriptions :column="1" border size="small"> <el-descriptions :column="1" border size="small">
<el-descriptions-item label="Online Time" v-if="selectedPlan.onlineDate"> <el-descriptions-item label="上线时间" v-if="selectedPlan.onlineDate">
<!-- 上线时间 --> <!-- 上线时间 -->
{{ formatDateTime(selectedPlan.onlineDate) }} {{ formatDateTime(selectedPlan.onlineDate) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Start Time" v-if="selectedPlan.startDate"> <el-descriptions-item label="开始时间" v-if="selectedPlan.startDate">
<!-- 开始时间 --> <!-- 开始时间 -->
{{ formatDateTime(selectedPlan.startDate) }} {{ formatDateTime(selectedPlan.startDate) }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="End Time" v-if="selectedPlan.endDate"> <el-descriptions-item label="结束时间" v-if="selectedPlan.endDate">
<!-- 结束时间 --> <!-- 结束时间 -->
{{ formatDateTime(selectedPlan.endDate) }} {{ formatDateTime(selectedPlan.endDate) }}
</el-descriptions-item> </el-descriptions-item>
@@ -351,26 +357,26 @@
<!-- {{ signalData.autoFlag === 1 ? '手动操作' : '自动操作' }} --> <!-- {{ signalData.autoFlag === 1 ? '手动操作' : '自动操作' }} -->
</el-tag> </el-tag>
<div class="signal-detail"> <div class="signal-detail">
<div><strong>Operation Type:</strong> <div><strong>操作类型:</strong>
<!-- 操作类型 --> <!-- 操作类型 -->
<span :class="getOperationTextClass(signalData.operation)"> <span :class="getOperationTextClass(signalData.operation)">
{{ getOperationText(signalData.operation) }} {{ getOperationText(signalData.operation) }}
</span> </span>
</div> </div>
<div><strong>Coil ID:</strong> {{ producingCoilId || signalData.entryMatId || '-' }}</div> <div><strong>钢卷号:</strong> {{ producingCoilId || signalData.entryMatId || '-' }}</div>
<!-- 钢卷号 --> <!-- 钢卷号 -->
<div><strong>Plan ID:</strong> {{ signalData.planId || '-' }}</div> <div><strong>计划ID:</strong> {{ signalData.planId || '-' }}</div>
<!-- 计划ID --> <!-- 计划ID -->
<div v-if="signalData.porIdx !== null && signalData.porIdx !== undefined"> <div v-if="signalData.porIdx !== null && signalData.porIdx !== undefined">
<strong>Pay-off Reel:</strong> {{ signalData.porIdx }} <strong>开卷机:</strong> {{ signalData.porIdx }}
<!-- 开卷机 --> <!-- 开卷机 -->
</div> </div>
<div v-if="signalData.trIdx !== null && signalData.trIdx !== undefined"> <div v-if="signalData.trIdx !== null && signalData.trIdx !== undefined">
<strong>Take-up Reel:</strong> {{ signalData.trIdx }} <strong>卷取机:</strong> {{ signalData.trIdx }}
<!-- 卷取机 --> <!-- 卷取机 -->
</div> </div>
<div v-if="signalData.virtualPlanFlag"> <div v-if="signalData.virtualPlanFlag">
<el-tag type="danger" size="mini">Virtual Coil</el-tag> <el-tag type="danger" size="mini">虚拟卷</el-tag>
<!-- 虚拟卷 --> <!-- 虚拟卷 -->
</div> </div>
</div> </div>
@@ -378,50 +384,50 @@
</div> </div>
<!-- Operation Buttons / 操作按钮 --> <!-- Operation Buttons / 操作按钮 -->
<div class="panel"> <div class="panel">
<div class="panel-title">Operations</div> <div class="panel-title">操作按钮</div>
<!-- 操作 --> <!-- 操作 -->
<div class="btn-list"> <div class="btn-list">
<el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'ONLINE')">Coil Online</el-button> <el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'ONLINE')">钢卷上线</el-button>
<!-- 钢卷上线 --> <!-- 钢卷上线 -->
<el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'UNLOAD')">Manual Unload</el-button> <el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'UNLOAD')">手动卸卷</el-button>
<!-- 手动卸卷 --> <!-- 手动卸卷 -->
<el-button class="action-btn" size="small" <el-button class="action-btn" size="small"
@click="handleOperate(selectedCard, 'ALL_RETURN')">Full Return</el-button> @click="handleOperate(selectedCard, 'ALL_RETURN')">整卷回退</el-button>
<!-- 整卷回退 --> <!-- 整卷回退 -->
<el-button class="action-btn" size="small" <el-button class="action-btn" size="small"
@click="handleOperate(selectedCard, 'HALF_RETURN')">Half Return</el-button> @click="handleOperate(selectedCard, 'HALF_RETURN')">半卷回退</el-button>
<!-- 半卷回退 --> <!-- 半卷回退 -->
<el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'BLOCK')">Unload & Block</el-button> <el-button class="action-btn" size="small" @click="handleOperate(selectedCard, 'BLOCK')">卸卷并封闭</el-button>
<!-- 卸卷并封闭 --> <!-- 卸卷并封闭 -->
</div> </div>
</div> </div>
<!-- Device Basic Info / 设备基本信息 --> <!-- Device Basic Info / 设备基本信息 -->
<div class="panel" v-if="selectedCard"> <div class="panel" v-if="selectedCard">
<div class="panel-title">Basic Info</div> <div class="panel-title">设备基本信息</div>
<!-- 基本信息 --> <!-- 基本信息 -->
<table class="info-table"> <table class="info-table">
<tr> <tr>
<td>Position Name</td> <td>位置名称</td>
<!-- 位置名称 --> <!-- 位置名称 -->
<td>{{ selectedCard.positionNameCn || '-' }}</td> <td>{{ selectedCard.positionNameCn || '-' }}</td>
</tr> </tr>
<tr> <tr>
<td>Position Code</td> <td>位置代号</td>
<!-- 位置代号 --> <!-- 位置代号 -->
<td>{{ selectedCard.positionNameEn || '-' }}</td> <td>{{ selectedCard.positionNameEn || '-' }}</td>
</tr> </tr>
<tr> <tr>
<td>Coil ID</td> <td>钢卷号</td>
<!-- 钢卷号 --> <!-- 钢卷号 -->
<td>{{ selectedCard.matId || '-' }}</td> <td>{{ selectedCard.matId || '-' }}</td>
</tr> </tr>
<tr> <tr>
<td>Plan ID</td> <td>计划ID</td>
<!-- 计划ID --> <!-- 计划ID -->
<td>{{ selectedCard.planId || '-' }}</td> <td>{{ selectedCard.planId || '-' }}</td>
</tr> </tr>
<tr> <tr>
<td>Plan No</td> <td>计划号</td>
<!-- 计划号 --> <!-- 计划号 -->
<td>{{ selectedCard.planNo || '-' }}</td> <td>{{ selectedCard.planNo || '-' }}</td>
</tr> </tr>
@@ -434,17 +440,17 @@
<!-- Adjustment Tool: Select two positions with two dropdowns / 调整工具选择两个位置两个下拉选分别双向绑定 --> <!-- Adjustment Tool: Select two positions with two dropdowns / 调整工具选择两个位置两个下拉选分别双向绑定 -->
<el-form :model="adjustForm" ref="adjustForm" label-width="80px"> <el-form :model="adjustForm" ref="adjustForm" label-width="80px">
<el-form-item label="Current Position" prop="current"> <el-form-item label="当前位置" prop="current">
<!-- 当前位置 --> <!-- 当前位置 -->
<el-select v-model="adjustForm.current" placeholder="Please select current position"> <el-select v-model="adjustForm.current" placeholder="请选择当前位置">
<!-- 请选择当前位置 --> <!-- 请选择当前位置 -->
<el-option v-for="item in matMapList" :key="item.positionNameEn" :label="item.positionNameCn" <el-option v-for="item in matMapList" :key="item.positionNameEn" :label="item.positionNameCn"
:value="item.positionNameEn"></el-option> :value="item.positionNameEn"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="Target Position" prop="target"> <el-form-item label="目标位置" prop="target">
<!-- 目标位置 --> <!-- 目标位置 -->
<el-select v-model="adjustForm.target" placeholder="Please select target position"> <el-select v-model="adjustForm.target" placeholder="请选择目标位置">
<!-- 请选择目标位置 --> <!-- 请选择目标位置 -->
<el-option v-for="item in matMapList" :key="item.positionNameEn" :label="item.positionNameCn" <el-option v-for="item in matMapList" :key="item.positionNameEn" :label="item.positionNameCn"
:value="item.positionNameEn"></el-option> :value="item.positionNameEn"></el-option>
@@ -452,7 +458,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button type="primary" :disabled="!adjustForm.current || !adjustForm.target" <el-button type="primary" :disabled="!adjustForm.current || !adjustForm.target"
@click="handleConfirmAdjust">Confirm Adjustment</el-button> @click="handleConfirmAdjust">确认调整</el-button>
<!-- 确认调整 --> <!-- 确认调整 -->
</div> </div>
</div> </div>
@@ -462,15 +468,14 @@
<!-- Calculation Setup Result Dialog / 计算结果对话框 --> <!-- Calculation Setup Result Dialog / 计算结果对话框 -->
<el-dialog <el-dialog
title="Calculation Setup Result" title="计算结果"
:visible.sync="showCalcResultDialog" :visible.sync="showCalcResultDialog"
width="80%" width="80%"
v-if="calcSetupResult" v-if="calcSetupResult"
> >
<div class="calc-result-header"> <div class="calc-result-header">
<el-tag :type="calcSetupResult.flag ? 'success' : 'danger'"> <el-tag :type="calcSetupResult.flag ? 'success' : 'danger'">
{{ calcSetupResult.flag ? 'Calculation Success' : 'Calculation Failed' }} {{ calcSetupResult.flag ? '计算成功' : '计算失败' }}
<!-- {{ calcSetupResult.flag ? '计算成功' : '计算失败' }} -->
</el-tag> </el-tag>
<span>Key: {{ calcSetupResult.key }}</span> <span>Key: {{ calcSetupResult.key }}</span>
</div> </div>
@@ -481,76 +486,76 @@
stripe stripe
max-height="500" max-height="500"
> >
<el-table-column prop="passno" label="Pass No" width="80" fixed></el-table-column> <el-table-column prop="passno" label="道次号" width="80" fixed></el-table-column>
<!-- 道次号 --> <!-- 道次号 -->
<el-table-column prop="entryThick" label="Entry Thickness (mm)" width="120"></el-table-column> <el-table-column prop="entryThick" label="入口厚度 (mm)" width="120"></el-table-column>
<!-- 入口厚度 --> <!-- 入口厚度 -->
<el-table-column prop="exitThick" label="Exit Thickness (mm)" width="120"></el-table-column> <el-table-column prop="exitThick" label="出口厚度 (mm)" width="120"></el-table-column>
<!-- 出口厚度 --> <!-- 出口厚度 -->
<el-table-column prop="reduction" label="Reduction (%)" width="100"></el-table-column> <el-table-column prop="reduction" label="压下率 (%)" width="100"></el-table-column>
<!-- 压下率 --> <!-- 压下率 -->
<el-table-column prop="rollSpeed" label="Roll Speed" width="120"></el-table-column> <el-table-column prop="rollSpeed" label="轧制速度" width="120"></el-table-column>
<!-- 轧制速度 --> <!-- 轧制速度 -->
<el-table-column prop="rollForce" label="Roll Force (kN)" width="120"></el-table-column> <el-table-column prop="rollForce" label="轧制力 (kN)" width="120"></el-table-column>
<!-- 轧制力 --> <!-- 轧制力 -->
<el-table-column prop="entryTension" label="Entry Tension" width="120"></el-table-column> <el-table-column prop="entryTension" label="入口张力 (kN)" width="120"></el-table-column>
<!-- 入口张力 --> <!-- 入口张力 -->
<el-table-column prop="exitTension" label="Exit Tension" width="120"></el-table-column> <el-table-column prop="exitTension" label="出口张力 (kN)" width="120"></el-table-column>
<!-- 出口张力 --> <!-- 出口张力 -->
</el-table> </el-table>
<div v-else class="empty-msg">No calculation result data</div> <div v-else class="empty-msg">无计算结果数据</div>
<!-- 无计算结果数据 --> <!-- 无计算结果数据 -->
</el-dialog> </el-dialog>
<el-dialog :visible.sync="operateMatStatus" :title="getOperateTitle" width="50%"> <el-dialog :visible.sync="operateMatStatus" :title="getOperateTitle" width="50%">
<el-form :model="operateMatForm" :rules="operateRules" ref="operateForm" label-width="120px"> <el-form :model="operateMatForm" :rules="operateRules" ref="operateForm" label-width="120px">
<el-form-item label="Pay-off Reel No" prop="porIdx"> <el-form-item label="开卷机编号" prop="porIdx">
<!-- 开卷机编号 --> <!-- 开卷机编号 -->
<el-input v-model="operateMatForm.porIdx"></el-input> <el-input v-model="operateMatForm.porIdx"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Take-up Reel No" prop="trIdx"> <el-form-item label="卷取机编号" prop="trIdx">
<!-- 卷取机编号 --> <!-- 卷取机编号 -->
<el-input v-model="operateMatForm.trIdx"></el-input> <el-input v-model="operateMatForm.trIdx"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Plan ID" prop="planId"> <el-form-item label="计划ID" prop="planId">
<!-- 计划id --> <!-- 计划id -->
<el-input v-model="operateMatForm.planId" placeholder="Please enter Plan ID"></el-input> <el-input v-model="operateMatForm.planId" placeholder="Please enter Plan ID"></el-input>
<!-- 请输入计划ID --> <!-- 请输入计划ID -->
</el-form-item> </el-form-item>
<el-form-item label="Coil ID" prop="entryMatId"> <el-form-item label="钢卷号" prop="entryMatId">
<!-- 钢卷号 --> <!-- 钢卷号 -->
<el-input v-model="operateMatForm.entryMatId" placeholder="Please enter Coil ID"></el-input> <el-input v-model="operateMatForm.entryMatId" placeholder="Please enter Coil ID"></el-input>
<!-- 请输入钢卷号 --> <!-- 请输入钢卷号 -->
</el-form-item> </el-form-item>
<el-form-item label="Operation Type" prop="operation"> <el-form-item label="操作类型" prop="operation">
<!-- 操作类型 --> <!-- 操作类型 -->
<el-select v-model="operateMatForm.operation" disabled> <el-select v-model="operateMatForm.operation" disabled>
<el-option label="Coil Online" value="ONLINE"></el-option> <el-option label="钢卷上线" value="ONLINE"></el-option>
<!-- 钢卷上线 --> <!-- 钢卷上线 -->
<el-option label="Manual Unload" value="UNLOAD"></el-option> <el-option label="手动卸卷" value="UNLOAD"></el-option>
<!-- 手动卸卷 --> <!-- 手动卸卷 -->
<el-option label="Full Return" value="ALL_RETURN"></el-option> <el-option label="整卷回退" value="ALL_RETURN"></el-option>
<!-- 整卷回退 --> <!-- 整卷回退 -->
<el-option label="Half Return" value="HALF_RETURN"></el-option> <el-option label="半卷回退" value="HALF_RETURN"></el-option>
<!-- 半卷回退 --> <!-- 半卷回退 -->
<el-option label="Unload & Block" value="BLOCK"></el-option> <el-option label="卸卷并封闭" value="BLOCK"></el-option>
<!-- 卸卷并封闭 --> <!-- 卸卷并封闭 -->
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Return Related Fields / 回退相关字段 --> <!-- Return Related Fields / 回退相关字段 -->
<template v-if="['ALL_RETURN', 'HALF_RETURN'].includes(operateMatForm.operation)"> <template v-if="['ALL_RETURN', 'HALF_RETURN'].includes(operateMatForm.operation)">
<el-form-item label="Return Coil ID" prop="returnMatId"> <el-form-item label="回退钢卷号" prop="returnMatId">
<!-- 回退卷号 --> <!-- 回退卷号 -->
<el-input v-model="operateMatForm.returnMatId" placeholder="Please enter Return Coil ID"></el-input> <el-input v-model="operateMatForm.returnMatId" placeholder="Please enter Return Coil ID"></el-input>
<!-- 请输入回退卷号 --> <!-- 请输入回退卷号 -->
</el-form-item> </el-form-item>
<el-form-item label="Return Weight" prop="returnWeight"> <el-form-item label="回退重量" prop="returnWeight">
<!-- 回退重量 --> <!-- 回退重量 -->
<el-input v-model="operateMatForm.returnWeight" placeholder="Please enter Return Weight"></el-input> <el-input v-model="operateMatForm.returnWeight" placeholder="Please enter Return Weight"></el-input>
<!-- 请输入回退重量 --> <!-- 请输入回退重量 -->
</el-form-item> </el-form-item>
<el-form-item label="Return Remark" prop="returnRemark"> <el-form-item label="回退备注" prop="returnRemark">
<!-- 回退备注 --> <!-- 回退备注 -->
<el-input v-model="operateMatForm.returnRemark" rows="3"></el-input> <el-input v-model="operateMatForm.returnRemark" rows="3"></el-input>
</el-form-item> </el-form-item>
@@ -558,7 +563,7 @@
<!-- Output Length Fields / 产出长度字段 --> <!-- Output Length Fields / 产出长度字段 -->
<template v-if="['PRODUCING', 'PRODUCT'].includes(operateMatForm.operation)"> <template v-if="['PRODUCING', 'PRODUCT'].includes(operateMatForm.operation)">
<el-form-item label="Output Coil Length" prop="coilLength"> <el-form-item label="产出钢卷长度" prop="coilLength">
<!-- 产出钢卷长度 --> <!-- 产出钢卷长度 -->
<el-input v-model="operateMatForm.coilLength" type="number" placeholder="Please enter Output Coil Length"></el-input> <el-input v-model="operateMatForm.coilLength" type="number" placeholder="Please enter Output Coil Length"></el-input>
<!-- 请输入产出钢卷长度 --> <!-- 请输入产出钢卷长度 -->
@@ -566,9 +571,9 @@
</template> </template>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="operateMatStatus = false">Cancel</el-button> <el-button @click="operateMatStatus = false">取消</el-button>
<!-- 取消 --> <!-- 取消 -->
<el-button type="primary" @click="submitOperateForm">Confirm</el-button> <el-button type="primary" @click="submitOperateForm">确定</el-button>
<!-- 确定 --> <!-- 确定 -->
</div> </div>
</el-dialog> </el-dialog>
@@ -622,69 +627,69 @@ import { getDriveSetupValue, getFurnaceSetupValue } from '@/api/l2/setupValue'
// Parameter field labels (English with Chinese comments) // Parameter field labels (English with Chinese comments)
// 参数字段标签(英文显示,中文注释) // 参数字段标签(英文显示,中文注释)
const PARAM_LABELS = { const PARAM_LABELS = {
tensionPorBr1: 'Tension POR-BR1', // 开卷张力1# tensionPorBr1: '开卷张力1#', // 开卷张力1#
tensionPorBr2: 'Tension POR-BR2', // 开卷张力2# tensionPorBr2: '开卷张力2#', // 开卷张力2#
stripSpeed: 'Strip Speed', // 带钢速度 stripSpeed: '带钢速度', // 带钢速度
weldStatus: 'Weld Status', // 焊机状态 weldStatus: '焊机状态', // 焊机状态
celLength: 'Entry Loop Length', // 入口活套位置 celLength: '入口活套位置', // 入口活套位置
celCapacity: 'Entry Loop Capacity', // 入口活套套量 celCapacity: '入口活套套量', // 入口活套套量
tensionCel: 'Entry Loop Tension', // 入口活套张力 tensionCel: '入口活套张力', // 入口活套张力
celLengthMax: 'Entry Loop Max Length', // 入口活套最大长度 celLengthMax: '入口活套最大长度', // 入口活套最大长度
celLengthMin: 'Entry Loop Min Length', // 入口活套最小长度 celLengthMin: '入口活套最小长度', // 入口活套最小长度
bR4or5toBR6Tension: 'Tension BR4/5-BR6', // BR4/5到BR6张力 bR4or5toBR6Tension: 'BR4/5BR6张力', // BR4/5到BR6张力
cleaningVoltage: 'Cleaning Voltage', // 清洗电压 cleaningVoltage: '清洗电压', // 清洗电压
cleaningCurrent: 'Cleaning Current', // 清洗电流 cleaningCurrent: '清洗电流', // 清洗电流
alkaliConcentration: 'Alkali Concentration', // 碱液浓度 alkaliConcentration: '碱液浓度', // 碱液浓度
alkaliTemperature: 'Alkali Temperature', // 碱液温度 alkaliTemperature: '碱液温度', // 碱液温度
phfExitStripTemp: 'PH Exit Strip Temp', // PH炉出口温度 phfExitStripTemp: 'PH炉出口温度', // PH炉出口温度
potTemperature: 'Pot Temperature', // 锌锅温度 potTemperature: '锌锅温度', // 锌锅温度
gasConsumption: 'Gas Consumption', // 燃气消耗 gasConsumption: '燃气消耗', // 燃气消耗
rtfExitStripTemp: 'RTF Exit Strip Temp', // RTF炉出口温度 rtfExitStripTemp: 'RTF炉出口温度', // RTF炉出口温度
zincPotPower: 'Zinc Pot Power', // 锌锅功率 zincPotPower: '锌锅功率', // 锌锅功率
jcsExitStripTemp: 'JCS Exit Strip Temp', // 冷却段出口温度 jcsExitStripTemp: 'JCS出口温度', // 冷却段出口温度
coolingTowerStripTemp: 'Cooling Tower Temp', // 冷却塔温度 coolingTowerStripTemp: '冷却塔温度', // 冷却塔温度
scsExitStripTemp: 'SCS Exit Strip Temp', // 均衡段出口温度 scsExitStripTemp: 'SCS出口温度', // 均衡段出口温度
tensionBr5Tm: 'Tension BR5-TM', // BR5-TM张力 tensionBr5Tm: 'BR5-TM张力', // BR5-TM张力
stripSpeedTmExit: 'TM Exit Speed', // TM出口速度 stripSpeedTmExit: 'TM出口速度', // TM出口速度
tmElongation: 'TM Elongation', // 光整延伸率 tmElongation: '光整延伸率', // 光整延伸率
tensionTlBr7: 'Tension TL-BR7', // TL-BR7张力 tensionTlBr7: 'TL-BR7张力', // TL-BR7张力
tensionTlBr10Br11: 'Tension TL-BR10/11', // TL-BR10/11张力 tensionTlBr10Br11: 'TL-BR10/11张力', // TL-BR10/11张力
tlElongation: 'TL Elongation', // 拉矫延伸率 tlElongation: '拉矫延伸率', // 拉矫延伸率
tlFlag: 'TL Flag', // 拉矫机投用标志 tlFlag: '拉矫机投用标志', // 拉矫机投用标志
cxlLength: 'Exit Loop Length', // 出口活套位置 cxlLength: '出口活套位置', // 出口活套位置
cxlCapacity: 'Exit Loop Capacity', // 出口活套套量 cxlCapacity: '出口活套套量', // 出口活套套量
tensionCxl: 'Exit Loop Tension', // 出口活套张力 tensionCxl: '出口活套张力', // 出口活套张力
coilLength: 'Coil Length', // 钢卷长度 coilLength: '钢卷长度', // 钢卷长度
speedExitSection: 'Exit Section Speed', // 出口段速度 speedExitSection: '出口段速度', // 出口段速度
tensionBr9Tr: 'Tension BR9-TR', // BR9-TR张力 tensionBr9Tr: 'BR9-TR张力', // BR9-TR张力
tensionBr8Tm: 'Tension BR8-TM', // BR8-TM张力 tensionBr8Tm: 'BR8-TM张力', // BR8-TM张力
tensionTmBr9: 'Tension TM-BR9', // TM-BR9张力 tensionTmBr9: 'TM-BR9张力', // TM-BR9张力
tensionBr8Br9: 'Tension BR8-BR9', // BR8-BR9张力 tensionBr8Br9: 'BR8-BR9张力', // BR8-BR9张力
tensionBr9toBr10Br11: 'Tension BR9-BR10/11', // BR9到BR10/11张力 tensionBr9toBr10Br11: 'BR9-BR10/11张力', // BR9到BR10/11张力
tensionBr10Br11toBr12: 'Tension BR10/11-BR12', // BR10/11到BR12张力 tensionBr10Br11toBr12: 'BR10/11-BR12张力', // BR10/11到BR12张力
avrCoatingWeightTop: 'Avg Coating Weight Top', // 顶部平均涂层重量 avrCoatingWeightTop: '顶部平均涂层重量', // 顶部平均涂层重量
stdCoatingWeightTop: 'Std Coating Weight Top', // 顶部标准涂层重量 stdCoatingWeightTop: '顶部标准涂层重量', // 顶部标准涂层重量
maxCoatingWeightTop: 'Max Coating Weight Top', // 顶部最大涂层重量 maxCoatingWeightTop: '顶部最大涂层重量', // 顶部最大涂层重量
minCoatingWeightTop: 'Min Coating Weight Top', // 顶部最小涂层重量 minCoatingWeightTop: '顶部最小涂层重量', // 顶部最小涂层重量
avrCoatingWeightBottom: 'Avg Coating Weight Bottom', // 底部平均涂层重量 avrCoatingWeightBottom: '底部平均涂层重量', // 底部平均涂层重量
stdCoatingWeightBottom: 'Std Coating Weight Bottom', // 底部标准涂层重量 stdCoatingWeightBottom: '底部标准涂层重量', // 底部标准涂层重量
maxCoatingWeightBottom: 'Max Coating Weight Bottom', // 底部最大涂层重量 maxCoatingWeightBottom: '底部最大涂层重量', // 底部最大涂层重量
minCoatingWeightBottom: 'Min Coating Weight Bottom', // 底部最小涂层重量 minCoatingWeightBottom: '底部最小涂层重量', // 底部最小涂层重量
airKnifePressure: 'Air Knife Pressure', // 气刀压力 airKnifePressure: '气刀压力', // 气刀压力
airKnifeFlow: 'Air Knife Flow', // 气刀流量 airKnifeFlow: '气刀流量', // 气刀流量
airKnifeGap: 'Air Knife Gap', // 气刀间隙 airKnifeGap: '气刀间隙', // 气刀间隙
tmMask: 'TM Mask', // TM掩码 tmMask: 'TM掩码', // TM掩码
rollForceOperator: 'Roll Force Operator', // 操作侧辊压力 rollForceOperator: '操作侧辊压力', // 操作侧辊压力
rollForceDrive: 'Roll Force Drive', // 驱动侧辊压力 rollForceDrive: '驱动侧辊压力', // 驱动侧辊压力
motorTorque: 'Motor Torque', // 电机扭矩 motorTorque: '电机扭矩', // 电机扭矩
bendingForce: 'Bending Force', // 总弯曲力 bendingForce: '总弯曲力', // 总弯曲力
antiCrimpingRollMesh: 'Anti-Crimping Roll Mesh', // 防卷翘辊网距 antiCrimpingRollMesh: '防卷翘辊网距', // 防卷翘辊网距
billyRollMesh: 'Billy Roll Mesh', // Billy Roll网距 billyRollMesh: 'Billy Roll网距', // Billy Roll网距
levelingUnit1Mesh: 'Leveling Unit 1 Mesh', // 矫直单元1网距 levelingUnit1Mesh: '矫直单元1网距', // 矫直单元1网距
levelingUnit2Mesh: 'Leveling Unit 2 Mesh', // 矫直单元2网距 levelingUnit2Mesh: '矫直单元2网距', // 矫直单元2网距
antiCrossBowUnitMesh: 'Anti Cross-Bow Unit Mesh', // 防横弯单元网距 antiCrossBowUnitMesh: '防横弯单元网距', // 防横弯单元网距
stripSpeedAfp: 'AFP Strip Speed', // AFP段钢带速度 stripSpeedAfp: 'AFP段钢带速度', // AFP段钢带速度
stripTempAfp: 'AFP Strip Temp' // AFP段钢带温度 stripTempAfp: 'AFP段钢带温度', // AFP段钢带
} }
const FIELD_ALIASES = { const FIELD_ALIASES = {