feat(component): 部分组件添加限制中文输入

master
钟良源 4 days ago
parent 94c7209355
commit f1827f133b

@ -144,10 +144,23 @@ const AddApiModal = ({
{ {
required: true, required: true,
message: '请输入接口名称' message: '请输入接口名称'
},
{
validator: (value, cb) => {
if (!value) {
return cb();
}
// 只允许英文字母、数字和下划线
const pattern = /^[a-zA-Z0-9_]+$/;
if (!pattern.test(value)) {
return cb('接口名称只能包含英文字母、数字和下划线');
}
return cb();
}
} }
]} ]}
> >
<Input placeholder="请输入接口名称" /> <Input placeholder="请输入接口名称(仅支持英文字母、数字和下划线)" />
</FormItem> </FormItem>
<FormItem label="描述" field="desc"> <FormItem label="描述" field="desc">
<TextArea placeholder="请输入描述" /> <TextArea placeholder="请输入描述" />

@ -621,7 +621,11 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c
if (!value) { if (!value) {
return cb('请输入代码标识'); return cb('请输入代码标识');
} }
// 只允许英文字母、数字和下划线
const pattern = /^[a-zA-Z0-9_]+$/;
if (!pattern.test(value)) {
return cb('代码标识只能包含英文字母、数字和下划线');
}
return cb(); return cb();
} }
} }
@ -629,7 +633,7 @@ const AddComponentModal = ({ visible, baseInfo, setVisible, onReFresh, mode = 'c
<Input <Input
style={{ width: '90%' }} style={{ width: '90%' }}
allowClear allowClear
placeholder="请输入代码标识" placeholder="请输入代码标识(仅支持英文字母、数字和下划线)"
disabled={isReadOnly || created || isEditMode} disabled={isReadOnly || created || isEditMode}
onChange={(e) => debouncedValidateProjectId(e)} onChange={(e) => debouncedValidateProjectId(e)}
/> />

@ -23,6 +23,8 @@ const arrayTypeOptions = [
]; ];
function EditableCell({ value, onChange, columnType, record, dataIndex }) { function EditableCell({ value, onChange, columnType, record, dataIndex }) {
const [error, setError] = useState('');
// 对于数组类型字段的特殊处理 // 对于数组类型字段的特殊处理
if (dataIndex === 'generic') { if (dataIndex === 'generic') {
// 仅当数据类型为 ARRAY 时才可编辑 // 仅当数据类型为 ARRAY 时才可编辑
@ -43,6 +45,33 @@ function EditableCell({ value, onChange, columnType, record, dataIndex }) {
} }
if (columnType === 'input') { if (columnType === 'input') {
// 对于 ident 字段(名称列)添加验证
if (dataIndex === 'ident') {
const handleIdentChange = (val) => {
// 验证是否只包含英文字母、数字和下划线
const pattern = /^[a-zA-Z0-9_]*$/;
if (val && !pattern.test(val)) {
setError('只能包含英文字母、数字和下划线');
Message.error('参数名称只能包含英文字母、数字和下划线');
return;
}
setError('');
onChange(val);
};
return (
<div>
<Input
value={value}
onChange={handleIdentChange}
placeholder="请输入(仅支持英文字母、数字和下划线)"
status={error ? 'error' : undefined}
/>
{error && <div style={{ color: '#f53f3f', fontSize: 12, marginTop: 4 }}>{error}</div>}
</div>
);
}
return ( return (
<Input <Input
value={value} value={value}

Loading…
Cancel
Save