<a-form-item label="名称" name="remark" :validate-status="validateRemarkStatus" :help="validateRemarkHelp" > <a-input v-model:value="formState.remark" placeholder="请输入名称" /> </a-form-item> const validateRemarkStatus = ref('success'); const validateRemarkHelp = ref(''); const validateRemark = async (_rule: Rule, value: string) => { if (value === '') { validateRemarkStatus.value = 'error'; validateRemarkHelp.value = '请输入名称'; return Promise.reject(); } else { // 名称支持输入中英文、数字、短横线、下划线 ,字符数≤20 const remarkReg = /^[\u4e00-\u9fa5a-zA-Z0-9-_]{1,20}$/; if (!remarkReg.test(value)) { validateRemarkStatus.value = 'error'; validateRemarkHelp.value = '由中英文、数字、短横线、下划线组成,不超过20个字符'; return Promise.reject(); } else { const repeatName = allAppRemark.value.filter( (item) => item.toUpperCase() === value.toUpperCase() && value !== oldRemark, ); if (repeatName.length) { validateRemarkStatus.value = 'error'; validateRemarkHelp.value = '名称不能重复命名'; return Promise.reject(); } } const envReg = /\b(dev|test|ceshi|stage|pre|pro|prod)\b/; if (envReg.test(value)) { validateRemarkStatus.value = 'warning'; validateRemarkHelp.value = '命名不规范,建议名称中不包含test、ceshi、dev、pre、stage、pro、prod等环境信息'; return Promise.resolve(); } validateRemarkStatus.value = 'success'; validateRemarkHelp.value = ''; return Promise.resolve(); } };