0.23.18 • Published 2 years ago

beansflight-json-form v0.23.18

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

BeansFlight-JSON-FORM

版本号:verison 0.23.17

一份配置,轻松搞定配置 Vue 表单渲染


表单可以说是前端开发中最经常遇到的元素之一。在日常表单的开发中,存在着 v-if 条件渲染、满屏 magic number 枚举值,再加上表单之间的复杂的联动交互的情况,往往使得一个看似简单的表单变得愈加臃肿不堪。

表单的联动关系与状态重置往往散落在各个函数方法中,随着需求的不断扩充与变更,使得表单之间的耦合复杂度上升,对于后续的开发者而言,很难清晰快速地了解表单中隐含的业务逻辑与联动关系,这使得表单变得非常不便于维护。

特性

  • 数据收集、校验和提交功能的表单生成器,
  • 支持双向数据绑定和事件扩展,
  • 包含如下组件
    • 复选框、
    • 单选框
    • 输入框、
    • 下拉选择框等表单元素
    • 省市区三级联动,时间选择,
    • 日期选择
    • 文件/图片上传等功能组件
    • 富文本编辑器

一· form 支持的类型文本类型

1.Input:输入框

基础属性

属性说明类型默认值
extendType输入框类型,可选值为 textpasswordtextareaurlemaildatenumbertel, 通过设置属性 typetextarea 来使用文本域,用于多行输入。Stringtext
placeholder通过设置属性 rows 控制文本域默认显示的行数。占位文本String-
disabled设置输入框为禁用状态Booleanfalse
control组件回调函数Object{}

Input.extendType

属性说明类型
text如果不指定 extendType 则为 text 类型。String
passwordextendType="password" 时,开启属性 password 可以切换显示隐藏密码。String
number通过设置属性 extendTypetextarea 来控制 input 只能输入 number.String
textarea通过设置属性 extendTypetextarea 来使用文本域,用于多行输入。String

Input.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

2.Select: 下拉框

基础上属性

属性说明类型默认值
multiple是否支持多选Booleanfalse
disabled是否禁用Booleanfalse
placeholder选择框默认文字String请选择
options下拉框选项Object | Function{}
control组件回调函数Object{}

select.options

select.options 有 2 中传参形式:

  • 传递对象
{
  label: "下拉框",
  type: "select",
  key: "status",
  options: [
      { value: "0", label: "否" },
      { value: "1", label: "是" },
      { value: "2", label: "男" },
      { value: "3", label: "女" },
    ],

  span: 8,
},
  • 函数回调
{
  label: "下拉框",
  type: "select",
  key: "status",
  options: (value) => {
    // tempOpts 在data属性中声明
    return this.tempOpts
    },
  span: 8,
},

select.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据
change下拉框值改变时会掉此函数, (val) 为选中的值Functionoption 中选中的项

3.DatePicker: 日期选择器

基础属性

属性说明类型默认值
extendType显示类型,可选值为 datedaterangedatetimedatetimerangeyearmonthStringdate
placeholder占位文本String
disabledDate设置不可选择的日期,参数为当前的日期,需要返回 Boolean 是否禁用这天Functiondate
disabled是否禁用选择器Booleanfalse
control组件回调函数Object{}

datePicker.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

4.Cascader: 级联组件

基础属性

属性说明类型默认值
disabled是否禁用选择器BooleanFalse
placeholder输入框占位符String请选择
trigger次级菜单展开方式,可选值为 clickhoverStringhover
control组件回调函数Object{}

cascader.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

5.Checkbox: 多选框

基础属性

属性说明类型默认值
disabled是否禁用当前项Booleanfalse
label只在组合使用时有效。指定当前选项的 value 值,组合会自动判断是否选中String| Number|BooleanBoolean
control组件回调函数Object{}

checkbox.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

6.Radio: 单选框

基础属性

属性说明类型默认值
disabled是否禁用当前项Booleanfalse
border是否显示边框BooleanFalse
label只在组合使用时有效。指定当前选项的 value 值,组合会自动判断是否选中String| Number|BooleanBoolean
control组件回调函数Object{}

redio.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

7.Switch: 滑块

基础属性

属性说明类型默认值
disabled禁用开关Booleanfalse
control组件回调函数Object{}

