feat(wms): 优化发货单和钢卷管理功能

- 修改重量单位从kg为T
- 发货单增加仓库位置列和禁用已发货单操作
- 优化钢卷卡片UI样式
- 改进打印功能使用PDF格式
- 增加发货单状态判断和编辑控制
This commit is contained in:
砂糖
2026-01-27 15:41:29 +08:00
parent ad74b9df01
commit 522f3400fc
5 changed files with 220 additions and 133 deletions

View File

@@ -227,64 +227,74 @@
<el-button size="mini" icon="el-icon-refresh" @click="getStepSplitList">刷新</el-button>
</div>
<div v-if="stepSpilt.list.length > 0" style="display: flex; align-items: center; gap: 10px; flex-wrap: wrap;">
<div v-for="(item, index) in stepSpilt.list" :key="item.coilId || index" class="coil-card"
style="border: 1px solid #e4e7ed; border-radius: 8px; padding: 16px; margin-bottom: 12px; background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
<!-- 主标题区域 - 突出显示currentCoilNo -->
<div class="card-header" style="margin-bottom: 16px; text-align: center;">
<div style="display: inline-block; position: relative;">
<!-- <div style="font-size: 12px; color: #909399; margin-bottom: 4px;">卷号</div> -->
<div class="coil-no" style="font-size: 28px; font-weight: 800; color: #409eff; letter-spacing: 1px;
padding: 4px 16px; background: linear-gradient(135deg, #ecf5ff 0%, #d9ecff 100%);
border-radius: 6px; display: inline-block; border: 2px solid #a0cfff;">
{{ item.currentCoilNo || 'N/A' }}
</div>
<div v-for="(item, index) in stepSpilt.list" :key="item.coilId || index"
style="width: 18rem; background-color: #ffffff; border-bottom-left-radius: 0.5rem; border-bottom-right-radius: 0.5rem; border-top: 4px solid #2bf; padding-left: 1rem; padding-right: 1rem; padding-top: 1.25rem; padding-bottom: 1.25rem; display: flex; flex-direction: column; justify-content: space-around; box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);">
<p
style="font-size: 1.125rem; line-height: 1.75rem; font-weight: 700; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';">
{{ item.currentCoilNo || 'N/A' }}
</p>
<div style="padding-top: 0.75rem; padding-bottom: 0.75rem;">
<p style="color: #9ca3af; font-size: 0.875rem; line-height: 1.25rem;">
<div class="info-item">
<span class="info-label">入场</span>
<span class="info-value" :title="item.enterCoilNo">{{ item.enterCoilNo || '' }}</span>
</div>
<div class="info-item">
<span class="info-label">厂家</span>
<span class="info-value" :title="item.supplierCoilNo">{{ item.supplierCoilNo || '—' }}</span>
</div>
<div class="info-item">
<span class="info-label">品名</span>
<span class="info-value">
<el-popover placement="top" width="280" trigger="hover"
popper-class="material-params-popover">
<div class="material-params-content">
<div class="params-list">
<div class="param-item">
<div class="param-row" v-if="item.specification">
<span class="param-label">规格</span>
<span class="param-value">{{ item.specification }}</span>
</div>
<div class="param-row" v-if="item.material">
<span class="param-label">材质</span>
<span class="param-value">{{ item.material }}</span>
</div>
<div class="param-row" v-if="item.surfaceTreatment">
<span class="param-label">表面处理</span>
<span class="param-value">{{ item.surfaceTreatment }}</span>
</div>
<div class="param-row" v-if="item.zincLayer">
<span class="param-label">镀层质量</span>
<span class="param-value">{{ item.zincLayer }}</span>
</div>
<div class="param-row" v-if="item.manufacturer">
<span class="param-label">厂家</span>
<span class="param-value">{{ item.manufacturer }}</span>
</div>
</div>
</div>
</div>
<span slot="reference" style="cursor: pointer; color: #2bf;">{{ item.itemName || '—' }}</span>
</el-popover>
</span>
</div>
</p>
</div>
<!-- 详细信息区域 -->
<!-- <div class="card-content" style="margin-bottom: 16px;">
<div class="info-row" style="display: flex; justify-content: space-between; margin-bottom: 10px;">
<div class="info-item" style="flex: 1; text-align: center;">
<div style="font-size: 11px; color: #909399; margin-bottom: 2px;">仓库</div>
<div style="font-size: 14px; font-weight: 600; color: #303133;">
{{ item.warehouseName || '-' }}
</div>
</div>
<div style="width: 1px; background: #e4e7ed; margin: 0 8px;"></div>
<div class="info-item" style="flex: 1; text-align: center;">
<div style="font-size: 11px; color: #909399; margin-bottom: 2px;">实际仓库</div>
<div style="font-size: 14px; font-weight: 600; color: #303133;">
{{ item.actualWarehouseName || '-' }}
</div>
</div>
<div style="display: flex; justify-content: space-between;">
<svg-icon icon-class="coil" style="width: 1.5rem; height: 1.5rem;"></svg-icon>
<div style="font-size: 0.875rem; line-height: 1.25rem; display: flex; gap: 0.5rem;">
<el-button type="primary" size="mini" @click="handleContinueSplit(item)"
style="min-width: 80px; padding: 5px 15px;">
查看
</el-button>
<el-button size="mini" @click="handleCancelSplit(item)"
style="min-width: 80px; padding: 5px 15px; margin-left: 12px; border-color: #f56c6c; color: #f56c6c;"
:plain="true">
取消
</el-button>
</div>
<div class="weight-info" style="background: linear-gradient(135deg, #f0f9eb 0%, #e1f3d8 100%);
border-radius: 6px; padding: 8px; margin-top: 8px; text-align: center;">
<div style="display: inline-block;">
<div style="font-size: 12px; color: #67c23a; margin-bottom: 2px;">净重</div>
<div style="font-size: 18px; font-weight: 700; color: #67c23a;">
{{ item.netWeight ? `${item.netWeight} kg` : '-' }}
</div>
</div>
</div>
</div> -->
<!-- 操作按钮区域 -->
<div class="card-actions" style="text-align: center; border-top: 1px solid #ebeef5; padding-top: 12px;">
<el-button type="primary" size="mini" @click="handleContinueSplit(item)"
style="min-width: 80px; padding: 5px 15px;">
查看
</el-button>
<el-button size="mini" @click="handleCancelSplit(item)"
style="min-width: 80px; padding: 5px 15px; margin-left: 12px; border-color: #f56c6c; color: #f56c6c;"
:plain="true">
取消
</el-button>
</div>
</div>
</div>

View File

@@ -29,7 +29,7 @@
<el-descriptions-item label="厂家原料卷号">{{ coilInfo.supplierCoilNo || '-' }}</el-descriptions-item>
<el-descriptions-item label="所在库位">{{ coilInfo.warehouseName || '-' }}</el-descriptions-item>
<el-descriptions-item label="材料类型">{{ coilInfo.materialType || '-' }}</el-descriptions-item>
<el-descriptions-item label="净重">{{ coilInfo.netWeight || '-' }} kg</el-descriptions-item>
<el-descriptions-item label="净重">{{ coilInfo.netWeight || '-' }} T</el-descriptions-item>
</el-descriptions>
<!-- 已分条钢卷列表 -->