refactor: 多页面UI优化与功能完善

1. 优化合同页面默认备注内容
2. 修复分卷编辑接口参数缺失问题
3. 新增分卷、合卷、加工菜单路由
4. 重构导航栏默认显示逻辑
5. 升级重定向菜单页面样式与布局
6. 优化告警页面查询与展示字段
7. 重构全局搜索组件为弹窗模式
8. 优化报表页面代码格式与接口参数
This commit is contained in:
2026-06-12 11:25:15 +08:00
parent d3c6790603
commit 98116fa042
8 changed files with 306 additions and 150 deletions

View File

@@ -171,22 +171,60 @@
<!-- all 类型的统计信息comprehensive 风格 -->
<template v-else-if="reportType === 'all'">
<el-descriptions title="统计信息" :column="3" border>
<el-descriptions-item label="产出数量">{{ summary.outCount }}<span v-if="viewType === 'day' && yesterdaySummary.outCount" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outCount }})</span></el-descriptions-item>
<el-descriptions-item label="产出总重">{{ summary.outTotalWeight }}t<span v-if="viewType === 'day' && yesterdaySummary.outTotalWeight" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outTotalWeight }}t)</span></el-descriptions-item>
<el-descriptions-item label="产出均重">{{ summary.outAvgWeight }}t<span v-if="viewType === 'day' && yesterdaySummary.outAvgWeight" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outAvgWeight }}t)</span></el-descriptions-item>
<el-descriptions-item label="产出数量">{{ summary.outCount }}<span
v-if="viewType === 'day' && yesterdaySummary.outCount"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outCount
}})</span></el-descriptions-item>
<el-descriptions-item label="产出总重">{{ summary.outTotalWeight }}t<span
v-if="viewType === 'day' && yesterdaySummary.outTotalWeight"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outTotalWeight
}}t)</span></el-descriptions-item>
<el-descriptions-item label="产出均重">{{ summary.outAvgWeight }}t<span
v-if="viewType === 'day' && yesterdaySummary.outAvgWeight"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.outAvgWeight
}}t)</span></el-descriptions-item>
<el-descriptions-item label="消耗数量">{{ summary.lossCount }}<span v-if="viewType === 'day' && yesterdaySummary.lossCount" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossCount }})</span></el-descriptions-item>
<el-descriptions-item label="消耗总重">{{ summary.lossTotalWeight }}t<span v-if="viewType === 'day' && yesterdaySummary.lossTotalWeight" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossTotalWeight }}t)</span></el-descriptions-item>
<el-descriptions-item label="消耗均重">{{ summary.lossAvgWeight }}t<span v-if="viewType === 'day' && yesterdaySummary.lossAvgWeight" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossAvgWeight }}t)</span></el-descriptions-item>
<el-descriptions-item label="消耗数量">{{ summary.lossCount }}<span
v-if="viewType === 'day' && yesterdaySummary.lossCount"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossCount
}})</span></el-descriptions-item>
<el-descriptions-item label="消耗总重">{{ summary.lossTotalWeight }}t<span
v-if="viewType === 'day' && yesterdaySummary.lossTotalWeight"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossTotalWeight
}}t)</span></el-descriptions-item>
<el-descriptions-item label="消耗均重">{{ summary.lossAvgWeight }}t<span
v-if="viewType === 'day' && yesterdaySummary.lossAvgWeight"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossAvgWeight
}}t)</span></el-descriptions-item>
<el-descriptions-item label="数量差值">{{ summary.countDiff }}<span v-if="viewType === 'day' && yesterdaySummary.countDiff" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.countDiff }})</span></el-descriptions-item>
<el-descriptions-item label="总重差值">{{ summary.weightDiff }}<span v-if="viewType === 'day' && yesterdaySummary.weightDiff" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.weightDiff }})</span></el-descriptions-item>
<el-descriptions-item label="均重差值">{{ summary.avgWeightDiff }}t<span v-if="viewType === 'day' && yesterdaySummary.avgWeightDiff" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.avgWeightDiff }}t)</span></el-descriptions-item>
<el-descriptions-item label="数量差值">{{ summary.countDiff }}<span
v-if="viewType === 'day' && yesterdaySummary.countDiff"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.countDiff
}})</span></el-descriptions-item>
<el-descriptions-item label="总重差值">{{ summary.weightDiff }}<span
v-if="viewType === 'day' && yesterdaySummary.weightDiff"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.weightDiff
}})</span></el-descriptions-item>
<el-descriptions-item label="均重差值">{{ summary.avgWeightDiff }}t<span
v-if="viewType === 'day' && yesterdaySummary.avgWeightDiff"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.avgWeightDiff
}}t)</span></el-descriptions-item>
<el-descriptions-item label="成品率">{{ summary.passRate }}<span v-if="viewType === 'day' && yesterdaySummary.passRate" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.passRate }})</span></el-descriptions-item>
<el-descriptions-item label="损耗率">{{ summary.lossRate }}<span v-if="viewType === 'day' && yesterdaySummary.lossRate" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossRate }})</span></el-descriptions-item>
<el-descriptions-item label="异常率">{{ summary.abRate }}<span v-if="viewType === 'day' && yesterdaySummary.abRate" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.abRate }})</span></el-descriptions-item>
<el-descriptions-item label="正品率">{{ summary.passRate2 }}<span v-if="viewType === 'day' && yesterdaySummary.passRate2" style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.passRate2 }})</span></el-descriptions-item>
<el-descriptions-item label="成品率">{{ summary.passRate }}<span
v-if="viewType === 'day' && yesterdaySummary.passRate"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.passRate
}})</span></el-descriptions-item>
<el-descriptions-item label="损耗率">{{ summary.lossRate }}<span
v-if="viewType === 'day' && yesterdaySummary.lossRate"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.lossRate
}})</span></el-descriptions-item>
<el-descriptions-item label="异常率">{{ summary.abRate }}<span v-if="viewType === 'day' && yesterdaySummary.abRate"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.abRate
}})</span></el-descriptions-item>
<el-descriptions-item label="正品率">{{ summary.passRate2 }}<span
v-if="viewType === 'day' && yesterdaySummary.passRate2"
style="margin-left: 10px; font-size: 12px; color: #999;">(昨日: {{ yesterdaySummary.passRate2
}})</span></el-descriptions-item>
</el-descriptions>
<el-descriptions title="已处理M统计信息" :column="3" border>
@@ -347,13 +385,8 @@
<columns-setting :reportType="activeColumnConfig"></columns-setting>
</el-dialog>
<custom-export
ref="customExport"
:visible.sync="customExportVisible"
:storage-key="customExportStorageKey"
:column-groups="columnGroups"
@export="handleCustomExport"
/>
<custom-export ref="customExport" :visible.sync="customExportVisible" :storage-key="customExportStorageKey"
:column-groups="columnGroups" @export="handleCustomExport" />
</div>
</template>
@@ -482,7 +515,7 @@ export default {
'基本信息': ['itemTypeDesc', 'warehouseName', 'actualWarehouseName', 'dataTypeText'],
'钢卷号': ['enterCoilNo', 'supplierCoilNo', 'currentCoilNo'],
'时间': ['createTime', 'exportTime', 'exportBy'],
'物理属性': ['netWeight', 'length', 'specification', 'actualThickness', 'theoreticalThickness', 'theoreticalLength'],
'物理属性': ['netWeight', 'length', 'specification', 'actualThickness', 'theoreticalThickness', 'theoreticalLength', 'scheduleThickness'],
'材质属性': ['material', 'manufacturer', 'surfaceTreatmentDesc', 'zincLayer', 'packingStatus', 'temperGrade', 'coatingType', 'chromePlateCoilNo'],
'用途': ['purpose', 'businessPurpose'],
'状态': ['qualityStatus', 'statusDesc', 'isRelatedToOrderText'],
@@ -694,7 +727,13 @@ export default {
if (this.reportType === 'all') {
// all 类型使用 comprehensive 方式查询
const res = await listLightPendingAction({ ...this.queryParams, actionTypes: this.actionType, actionStatus: 2 });
const res = await listLightPendingAction({
enterCoilNo: this.queryParams.enterCoilNo,
startTime: this.queryParams.startTime,
endTime: this.queryParams.endTime,
actionTypes: this.actionType,
actionStatus: 2
});
const lossIds = res.data.filter(item => item.coilId).map(item => item.coilId);
const lossActionIds = res.data.filter(item => item.actionId).map(item => item.actionId);
this.actionIds = lossActionIds.join(',')
@@ -732,7 +771,13 @@ export default {
return
}
const res = await listLightPendingAction({ ...this.queryParams, actionTypes: this.actionType, actionStatus: 2 });
const res = await listLightPendingAction({
enterCoilNo: this.queryParams.enterCoilNo,
startTime: this.queryParams.startTime,
endTime: this.queryParams.endTime,
actionTypes: this.actionType,
actionStatus: 2
});
const lossIds = res.data.filter(item => item.coilId).map(item => item.coilId);
const lossActionIds = res.data.filter(item => item.actionId).map(item => item.actionId);
this.actionIds = lossActionIds.join(',')
@@ -796,12 +841,14 @@ export default {
const { start, end } = this.getDayTimeRange(yesterdayDate)
const yesterdayParams = {
...this.queryParams,
enterCoilNo: this.queryParams.enterCoilNo,
actionTypes: this.actionType,
actionStatus: 2,
startTime: start,
endTime: end,
}
const res = await listLightPendingAction({ ...yesterdayParams, actionTypes: this.actionType, actionStatus: 2 })
const res = await listLightPendingAction({ ...yesterdayParams })
const lossIds = res.data.filter(item => item.coilId).map(item => item.coilId)
const lossActionIds = res.data.filter(item => item.actionId).map(item => item.actionId)
const outIds = [...new Set(res.data.filter(item => item.processedCoilIds).map(item => item.processedCoilIds))]