0.10.83 • Published 11 days ago

richform v0.10.83

Weekly downloads
-
License
-
Repository
github
Last release
11 days ago

richform-plus

主要功能

  • richform表单组件
    • 数据驱动
    • 校验规则采用标准的JsonSchema,JsonSchema文档
    • 可拓展性,widgets下可自定义一些子组件
  • 表单设计器
    • 基于richform表单的拓展,可动态设计表单
    • 表单设计所见即所得
    • 可设置字段属性和校验规则
  • 签核流程
    • 基于RichForm和表单设计器的拓展
    • 流程配置。动态添加节点,设计各节点的签核顺序,串并联签核
    • 节点个性化。每个节点表单用RichForm显示,数据来源于表单设计器的设计结果
    • 节点属性。签核人设置、签核类型(会签,串签)、出口配置
    • 已签核状态显示
    • 错误处理

支持vue3.x

vue2.x 请见richform

预览

在线预览

表单设计器

富表单完整功能

本地预览

npm install

npm run serve

表单设计器
http://localhost:8080/#/

富表单完整功能
http://localhost:8080/#/form-design

用法

npm i richform@next -S
<div class="demo-wrapper">
    <div class="form-design">
        <form-design />
    </div>
    <div class="rich-form">
        <rich-form :form="form" :schema="schema" :values="values"/>
    </div>
</div>
import { RichForm, FormDesign } from "richform";
import 'richform/lib/style.css';
export default {
  components: { RichForm,FormDesign},
  data() {
    return {
        schema: {}, // 验证规则
        values: {}, // 表单的值
        form: {
            border: true, // 显示边框
            grid: false, // 表单内部栅栏
            labelSuffix: ":", // 字段标题后缀内容,默认' : '
            labelWidth: "110px", // 标签宽度,默认50px
            validator: "input", // submit
            labelAlign: "right", // 标签对齐, 默认右对齐, 可选左对齐left
            labelInline: true, // 字段标题显示位置, 默认true左侧left,false显示在top上方
            actions: [
                //声明显示在下方和动作按钮
                {
                    name: "reset", // 按键的唯一标识符
                    type: "primary", // 按键类型,默认为primary,具体可见element button
                    title: "重置", // 按键的文字
                    icon: "el-icon-star-off", // 按键图标 具体可见element icon
                    right: true, // 如果=true,则显示在右侧
                    visible: true, // 按键是否可见,同时满足readonly===false和设置为true才会显示,默认为true
                    tips: "提示信息", // 鼠标悬浮在按键的提示信息
                    top: true, // 是否在上面, false则在下面
                    size: "default" // default / small / mini, 若未指明,则等同于form.size
                },
                {
                    name: "submit", // 按键的唯一标识符
                    type: "info", // 按键类型,默认为primary,具体可见element button
                    title: "提交", // 按键的文字
                    icon: "", // 按键图标 具体可见element icon
                    right: true, // 如果=true,则显示在右侧
                    visible: true, // 按键是否可见,同时满足readonly===false和设置为true才会显示,默认为true
                    tips: "提示信息", // 鼠标悬浮在按键的提示信息
                    top: true, // 是否在上面, false则在下面
                    size: "default" // default / small / mini, 若未指明,则等同于form.size
                }
            ],
            layout: [
                {
                    title: "名称对方",
                    widget: "input",
                    name: "input", // values的箭值,必须有
                    type: "text",
                },
                // 更多子组件请见widgets介绍,或者看完整功能
            ]
        }
    }
  }
}

特殊功能

1、字段选项依赖

{
  title: "下拉选框B",
  widget: "select",
  name: "selectB",
  description: "我的选项依赖于【下拉选框A】",
  dict: {
    "selectA==选项1": [
      {
        value: "选项1",
        label: "根据[下拉选框A]的值变化A",
      },
      {
        value: "选项2",
        label: "根据[下拉选框A]的值变化B",
      },
    ],
    "selectA == 选项2": "http://localhost:8080/#/form-design",
    "input == 123456": [
      {
        value: "input等于123456",
        label: "input等于123456",
      },
    ],
  },
  options: [
    {
      value: "选项1",
      label: "黄金糕",
    },
    {
      value: "选项2",
      label: "双皮奶",
    },
  ],
}

补充说明
当两个select的选项互相依赖时,箭值为条件,值可以有三种形式,若是url则获取数据,若是数组则直接赋值给options

dict: "http://localhost:8080/#/form-design", // 获取到的值会直接覆盖options
dict: {  
  [<字段名name> == 'A']: "https://shandawang.com/dict/province", // 字典,
  [<字段名name> == 'B']: [{},{}], // options
  [<字段名name> == 'any']: "https://shandawang.com/dict/province", // 若等于any且值是url,<字段名name>的值只要变化,就会带上<字段名name>值到后端过滤获取字典
  [<字段名name> == 'any']: {filterKey: "id"}, // 若等于any且值是对象,filterKey字段和options都必须有。<字段名name>的值只要变化,就会带上<字段名name>值到options中过滤。有一种特殊应用,当被依赖的字段值变化了,根据被依赖选项({label,value,other})的某个字段的值到当前options过滤,此时可配beRelyFilterKey如 {filterKey: "id",beRelyFilterKey: "other"}
}

2、字段隐藏依赖

{
    title: "名称对方",
    widget: "input",
    name: "input",
    type: "textarea",
    hideRely: "radioA==单选框B",
}

补充说明

