<Form.Item colon={false} {...formItemLayout} label={formatMessage({ id: 'DataClassifyConfig.subtypeCode', defaultMessage: '子分类编码', })} > {getFieldDecorator('subtypeCode', { initialValue: dataSubType && dataSubType.subtypeCode, rules: [ { required: true, message: formatMessage({ id: 'DataClassifyConfig.checkCode', defaultMessage: '只能输入大小写英文、符号和数字', }), }, { validator: (rule, value, callback) => this.handleValidator(rule, value, callback, dataSubType.subtypeCode), }, ], })( <Input placeholder={formatMessage({ id: 'COMMON_ENTER_TIP', defaultMessage: '请输入', })} /> )} </Form.Item>
handleValidator = (rule, value, callback, val) => { const { list } = this.props; const codeExp = /^[a-z0-9A-Z]$/; let isTrue = false; list.map(o => { if (o.subtypes.find(item => item.subtypeCode == value) !== undefined && val !== value) { isTrue = true; } return o; }); if (isTrue) { callback( formatMessage({ id: 'DataClassifyConfig.nameAlreadyExists', defaultMessage: '该名称已存在', }) ); } else if (!value.match(codeExp)) { callback( formatMessage({ id: 'DataClassifyConfig.checkCode', }) ); } else if (escape(value).indexOf('%u') != -1) { callback( formatMessage({ id: 'DataClassifyConfig.checkCode', }) ); } else if (!(value.indexOf(" ") == -1)) { callback( formatMessage({ id: 'DataClassifyConfig.checkCode', }) ); } else { callback(); } };