0.0.31 • Published 5 days ago
formline-vue3 v0.0.31
说明
- 安装: npm install formline-vue3
- 推荐环境: Vue3 + ElementPlus
- 使用场景
- 使用 "ElementPlus" 制作表单时,常规方法需要在""部分编写很多“表单组件”代码,代码量太大,复制粘贴时需要检查是否有不必要的代码。使用 "formline-vue3",可以真正的"无脑复制粘贴",且不会出现很多无用代码。
- 当你的表单有复杂的场景(比如 "根据某一项的值来切换其他表单项的内容)时,使用常规的方法会导致你的""内容中出现大量的"", 并且需要手动清除“所选值”。使用 "formline-vue3",只需要在"javascript"代码部分操作数组的内容即可。
- 包内容
- FlUI:封装"ElementPlus"的常规表单组件(例如:ElCheckbox、ElColor、ElDate、ElDateRange、ElDateTime、ElDateTimeRange、ElInput、ElMulti、ElNumber、ElRadio、ElSelect、ElSwitch、ElTextarea、ElTime、ElTimeRange)。
- FlEntity:"FlUI" 的实例对象,以及一些功能函数(就是 "FlUI"内部使用的数据对象)。
- 源码使用 "vue3+vite+ts" 实现,不过第三方项目暂时好像没有ts提示支持,后续更新会支持。
使用示例
<!-- template -->
<template v-for='(item,index) in _formList.list' :key='item.cid'>
<template v-if='item.show'>
<el-form-item :label='item.getName' :prop='item.ident'>
<FlUI
:index='index' :seq='-1' :entity='item'
:elBinds='Object.assign(
{},
item.ident === "amount" && { min:10, max:20, },
)'
@changeValue='(index, seq, event)=> _formList.setValue(event, index)'
>
<template v-if='item.ident === "userName"' #append>FullName</template>
</FlUI>
</el-form-item>
</template>
</template>
<el-button @click='_bindSubmit'>提交</el-button>
<!-- script -->
import { reactive } 'vue';
import { FlEntity, FlUI } from 'formline-vue3'; // 引入
// 使用"FlEntity"中的"ClassList"创建一个数组, 用来装载所有自定义实例对象
const _formList = reactive(new FlEntity.ClassList.builder([
// 创建一个"input"组件的"数据实例"(唯一标识='userName', label='UserName', 输入框占位符='Please Input UserName', 默认值='')
FlEntity.ClassInput.builder('userName', 'UserName', 'Please Input UserName', ''),
// 创建一个"number"组件的"数据实例"(唯一标识='amount', label='Amount', 输入框占位符='', 默认值=12)
FlEntity.ClassNumber.builder('amount', 'Amount', '', 12),
]));
// const _formData = computed(()=> _formList.getSimpleData); // 实时计算结果(非必要)
function _bindSubmit() {
// console.log('_formData', _formData);
// 通过"FlEntity"的工具函数, 获取"表单输入内容"的结果集合
const _result = _formList.calcResult(true);
if (!_result.success) return ElNotification({ title:t('Tip'), message:_result.msg, type:'warning' });
console.log('_result', _result.data);
}
FlUI 组件的使用
props
属性 | 类型 | 说明 |
---|---|---|
index (选传) | number | 当前的索引。(回调赋值使用) |
seq (选传) | number | 当前的副索引。(回调赋值使用) (当循环数组为二维数组时有用) |
entity | ClassBase(FlEntity中的对象) | 当前实例对象 |
elBinds | Object | 使用的 "ElementPlus"的其他 "属性" 都传入这里(例如: 的"maxlength" |
elOns | Object | 使用的 "ElementPlus"的其他 "事件" 都传入这里(例如: 的"focus" |
emit
属性 | 类型 | 说明 |
---|---|---|
changeValue | Function | 组件中 "value" 改变时触发的函数。回调参数:(index:number, seq:number, value:unknow)index:回传 props.indexseq:回传 props.seqvalue:组件改变的 value |
FlEntity 工具的使用
FlEntity.ClassList 存储所有"实例对象"的实例(例: ClassInput、ClassNumber....)
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
list | Array | 存储实例对象的数组 | |
getSimpleData | Object | 获取 list 中所有对象的计算结果。(忽略无效值)(无效值:例: NaN, undefined, null, '', '', '')(需使用computed包装) | |
getFullData | Object | 获取 list 中所有对象的计算结果。(保留无效值)(无效值:例: NaN, undefined, null, '', '', '')(需使用computed包装) | |
builder | Function( list:Array ) | list:实例对象数组 | 简易构造函数(代替 "new ClassList()" 形式) |
replaceList | Function( list:Array ) | list:需要替换的新数据数组 | 替换当前 "list" 中所有对象 |
setValue | Function( value:unknow, index:number | false, ident:string ) | value:需要赋值的数据index:(可选) 赋值目标在"list"中的索引, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident" (参数:index、ident 二选一必传) | 赋值"list"中指定实例对象的"value" |
resetAll | Function | 重置"list"中所有实例对象的"value" | |
setLoadings | Function( value:boolean, indexs:number | false | number[], idents:string | string[] ) | value:要赋值的"loading"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传) | 设置"list"中指定实例对象的"loading"属性 |
setDisables | Function( value:boolean, indexs:number |false |number[], idents:string |string[] ) | value:要赋值的"disable"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传) | 设置"list"中指定实例对象的"disable"属性 |
setElBinds | Function( value:Object, indexs:number |false |number[], idents:string |string[] ) | value:要赋值的"elBinds"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传) | 设置"list"中指定实例对象的"elBinds"属性 |
setElOns | Function( value:Object, indexs:number |false |number[], idents:string |string[] ) | value:要赋值的"elOns"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传) | 设置"list"中指定实例对象的"elOns"属性 |
calcResult | Function( delInvalid:boolean ) | delInvalid:是否去除无效值(无效值:例: NaN, undefined, null, '', '', '') | 获取"list"中实例对象的计算结果 |
addRuleWithIdents | Function( type:string, msg?:false | string, func?: false | Function, indexs:number |false |number[], idents:string |string[] ) | type:校验类型(目前仅支持"must")msg: (可选)提示文本, 传入"false"或不传, 则默认使用 "placeholder"或"name"func: (可选)自定义校验函数(暂未使用)index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传) | 添加校验规则 |
所有实例对象的共有属性(不包含 ClassList)
- 注: 所有属性推荐使用提供的 "set函数" 修改值,不太推荐直接通过 "对象.xx = xx" 的方式直接修改。
- 其一:各个实例对象的属性数据类型内部是定义好的, 直接修改可能会在某些步骤或场景发生一些异常。
- 其二:某些属性的修改会涉及联动修改,直接修改的话则会跳过定义好的 "联动" 操作,可能导致在 "计算结果" 时可能会发生一些异常。
属性 | 类型 | 说明 |
---|---|---|
className | String | 类名(ClassInput、ClassNumber...) |
cid | String | 唯一标识符(一个你可能不需要使用的唯一id) |
loading | Boolean | loading状态 |
ident | String | 字段标识符(在使用"计算结果"时, 作为"结果对象"的key存在) |
preview | Boolean | 是否静态查看模式(保留, 暂未使用) |
join | Boolean | 是否参与计算使用(=false时, 在 "计算结果" 时, 则不会参与计算) |
show | Boolean | 是否显示(保留, 暂未在包内部使用) |
showName | Boolean | 是否显示 "name" 内容(保留, 暂未在包内部使用) |
disable | Boolean | 是否禁用(只是UI上禁用, 通过js操作值的方式仍可使用) |
name | String 或 ()=> string | label,标题 |
type | String | 类型,组件类型(与 "className" 对等, 为包内部使用, 如需使用推荐使用 "className") |
elBinds | Object | 同 的 "elBinds" 属性, 以 js 形式绑定 |
elOns | Object | 同 的 "elOns" 属性, 以 js 形式绑定 |
ruleList | Array | 校验规则 |
RuleItem.type | 校验类型, 目前仅支持"must" (must=必填) | |
RuleItem.msg | 提示文本, =false则使用 "placeholder"或"name" | |
RuleItem.func | 自定义提示函数, 目前暂未使用, 做保留项 | |
placeholder | (类型取决于实例对象) | 占位符 |
value | (类型取决于实例对象) | 值 |
getName | String | (与 "name" 对等,当 "name" 为 function 时,则会计算 function 结果后返回) |
setDisable | Function( value:boolean ): this | 设置 "disable" 的值 |
setLoading | Function( value:boolean ): this | 设置 "loading" 的值 |
setShow | Function( value:boolean ): this | 设置 "show" 的值 |
setJoin | Function( value:boolean ): this | 设置 "join" 的值 |
setElBinds | Function( value:Object ):this | 设置 "elBinds" 的值 |
setElOns | Function( value:Object ):this | 设置 "elOns" 的值 |
addRule | Function( type:string, msg?:false | string, func?:false | Function ):this | 添加校验规则1. "type"参数目前仅支持"must"2. "msg"参数可选, 传入"false"或不传, 则默认使用 "placeholder"或"name"3. "func"参数可选, 暂未使用 |
genElRules | Function() | 获取当前已设置的校验规则, 转为"el-form-item"的"rules"属性的匹配数据结构 |
ClassCheckBox(复选框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String 或 ()=> string | ||
value | Array<string | number> | ||
builder | Function( ident, name, placeholder, value, selectList ) | 简易构造函数(代替 "new ClassCheckBox()" 用法) | |
setValue | Function( value:string | number, index?:number): void | value:删除或添加的值 (存在则删除, 不存在则添加)index:(可选)当为添加时, 可指定插入现有"value"中的哪个索引 | 赋值 |
setValueList | Function( value:Array<string | number> ): void | 批量删除或添加值 (存在则删除, 不存在则添加) | |
replaceSelectList | Function( list:Array ): void | listItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值 | 替换 "selectList" 列表数据 |
ClassColor(颜色选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String 或 ()=> string | ||
value | String | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassColor()" 用法) | |
setValue | Function( value:string ): void |
ClassDate(日期选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String 或 ()=> string | ||
value | Date | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassDate()" 用法) | |
setValue | Function( value:Date | string | number ): void |
ClassDateRange(日期区间选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | Array String | ()=> string, String | ()=> string | ||
value | Array Date | String | Number, Date | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassDateRange()" 用法) | |
setValue | Function( value, index ): void | value 类型1:Datevalue 类型2:Stringvalue 类型3:Array Date | String | Number, Date | String | Number index:(可选)当参数value为string时, 通过index指定赋值索引 |
ClassDateTime(日期时间选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | Date | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassDateTime()" 用法) | |
setValue | Function( value: Date | String | Number ): void |
ClassDateTimeRange(日期区间选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | Array String | ()=> string, String | ()=> string | ||
value | ArrayDate | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassDateTimeRange()" 用法) | |
setValue | Function( value, index ): void | value 类型1:Datevalue 类型2:Stringvalue 类型3:Array Date | String | Number, Date | String | Number index:(可选)当参数value为string时, 通过index指定赋值索引 |
ClassInput(单行文本输入框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | String | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassInput()" 用法) | |
setValue | Function( value:string ): void |
ClassMulti(下拉多选框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String 或 ()=> string | ||
value | Array<string | number> | ||
builder | Function( ident, name, placeholder, value, selectList ) | 简易构造函数(代替 "new ClassMulti()" 用法) | |
setValue | Function( value:string | number, index?:number): void | value:删除或添加的值 (存在则删除, 不存在则添加)index:(可选)当为添加时, 可指定插入现有"value"中的哪个索引 | 赋值 |
setValueList | Function( value:Array<string | number> ): void | 批量删除或添加值 (存在则删除, 不存在则添加) | |
replaceSelectList | Function( list:Array ): void | listItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值 | 替换 "selectList" 列表数据 |
ClassNumber(数字输入框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassNumber()" 用法) | |
setValue | Function( value:number ): void |
ClassRadio(单选框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | String | Number | ||
builder | Function( ident, name, placeholder, value, selectList ) | 简易构造函数(代替 "new ClassRadio()" 用法) | |
setValue | Function( value:string | number ): void | ||
replaceSelectList | Function( list:Array ): void | listItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值 | 替换 "selectList" 列表数据 |
ClassSelect(下拉单选框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | String | Number | ||
builder | Function( ident, name, placeholder, value, selectList ) | 简易构造函数(代替 "new ClassSelect()" 用法) | |
setValue | Function( value:string | number ): void | ||
replaceSelectList | Function( list:Array ): void | listItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值 | 替换 "selectList" 列表数据 |
ClassSwitch(开关选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | Boolean | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassSwitch()" 用法) | |
setValue | Function( value:boolean ): void |
ClassTextarea(多行文本输入框)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | String | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassTextarea()" 用法) | |
setValue | Function( value:string ): void |
ClassTime(时间选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string | ||
value | Date | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassTime()" 用法) | |
setValue | Function( value:Date | String | Number ): void |
ClassTimeRange(时间区间选择器)(包含"共有属性")
属性 | 类型 | 参数说明 | 说明 |
---|---|---|---|
placeholder | String | ()=> string, String | ()=> string | ||
value | Date | String | Number, Date | String | Number | ||
builder | Function( ident, name, placeholder, value ) | 简易构造函数(代替 "new ClassTime()" 用法) | |
setValue | Function( value, index ): void | value 类型1:Datevalue 类型2:Stringvalue 类型3:Array Date | String | Number, Date | String | Number index:(可选)当参数value为string时, 通过index指定赋值索引 |
0.0.31
5 days ago
0.0.30
8 days ago
0.0.27
12 days ago
0.0.28
11 days ago
0.0.29
11 days ago
0.0.26
14 days ago
0.0.25
1 month ago
0.0.22
1 month ago
0.0.23
1 month ago
0.0.24
1 month ago
0.0.20
3 months ago
0.0.21
3 months ago
0.0.19
3 months ago
0.0.18
3 months ago
0.0.17
3 months ago
0.0.16
3 months ago
0.0.15
3 months ago
0.0.14
3 months ago
0.0.13
3 months ago
0.0.12
3 months ago
0.0.11
3 months ago
0.0.10
3 months ago