switch.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

8.upload: 文件上传

基础属性

属性说明类型默认值
uploadTitle文件上传按钮标题String’‘
headers设置上传的请求头部Object{}
action上传的地址,必填String-
formate支持的文件类型,format 是识别文件的后缀名[]
multiple是否支持多选文件BooleanFalse
control组件回调函数Object{}

upload.control

属性说明类型默认值
error文件上传失败时的钩子,返回字段为 error, file, fileList, cbFunction-
success文件上传成功时的钩子,返回字段为 response, file, fileList,cbFunction-
formateError文件格式验证失败时的钩子,返回字段为 file, fileList,cbFunction-
remove文件列表移除文件时的钩子,返回字段为 file, fileList,cbFuntion-
handle用于处理表单联动, handel(form)为表单数据Function表单数据

9.rich: 富文本编辑器

基础属性

属性说明类型默认值
height编辑器默认高度Number400
placeholder编辑器默认描述String-
key编辑器输入的值String-
control组件回调函数Object-

rich.control

属性说明类型默认值
handle用于处理表单联动, handel(form)为表单数据Function表单数据

二·安装依赖与配置

依赖安装

yarn add beansflight-json-form

在 main.js 配置引入如下配置

//main.js
....
import beansflightForm from 'beansflight-json-form';
import 'beansflight-json-form/beansflightJsonForm/beansflight-json-form.css';
Vue.use(beansflightForm);
....

三·表单类型

1 tablePanel - 列表

页面展示

tablepanel

使用方式

<table-panel
  border
  ref="mainTable"
  :panelConfig="panelConfig"
  @newAction="newAction"
  @batchDeleteAction="batchDeleteAction"
  @allExportAction="allExportAction"
  @allExportAction="allExportAction"
  :columns="mainTable.columnArray"
  :value="mainTable.data"
  :loading="mainTable.loading"
  :pageNumber="queryForm.pageNum"
  :pageSize="queryForm.pageSize"
  :pageShow="true"
  :pageTotal="mainTablePage.total"
  @onChangePageNum="changeMainTablePagePageNum"
  @onChangePageSize="changeMainTablePagePageSize"
  @on-row-click="onRowClick"
>
  </table-panel>

Table-panel 属性

属性必填项类型描述默认值
panelConfigtrueObject用于配置列表项顶部安装-
newActionFalseFunction新建按钮回调函数-
batchDeleteActionfalseFunction批量删除按钮回调函数-
allExportActionfalseFunction导出全部按钮回调函数-
batchExportActionfalseFunction批量导出按钮回调函数-
columnstrueArray表格列的配置描述
valuetrueArray表格数据
loadingtrueBoolean
pageNumbertrueString每页返回的数据条数
pageSizetrueString页码
pageShowfalseBoolean是否显示翻页true
showTotalFalseBoolean是否显示总页数false
pageTotaltrueString总页数
onChangePageNumtrueFunction切换每页数据条数时的回调函数
onChangePageSizetrueFunction切换页码时回调函数
onRowClickfalse(row,index)=>{}单击某一行时触发

panelConfig

属性必填项描述类型默认值备注
showtrue是否显示顶部默认 新建、批量删除、导出全部、批量导出按钮Booleantrue
optionstrue如果需要自定列表顶部操作按钮,则需要配置此项Array{}
panelConfig.options
属性必填项描述类型默认值备注
titletrue按钮标题StringNull
typetrue按钮主题Stringprimary有四种主题
icontrue按钮图标StringNull
privilegetrue按钮权限StringNull
multiplefalse是否为多选操作Booleannull
clicktrue按钮回调函数FunctionNullmultiple 为 false 时,调用此函数响应点击事件
multiClickfalse多选操作回调函数Function(res)Arraymultiple 为 ture 时,调用此函数响应点击事件,返回字段为选中的所有行
hiddenfalse操作按钮是否可用Function(res)Null函数返回值类型只能为 Boolean
      panelConfig: {
        show: false, // 是否显示顶部默认 新建、批量删除、导出全部、批量导出按钮
        options: [
          {
            title: '逗逗飞新建', // 按钮标题
            type: 'primary', // 按钮主题
            icon: 'md-add', // 按钮图标
            multiple: true,
            privilege: 'merchant-info-list-add', // 按钮权限
            click: () => {},
            multiClick: (res) => console.log("批量操作", res)
            hidden: (row) => {
                  return true | false
                },
          },
          {
            title: '逗逗飞新建', // 按钮标题
            type: 'info', // 按钮主题
            icon: 'ios-trash-outline', // 按钮图标
            privilege: 'merchant-info-list-add', // 按钮权限
            click: () => {},
          },
        ],
      },

