1.0.22 • Published 11 months ago

hs-form-plugin v1.0.22

Weekly downloads
-
License
MIT
Repository
-
Last release
11 months ago

##环境和依赖

  • node
  • yarn
  • webpack
  • vue

##插件使用方法

import formPlugin from 'hs-form-plugin'
Vue.use(formPlugin)
  
<formEditor></formEditor> // 表单设计
<formFill></formFill> // 表单填写及回显

##插件图例

avatar avatar avatar


formEditor 表单设计

  • 画布模块
字段类型是否必填默认值描述
multipleCanvasbooleanfalse是否多个画布,默认只有一个画布
showFormBarbooleanfalse是否展示标题及标签
  • “表单设计”编辑
字段类型是否必填默认值描述
initFormIdnumberfalse-表单Id(通过Id, 查询表单详情)
formDesignDataobjectfalse-表单设计数据
userIdnumbertrue-用户Id
tenantIdstringtrue-租户Id
  • 表单基础信息
字段类型是否必填默认值描述
namestring-表单名称
tagArray-传一个就好,name值为当前平台名称,ID找后端要。例(OA平台):{id: 99, name: 'OA'}
  • 表单组件
字段类型是否必填默认值描述
pluginTagObjectarray[ { key: 0, name: '设计域',moduleList:'input', 'textarea', 'input-number', 'radio', 'checkbox', 'select', 'table', 'date', 'description', 'upload'}, { key: 1, name: '业务域',moduleList:'name', 'gender', 'ID-cards', 'birth-date', 'education', 'degree', 'school', 'address', 'course-results', 'attendance', 'physique', 'department', 'personnel', 'approval'}, { key: 2, name: '表单',moduleList:'leave', 'meeting-room', 'car', 'computer', 'classroom'} ]name:组件名字,type: 组件类型。(组件名字可更改,默认展示三个组件,传入参数时,即展示对应参数的组件!)
type(表单组件类型,详细描述查看上面表格)
├─ 1(设计域)
│  ├─ input(文本框)
│  ├─ textarea(多行文本框)
│  ├─ input-number(数字)
│  ├─ radio(单选)
│  ├─ checkbox(多选)
│  ├─ select(下拉列表)
│  ├─ table(表格)
│  ├─ date(日期时间类型)
│  ├─ description(说明文字)
│  └─  upload(上传)
│
├─ 2(业务域)
│  ├─ name(姓名)
│  ├─ gender(性别)
│  ├─ ID-cards(身份证号)
│  ├─ birth-date(出生日期)
│  ├─ education(学历)
│  ├─ degree(学位)
│  ├─ school(学校)
│  ├─ address(地址)
│  ├─ course-results(小学课程成绩)
│  ├─ attendance(考勤情况)
│  ├─ physique(体质测试)
│  ├─ department(部门)
│  ├─ personnel(人员)
│  └─ approval(关联审批单)
│ 
└─ 3(套件)
   ├─ leave(请假)
   ├─ meeting-room(会议室申请)
   └─ car(车辆申请)
   └─ computer(电脑申请)
   └─ classroom(教室申请)

moduleList中的子元素除了string类型(引用插件内部表单组件,对应下方的moduleType字段)还可以是object类型(自定义表单组件)

字段类型是否必填默认值描述
iconstringtrue-表单元素logo
namestringtrue-表单元素类型名称
typenumbertrue-表单元素类型id,1是'input' 2是'textarea' 以此类推,10是上传、另外11是省市区,其它业务域套件的组件都是复用设计域的组件
moduleTypestringtrue-表单元素类型英文名称
isRequirebooleantrue-表单元素是否必填(formFill数据提交的时候会校验)
layoutnumbertrue-表单元素布局占位-0为100%宽度、1为50%宽度
rulenumbertrue-表单元素的标题字数限制
titlestringtrue-表单元素的标题,相当于label效果
tipsstringtrue-表单元素的placeholder
valuestringtrue-表单元素的值,如果是数组或对象,需要JSON.stringify转
arrayOptionsstring/arraytrue-表单元素的子元素的属性-radio、checkbox、select(option的key和value)、table、date(1为'YYYY-MM-DD'、0为'YYYY-MM-DD HH:mm:ss')、description说明文字的text值、upload上传允许的格式列表
domainnumbertrue-表单元素disabled的状态-1为disabled、0为取消disabled
valueIsArraynumbertrue-表单元素的值是否为数组-0不是数组、1是数组(多选类的组件有用到)
emitExternalstringfalse-当需要调用外部的自定义事件,里面有trigger、emitEventName属性,需要转成字符串
moduleListarrayfalse-当组件里面含有多个子组件(套件有用到)
示例:

