一.设计思路

将form表单映射成json结构,实现form表单数据和显示的分离,进而实现form表单的通用性。

二.设计原则

  1. 将form表单的验证规则,置于form表单中,而非form表单控件中
  2. 基于react的状态更新机制,所有form表单里的控件为受控组件中文 英文

三. json描述及解读

属性 类型 说明 是否可以为空 规则
type string 组件名 小写
label string 字段中文名 字段中文名
initValue array 控件初始值 必须是数组
placeholder string 控件默认提示 必须为字符串
message string 控件错误信息提示 必须为字符串
matchfield string 确认密码是否相同的字段 必须为字符串
readonly boolean 控件是否只读 必须为true/false
validator array 控件验证规则 必须是数组
dataUrl string 控件初始化请求地址 必须为字符串
validateUrl string 与服务器端验证接口 必须为字符串
  {
    "form": {
      "accountname": {
          "type": "text",
          "label": "账户名",
          "initValue": [
              ""
          ],
          "readOnly": false,
          "placeholder": "请输入不超过5个字符",
          "validator": [
              "noneEmptyFunc",
              "isExistFunc",
              "checkMaxLength"
          ],
          "message": "不能为空",
          "isModify": false,
          "validateUrl": "/user/isExist.shtml"
      },
      "locked": {
          "type": "select",
          "label": "锁",
          "initValue": [
              {
              "0": "否",
              "1": "是"
              }
          ],
          "readOnly": false,
          "placeholder": "是否被锁定",
          "validator": [
              "noneEmptyFunc"
          ],
          "message": "不能为空"
      },
      "roleId": {
          "type": "transfer",
          "label": "角色分配",
          "dataUrl": "/user/getRoles.shtml",
          "initValue": [],
          "placeholder": "请选择",
          "readOnly": false,
          "validator": [
              "noneEmptyFunc",
              "isExistFunc"
          ],
          "message": "不能为空"
      }
    }
  }
 

以上几个字段为必填字段,并按照规则配好初始化值 其他字段可根据控件类型可选添加