columns

属性必填项描述类型默认值备注
titletrue列头显示文字String-
keytrue对应列内容的字段名String
minWidthfalse最小列宽Number
typefalse用于区分枚举转换/列表操作区 取值范围'switch','enum', 'handler','avatar'String-如果需要处理枚举则 type: 'enum',如果是列表操作项则 type: 'handler', 显示头像则是 avatar, 如果滑块的话 则是 switch
enumKeyfalse枚举的 key对于项目中维护的枚举的 Key
formateFalse日期格式化Sring-格式参照 dayjs
alignfalse列表操作区位置固定String-如果是列表操作项则必传,固定值 align: 'right',
fixedfalse列表操作区位置固定String-如果是列表操作项则必传,固定值 fixed: 'right',
optionsFalse列表操作按钮Array-如果是列表操作项则必传,
columnArray: [
  {
    title: '正常',
    key: 'code',
    minWidth: 100,
  },
   {
    title: '头像',
    key: 'avatar_key',
    type: 'avatar', // 用于枚举处理
    minWidth: 100,
  },
  {
    title: '枚举',
    key: 'status',
    minWidth: 120,
    type: 'enum', // 用于枚举处理
    enumKey: 'STATUS',
  },
  {
    title: "日期",
    key: "createDate",
    formate: "YYYY-MM-DD",  用于日期格式化
    minWidth: 140,
  },
  {
    title: '操作',
    align: 'right',
    fixed: 'right',
    width: 150,
    type: 'handle',
    options: [
      {
        title: '查看',
        type: 'info',
        onClick: (row) => {
        },
      },
      {
        title: '编辑',
        directives: [
          {
            name: 'privilege',
            value: 'agency-info-list-update',
          },
        ],
        onClick: (row) => {},
      },
    ],
  },
],
columons.options
属性必填项描述类型默认值备注
titletrue按钮标题String-
typefalse按钮主题色String-type 取值范围:'info','success','primary','warning,'error'
onClicktrue按钮回调函数Function(row)=>{}
directivesfalse按钮权限Array-
deleteFlagfalse控制气泡提示框显式,隐藏Booleanfalse属性多用于删除操作
deleteTitlefalse气泡提示框标题String您确认删除这条内容吗?deleteFlag=true 时,deleteTitle 属性才会生效
DEMO
columnArray: [
  {
    title: '商户编号',
    key: 'code',
    minWidth: 100,
  },
  {
    title: '商户状态',
    key: 'status',
    minWidth: 120,
    type: 'enum',
    enumKey: 'STATUS',
  },
  {
    title: '电子邮件',
    key: 'email',
    minWidth: 140,
  },
  {
    title: '操作',
    align: 'right',
    fixed: 'right',
    width: 150,
    type: 'handle',
    options: [
      {
        title: '查看',
        type: 'info',
        onClick: (row) => {
          this.$refs.merchantTableDetail.showModal(row);
        },
      },
      {
        title: '编辑',
        directives: [
          {
            name: 'privilege',
            value: 'agency-info-list-update',
          },
        ],
        onClick: (row) => {},
      },
      {
        title: "删除",
        type: "error",
        deleteFlag: true,
        deleteTitle: "删除提示信息",
        directives: [
          {
            // name: "privilege",
            value: "agency-info-list-update",
          },
        ],
        onClick: (row) => {},
      },
    ],
  },
],

2 queryPanel - 查询

页面展示

queryPanel

使用方式

<query-panel :config="formConfig" @query="query" @reset="reset">
  </query-panel>

query-panel 属性

属性必填项说明类型默认值备注
configtrue查询项配置Object-
querytrue查询事件回调函数Function(params)=>{}
resetfalse重置按钮回调函数Fcuntion()=>{}

