修改G30二级内容

This commit is contained in:
2025-12-26 17:08:15 +08:00
parent d15660c731
commit 17e733333c
46 changed files with 4171 additions and 1976 deletions

View File

@@ -1,26 +1,32 @@
<template>
<div class="stoppage-management">
<!-- 查询表单区域 -->
<!-- Query Form Area / 查询表单区域 -->
<div class="stop-header">
<el-form :inline="true" :model="queryForm" ref="queryForm" label-width="80px" size="small">
<el-form-item label="开始时间" prop="startDate">
<el-date-picker v-model="queryForm.startDate" type="date" placeholder="选择开始时间" value-format="yyyy-MM-dd"
<el-form-item label="Start Date" prop="startDate">
<!-- 开始时间 -->
<el-date-picker v-model="queryForm.startDate" type="date" placeholder="Select start date" value-format="yyyy-MM-dd"
:clearable="true"></el-date-picker>
<!-- 选择开始时间 -->
</el-form-item>
<el-form-item label="结束时间" prop="endDate">
<el-date-picker v-model="queryForm.endDate" type="date" placeholder="选择结束时间" value-format="yyyy-MM-dd"
<el-form-item label="End Date" prop="endDate">
<!-- 结束时间 -->
<el-date-picker v-model="queryForm.endDate" type="date" placeholder="Select end date" value-format="yyyy-MM-dd"
:clearable="true"></el-date-picker>
<!-- 选择结束时间 -->
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery" :loading="btnLoading" icon="el-icon-search">查询</el-button>
<el-button @click="handleReset" icon="el-icon-refresh">重置</el-button>
<el-button type="primary" @click="handleQuery" :loading="btnLoading" icon="el-icon-search">Query</el-button>
<!-- 查询 -->
<el-button @click="handleReset" icon="el-icon-refresh">Reset</el-button>
<!-- 重置 -->
</el-form-item>
</el-form>
</div>
<!-- 卡片网格布局 -->
<!-- Card Grid Layout / 卡片网格布局 -->
<div v-loading="tableLoading" class="card-grid-container">
<el-row :gutter="10">
<el-col
@@ -41,71 +47,88 @@
@click.native="handleRowClick(item)"
>
<div slot="header" class="card-header">
<div class="card-title">停机ID: {{ item.stopid || '-' }}</div>
<div class="card-subtitle">钢卷号: {{ item.coilid || '-' }}</div>
<div class="card-title">Stop ID: {{ item.stopid || '-' }}</div>
<!-- 停机ID -->
<div class="card-subtitle">Coil ID: {{ item.coilid || '-' }}</div>
<!-- 钢卷号 -->
</div>
<div class="card-body">
<div class="param-groups-row">
<!-- 基本信息 -->
<!-- Basic Info / 基本信息 -->
<div class="param-group">
<div class="group-title">基本信息</div>
<div class="group-title">Basic Info</div>
<!-- 基本信息 -->
<div class="param-list">
<div class="param-line">
<span class="param-label">停机类型:</span>
<span class="param-label">Stop Type:</span>
<!-- 停机类型 -->
<span class="param-value">{{ item.stopType || '-' }}</span>
</div>
<div class="param-line">
<span class="param-label">:</span>
<span class="param-label">Shift:</span>
<!-- -->
<span class="param-value">{{ item.shift || '-' }}</span>
</div>
<div class="param-line">
<span class="param-label">:</span>
<span class="param-label">Crew:</span>
<!-- -->
<span class="param-value">{{ item.crew || '-' }}</span>
</div>
<div class="param-line">
<span class="param-label">区域:</span>
<span class="param-label">Area:</span>
<!-- 区域 -->
<span class="param-value">{{ item.area || '-' }}</span>
</div>
</div>
</div>
<!-- 设备信息 -->
<!-- Device Info / 设备信息 -->
<div class="param-group">
<div class="group-title">设备信息</div>
<div class="group-title">Device Info</div>
<!-- 设备信息 -->
<div class="param-list">
<div class="param-line">
<span class="param-label">设备:</span>
<span class="param-label">Device:</span>
<!-- 设备 -->
<span class="param-value">{{ item.seton || '-' }}</span>
</div>
<div class="param-line">
<span class="param-label">机组:</span>
<span class="param-label">Unit:</span>
<!-- 机组 -->
<span class="param-value">{{ item.unit || '-' }}</span>
</div>
<div class="param-line">
<span class="param-label">停机时长:</span>
<span class="param-value">{{ item.duration || '-' }} 分钟</span>
<span class="param-label">Duration:</span>
<!-- 停机时长 -->
<span class="param-value">{{ item.duration || '-' }} min</span>
<!-- 分钟 -->
</div>
<div class="param-line">
<span class="param-label">更新时间:</span>
<span class="param-label">Update Time:</span>
<!-- 更新时间 -->
<span class="param-value">{{ formatTime(item.insdate) }}</span>
</div>
</div>
</div>
<!-- 时间信息 -->
<!-- Time Info / 时间信息 -->
<div class="param-group">
<div class="group-title">时间信息</div>
<div class="group-title">Time Info</div>
<!-- 时间信息 -->
<div class="param-list">
<div class="param-line">
<span class="param-label">开始时间:</span>
<span class="param-label">Start Time:</span>
<!-- 开始时间 -->
<span class="param-value">{{ formatTime(item.startDate) }}</span>
</div>
<div class="param-line">
<span class="param-label">结束时间:</span>
<span class="param-label">End Time:</span>
<!-- 结束时间 -->
<span class="param-value">{{ formatTime(item.endDate) }}</span>
</div>
<div class="param-line full-width" v-if="item.remark">
<span class="param-label">停机原因:</span>
<span class="param-label">Stop Reason:</span>
<!-- 停机原因 -->
<span class="param-value">{{ item.remark }}</span>
</div>
</div>
@@ -118,84 +141,117 @@
type="primary"
icon="el-icon-edit"
@click.stop="handleEdit(item)"
>编辑</el-button>
>Edit</el-button>
<!-- 编辑 -->
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
:loading="item.deleteLoading"
@click.stop="handleDelete(item)"
>删除</el-button>
>Delete</el-button>
<!-- 删除 -->
</div>
</el-card>
</el-col>
</el-row>
<div v-if="tableData.length === 0 && !tableLoading" class="empty-data">
<el-empty description="暂无数据"></el-empty>
<el-empty description="No data"></el-empty>
<!-- 暂无数据 -->
</div>
</div>
<!-- 编辑/新增弹窗 -->
<!-- Edit/Add Dialog / 编辑/新增弹窗 -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="60%" :close-on-click-modal="false">
<el-form :model="formData" ref="formData" label-width="120px" :rules="formRules">
<el-form-item label="停机ID" prop="stopid" v-if="formData.stopid">
<el-form-item label="Stop ID" prop="stopid" v-if="formData.stopid">
<!-- 停机ID -->
<el-input v-model="formData.stopid" disabled></el-input>
</el-form-item>
<el-form-item label="钢卷号" prop="coilid">
<el-input v-model="formData.coilid" placeholder="请输入钢卷号"></el-input>
<el-form-item label="Coil ID" prop="coilid">
<!-- 钢卷号 -->
<el-input v-model="formData.coilid" placeholder="Please enter Coil ID"></el-input>
<!-- 请输入钢卷号 -->
</el-form-item>
<el-form-item label="" prop="shift">
<el-select v-model="formData.shift" placeholder="请选择班次" clearable>
<el-option label="早班" value="早班"></el-option>
<el-option label="中班" value="中班"></el-option>
<el-option label="晚班" value="班"></el-option>
<el-form-item label="Shift" prop="shift">
<!-- -->
<el-select v-model="formData.shift" placeholder="Please select shift" clearable>
<!-- 请选择班次 -->
<el-option label="Morning Shift" value="班"></el-option>
<!-- 早班 -->
<el-option label="Afternoon Shift" value="中班"></el-option>
<!-- 中班 -->
<el-option label="Night Shift" value="晚班"></el-option>
<!-- 晚班 -->
</el-select>
</el-form-item>
<el-form-item label="" prop="crew">
<el-input v-model="formData.crew" placeholder="请输入组号"></el-input>
<el-form-item label="Crew" prop="crew">
<!-- -->
<el-input v-model="formData.crew" placeholder="Please enter crew number"></el-input>
<!-- 请输入组号 -->
</el-form-item>
<el-form-item label="区域" prop="area">
<el-input v-model="formData.area" placeholder="请输入区域"></el-input>
<el-form-item label="Area" prop="area">
<!-- 区域 -->
<el-input v-model="formData.area" placeholder="Please enter area"></el-input>
<!-- 请输入区域 -->
</el-form-item>
<el-form-item label="机组" prop="unit">
<el-input v-model="formData.unit" placeholder="请输入机组"></el-input>
<el-form-item label="Unit" prop="unit">
<!-- 机组 -->
<el-input v-model="formData.unit" placeholder="Please enter unit"></el-input>
<!-- 请输入机组 -->
</el-form-item>
<el-form-item label="设备" prop="seton">
<el-input v-model="formData.seton" placeholder="请输入设备"></el-input>
<el-form-item label="Device" prop="seton">
<!-- 设备 -->
<el-input v-model="formData.seton" placeholder="Please enter device"></el-input>
<!-- 请输入设备 -->
</el-form-item>
<el-form-item label="开始时间" prop="startDate">
<el-date-picker v-model="formData.startDate" type="datetime" placeholder="选择开始时间"
<el-form-item label="Start Time" prop="startDate">
<!-- 开始时间 -->
<el-date-picker v-model="formData.startDate" type="datetime" placeholder="Select start time"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<!-- 选择开始时间 -->
</el-form-item>
<el-form-item label="结束时间" prop="endDate">
<el-date-picker v-model="formData.endDate" type="datetime" placeholder="选择结束时间"
<el-form-item label="End Time" prop="endDate">
<!-- 结束时间 -->
<el-date-picker v-model="formData.endDate" type="datetime" placeholder="Select end time"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<!-- 选择结束时间 -->
</el-form-item>
<el-form-item label="停机类型" prop="stopType">
<el-select v-model="formData.stopType" placeholder="请选择停机类型" clearable>
<el-option label="计划停机" value="计划停机"></el-option>
<el-option label="故障停机" value="故障停机"></el-option>
<el-option label="维护停机" value="维护停机"></el-option>
<el-option label="其他" value="其他"></el-option>
<el-form-item label="Stop Type" prop="stopType">
<!-- 停机类型 -->
<el-select v-model="formData.stopType" placeholder="Please select stop type" clearable>
<!-- 请选择停机类型 -->
<el-option label="Planned Stop" value="计划停机"></el-option>
<!-- 计划停机 -->
<el-option label="Fault Stop" value="故障停机"></el-option>
<!-- 故障停机 -->
<el-option label="Maintenance Stop" value="维护停机"></el-option>
<!-- 维护停机 -->
<el-option label="Other" value="其他"></el-option>
<!-- 其他 -->
</el-select>
</el-form-item>
<el-form-item label="停机原因" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入停机原因" type="textarea" rows="4"></el-input>
<el-form-item label="Stop Reason" prop="remark">
<!-- 停机原因 -->
<el-input v-model="formData.remark" placeholder="Please enter stop reason" type="textarea" rows="4"></el-input>
<!-- 请输入停机原因 -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleSave" :loading="saveLoading">保存</el-button>
<el-button @click="dialogVisible = false">Cancel</el-button>
<!-- 取消 -->
<el-button type="primary" @click="handleSave" :loading="saveLoading">Save</el-button>
<!-- 保存 -->
</div>
</el-dialog>
</div>
@@ -208,20 +264,21 @@ export default {
name: 'StoppageManagement',
data() {
return {
// 查询表单数据
// Query form data / 查询表单数据
queryForm: {
// 只保留年月日YYYY-mm-dd
// Only keep YYYY-MM-dd format / 只保留年月日YYYY-mm-dd
startDate: '2023-08-13',
endDate: '2025-08-20'
},
// 表格数据
// Table data / 表格数据
tableData: [],
// 加载状态
// Loading state / 加载状态
tableLoading: false,
btnLoading: false,
// 弹窗状态
// Dialog state / 弹窗状态
dialogVisible: false,
dialogTitle: '新增停机记录',
dialogTitle: 'Add Stoppage Record',
// 新增停机记录
// 表单数据
formData: {
stopid: '',
@@ -238,30 +295,33 @@ export default {
stopType: '',
remark: ''
},
// 表单验证规则
// Form validation rules / 表单验证规则
formRules: {
startDate: [
{ required: true, message: '请选择开始时间', trigger: 'blur' }
{ required: true, message: 'Please select start time', trigger: 'blur' }
// 请选择开始时间
],
endDate: [
{ required: true, message: '请选择结束时间', trigger: 'blur' }
{ required: true, message: 'Please select end time', trigger: 'blur' }
// 请选择结束时间
],
seton: [
{ required: true, message: '请输入设备', trigger: 'blur' }
{ required: true, message: 'Please enter device', trigger: 'blur' }
// 请输入设备
]
},
// 保存按钮加载状态
// Save button loading state / 保存按钮加载状态
saveLoading: false,
// 当前操作的行数据
// Current row data / 当前操作的行数据
currentRow: {}
};
},
created() {
// 页面加载时默认查询一次
// Query once on page load / 页面加载时默认查询一次
this.getStoppageList();
},
methods: {
// 获取停机记录列表
// Get stoppage record list / 获取停机记录列表
getStoppageList() {
this.tableLoading = true;
listStoppage(this.queryForm)
@@ -276,17 +336,17 @@ export default {
.catch(error => {
this.tableLoading = false;
this.btnLoading = false;
console.error('获取数据失败:', error);
this.$message.error('获取数据失败,请稍后重试');
console.error('Failed to fetch data:', error); // 获取数据失败
this.$message.error('Failed to fetch data, please retry'); // 获取数据失败,请稍后重试
});
},
// 处理查询
// Handle query / 处理查询
handleQuery() {
// 验证开始时间不能晚于结束时间
// Validate start time cannot be later than end time / 验证开始时间不能晚于结束时间
if (this.queryForm.startDate && this.queryForm.endDate &&
new Date(this.queryForm.startDate) > new Date(this.queryForm.endDate)) {
this.$message.warning('开始时间不能晚于结束时间');
this.$message.warning('Start time cannot be later than end time'); // 开始时间不能晚于结束时间
return;
}
@@ -294,30 +354,30 @@ export default {
this.getStoppageList();
},
// 处理重置
// Handle reset / 处理重置
handleReset() {
this.$refs.queryForm.resetFields();
this.getStoppageList();
},
// 行点击事件
// Row click event / 行点击事件
handleRowClick(row) {
this.currentRow = row;
},
// 格式化时间
// Format time / 格式化时间
formatTime(time) {
if (!time) return '-';
// 如果是日期时间格式,直接返回
// If it's datetime format, return directly / 如果是日期时间格式,直接返回
if (time.includes(' ')) {
return time;
}
// 如果是日期格式,返回日期
// If it's date format, return date / 如果是日期格式,返回日期
return time;
},
// 新增
// Add / 新增
handleAdd() {
this.dialogTitle = '新增停机记录';
this.dialogTitle = 'Add Stoppage Record'; // 新增停机记录
this.formData = {
stopid: '',
coilid: '',
@@ -336,21 +396,22 @@ export default {
this.dialogVisible = true;
},
// 编辑
// Edit / 编辑
handleEdit(row) {
this.dialogTitle = '编辑停机记录';
this.dialogTitle = 'Edit Stoppage Record'; // 编辑停机记录
this.formData = { ...row };
this.dialogVisible = true;
},
// 删除
// Delete / 删除
handleDelete(row) {
this.$confirm(`确定要删除ID ${row.stopid} 的停机记录吗?`, '确认删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(`Confirm to delete stoppage record with ID ${row.stopid}?`, 'Confirm Delete', {
// 确定要删除ID为 ${row.stopid} 的停机记录吗?, 确认删除
confirmButtonText: 'Confirm', // 确定
cancelButtonText: 'Cancel', // 取消
type: 'danger'
}).then(() => {
// 设置当前行的删除按钮为加载状态
// Set current row delete button to loading state / 设置当前行的删除按钮为加载状态
row.deleteLoading = true;
deleteStoppage(row.stopid)
@@ -358,63 +419,63 @@ export default {
row.deleteLoading = false;
if (response.code === 200) {
this.$message.success('删除成功');
// 重新查询数据
this.$message.success('Delete successful'); // 删除成功
// Re-query data / 重新查询数据
this.getStoppageList();
} else {
this.$message.error(response.msg || '删除失败');
this.$message.error(response.msg || 'Delete failed'); // 删除失败
}
})
.catch(error => {
row.deleteLoading = false;
console.error('删除失败:', error);
this.$message.error('删除失败,请稍后重试');
console.error('Delete failed:', error); // 删除失败
this.$message.error('Delete failed, please retry'); // 删除失败,请稍后重试
});
}).catch(() => {
// 用户取消删除
this.$message.info('已取消删除');
// User cancelled delete / 用户取消删除
this.$message.info('Delete cancelled'); // 已取消删除
});
},
// 保存
// Save / 保存
handleSave() {
this.$refs.formData.validate(valid => {
if (valid) {
// 验证开始时间不能晚于结束时间
// Validate start time cannot be later than end time / 验证开始时间不能晚于结束时间
if (new Date(this.formData.startDate) > new Date(this.formData.endDate)) {
this.$message.warning('开始时间不能晚于结束时间');
this.$message.warning('Start time cannot be later than end time'); // 开始时间不能晚于结束时间
return;
}
// 计算停机时长(分钟)
// Calculate stoppage duration (minutes) / 计算停机时长(分钟)
const start = new Date(this.formData.startDate).getTime();
const end = new Date(this.formData.endDate).getTime();
this.formData.duration = Math.round((end - start) / (1000 * 60) * 10) / 10;
// 设置当前时间为更新时间
// Set current time as update time / 设置当前时间为更新时间
const now = new Date();
this.formData.insdate = now.toISOString().slice(0, 19).replace('T', ' ');
this.saveLoading = true;
// 调用更新接口
// Call update API / 调用更新接口
updateStoppage(this.formData)
.then(response => {
this.saveLoading = false;
if (response.code === 200) {
this.$message.success('保存成功');
this.$message.success('Save successful'); // 保存成功
this.dialogVisible = false;
// 重新查询数据
// Re-query data / 重新查询数据
this.getStoppageList();
} else {
this.$message.error(response.msg || '保存失败');
this.$message.error(response.msg || 'Save failed'); // 保存失败
}
})
.catch(error => {
this.saveLoading = false;
console.error('保存失败:', error);
this.$message.error('保存失败,请稍后重试');
console.error('Save failed:', error); // 保存失败
this.$message.error('Save failed, please retry'); // 保存失败,请稍后重试
});
}
});