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;
|
static isFormItem = true;
|
||||||
|
|
||||||
getRules({
|
getRules({
|
||||||
|
names,
|
||||||
rules,
|
rules,
|
||||||
withoutChinese,
|
withoutChinese,
|
||||||
isFile,
|
isFile,
|
||||||
@ -51,6 +52,16 @@ export default class index extends Component {
|
|||||||
isImage,
|
isImage,
|
||||||
isInstance,
|
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;
|
let validator = nameValidate;
|
||||||
if (isFile) {
|
if (isFile) {
|
||||||
validator = fileNameValidate;
|
validator = fileNameValidate;
|
||||||
@ -67,16 +78,13 @@ export default class index extends Component {
|
|||||||
} else if (isCrontab) {
|
} else if (isCrontab) {
|
||||||
validator = crontabNameValidate;
|
validator = crontabNameValidate;
|
||||||
}
|
}
|
||||||
let newRules = {
|
const newRules = {
|
||||||
validator,
|
validator,
|
||||||
};
|
};
|
||||||
if (rules && rules.length > 0) {
|
if (rules && rules.length > 0) {
|
||||||
newRules = {
|
return [...rules, newRules, uniqueRule];
|
||||||
...newRules,
|
|
||||||
...rules[0],
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
return [newRules];
|
return [newRules, uniqueRule];
|
||||||
}
|
}
|
||||||
|
|
||||||
getMessage({
|
getMessage({
|
||||||
@ -122,6 +130,7 @@ export default class index extends Component {
|
|||||||
isCrontab,
|
isCrontab,
|
||||||
isImage,
|
isImage,
|
||||||
isInstance,
|
isInstance,
|
||||||
|
names,
|
||||||
...componentRest
|
...componentRest
|
||||||
} = componentProps;
|
} = componentProps;
|
||||||
const placeholder = isFile
|
const placeholder = isFile
|
||||||
@ -133,6 +142,7 @@ export default class index extends Component {
|
|||||||
};
|
};
|
||||||
const { rules, ...rest } = formItemProps;
|
const { rules, ...rest } = formItemProps;
|
||||||
const newRules = this.getRules({
|
const newRules = this.getRules({
|
||||||
|
names,
|
||||||
rules,
|
rules,
|
||||||
withoutChinese,
|
withoutChinese,
|
||||||
isFile,
|
isFile,
|
||||||
|
@ -111,7 +111,7 @@ export default class Create extends ModalAction {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
label: t('Name'),
|
label: t('Name'),
|
||||||
type: 'input-name',
|
type: 'input-name',
|
||||||
placeholder: t('Please input name'),
|
names: this.store.list.data.map((it) => it.name),
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
// TODO: get cinder service list
|
// TODO: get cinder service list
|
||||||
|
@ -42,7 +42,9 @@ export default class EditAction extends ModalAction {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
label: t('Name'),
|
label: t('Name'),
|
||||||
type: 'input-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,
|
required: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user