moduleList: [
   {
      icon: require('@/assets/img/department.png'),
      name: '文本框',
      type: 1,
      moduleType: 'department',
      isEdit: true,
      isRequire: true,
      layout: 1,
      rule: 14,
      title: '部门',
      tips: '请选择',
      value: '',
      arrayOptions: '',
      domain: 1,
      valueIsArray: 1,
      emitExternal: JSON.stringify({ // 触发外部事件
         trigger: 'click', // 诱因-内部触发 下拉框控件为focus(部门),上传控件为click(人员)
         emitEventName: 'departmentEdit' // 触发事件,需要在formFill组件中添加departmentEdit事件
      })
   }
]
  • 基础控件
字段类型是否必填默认值描述
ossConfigobjecttrue-阿里oss相关配置 {accessKeyId: 'accessKeyId',accessKeySecret: 'accessKeySecret',endpoint: 'endpoint',bucket: 'bucketName'}

formFill 表单回填及预览

  • 表单回调及预览 ()
字段类型是否必填默认值描述
initFormDataobjectfalse-组件初始化的数据(包括了表单设计数据以及表单填写数据)
initFormIdnumberfalse-表单Id(初次填写表单,通过Id, 查询表单详情)
permissionDataobjectfalse-组件权限控制的数据(各层级的key对应initFormData中各层级的id值,form->sheet->column)

#权限控制 permissionData

示例:

{
   3348: {
      9126: 'r',
      9127: 'w',
      9128: 'n',
      9129: 'r',
      9130: 'w',
      9131: 'n',
      9132: 'r',
      9133: 'w',
      9134: 'n',
   }
}

#事件

事件归属模块事件名称说明回调参数示例使用方法
formEditoreditorSave事件将返回表单设计的数据(调取后端接口直接存储该数据即可){"name":"123","tags":{"id":1,"name":"教师档案","type":0},"sheets":[{"id":50,"formId":31,"name":"画布 1","columns":{"id":152,"formId":31,"formSheetId":50,"domain":0,"type":3,"title":"数字","tips":"请输入","layout":1,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"","rule":"14","value":null,"valueIsArray":0},{"id":153,"formId":31,"formSheetId":50,"domain":0,"type":1,"title":"文本框","tips":"请输入","layout":1,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"","rule":"14","value":null,"valueIsArray":0},{"id":154,"formId":31,"formSheetId":50,"domain":0,"type":2,"title":"多行文本框","tips":"请输入","layout":0,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"\"200\"","rule":"300","value":null,"valueIsArray":0}}]}await this.$refs.formEditor.editorSave()
formEditorgetFormData事件将返回表单设计的数据{"sheets":[{"id":50,"formId":31,"name":"画布 1","columns":{"id":152,"formId":31,"formSheetId":50,"domain":0,"type":3,"title":"数字","tips":"请输入","layout":1,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"","rule":"14","value":null,"valueIsArray":0},{"id":153,"formId":31,"formSheetId":50,"domain":0,"type":1,"title":"文本框","tips":"请输入","layout":1,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"","rule":"14","value":null,"valueIsArray":0},{"id":154,"formId":31,"formSheetId":50,"domain":0,"type":2,"title":"多行文本框","tips":"请输入","layout":0,"required":0,"editRoles":"1,2,3,4","viewRoles":"1,2,3,4","sort":0,"val":"\"200\"","rule":"300","value":null,"valueIsArray":0}}]}await this.$refs.formEditor.getFormData()
formFillformSubmit事件将返回表单填写的数据{"name":"123"}this.$refs.formFill.formSubmit()

版本更新: 1.0.11 1. formFill组件允许传入permissionData属性,可以对表单元素权限控制 2. emitExternal的属性传值改变

emitExternal: JSON.stringify({ // 触发外部事件
   trigger: 'click', // 诱因-内部触发 下拉框控件为focus(部门、人员),上传控件为click(关联审批单)
   emitEventName: 'departmentEdit' // 触发事件,需要在formFill组件中添加departmentEdit事件,插件内部默认为 moduleType + 'Edit'
})
  1. 插件件内已配置了多个套件,可通过字符串直接引用
   ├─ leave(请假)
   ├─ meeting-room(会议室申请)
   ├─ car(车辆申请)
   ├─ computer(电脑申请)
   └─ classroom(教室申请)

也可以自定义配置

1.0.19

11 months ago

1.0.18

11 months ago

1.0.17

11 months ago

1.0.22

11 months ago

1.0.21

11 months ago

1.0.20

11 months ago

1.0.16

2 years ago

1.0.11

2 years ago

1.0.15

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.0

3 years ago