config

属性必填项说明类型默认值备注
formModeltruev-model 绑定项Object-框架目前支持 4 中交互 input:输入框、select:下拉列表、日历:dataPicker、Cascader:省市区级联
formItemstrue布局项Array用于绘制查询项表单
config.formModel
formModel: {
          cascVal: [], // 级联
          selOptions: null, // 下拉框
          inputVal: null, // 输入框
          datePickerVal: null, // DatePicker
        },
config.formItems
属性必填项说明默认值备注
labeltrue输入框标题-
keytrue绑定的值-
typetrue组件类型 type 取值范围:select、input、datePicker、 cascader-
placeholdertrue占位文字-
spantrue24 栏布局 占比 如果不传则是 6-
controlfalse操作项-
config.formItems.control
属性必填项说明默认值说明
onfalse组件回调函数(Event)=>{}目前只实现了 Select、cascader

DEMO

formItems: [
  {
    row: [
      {
        label: '省市区', // 标题
        key: 'cascVal', //
        type: 'cascader', // 组件类型 不区分大小写 级联多用于省市区选择  type 取值范围:[select、input、datePicker、 cascader]
        placeholder: '请选择城市/区县(可搜索)', // 占位文字
        span: 6, // 24栏布局 占比 如果不传则是6
        control: {
          // 操作项
          on: {
            change: () => {
              // 回调函数
            }
          }
        },
        options: [
          // 数据选项
          {
            value: 'beijing',
            label: '北京',
            children: [
              {
                value: 'gugong',
                label: '故宫'
              },
              {
                value: 'tiantan',
                label: '天坛'
              },
              {
                value: 'wangfujing',
                label: '王府井'
              }
            ]
          },
          {
            value: 'jiangsu',
            label: '江苏',
            children: [
              {
                value: 'nanjing',
                label: '南京',
                children: [
                  {
                    value: 'fuzimiao',
                    label: '夫子庙'
                  }
                ]
              },
              {
                value: 'suzhou',
                label: '苏州',
                children: [
                  {
                    value: 'zhuozhengyuan',
                    label: '拙政园'
                  },
                  {
                    value: 'shizilin',
                    label: '狮子林'
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        label: '场地',
        key: 'selOptions',
        type: 'select',
        span: 6,
        options: [
          // 下拉框数据
          {
            label: '全部',
            value: '全部'
          },
          {
            label: '零食区',
            value: '零食区间'
          }
        ]
      },
      {
        label: '商户编号',
        key: 'inputVal',
        placeholder: '占位符',
        type: 'Input', // 输入框
        span: 6
      },
      {
        label: '时间框',
        key: 'datePickerVal',
        placeholder: '占位符',
        type: 'datePicker', // 输入框
        // extendType: 'daterange', // date 单选  daterange 时间段
        span: 6
      }
    ]
  }
]

3 editFormPanel - 编辑

页面展示

editPanel

使用方式

<edit-form-panel
  title="编辑或新建"
  v-model="isShowDetailModal"
  displayed="model"
  :data="detail"
  :config="editConfig"
  @sumbit="sumbit"
  @cancel="cancel"
>
      <template v-slot:footer="data">
       	<div>底部按钮布局</div>
      	<div>{{ data }}</div>
     </template>

  </edit-form-panel>

edit-form-panel 属性

属性必填项说明默认值备注
titletrue标题--
v-modeltrue控制弹窗是否显示False-
datatrue表单项绑定对象--
label-widthtrue表单域标签的宽度--
configtrue表单配置项--
footerfalse页脚插槽slot-
sumbittrue确认按钮回调函数(params) =>{}-
canceltrue取消按钮回调函数()=>{}-

config

属性必填项说明默认值备注
splitLinefalse是否显示分栏布局false纵向分栏
lineTitlefalse分栏标题-
rowtrue如果在一个行内布局,则用 row 嵌套-
config.row
属性必填项说明默认值备注
labeltruelabel 标题-
typetrue组件类型 不区分大小写 type 取值范围'datePicker', 'input', 'select', 'cascader'-
extendTypefalse组件扩展类型
keytrue绑定的值-
placeholderfalse占位文字-
rulefalse必填项验证-
propsfalse扩展属性
controlfalse输入项交互
config.row.control
属性必填项说明默认值备注
handelfalse输入项联动回调函数(formdata)=> {}
enumOptionfalse输入项枚举值转换-enumOption: { type: "STATUS", },
formatOptionfalse输入项格式化-formatOption: { format: "YYYY-MM-DD", },

DEMO

      editConfig: [
        {
          splitLine: true, // 是否显示分栏布局 纵向分栏
          lineTitle: '分割线', // 分栏标题
          row: [ // 如果在一个行内布局,则用row嵌套
            {
              label: '修改日期', // label标题
              type: 'datePicker', // 组件类型 不区分大小写 type取值范围['datePicker', 'input', 'select', 'cascader']
              extendType: 'daterange', // 取值范围 [date 单选  daterange 时间段 ]
              key: 'modifyDate',  // 显示的字段名
              placeholder: '占位符', // 占位文字

              rule: [{ // 必填项验证
                type: 'date', required: true, message: '时间不能为空', trigger: 'blur',
              }],
               props: {
                // 扩展属性
                disabled: true, // 设置输入框为禁用状态
              },
              span: 8,
            },
            {
              label: '商户地址',
              type: 'input',
              key: 'address',
              extendType: "password", // 取值范围[text、password、textarea、url、email、date、number、tel]
              key: "name",
              props: {
                // 扩展属性
                disabled: true, // 设置输入框为禁用状态
              },
              rule: [{ required: true, message: '请输入地址', trigger: 'blur' }],
              span: 12,
            },
          ],
        },
      ],

4 detailFormPanel - 查看

页面展示

npm.io

使用方式

<detail-form-panel
  title="商户详情"
  v-model="isShowDetailModal"
  :data="detail"
  :config="detailConfig"
  displayed="drawer"
>
    <template v-slot:footer="data">
      <div>底部按钮布局</div>
      <div>{{ data }}</div>
    </template>
  </detail-form-panel>

detail-form-panel 属性

属性必填项说明类型默认值备注
titletrue标题String-
v-modeltrue页面显示隐藏Boolean-
footerfalse页脚插槽Slot-
label-widthtrue表单域标签的宽度Number-
datatrue表单项绑定对象Object-
configtrue页面配置Object-
displayedfalse显示方式 支持三种显示方式 model:弹窗显示、drawer:抽屉弹窗显示(右侧)String'model'

config

属性必填项说明类型默认值
splitLinefalse是否显示分栏布局false纵向分栏
lineTitlefalse分栏标题-
rowtrue如果在一个行内布局,则用 row 嵌套-
config.row
属性必填项说明默认值备注
labeltruelabel 标题-
typetrue组件类型 不区分大小写 type 取值范围'datePicker', 'input', 'select', 'cascader'-
extendTypefalse组件扩展类型
keytrue绑定的值-
placeholderfalse占位文字-
rulefalse必填项验证-
propsfalse扩展属性
controlfalse输入项交互
config.row.control
属性必填项说明默认值备注
onfalse输入项交互回调函数{}
hiddenOptionfalse输入项联动回调函数(formdata)=> {}
enumOptionfalse输入项枚举值转换-enumOption: { type: "STATUS", },
formatOptionfalse输入项格式化-formatOption: { format: "YYYY-MM-DD", },

DEMO

config: [
  {
    row: [
      {
        label: '修改日期',
        type: 'datePicker',
        key: 'modifyDate',
        placeholder: '占位符',
        // rule: [{
        //   type: 'date', required: true, message: '时间不能为空', trigger: 'blur',
        // }],
        // extendType: 'daterange', // date 单选  daterange 时间段
        span: 24,
      },
    ],
  },
  {
    row: [
      {
        label: '商户地址',
        type: 'input',
        key: 'address',
        // rule: [{ required: true, message: '请输入地址', trigger: 'blur' }],
        extendType: '', // 扩展type
        span: 24,
      },
    ],
  },
],

5 newFormPanel - 新建

页面展示

新建

使用方式

<NewFormPanel
  title="新建"
  v-model="isShowDetailModal"
  :data="newForm"
  :config="newConfig"
  @sumbit="sumbit"
  @cancel="cancel"
>
  </NewFormPanel>

new-form-panel 属性

属性必填项说明类型默认值
titletrue标题String-
v-modeltrue页面显示隐藏Boolean-
label-widthtrue表单域标签的宽度Number-
footerfalse页脚插槽Slot-
datatrue表单项绑定对象Object-
configtrue页面配置Object-

config

属性必填项说明类型默认值
splitLinefalse是否显示分栏布局false纵向分栏
lineTitlefalse分栏标题-
rowtrue如果在一个行内布局,则用 row 嵌套-
config.row
属性必填项说明默认值备注
labeltruelabel 标题-
typetrue组件类型 不区分大小写 type 取值范围'datePicker', 'input', 'select', 'cascader'-
extendTypefalse组件扩展类型
keytrue绑定的值-
placeholderfalse占位文字-
rulefalse必填项验证-
propsfalse扩展属性
controlfalse输入项交互
config.row.control
属性必填项说明默认值备注
onfalse输入项交互回调函数{}
hiddenOptionfalse输入项联动回调函数(formdata)=> {}
enumOptionfalse输入项枚举值转换-enumOption: { type: "STATUS", },
formatOptionfalse输入项格式化-formatOption: { format: "YYYY-MM-DD", },

DEMO

      newConfig: [
        {
          row: [
            {
              label: "商户名称",
              type: "input",
              // extendType: "password", // 取值范围[text、password、textarea、url、email、date、number、tel]
              key: "name",
              props: {
                // 扩展属性
                // disabled: true, // 设置输入框为禁用状态
              },
              span: 8,
            },
            {
              label: "测试滑块",
              type: "switch",
              // extendType: "password", // 取值范围[text、password、textarea、url、email、date、number、tel]
              key: "switchKey",
              props: {
                // 扩展属性
                // disabled: true, // 设置输入框为禁用状态
              },
              span: 8,
            },
            {
              label: "商户统一定价",
              type: "select",
              key: "isUniformprice",
              options: [
                { value: "0", label: "否" },
                { value: "1", label: "是" },
              ],
              span: 8,
              control: { // 组件联动 Switch为选中时,显示此组件
                handle: (form) => {
                  return form.switchKey === true;
                },
              },
            },
            {
              label: "商户状态",
              // type: "select",
              key: "status",
              props: {
                // disabled: true, //是否禁用
              },
              options: [
                // { value: "0", label: "否" },
                { value: "1", label: "是" },
              ],
              span: 8,
              control: { // 组件联动
                handle: (form) => {
                  return form.switchKey === true;
                },
              },
            },
          ],
        },
      ],

6 formPanel - 展示

页面展示

formPanel

使用方式

<form-panel :data="panelData" :config="panelConfig"></form-panel>

form-panel 属性

属性必填项说明类型默认值备注
datatrue表单项绑定对象Object-
label-widthtrue表单域标签的宽度Number-
configtrue页面配置Object-

config

属性必填项说明类型默认值
splitLinefalse是否显示分栏布局false纵向分栏
lineTitlefalse分栏标题-
rowtrue如果在一个行内布局,则用 row 嵌套-
config.row
属性必填项说明默认值备注
labeltruelabel 标题-
typetrue组件类型 不区分大小写 type 取值范围'datePicker', 'input', 'select', 'cascader'-
extendTypefalse组件扩展类型
keytrue绑定的值-
placeholderfalse占位文字-
rulefalse必填项验证-
propsfalse扩展属性
controlfalse输入项交互
config.row.control
属性必填项说明默认值备注
onfalse输入项交互回调函数{}
hiddenOptionfalse输入项联动回调函数(formdata)=> {}
enumOptionfalse输入项枚举值转换-enumOption: { type: "STATUS", },
formatOptionfalse输入项格式化-formatOption: { format: "YYYY-MM-DD", },

DEMO

    panelConfig: [
        {
          row: [
            {
              label: "商户名称",
              type: "input",
              extendType: "textarea", // 取值范围[text、password、textarea、url、email、date、number、tel]
              key: "name",
              props: {
                // 扩展属性
                disabled: true, // 设置输入框为禁用状态
                border: false, // 不显示边框
                bottom: 1,
              },
              control: {
                // 组件联动
                hiddenOption: (form) => {
                  return form.isUniformprice === "0"
                },
              },
              span: 8,
            },
            {
              label: "商户统一定价",
              type: "input",
              // type: "select",
              key: "isUniformprice",
              control: {
                // 组件enum
                enumOption: {
                  type: "STATUS",
                },
              },
              span: 8,
            },
            {
              label: "修改时间",
              type: "input",
              key: "modifyDate",
              control: {
                // 时间格式化
                formatOption: {
                  format: "YYYY-MM-DD",
                },
              },
              span: 8,
            },
          ],
        },
      ],

四·表单必填项验证

表单验证功能同样也是表单不可或缺的功能之一,JSONFom 通过 rule 节点来实现必填项验证

rule 支持的验证数据类型

属性说明
string验证是否为字符串
number验证是否为 number
boolean验证是否为 number
method验证是否为 method
integer验证是否为 integer
float验证是否为 float
array验证是否为 array
object验证是否为 object
email验证是否为 email

rule

属性必填项说明类型默认值
typetrue需要验证的数据格式Stringstirng
requiredtrue是否为必填项Boolean-
messagetrue必填项提示信息String-
triggertrue验证触发方式String-
formConfig: [
  ...
  	{
      row: [
        {
          	...
             rule: [
                {
                  type: "array",
                  required: true,
                  message: "支付渠道不能为空",
                  trigger: "blur",
                },
              ]
						...
        }
      ]
    }
  ...
]
0.22.59

2 years ago

0.22.56

2 years ago

0.22.55

2 years ago

0.22.58

2 years ago

0.22.57

2 years ago

0.22.52

2 years ago

0.22.51

2 years ago

0.22.54

2 years ago

0.22.53

2 years ago

0.23.1

2 years ago

0.23.0

2 years ago

0.22.50

2 years ago

0.23.17

2 years ago

0.23.16

2 years ago

0.23.18

2 years ago

0.23.13

2 years ago

0.23.12

2 years ago

0.22.44

2 years ago

0.23.15

2 years ago

0.23.14

2 years ago

0.22.41

2 years ago

0.22.40

2 years ago

0.23.11

2 years ago

0.22.43

2 years ago

0.23.10

2 years ago

0.22.42

2 years ago

0.22.38

2 years ago

0.22.37

2 years ago

0.22.39

2 years ago

0.22.35

2 years ago

0.22.29

2 years ago

0.22.28

2 years ago

0.22.34

2 years ago

0.22.33

2 years ago

0.22.30

2 years ago

0.22.32

2 years ago

0.22.31

2 years ago

0.22.27

2 years ago

0.22.26

2 years ago

0.22.23

2 years ago

0.22.22

2 years ago

0.22.25

2 years ago

0.22.24

2 years ago

0.22.21

2 years ago

0.22.20

2 years ago

0.22.19

2 years ago

0.22.18

2 years ago

0.22.17

2 years ago

0.22.16

2 years ago

0.22.15

2 years ago

0.22.14

2 years ago

0.22.13

2 years ago

0.22.12

2 years ago

0.22.11

2 years ago

0.22.10

2 years ago

0.22.9

2 years ago

0.22.8

2 years ago

0.22.7

2 years ago

0.22.6

2 years ago

0.22.5

2 years ago

0.22.4

2 years ago

0.22.3

2 years ago

0.22.2

2 years ago

0.22.1

2 years ago

0.21.27

2 years ago

0.21.26

2 years ago

0.21.25

2 years ago

0.21.24

2 years ago

0.21.22

2 years ago

0.21.21

2 years ago

0.21.20

2 years ago

0.21.19

2 years ago

0.21.18

2 years ago

0.21.17

2 years ago

0.21.16

2 years ago

0.21.15

2 years ago

0.21.14

2 years ago

0.21.13

2 years ago

0.21.12

2 years ago

0.21.1

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.75

2 years ago

0.1.74

2 years ago

0.1.73

2 years ago

0.1.71

2 years ago

0.1.70

2 years ago

0.1.60

2 years ago

0.1.51

2 years ago

0.1.50

2 years ago

0.1.46

2 years ago

0.1.45

2 years ago

0.1.44

2 years ago

0.1.42

2 years ago

0.1.41

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago