refactor(wms): 优化多个页面的样式与功能

1. 调整物料预警页面的逾期天数默认值为60天
2. 钢卷库存页面新增钢卷明细导出按钮和布局优化
3. 异议工单页面调整导出按钮的显示逻辑,移除状态判断
4. 重构异议工单基础信息组件的布局与样式,优化信息展示
This commit is contained in:
2026-07-04 16:11:57 +08:00
parent e8c1c646a8
commit 9849e6bfe3
4 changed files with 113 additions and 29 deletions

View File

@@ -197,7 +197,7 @@ export default {
total: 0,
coilList: [],
statistics: {},
overdueDays: 20,
overdueDays: 60,
queryParams: {
pageNum: 1,
pageSize: 50,

View File

@@ -163,7 +163,10 @@
</el-descriptions>
<!-- 钢卷明细表格 -->
<h4 style="margin-top: 20px">钢卷明细</h4>
<div style="display: flex; align-items: center; justify-content: space-between; margin-top: 20px">
<h4 style="margin: 0">钢卷明细</h4>
<el-button type="primary" size="small" icon="el-icon-download" @click="handleExportDetail">导出</el-button>
</div>
<el-table :data="dialogList" border stripe max-height="500" style="width: 100%">
<el-table-column prop="enterCoilNo" label="入场钢卷号" align="center" min-width="150" show-overflow-tooltip />
<el-table-column prop="currentCoilNo" label="当前钢卷号" align="center" min-width="150" show-overflow-tooltip />
@@ -518,6 +521,15 @@ export default {
.finally(() => { this.dialogLoading = false; });
},
handleExportDetail() {
if (!this.currentWarehouse) return;
this.download('wms/materialCoil/export', {
warehouseId: this.currentWarehouse.warehouseId,
dataType: 1,
status: 0,
}, `钢卷明细_${this.currentWarehouse.warehouseName}_${new Date().getTime()}.xlsx`);
},
// ============ 弹窗数据透视图(班组 × 品质) ============
getQualityGroup(qs) {
if (!qs) return '未知';

View File

@@ -1,8 +1,8 @@
<template>
<div v-if="enabled" class="section-container">
<div class="detail-section">
<div class="detail-section-label">Complaint Content · 投诉情况与客户诉求</div>
<div class="detail-section-text">{{ data.complaintContent || '-' }}</div>
<div class="complaint-main">
<div class="complaint-label">Complaint Content · 投诉情况与客户诉求</div>
<div class="complaint-body">{{ data.complaintContent || '-' }}</div>
</div>
<div class="detail-section" v-if="customerInfo">
@@ -35,29 +35,29 @@
<div class="detail-section-text">-</div>
</div>
<div class="detail-section">
<div class="detail-section-label">Downstream User · 下游使用用户</div>
<div class="detail-section-text">{{ data.downstreamUserName || '-' }}</div>
</div>
<div class="divider-label">Other Info · 其他信息</div>
<div class="detail-section">
<div class="detail-section-label">Phone · 电话</div>
<div class="detail-section-text">{{ data.phone || '-' }}</div>
</div>
<div class="detail-section">
<div class="detail-section-label">Project Name · 工程名称</div>
<div class="detail-section-text">{{ data.projectName || '-' }}</div>
</div>
<div class="detail-section">
<div class="detail-section-label">Project Location · 使用地点</div>
<div class="detail-section-text">{{ data.projectLocation || '-' }}</div>
</div>
<div class="detail-section">
<div class="detail-section-label">Product Usage · 产品用途</div>
<div class="detail-section-text">{{ data.productUsage || '-' }}</div>
<div class="secondary-grid">
<div class="secondary-item">
<span class="secondary-key">下游使用用户</span>
<span class="secondary-val">{{ data.downstreamUserName || '-' }}</span>
</div>
<div class="secondary-item">
<span class="secondary-key">电话</span>
<span class="secondary-val">{{ data.phone || '-' }}</span>
</div>
<div class="secondary-item">
<span class="secondary-key">工程名称</span>
<span class="secondary-val">{{ data.projectName || '-' }}</span>
</div>
<div class="secondary-item">
<span class="secondary-key">使用地点</span>
<span class="secondary-val">{{ data.projectLocation || '-' }}</span>
</div>
<div class="secondary-item">
<span class="secondary-key">产品用途</span>
<span class="secondary-val">{{ data.productUsage || '-' }}</span>
</div>
</div>
<div class="detail-section" v-if="data.file">
@@ -109,6 +109,37 @@ export default {
</script>
<style scoped>
.section-container {
margin-bottom: 2px;
}
/* ===== 投诉情况主体 — 突出显示 ===== */
.complaint-main {
margin-bottom: 18px;
padding: 16px 18px;
background: #fff;
border: 1px solid #cbd5e1;
border-left: 4px solid #1e293b;
}
.complaint-label {
font-size: 12px;
font-weight: 600;
color: #475569;
margin-bottom: 10px;
letter-spacing: 0.4px;
text-transform: uppercase;
}
.complaint-body {
font-size: 15px;
color: #1e293b;
line-height: 1.8;
word-break: break-all;
min-height: 60px;
white-space: pre-wrap;
}
.detail-section {
margin-bottom: 14px;
}
@@ -163,4 +194,45 @@ export default {
font-size: 13px;
color: #1e293b;
}
/* ===== 分隔标签 ===== */
.divider-label {
font-size: 11px;
font-weight: 600;
color: #94a3b8;
letter-spacing: 0.4px;
text-transform: uppercase;
margin: 16px 0 10px;
padding-bottom: 6px;
border-bottom: 1px dashed #e2e8f0;
}
/* ===== 次要信息网格 ===== */
.secondary-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px 16px;
padding: 10px 12px;
background: #f8fafc;
border: 1px solid #e2e8f0;
margin-bottom: 12px;
}
.secondary-item {
display: flex;
flex-direction: column;
gap: 2px;
}
.secondary-key {
font-size: 10px;
color: #94a3b8;
letter-spacing: 0.2px;
}
.secondary-val {
font-size: 12px;
color: #475569;
word-break: break-all;
}
</style>

View File

@@ -41,7 +41,7 @@
<el-tag v-else-if="item.flowStatus === 4" type="success" size="mini">全部办结</el-tag>
</div>
<div class="item-actions">
<el-button v-if="item.flowStatus === 4" size="mini" type="text" icon="el-icon-download"
<el-button size="mini" type="text" icon="el-icon-download"
@click.stop="handleExportPdf(item)" title="导出PDF"></el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click.stop="handleUpdate(item)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click.stop="handleDelete(item)"></el-button>
@@ -70,7 +70,7 @@
<HeaderControlSection :complaintNo="currentRow.complaintNo" :flowStatus="currentRow.flowStatus"
:meta="currentRow">
<template #actions>
<el-button v-if="currentRow.flowStatus === 4" size="mini" type="text" icon="el-icon-download"
<el-button size="mini" type="text" icon="el-icon-download"
@click="handleExportPdf(currentRow)" title="导出PDF">导出</el-button>
<el-button v-if="currentRow.flowStatus === 1" size="mini" type="primary" plain
icon="el-icon-s-promotion" @click="handleOpinionDispatch">意见下发</el-button>