vue-rise-design

1.5.0 • Public • Published

vue-rise-design

一款服务于 Rise 前端低代码平台的表单设计器

《Rise》 一款能真正满足业务需求的前端低代码平台

DemoGiteeGitee 文档GitHub

特点

  • 拖拽形式生成表单页面,减少重复性工作;
  • 支持 PC 端、移动端,一次设计多端应用;
  • 含有模块、模版、页面模式,支持业务复用和继承;
  • 丰富的表单组件,表格、组容器、级联选择、对话框弹窗等等,经历大量的业务测试;
  • 组件支持响应式栅格,行内 style 编写,布局更为精致;
  • 可插入用户自定义组件,灵活度大大提高;
  • 更为全面的校验功能,正则、触发动作、类型、空格、异步校验,函数校验,同时内置了 12 种常用校验(手机号、邮箱、金额...)以供选择;
  • 支持组件获取远端数据动态生成下拉列表等;
  • 支持编写脚本,实现组件联间动,包含 change、blur、focus、input 等事件;
  • 可编写事件监听,支持多个值同时绑定一个函数并含有深度监听与立刻执行功能;
  • 数据绑定形式不止单层,支持多层数据绑定,减少因数据库表重复属性名带来的问题;
  • 全面的表单生命周期钩子函数:构建前事件(异步)、构建后事件、数据填入后事件、提交前事件(异步)、提交后事件;
  • 采用 VueX 作为表单数据管理,增强了与外部通信能力;
  • 渲染器兼容 IE 浏览器;

项目结构

整个 Rise 前端低代码平台分为两个插件:设计器(vue-rise-design)、渲染器(vue-rise-realize)

渲染的组件为:<bm-form-design><bm-form-realize>

底层依赖为:

依赖包 版本
vue ^2.6.14
vue-router ^3.5.1
vuex ^3.6.2

功能依赖:

功能 依赖包
Ajax axios
UI element-ui
富文本 wangeditor
页面编辑器 monaco-editor
拖拽 vuedraggable
中国地区数据 element-china-area-data

设计思路

整个表单是由 formConfig 与 formData 两个对象构成,顾名思义 formConfig 是负责描述表单结构,formData 负责处理用户数据。

formConfig

{
    "formAttributes": {},
    "type": "page",
    "column": [
        {
            "type": "form-title",
            "grade": "brick",
            "id": "prop_1663573674132",
            "prop": "prop_1663573674132"
        },
        {
            "type": "group-container",
            "grade": "frame",
            "id": "prop_1663573678702",
            "prop": "prop_1663573678702",
            "column": [
                {
                    "type": "input",
                    "grade": "lego",
                    "id": "prop_1663573680825",
                    "prop": "prop_1663573680825"
                },
                {
                    "formItem": {
                        "offset": 1
                    },
                    "prop": "prop_1663573684658",
                    "type": "form-select",
                    "grade": "lego",
                    "id": "prop_1663573684658"
                }
            ]
        }
    ],
    "formEvent": {
        "beforeCreate": "",
        "created": "",
        "dataFilled": "",
        "beforeSubmit": "",
        "submited": "",
        "watchList": []
    }
}

由上面的例子可以看出每个组件都是由其描述 json 生成的,主要包括以下属性:

属性 含义
type 组件类型
grade 组件级别(lego、brick、frame)
id 组件的唯一标识
prop 绑定的数据键
column 子组件数列
etc. ...

Package Sidebar

Install

npm i vue-rise-design

Weekly Downloads

52

Version

1.5.0

License

LGPL-3.0

Unpacked Size

274 kB

Total Files

75

Last publish

Collaborators

  • maxlaw