hideRely:<字段名称nameA> == 'C', // 可以是单值  
hideRely:[ // 也可以是多值,只要满足一个条件,就隐藏,且后面条件不会再校验   
  <字段名称nameA> == 'C',  
  <字段名称nameB> == 'D',
]

3、更多widgets配置详情
请见src/pages/richform.vue

深度编辑

values可能是深度嵌套如下

{
  title: {
    text: "ECharts 入门示例",
    subtext: "Living Expenses in Shenzhen",
  },
  legend: {
    orient: "horizontal", // vertical/horizontal
    left: 0,
    // top: 0,
    bottom: 0,
  },
}

要编辑这种valuse可开启deepValues: true

  <rich-form :form="form" :schema="schema" :values="values" deepValues/>

此时在定义form的name字段和shema结构,需要与values的结构对应

layout: [{
  title: "标题",
  widget: "input",
  name: "title.text",
}]

例子

0.10.83

11 days ago

0.10.81

11 days ago

0.10.82

11 days ago

0.10.79

3 months ago

0.10.80

3 months ago

0.10.78

3 months ago

0.10.75

4 months ago

0.10.76

3 months ago

0.10.77

3 months ago

0.10.72

4 months ago

0.10.73

4 months ago

0.10.74

4 months ago

0.10.71

4 months ago

0.10.69

4 months ago

0.10.65

4 months ago

0.10.66

4 months ago

0.10.67

4 months ago

0.10.68

4 months ago

0.10.70

4 months ago

0.10.64

4 months ago

0.10.61

5 months ago

0.10.62

5 months ago

0.10.63

5 months ago

0.10.60

5 months ago

0.10.59

5 months ago

0.10.50

5 months ago

0.10.51

5 months ago

0.10.52

5 months ago

0.10.53

5 months ago

0.10.58

5 months ago

0.10.54

5 months ago

0.10.55

5 months ago

0.10.56

5 months ago

0.10.57

5 months ago

0.10.18

7 months ago

0.10.19

7 months ago

0.10.20

6 months ago

0.10.29

6 months ago

0.10.25

6 months ago

0.10.26

6 months ago

0.10.27

6 months ago

0.10.28

6 months ago

0.10.21

6 months ago

0.10.22

6 months ago

0.10.23

6 months ago

0.10.24

6 months ago

0.10.30

6 months ago

0.10.31

6 months ago

0.10.36

6 months ago

0.10.37

6 months ago

0.10.38

6 months ago

0.10.39

6 months ago

0.10.32

6 months ago

0.10.34

6 months ago

0.10.35

6 months ago

0.10.40

6 months ago

0.10.41

6 months ago

0.10.42

6 months ago

0.10.47

6 months ago

0.10.48

6 months ago

0.10.49

5 months ago

0.10.43

6 months ago

0.10.44

6 months ago

0.10.45

6 months ago

0.10.46

6 months ago

0.10.9

7 months ago

0.10.7

7 months ago

0.10.8

7 months ago

0.10.15

7 months ago

0.10.16

7 months ago

0.10.17

7 months ago

0.10.10

7 months ago

0.10.11

7 months ago

0.10.12

7 months ago

0.10.13

7 months ago

0.9.8

8 months ago

0.9.7

8 months ago

0.9.9

8 months ago

0.9.4

8 months ago

0.9.3

9 months ago

0.9.6

8 months ago

0.9.5

8 months ago

0.10.1

8 months ago

0.10.2

8 months ago

0.10.3

8 months ago

0.10.4

8 months ago

0.10.5

8 months ago

0.10.6

8 months ago

0.10.0

8 months ago

0.0.0

11 months ago

0.9.0

11 months ago

0.9.2

9 months ago

0.9.1

9 months ago

0.8.9

1 year ago

0.8.8

1 year ago

0.8.5

1 year ago

0.8.4

1 year ago

0.8.7

1 year ago

0.8.6

1 year ago

0.8.3

1 year ago

0.8.2

1 year ago

0.7.9

1 year ago

0.7.8

2 years ago

0.8.1

1 year ago

0.8.0

1 year ago

0.7.2

2 years ago

0.7.1

2 years ago

0.7.4

2 years ago

0.7.3

2 years ago

0.7.6

2 years ago

0.7.5

2 years ago

0.7.7

2 years ago

0.6.7

2 years ago

0.6.6

2 years ago

0.6.9

2 years ago

0.6.8

2 years ago

0.7.0

2 years ago

0.6.5

2 years ago

0.6.4

2 years ago

0.5.9

2 years ago

0.6.3

2 years ago

0.6.2

2 years ago

0.6.1

2 years ago

0.6.0

2 years ago

0.4.9

2 years ago

0.4.8

2 years ago

0.3.0

2 years ago

0.5.4

2 years ago

0.3.6

2 years ago

0.5.3

2 years ago

0.3.5

2 years ago

0.5.6

2 years ago

0.3.8

2 years ago

0.5.5

2 years ago

0.3.7

2 years ago

0.5.0

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.5.2

2 years ago

0.3.4

2 years ago

0.5.1

2 years ago

0.3.3

2 years ago

0.5.8

2 years ago

0.5.7

2 years ago

0.3.9

2 years ago

0.4.5

2 years ago

0.4.4

2 years ago

0.4.7

2 years ago

0.2.9

2 years ago

0.4.6

2 years ago

0.2.8

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.3

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.1

3 years ago

0.2.2

2 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.2.0

3 years ago

0.1.1

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.9

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.3

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago