安装使用
npm i @pfan/tq-customform
import TqCustomform from '@pfan/tq-customform'
import '@pfan/tq-customform/dist/tq-customform.css'
Vue.use(TqCustomform)
使用
主表单
<form-generator ref="form" />
<form-generator ref="form" :defaultValue="json1" status="notUse" />
<form-generator ref="form" :defaultValue="json1" status="stop" />
子表单
<sub-form ref="form" :defaultValue="json" />
<sub-form :defaultValue="json" :subDefaultValue="subJson" />
获取json 字符串
getJson() {
const json = this.$refs.form.getJson()
...
},
组件中数据格式
{
config: {
labelPosition: 'right',
labelWidth: 95,
gutter: 10,
size: 'default',
labelColon: false
},
schema: [{
name: 'populationType',
title: {
content: '人员类型',
hide: true,
icon: {
show: true,
iconPosition: 'left',
iconType: 'icon',
iconName: 'help',
tips: '我是提示内容,我是提示内容,我是提示内容'
}
},
type: 'String',
layout: 12,
defaultValue: '',
required: true,
form: {
type: 'Select',
filterable: true,
multiple: true,
placeholder: '请输入英文名字',
options: {
type: 'static',
remote: '/ddd/xxxx/thodName',
localstorage: 'properties.populationType',
staticList: [{
label: '展示1',
value: 'key1'
}, {
label: '展示2',
value: 'key2'
}]
}
},
search: {
show: true,
sort: 1,
layout: 6,
label: '搜索叫的名字',
type: 'simple'
},
table: {
show: true,
label: '宣传日期',
width: 150,
fixed:'left',
ellipsis:'true',
sortable:'true',
sort: 1,
render:'',
},
isImport:{
show:true,
}
validateRules: [
{
"pattern":"/^[a-zA-Z\\u4e00-\\u9fa5]+$/",
"trigger":[
"change"
],
"type":"compose",
"check":[
"letter",
"chinese"
],
"range":[
0,
999999
],
"message":"输入格式不正确"
}
{
"type":"custom",
"pattern":"/^[a-zA-Z\\u4e00-\\u9fa5]+$/",
"message":"输入格式不正确"
"trigger":[
"change","blur"
],
}
],
controller: {
disabled: {
update: false,
view: true
},
visible: {
update: true,
view: true
}
}
}]
rows:[]
}
行容器 注意事项
- 行容器 无法嵌套 2层 (即 行容器中无法再次拖入行容器)
- 导出数据 和导入数据时 需要进行数据处理 (处理行容器)
{"config":{"labelPosition":"left","labelWidth":90,"gutter":20,"size":"default","labelColon":false},"schema":[{"id":1633751801737,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题1","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Select","options":{"type":"static","remote":"","localstorage":"","static":[{"label":"展示1","value":"key1"},{"label":"展示2","value":"key2"}]}},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}},{"id":1633751801734,"type":"any","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"行容器","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Row"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}},"schema":[{"id":1633751801735,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题21","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}},{"id":1633751801736,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题22","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}}]},{"id":1633751801738,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题3","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}}]}
{"config":{"labelPosition":"left","labelWidth":90,"gutter":20,"size":"default","labelColon":false},"schema":[{"id":1633751801737,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题1","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Select","options":{"type":"static","remote":"","localstorage":"","static":[{"label":"展示1","value":"key1"},{"label":"展示2","value":"key2"}]}},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}},{"id":1633751801735,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题21","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}},{"id":1633751801736,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题22","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}},{"id":1633751801738,"type":"string","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"标题3","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Input"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}}}],"rows":[{"id":1633751801734,"type":"any","name":"","defaultValue":null,"layout":24,"required":false,"title":{"content":"行容器","hide":false,"icon":{"show":false,"iconPosition":"left","iconType":"icon","iconName":"","tips":""}},"form":{"type":"Row"},"validateRules":[],"search":{"show":false,"sort":1,"layout":6,"label":"","type":"simple"},"table":{"show":false,"label":"","width":150,"fixed":"","ellipsis":false,"sortable":false,"sort":1,"render":""},"controller":{"disabled":{"insert":false,"update":false,"view":true},"visible":{"insert":true,"update":true,"view":true}},"ids":[1633751801735,1633751801736]}]}
20211009 开会改动问题
增加可导入字段 isImport
{
...
schema: [{
...
isImport:{
show:true,
}
}
]
}
static 字段变更
{
...
schema: [{
...
form:{
...
options: {
type: 'static',
remote: '/ddd/xxxx/thodName',
localstorage: 'properties.populationType',
staticList: [{
label: '展示1',
value: 'key1'
}, {
label: '展示2',
value: 'key2'
}]
}
}
}
]
关于 正则
预定义正则分类
必填类正则
固定类正则
- 手机
- 电话
- 手机+电话
- 身份证
- 邮箱
组合类正则
自定义正则
预定义正则
const RULES = [
{ type: 'required', name: '必填', pattern: '/[\\S]+/', message: '请输入必填项' },
{ type: 'mobile', name: '手机号', pattern: '/^1[3456789]\\d{9}$/', message: '请输入手机号' },
{ type: 'phone', name: '固定电话', pattern: '/^0\\d{2,3}-\\d{7,8}$/', message: '请输入固定电话' },
{ type: 'contact', name: '联系方式(手机+固定电话)', pattern: '/(^1[3456789]\\d{9}$)|(/^0\\d{2,3}-\\d{7,8}$)/', message: '请输入联系方式' },
{ type: 'number', name: '正整数', pattern: '/^\\d+$/', message: '请输入正整数' },
{ type: 'email', name: '邮箱', pattern: '/^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/', message: '请输入邮箱' },
{ type: 'idCard', name: '身份证', pattern: '/(^\\d{15}$)|(^\\d{17}([0-9]|X|x)$)/', message: '请输入身份证号' },
]
预定义组合类正则 子项
const COMPOSES = [
{ type: 'number', name: '数字', pattern: '0-9' },
{ type: 'letter', name: '字母', pattern: 'a-zA-Z' },
{ type: 'underline', name: '下划线', pattern: '_' },
{ type: 'reduce', name: '减号', pattern: '-' },
{ type: 'chinese', name: '中文', pattern: '\\u4e00-\\u9fa5' },
{ type: 'range', name: '范围', pattern: '{0,999999}' },
]
正则子项 数据格式
{
"pattern":"/^[a-zA-Z\\u4e00-\\u9fa5]+$/",
"trigger":[
"change"
],
"type":"compose",
"check":[
"letter",
"chinese"
],
"range":[
0,
999999
],
"id":1634001301454
}
1027 修改正则规则
const RULES = [
{ type: 'required', name: '必填', pattern: '/[\\S]+/', message: '请输入必填项' },
{ type: 'mobile', name: '手机号', pattern: '/^1[3456789]\\d{9}$/', message: '请输入手机号' },
{ type: 'phone', name: '固定电话', pattern: '/^0\\d{2,3}-\\d{7,8}$/', message: '请输入固定电话' },
{ type: 'contact', name: '联系方式(手机+固定电话)', pattern: '/(^1[3456789]\\d{9}$)|(/^0\\d{2,3}-\\d{7,8}$)/', message: '请输入联系方式' },
{ type: 'email', name: '邮箱', pattern: '/^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/', message: '请输入邮箱' },
{ type: 'idCard', name: '身份证', pattern: '/(^\\d{15}$)|(^\\d{17}([0-9]|X|x)$)/', message: '请输入身份证号' },
{ type: 'number', name: '数字', pattern: '/^\\d+$/', message: '请输入数字' },
{ type: 'chinese', name: '中文', pattern: '/^[\\u4e00-\\u9fa5]+$/', message: '请输入中文' },
{ type: 'chineseenglish', name: '中英文', pattern: '/^[a-zA-z\\u4e00-\\u9fa5]+$/', message: '请输入中英文' },
{ type: 'min', name: '最小字符长度', pattern: '/^[\\s\\S]{6,}$/', message: '最少输入6个字符长度' },
{ type: 'max', name: '最大字符长度', pattern: '/^[\\s\\S]{0,99}$/', message: '最大输入99个字符长度' },
]
类型
[
{
value: 'required',
label: '必填项校验',
},
{
value: 'textformat',
label: '文本格式校验',
children: [
{
value: 'mobile',
label: '手机号',
},
{
value: 'phone',
label: '固定电话',
},
{
value: 'contact',
label: '联系方式(手机+固定电话)',
}, {
value: 'number',
label: '正整数',
}, {
value: 'email',
label: '邮箱',
}, {
value: 'idCard',
label: '身份证',
},
],
},
{
value: 'texttype',
label: '文本类型校验',
children: [
{
value: 'number',
label: '数字',
},
{
value: 'chinese',
label: '中文',
},
{
value: 'chineseenglish',
label: '中英文',
},
],
},
{
value: 'lengthrange',
label: '长度范围校验',
children: [
{
value: 'min',
label: '最小字符长度',
},
{
value: 'max',
label: '最大字符长度',
},
],
},
{
value: 'custom',
label: '正则表达式校验',
},
]