feat&refactor: 2026-09-22 半成品业务模型重构与功能完善

- 重构半成品流转逻辑:进度权威源改为 workpiece.currentStationNo,新增 completedText 快照字段,废除 doneProcessCodes
- 清理物料品类中半成品类型,存量数据幂等清理,调整物料管理方式文案为批次/序列号
- 新增日排产状态专用更新接口,修复工单工艺校验逻辑
- 新增物料档案代理接口、深路径文件下载接口
- 优化前端界面文案与工位选择逻辑,补充追溯页半成品流转展示
- 调整WMS端物料品类校验与入库接口契约
- 新增/更新数据库表结构与实体类代码
This commit is contained in:
SunYF
2026-09-22 14:42:52 +08:00
parent 09cfc6ca1c
commit d3eda6b588
49 changed files with 1155 additions and 1122 deletions
+9 -11
View File
@@ -429,12 +429,12 @@ function openMatAttach(row) {
Object.assign(attachDrawer, { visible: true, code: row.code, name: row.name })
}
// 品类显示(1原材料/2半成品/3成品/4其他)
// 品类显示(1原材料/3成品/4其他;半成品不是物料品类,防御性保留显示
function itemTypeText(t) {
return t === 3 ? '成品' : t === 2 ? '半成品' : t === 4 ? '其他' : '原材料'
return t === 3 ? '成品' : t === 4 ? '其他' : '原材料'
}
function itemTypeTagType(t) {
return t === 3 ? 'success' : t === 2 ? 'warning' : t === 4 ? 'danger' : 'info'
return t === 3 ? 'success' : t === 4 ? 'danger' : 'info'
}
// 区域维护 / 物料档案共用同一组件:切换菜单时复用,watch(mode, immediate) 保证进入即加载
@@ -867,15 +867,14 @@ async function onMaterialFile(e) {
</el-form-item>
<el-form-item label="类型">
<el-select v-model="matFilter.manageMode" placeholder="全部" clearable style="width:150px" @change="searchMaterials">
<el-option label="结构件(批次管理)" :value="1" />
<el-option label="电气件(SN管理)" :value="2" />
<el-option label="批次" :value="1" />
<el-option label="序列号" :value="2" />
<el-option label="其他辅料/工装/试验设备" :value="3" />
</el-select>
</el-form-item>
<el-form-item label="品类">
<el-select v-model="matFilter.itemType" placeholder="全部" clearable style="width:120px" @change="searchMaterials">
<el-option label="原材料" :value="1" />
<el-option label="半成品" :value="2" />
<el-option label="成品" :value="3" />
<el-option label="其他" :value="4" />
</el-select>
@@ -892,7 +891,7 @@ async function onMaterialFile(e) {
<el-button v-if="can('material:create')" type="success" @click="openMatCreate">新增物料</el-button>
<el-button v-if="can('material:import')" type="warning" :loading="matImporting" @click="pickMaterialFile">导入</el-button>
<el-button v-if="can('material:export')" :loading="matExporting" @click="exportMaterials">导出</el-button>
<el-tooltip v-if="can('material:import')" content="Excel 首行表头按名称识别列顺序可变可含多余列图号 | 名称 | 规格 | 单位 | 类型(结构件/电气件/其他) | 品类(原材料/半成品/成品/其他可选) | 说明说明品类外均为必填">
<el-tooltip v-if="can('material:import')" content="Excel 首行表头按名称识别列顺序可变可含多余列图号 | 名称 | 规格 | 单位 | 类型(结构件/电气件/其他) | 品类(原材料/成品/其他可选半成品不是物料品类) | 说明说明品类外均为必填">
<el-link type="info" :underline="false" style="margin-left:4px">导入说明</el-link>
</el-tooltip>
<input ref="matFileRef" type="file" accept=".xlsx,.xls" style="display:none" @change="onMaterialFile" />
@@ -917,7 +916,7 @@ async function onMaterialFile(e) {
<el-table-column label="类型" width="140" align="center">
<template #default="{ row }">
<el-tag :type="row.manageMode === 3 ? 'info' : (row.manageMode === 2 ? 'warning' : 'primary')" size="small">
{{ row.manageMode === 3 ? '其他' : (row.manageMode === 2 ? '电气件(SN)' : '结构件(批次)') }}
{{ row.manageMode === 3 ? '其他' : (row.manageMode === 2 ? '序列号' : '批次') }}
</el-tag>
</template>
</el-table-column>
@@ -962,15 +961,14 @@ async function onMaterialFile(e) {
<el-form-item label="品类" required>
<el-select v-model="mForm.itemType" placeholder="请选择" style="width:100%">
<el-option :value="1" label="原材料" />
<el-option :value="2" label="半成品" />
<el-option :value="3" label="成品" />
<el-option :value="4" label="其他辅料/工装/试验设备" />
</el-select>
</el-form-item>
<el-form-item label="类型" required>
<el-select v-model="mForm.manageMode" placeholder="请选择" style="width:100%">
<el-option :value="1" label="结构件批次管理" />
<el-option :value="2" label="电气件SN 管理" />
<el-option :value="1" label="批次" />
<el-option :value="2" label="序列号" />
<el-option :value="3" label="其他辅料/工装/试验设备" />
</el-select>
</el-form-item>