说明 / 示例
# 1.功能点

# 2.解决方案(失败)--定义字段规则。这里规则是业务规则不适用
## 2.1 寻找字段

## 2.2 定义规则

## 2.3 底层:
```javaScript
</FormItem> : <FormItem labelCol={{span: 6}} wrapperCol={{ span: 18 }} label={IDENTITY_CARD_LABEL}>
{getFieldDecorator('identityCard', {
rules: [WHITE_SPACE, TYPE_IDENTITY_CARD],
initialValue: userInfo.identityCard
})(
<Input onChange={this.onChangeHandler} />
)}
</FormItem>
```
# 3.自定义解决方案
## 自定义传值类型(未采用)

## 最终数据渲染:(采用动态字段特殊处理)
### 场景一:只修改单字段校验
renderFields.js
```javaScript
// 2019-12-28 增加 前端 多规则字段。
let { WHITE_SPACE, TYPE_IDENTITY_CARD } = VALIDATE_RULE_SET || {};
let rules = [{required: required, message: message}]; // 默认规则处理
// 证件号特殊处理
if(columnCode === 'DEF_ZJH_001') {
rules= [{required: required, message: message},TYPE_IDENTITY_CARD];
}
// rules 已通过 message和readOnly做改造实现 多规则配置。
let fieldProps = {
name: columnCode,
fieldId,
label,
value,
placeholder: tips,
type: dataType,
layout,
onFieldChange,
currencies,
required,
message,
readOnly,
dataSourceScope,
accountCurrencyId,
// 2019-12-28 hej
rules,
bizDate
};
```

### 场景2:字段关联校验
依据选择实现不同的数据校验逻辑。
由于每次改变数据都会重新调用renderField.Js.所以有新的方案处理
关注
async onFieldChange (fieldId, name, value) {
证件类型为空

证件 value

```javaScript
let {hidden, required, readOnly, style, dataSourceScope: recordDataSourceScope, value} = (record && record[columnCode]) || {};
let isMtext = dataType === 'MTEXT';
let layout = isMtext ? FORMLAYOUT_100 : FORMLAYOUT_50;
// 2020-1-2 先定义证件类型
if(columnCode === 'DEF_BXZJLX_001'){
if (value&&value.title) {
cardType=value.title.zh_CN;
}
}
...
// 由支出记录的报销状态决定是否可编辑了
readOnly = isDisabledStatus || readOnly;
// 2019-12-28 增加 前端 多规则字段。
let { WHITE_SPACE, TYPE_IDENTITY_CARD } = VALIDATE_RULE_SET || {};
let rules = [{required: required, message: message}]; // 默认规则处理
// 证件号特殊处理
if(columnCode === 'DEF_ZJH_001'&&cardType==='身份证号') {
rules= [{required: required, message: message},TYPE_IDENTITY_CARD];
}
// 由
```