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_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_DISABLED = new ErrorCode(1_014_003, "该物料大类没有维护物料大类编码,请维护!");
ErrorCode MAT_CAT_CODE_ERROR = new ErrorCode(1_014_004, "该物料大类编码不正确,请检查!"); ErrorCode MAT_CAT_CODE_ERROR = new ErrorCode(1_014_004, "该物料大类编码不正确,请检查!");

View File

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