0.11.53 • Published 8 months ago

richform v0.11.53

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

richform

主要功能

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

支持vue2.x

vue3.x 请见richform-plus

预览

在线预览

表单设计器

富表单完整功能

本地预览

npm install

npm run serve

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

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

用法

npm i richform -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";
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: "medium" // medium / 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: "medium" // medium / 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.11.41

9 months ago

0.11.43

9 months ago

0.11.48

9 months ago

0.11.49

9 months ago

0.11.45

9 months ago

0.11.46

9 months ago

0.11.47

9 months ago

0.11.51

8 months ago

0.11.52

8 months ago

0.11.53

8 months ago

0.11.50

8 months ago

0.11.29

1 year ago

0.11.30

1 year ago

0.11.31

1 year ago

0.11.32

1 year ago

0.11.37

1 year ago

0.11.38

11 months ago

0.11.39

11 months ago

0.11.33

1 year ago

0.11.34

1 year ago

0.11.35

1 year ago

0.11.36

1 year ago

0.11.40

11 months ago

0.11.20

1 year ago

0.11.21

1 year ago

0.11.26

1 year ago

0.11.27

1 year ago

0.11.28

1 year ago

0.11.22

1 year ago

0.11.23

1 year ago

0.11.24

1 year ago

0.11.25

1 year ago

0.11.10

1 year ago

0.11.19

1 year ago

0.11.15

1 year ago

0.11.16

1 year ago

0.11.17

1 year ago

0.11.11

1 year ago

0.11.12

1 year ago

0.11.13

1 year ago

0.11.14

1 year ago

0.10.94

1 year ago

0.10.95

1 year ago

0.10.96

1 year ago

0.10.97

1 year ago

0.11.8

1 year ago

0.11.9

1 year ago

0.11.0

1 year ago

0.11.1

1 year ago

0.11.2

1 year ago

0.11.3

1 year ago

0.11.4

1 year ago

0.10.98

1 year ago

0.11.5

1 year ago

0.10.99

1 year ago

0.11.6

1 year ago

0.11.7

1 year ago

0.10.89

1 year ago

0.10.90

1 year ago

0.10.91

1 year ago

0.10.92

1 year ago

0.10.93

1 year ago

0.10.87

1 year ago

0.10.88

1 year ago

0.10.84

1 year ago

0.10.85

1 year ago

0.10.86

1 year ago

0.10.83

1 year ago

0.10.81

1 year ago

0.10.82

1 year ago

0.10.79

2 years ago

0.10.80

2 years ago

0.10.78

2 years ago

0.10.75

2 years ago

0.10.76

2 years ago

0.10.77

2 years ago

0.10.72

2 years ago

0.10.73

2 years ago

0.10.74

2 years ago

0.10.71

2 years ago

0.10.69

2 years ago

0.10.65

2 years ago

0.10.66

2 years ago

0.10.67

2 years ago

0.10.68

2 years ago

0.10.70

2 years ago

0.10.64

2 years ago

0.10.61

2 years ago

0.10.62

2 years ago

0.10.63

2 years ago

0.10.60

2 years ago

0.10.59

2 years ago

0.10.50

2 years ago

0.10.51

2 years ago

0.10.52

2 years ago

0.10.53

2 years ago

0.10.58

2 years ago

0.10.54

2 years ago

0.10.55

2 years ago

0.10.56

2 years ago

0.10.57

2 years ago

0.10.18

2 years ago

0.10.19

2 years ago

0.10.20

2 years ago

0.10.29

2 years ago

0.10.25

2 years ago

0.10.26

2 years ago

0.10.27

2 years ago

0.10.28

2 years ago

0.10.21

2 years ago

0.10.22

2 years ago

0.10.23

2 years ago

0.10.24

2 years ago

0.10.30

2 years ago

0.10.31

2 years ago

0.10.36

2 years ago

0.10.37

2 years ago

0.10.38

2 years ago

0.10.39

2 years ago

0.10.32

2 years ago

0.10.34

2 years ago

0.10.35

2 years ago

0.10.40

2 years ago

0.10.41

2 years ago

0.10.42

2 years ago

0.10.47

2 years ago

0.10.48

2 years ago

0.10.49

2 years ago

0.10.43

2 years ago

0.10.44

2 years ago

0.10.45

2 years ago

0.10.46

2 years ago

0.10.9

2 years ago

0.10.7

2 years ago

0.10.8

2 years ago

0.10.15

2 years ago

0.10.16

2 years ago

0.10.17

2 years ago

0.10.10

2 years ago

0.10.11

2 years ago

0.10.12

2 years ago

0.10.13

2 years ago

0.9.8

2 years ago

0.9.7

2 years ago

0.9.9

2 years ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.6

2 years ago

0.9.5

2 years ago

0.10.1

2 years ago

0.10.2

2 years ago

0.10.3

2 years ago

0.10.4

2 years ago

0.10.5

2 years ago

0.10.6

2 years ago

0.10.0

2 years ago

0.0.0

2 years ago

0.9.0

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.8.9

2 years ago

0.8.8

2 years ago

0.8.5

3 years ago

0.8.4

3 years ago

0.8.7

2 years ago

0.8.6

3 years ago

0.8.3

3 years ago

0.8.2

3 years ago

0.7.9

3 years ago

0.7.8

3 years ago

0.8.1

3 years ago

0.8.0

3 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.4

3 years ago

0.7.3

3 years ago

0.7.6

3 years ago

0.7.5

3 years ago

0.7.7

3 years ago

0.6.7

3 years ago

0.6.6

3 years ago

0.6.9

3 years ago

0.6.8

3 years ago

0.7.0

3 years ago

0.6.5

3 years ago

0.6.4

3 years ago

0.5.9

4 years ago

0.6.3

3 years ago

0.6.2

3 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.4.9

4 years ago

0.4.8

4 years ago

0.3.0

4 years ago

0.5.4

4 years ago

0.3.6

4 years ago

0.5.3

4 years ago

0.3.5

4 years ago

0.5.6

4 years ago

0.3.8

4 years ago

0.5.5

4 years ago

0.3.7

4 years ago

0.5.0

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.5.2

4 years ago

0.3.4

4 years ago

0.5.1

4 years ago

0.3.3

4 years ago

0.5.8

4 years ago

0.5.7

4 years ago

0.3.9

4 years ago

0.4.5

4 years ago

0.4.4

4 years ago

0.4.7

4 years ago

0.2.9

4 years ago

0.4.6

4 years ago

0.2.8

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.3

4 years ago

0.2.5

4 years ago

0.2.4

4 years ago

0.2.1

4 years ago

0.2.2

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.2.0

4 years ago

0.1.1

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.9

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.3

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago