fix(heli): 解决物料大类编码维护中的表单验证和交互问题

- 修改错误消息文本,明确物料大类已存在时不允许新增
- 在更新模式下禁用物料大类选择框,防止意外修改
- 在更新模式下禁用物料分类编码输入框,保持数据一致性
- 在更新模式下禁用最大流水号输入框,防止序列号混乱
- 改进最大流水号验证逻辑,显示准确的位数要求
- 统一操作成功消息提示,避免重复的成功反馈
- 添加异常处理,避免错误重复提示
This commit is contained in:
zxy 2026-03-20 14:42:13 +08:00
parent 7f269c516f
commit d9adff9c69
2 changed files with 10 additions and 8 deletions

View File

@ -178,7 +178,7 @@ public interface ErrorCodeConstants {
// ========== 物料大类编码维护 ==========
ErrorCode MAT_CODE_NOT_EXISTS = new ErrorCode(1_014_001, "该物料大类不存在");
ErrorCode MAT_CAT_CODE_REPEAT = new ErrorCode(1_014_002, "该物料大类已存在");
ErrorCode MAT_CAT_CODE_REPEAT = new ErrorCode(1_014_002, "该物料大类已存在,不允许新增!");
ErrorCode MAT_CAT_CODE_DISABLED = new ErrorCode(1_014_003, "该物料大类没有维护物料大类编码,请维护!");
ErrorCode MAT_CAT_CODE_ERROR = new ErrorCode(1_014_004, "该物料大类编码不正确,请检查!");

View File

@ -9,7 +9,7 @@
v-loading="formLoading"
>
<el-form-item label="物料大类" prop="matTypeCode">
<el-select v-model="formData.matTypeCode" clearable placeholder="请选择物料大类" @change="handleMatCatChange" >
<el-select v-model="formData.matTypeCode" clearable placeholder="请选择物料大类" @change="handleMatCatChange" :disabled="formType === 'update'">
<el-option
v-for="dict in getStrDictOptions(DICT_TYPE.HELI_MATERIAL_CODE)"
:key="dict.value"
@ -20,10 +20,10 @@
</el-form-item>
<el-form-item label="物料分类编码" prop="matTypeCode" >
<el-input v-model="formData.matTypeCode" placeholder="请输入物料分类编码" show-word-limit disabled/>
<el-input v-model="formData.matTypeCode" placeholder="请输入物料分类编码" show-word-limit :disabled="formType === 'update'"/>
</el-form-item>
<el-form-item label="最大流水号" prop="curMaxSeq" >
<el-input v-model="formData.curMaxSeq" placeholder="请输入当前最大流水号" maxlength="6" show-word-limit/>
<el-input v-model="formData.curMaxSeq" placeholder="请输入当前最大流水号" :disabled="formType === 'update'" show-word-limit/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="formData.status">
@ -80,8 +80,9 @@ const formRules = reactive({
// + = 8
const matTypeCode = formData.value.matTypeCode || ''
const curMaxSeqStr = String(value)
if (matTypeCode.length + curMaxSeqStr.length !== 8) {
callback(new Error('最大流水号格式不正确!'))
const expectedLength = 8 - matTypeCode.length
if (curMaxSeqStr.length !== expectedLength) {
callback(new Error(`最大流水号必须是${expectedLength}位数字`))
return
}
callback()
@ -122,14 +123,15 @@ const submitForm = async () => {
const data = formData.value as unknown as MatCodeApi.MatCodeVO
if (formType.value === 'create') {
await MatCodeApi.createMatCode(data)
message.success(t('common.createSuccess'))
} else {
await MatCodeApi.updateMatCode(data)
message.success(t('common.updateSuccess'))
}
message.success(t('common.operationSuccess'))
dialogVisible.value = false
//
emit('success')
} catch (e) {
//
} finally {
formLoading.value = false
}