feat: 完成区域管理、装箱功能优化与接口标准化

- 新增区域状态字段与增删改查接口,支持区域启用/停用
- 重构实体字段JSON标签为camelCase格式统一接口规范
- 优化入库、盘点、装箱流程的交互与提示文案
- 新增装箱管理功能,支持合同号关联与装箱编辑
- 调整前端菜单与帮助文档适配业务场景变更
This commit is contained in:
SunYF
2026-09-01 13:49:44 +08:00
parent ea6d55b7e6
commit bb22148625
59 changed files with 2238 additions and 357 deletions
@@ -11,7 +11,7 @@ const materials = ref([])
const zones = ref([])
onMounted(async () => {
const [ms, zs] = await Promise.all([request.get('/material/list'), request.get('/zone/list')])
const [ms, zs] = await Promise.all([request.get('/material/list'), request.get('/zone/picker')])
materials.value = Array.isArray(ms) ? ms : ms?.list || []
zones.value = Array.isArray(zs) ? zs : zs?.list || []
})
@@ -26,6 +26,7 @@ const form1 = reactive({
})
const rules1 = {
materialCode: [{ required: true, message: '请选择物料', trigger: 'change' }],
zoneCode: [{ required: true, message: '请选择入库区域', trigger: 'change' }],
quantity: [{ required: true, message: '请输入数量', trigger: 'blur' }]
}
@@ -86,8 +87,12 @@ async function submitSn() {
ElMessage.warning('请选择物料')
return
}
if (!form2.zoneCode) {
ElMessage.warning('请选择入库区域')
return
}
if (!snList.value.length) {
ElMessage.warning('请先扫码录入 SN(输入后回车追加')
ElMessage.warning('请先扫码录入 SN(输入后点击【录入到列表】')
return
}
submitting2.value = true
@@ -163,8 +168,8 @@ async function importExcel() {
<el-form-item label="数量" prop="quantity">
<el-input-number v-model="form1.quantity" :min="1" :step="1" step-strictly style="width:100%" />
</el-form-item>
<el-form-item label="区域">
<el-select v-model="form1.zoneCode" placeholder="选择库区" clearable style="width:100%">
<el-form-item label="区域" prop="zoneCode">
<el-select v-model="form1.zoneCode" placeholder="选择库区域(必填)" clearable style="width:100%">
<el-option v-for="z in zones" :key="z.id" :value="z.zoneCode"
:label="`${z.zoneCode} ${z.zoneName || ''}`" />
</el-select>
@@ -189,14 +194,14 @@ async function importExcel() {
<el-tab-pane :label="`精密件 SN 入库${snList.length ? `(已扫 ${snList.length}` : ''}`">
<el-form label-width="110px" style="max-width:680px">
<el-form-item label="物料">
<el-select v-model="form2.materialCode" filterable placeholder="选择物料编码" style="width:100%">
<el-form-item label="物料" required>
<el-select v-model="form2.materialCode" filterable placeholder="选择物料(必填)" style="width:100%">
<el-option v-for="m in materials" :key="m.id" :value="m.code"
:label="`${m.code} ${m.name || ''}`" />
</el-select>
</el-form-item>
<el-form-item label="区域">
<el-select v-model="form2.zoneCode" placeholder="选择库区(可空" clearable style="width:100%">
<el-form-item label="区域" required>
<el-select v-model="form2.zoneCode" placeholder="选择库区域(必填" clearable style="width:100%">
<el-option v-for="z in zones" :key="z.id" :value="z.zoneCode"
:label="`${z.zoneCode} ${z.zoneName || ''}`" />
</el-select>