fix: Fix unique name when create/edit volume type
1. Check unique name when create volume type 2. Check unique name when edit volume type Change-Id: I4d736c3b30ff718a8dd00d05890cb67cdbabec94
This commit is contained in:
parent
542f0bc94b
commit
8dac045ee2
@ -42,6 +42,7 @@ export default class index extends Component {
|
||||
static isFormItem = true;
|
||||
|
||||
getRules({
|
||||
names,
|
||||
rules,
|
||||
withoutChinese,
|
||||
isFile,
|
||||
@ -51,6 +52,16 @@ export default class index extends Component {
|
||||
isImage,
|
||||
isInstance,
|
||||
}) {
|
||||
const uniqueNameValidate = (rule, value) => {
|
||||
if (names && names.length && names.includes(value)) {
|
||||
const message = t('Name can not be duplicated');
|
||||
return Promise.reject(new Error(`${t('Invalid: ')}${message}`));
|
||||
}
|
||||
return Promise.resolve(true);
|
||||
};
|
||||
const uniqueRule = {
|
||||
validator: uniqueNameValidate,
|
||||
};
|
||||
let validator = nameValidate;
|
||||
if (isFile) {
|
||||
validator = fileNameValidate;
|
||||
@ -67,16 +78,13 @@ export default class index extends Component {
|
||||
} else if (isCrontab) {
|
||||
validator = crontabNameValidate;
|
||||
}
|
||||
let newRules = {
|
||||
const newRules = {
|
||||
validator,
|
||||
};
|
||||
if (rules && rules.length > 0) {
|
||||
newRules = {
|
||||
...newRules,
|
||||
...rules[0],
|
||||
};
|
||||
return [...rules, newRules, uniqueRule];
|
||||
}
|
||||
return [newRules];
|
||||
return [newRules, uniqueRule];
|
||||
}
|
||||
|
||||
getMessage({
|
||||
@ -122,6 +130,7 @@ export default class index extends Component {
|
||||
isCrontab,
|
||||
isImage,
|
||||
isInstance,
|
||||
names,
|
||||
...componentRest
|
||||
} = componentProps;
|
||||
const placeholder = isFile
|
||||
@ -133,6 +142,7 @@ export default class index extends Component {
|
||||
};
|
||||
const { rules, ...rest } = formItemProps;
|
||||
const newRules = this.getRules({
|
||||
names,
|
||||
rules,
|
||||
withoutChinese,
|
||||
isFile,
|
||||
|
@ -111,7 +111,7 @@ export default class Create extends ModalAction {
|
||||
name: 'name',
|
||||
label: t('Name'),
|
||||
type: 'input-name',
|
||||
placeholder: t('Please input name'),
|
||||
names: this.store.list.data.map((it) => it.name),
|
||||
required: true,
|
||||
},
|
||||
// TODO: get cinder service list
|
||||
|
@ -42,7 +42,9 @@ export default class EditAction extends ModalAction {
|
||||
name: 'name',
|
||||
label: t('Name'),
|
||||
type: 'input-name',
|
||||
placeholder: t('Please input name'),
|
||||
names: this.store.list.data
|
||||
.filter((it) => it.id !== this.item.id)
|
||||
.map((it) => it.name),
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user