refactor(wms): 合并库存表为统一inventory,重构业务逻辑

1. 合并inventory_batch与serial_number为统一inventory表,用manage_mode区分结构件批次/精密件SN
2. 移除冗余的material_type字段与相关逻辑
3. 重构库存查询、检验、入库出库等业务逻辑适配新表结构
4. 调整前端路由与菜单,拆分基础数据为区域维护和物料档案
5. 优化入库校验逻辑,避免空单问题
6. 调整Vite构建配置,关闭自动清空输出目录
7. 为各模块添加详细中文注释,统一业务术语
8. 生成并更新Ent自动代码文件
This commit is contained in:
SunYF
2026-09-02 08:21:11 +08:00
parent 47573e44b0
commit 68f50ee46e
70 changed files with 5895 additions and 9818 deletions
@@ -36,6 +36,13 @@ async function submitBatch() {
ElMessage.warning('数量必须大于 0')
return
}
// 管理粒度校验:精密件必须走 SN 入库页。
// 否则后端因 snList 为空直接拒绝,历史上会在失败后残留一张无明细无库存的"空单"。
const mat1 = materials.value.find(m => m.code === form1.materialCode)
if (mat1 && Number(mat1.manageMode) === 2) {
ElMessage.warning('该物料为精密件(按 SN 管理),请切换到「精密件 SN 入库」页扫码录入后再提交')
return
}
submitting1.value = true
try {
const data = await request.post('/inbound/create', {
@@ -95,6 +102,12 @@ async function submitSn() {
ElMessage.warning('请先扫码录入 SN(输入后点击【录入到列表】)')
return
}
// 管理粒度校验(反向):结构件按批次管理,不能带 SN 清单提交
const mat2 = materials.value.find(m => m.code === form2.materialCode)
if (mat2 && Number(mat2.manageMode) === 1) {
ElMessage.warning('该物料为结构件(按批次管理),请切换到「结构件入库」页按数量入库')
return
}
submitting2.value = true
try {
const data = await request.post('/inbound/create', {