更新记录
1.0.0(2026-08-14) 下载此版本
- 首次发布:基于 uView Pro 的 JSON 规则动态表单渲染器
- 兼容 form-create / form-create-uni 规则约定
- 支持声明式(rule prop)与命令式(showForm)用法
- 内置 input / password / textarea / inputNumber / radio / checkbox / select / cascader / switch / datePicker / timePicker / dateRange / timeRange / slider / rate / upload / color / transfer / tree / treeSelect / editor / signature 等字段类型
平台兼容性
uni-app(5.15)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | √ | √ | √ | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - | - |
其他
| 多语言 | 暗黑模式 | 宽屏模式 |
|---|---|---|
| × | × | √ |
form-create-uviewPro
基于 uView Pro 的 JSON 规则动态表单渲染器,兼容 form-create / form-create-uni 的规则约定。把一份 JSON 规则渲染成 uView Pro 原生样式的表单,支持填写、校验、提交、重置,全端可用(H5 / 小程序 / App)。
特性
- JSON 规则驱动,规则约定对齐 form-create / form-create-uni,PC 端设计器产物可直接复用
- 内置字段类型:
input/password/textarea/inputNumber/radio/checkbox/select/cascader/switch/datePicker/timePicker/dateRange/timeRange/slider/rate/upload/color/transfer/tree/treeSelect/editor(富文本)/signature(手写签名) - 展示类字段:
span/el-divider/el-alert/el-button/div - 支持声明式(
ruleprop)与命令式(showForm)两种用法
前置依赖
本插件基于 uView Pro 组件渲染,使用前请先安装并全局配置 uView Pro(^0.5.16)。富文本(editor)、手写签名(signature)依赖 uni 原生 editor / canvas,各端能力存在差异,请以实测为准。
安装
在 uni-app 项目中通过 uni_modules 导入本插件后,easycom 会自动注册组件,无需手动 import。
基础用法(声明式)
<template>
<form-create-uview-pro ref="formRef" :rule="rule" :option="option" @submit="onSubmit" />
</template>
<script setup lang="ts">
import { ref } from 'vue'
const formRef = ref()
const rule = ref([
{ type: 'input', field: 'name', title: '姓名', value: '', props: { placeholder: '请输入姓名' }, validate: [{ required: true, message: '请输入姓名' }] },
{ type: 'radio', field: 'sex', title: '性别', value: 1, options: [{ label: '男', value: 1 }, { label: '女', value: 2 }] },
])
const option = ref({ labelPosition: 'left' })
function onSubmit(finalRule) {
// finalRule 为写回 value 后的规则数组
console.log(finalRule)
}
</script>
命令式用法
// 动态设置规则并渲染
formRef.value.showForm(rule)
// 回填表单值(field → value)
formRef.value.setFormModel({ name: '张三', sex: 2 })
// 校验
formRef.value.validate((valid) => { /* ... */ })
// 取写回 value 后的规则数组 / 扁平数据对象
const finalRule = formRef.value.getFormData()
const model = formRef.value.getFormModel()
// 重置
formRef.value.resetFields()
Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
rule |
JsonFormFieldRule[] |
[] |
JSON 字段规则数组(对齐 form-create-uni rule) |
option |
JsonFormConfig |
{} |
表单整体配置(对齐 form-create-uni option) |
Events
| 事件 | 参数 | 说明 |
|---|---|---|
submit |
rule: JsonFormFieldRule[] |
提交时触发,回传写回 value 后的规则数组 |
暴露方法(defineExpose)
| 方法 | 签名 | 说明 |
|---|---|---|
showForm |
(rule: JsonFormFieldRule[]) => void |
命令式设置规则并渲染 |
getFormData |
() => JsonFormFieldRule[] |
获取写回 value 后的规则数组 |
getFormModel |
() => Record<string, any> |
获取扁平的表单数据对象 |
setFormModel |
(model: Record<string, any>) => void |
命令式回填表单值 |
validate |
(cb: (valid: boolean) => void) => void |
触发校验 |
resetFields |
() => void |
重置表单 |
规则字段(JsonFormFieldRule)
完整类型契约见组件目录下 types.ts。顶层公共字段(各控件通用):
| 字段 | 说明 |
|---|---|
type |
字段类型(见下表) |
field |
表单数据 key(提交/取值的属性名) |
title |
标签文案 |
value |
初始值 |
$required |
必填:true 或自定义提示语(等价 validate.required) |
props |
透传到底层控件的属性对象,仅下表列出的键生效 |
options |
选项数组 { label, value, children? }(radio/checkbox/select/cascader/transfer/tree 用) |
children |
文本内容(展示类 span/el-divider/el-button 取 children[0]) |
style |
内联样式(div 间距等) |
支持的字段类型与重要属性
下表
props列为该控件唯一被解析的属性键;未列出的属性不生效。
类型 type |
说明 | 支持的 props 键 |
|---|---|---|
input |
单行输入 | placeholder maxlength minlength disabled readonly clearable |
password |
密码输入 | placeholder maxlength disabled |
textarea |
多行输入 | placeholder maxlength disabled |
inputNumber |
数字步进 | min max step disabled |
radio |
单选 | disabled(选项用 options) |
checkbox |
多选 | disabled(选项用 options) |
select |
下拉选择 | placeholder multiple disabled(选项用 options) |
cascader |
级联 | placeholder multiple checkStrictly showAllLevels separator(数据用 options+children) |
switch |
开关 | activeColor disabled |
slider |
滑块 | min max step blockWidth showInput activeColor disabled |
rate |
评分 | max allowHalf disabled |
datePicker / timePicker |
日期 / 时间 | placeholder minDate maxDate |
dateRange / timeRange |
日期 / 时间区间 | placeholder minDate maxDate |
upload |
上传 | action limit multiple accept listType autoUpload limitType |
color |
颜色选择 | predefine placeholder |
transfer |
穿梭框 | titles data |
tree |
树 | data nodeKey checkStrictly multiple |
treeSelect |
树选择 | placeholder data nodeKey checkStrictly multiple |
editor |
富文本 | placeholder(依赖原生 editor,各端能力有差异) |
signature |
手写签名 | penColor lineWidth(依赖原生 canvas,各端能力有差异) |
span / el-divider / el-alert / el-button / div |
展示 / 占位 | 文本取 children[0],div 支持 style |
表单整体配置(option / JsonFormConfig)
| 字段 | 说明 |
|---|---|
submitBtn |
{ show?, text? } 提交按钮,show=false 隐藏 |
resetBtn |
{ show?, text? } 重置按钮,show=true 显示 |
form.labelPosition |
标签位置 top / left / right |
form.labelWidth |
标签宽度 |
form.showMessage |
是否展示校验错误信息 |
不支持的组件(明确不渲染)
子表单组件、辅助组件、布局组件、栅格 row/col、表格 table、标签页 tabs、卡片 card、折叠面板 collapse、步骤条 steps、间距 space,以及任何未在上表列出的自定义 / 高级组件。遇到这些容器时,请在传入前递归扁平化、只保留其中的基础控件。
递归扁平化示例
form-create 的布局/容器组件(栅格、表格、标签页、卡片、折叠面板等)没有 field,表单控件都挂在其 children 里。本插件已内置 flattenControls 工具,把含布局容器的规则树一行拍平成「基础控件数组」,无需自己实现,直接 import 即可:
// 短路径(推荐):从插件根入口引用
import { flattenControls } from '@/uni_modules/form-create-uviewPro'
// 或完整路径:
// import { flattenControls } from '@/uni_modules/form-create-uviewPro/components/form-create-uview-pro/utils'
// designerRule 为 PC 设计器导出的原始规则(可能含栅格/表格/标签页等布局容器)
const controls = flattenControls(designerRule)
// 再传给组件:声明式绑定 :rule,或命令式 showForm
formRef.value.showForm(controls)
// 也可直接绑定:<form-create-uview-pro :rule="controls" />
内部判据(flattenControls 的处理规则):
hidden === true(设计器「隐藏」开关)的节点整体跳过(容器隐藏则内部控件同跳过);- 带
field的节点 = 基础控件叶子 → 直接收集、不再下钻(子表单等复合控件当作不透明整体,不误拆内部字段); - 无
field的节点 = 布局/容器 → 忽略自身、递归下钻children。
控件保持原有出现顺序。函数签名:flattenControls(nodes: Record<string, any>[]): Record<string, any>[]。
兼容性
平台兼容矩阵以插件详情页 / package.json 为准。
许可
本插件基于 MIT License 开源,版权归 向小江,详见插件根目录 LICENSE。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 0
赞赏 0
下载 12506890
赞赏 1942
赞赏
京公网安备:11010802035340号