From bf22ea704ede9b5fe24911ea527b6694f2277295 Mon Sep 17 00:00:00 2001 From: xusongfu Date: Mon, 13 Dec 2021 16:46:02 +0800 Subject: [PATCH] fix: Fix the validate message for some fields with empty value Change the validate messge for the form item whitch type is select or select-table Change-Id: I839575099d2385469f4269d1dee4c8c11cc1e9b7 --- src/components/FormItem/index.jsx | 20 +++++++++++++------ .../actions/CreateIronic/BaseStep/index.jsx | 1 + .../containers/Instance/actions/Resize.jsx | 1 + .../Instance/actions/ResizeOnline.jsx | 1 + .../actions/StepCreate/BaseStep/index.jsx | 1 + 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/components/FormItem/index.jsx b/src/components/FormItem/index.jsx index 6e9a6a76..160e6d9f 100644 --- a/src/components/FormItem/index.jsx +++ b/src/components/FormItem/index.jsx @@ -259,7 +259,9 @@ export default class FormItem extends React.Component { getSelectTableValidator = (rule, value) => { if (!value || value.selectedRowKeys.length === 0) { - return Promise.reject(t('Please select!')); + return Promise.reject( + new Error(rule.placeholder || `${t('Please select')}${rule.label}!`) + ); } return Promise.resolve(); }; @@ -288,6 +290,7 @@ export default class FormItem extends React.Component { name, hidden, label, + placeholder, } = this.props; if (hidden) { return []; @@ -299,9 +302,16 @@ export default class FormItem extends React.Component { const newRule = {}; const requiredRule = {}; if (required) { - if (tip && type.indexOf('select-table') < 0) { + if (type && type.includes('select-table')) { requiredRule.required = true; - requiredRule.message = `${t('Please input') + label}!`; + requiredRule.validator = (rule, value) => + this.getSelectTableValidator({ ...rule, ...this.props }, value); + } else if (type && type.includes('select')) { + requiredRule.required = true; + requiredRule.message = placeholder || `${t('Please select') + label}!`; + } else if (tip) { + requiredRule.required = true; + requiredRule.message = placeholder || `${t('Please input') + label}!`; } else { newRule.required = required; } @@ -311,9 +321,7 @@ export default class FormItem extends React.Component { } if (validator) { newRule.validator = validator; - } else if (type.indexOf('select-table') >= 0 && required) { - newRule.validator = this.getSelectTableValidator; - } else if (type.indexOf('textarea') >= 0 && name === 'description') { + } else if (type && type.includes('textarea') && name === 'description') { newRule.validator = this.getDescriptionValidator; } if (!isEmpty(newRule)) { diff --git a/src/pages/compute/containers/Instance/actions/CreateIronic/BaseStep/index.jsx b/src/pages/compute/containers/Instance/actions/CreateIronic/BaseStep/index.jsx index d80c46ff..e402acbc 100644 --- a/src/pages/compute/containers/Instance/actions/CreateIronic/BaseStep/index.jsx +++ b/src/pages/compute/containers/Instance/actions/CreateIronic/BaseStep/index.jsx @@ -171,6 +171,7 @@ export class BaseStep extends Base { { name: 'flavor', label: t('Specification'), + type: 'select-table', component: ( ), diff --git a/src/pages/compute/containers/Instance/actions/Resize.jsx b/src/pages/compute/containers/Instance/actions/Resize.jsx index 1fae1ee4..a8d0aec3 100644 --- a/src/pages/compute/containers/Instance/actions/Resize.jsx +++ b/src/pages/compute/containers/Instance/actions/Resize.jsx @@ -110,6 +110,7 @@ export class Resize extends ModalAction { { name: 'newFlavor', label: t('Flavor'), + type: 'select-table', component: ( ), diff --git a/src/pages/compute/containers/Instance/actions/ResizeOnline.jsx b/src/pages/compute/containers/Instance/actions/ResizeOnline.jsx index 16693640..866ca7e8 100644 --- a/src/pages/compute/containers/Instance/actions/ResizeOnline.jsx +++ b/src/pages/compute/containers/Instance/actions/ResizeOnline.jsx @@ -109,6 +109,7 @@ export class ResizeOnline extends ModalAction { { name: 'newFlavor', label: t('Flavor'), + type: 'select-table', component: (