0.0.31 • Published 5 days ago

formline-vue3 v0.0.31

Weekly downloads
-
License
-
Repository
-
Last release
5 days ago

TOC

说明

  • 安装: 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当前的副索引。(回调赋值使用) (当循环数组为二维数组时有用)
entityClassBase(FlEntity中的对象)当前实例对象
elBindsObject使用的 "ElementPlus"的其他 "属性" 都传入这里(例如: 的"maxlength"
elOnsObject使用的 "ElementPlus"的其他 "事件" 都传入这里(例如: 的"focus"

emit

属性类型说明
changeValueFunction组件中 "value" 改变时触发的函数。回调参数:(index:number, seq:number, value:unknow)index:回传 props.indexseq:回传 props.seqvalue:组件改变的 value

FlEntity 工具的使用

FlEntity.ClassList 存储所有"实例对象"的实例(例: ClassInput、ClassNumber....)

属性类型参数说明说明
listArray存储实例对象的数组
getSimpleDataObject获取 list 中所有对象的计算结果。(忽略无效值)(无效值:例: NaN, undefined, null, '', '', '')(需使用computed包装)
getFullDataObject获取 list 中所有对象的计算结果。(保留无效值)(无效值:例: NaN, undefined, null, '', '', '')(需使用computed包装)
builderFunction( list:Array )list:实例对象数组简易构造函数(代替 "new ClassList()" 形式)
replaceListFunction( list:Array )list:需要替换的新数据数组替换当前 "list" 中所有对象
setValueFunction( value:unknow, index:number | false, ident:string )value:需要赋值的数据index:(可选) 赋值目标在"list"中的索引, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident" (参数:index、ident 二选一必传)赋值"list"中指定实例对象的"value"
resetAllFunction重置"list"中所有实例对象的"value"
setLoadingsFunction( value:boolean, indexs:number | false | number[], idents:string | string[] )value:要赋值的"loading"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传)设置"list"中指定实例对象的"loading"属性
setDisablesFunction( value:boolean, indexs:number |false |number[], idents:string |string[] )value:要赋值的"disable"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传)设置"list"中指定实例对象的"disable"属性
setElBindsFunction( value:Object, indexs:number |false |number[], idents:string |string[] )value:要赋值的"elBinds"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传)设置"list"中指定实例对象的"elBinds"属性
setElOnsFunction( value:Object, indexs:number |false |number[], idents:string |string[] )value:要赋值的"elOns"的值index:(可选)赋值目标在"list"中的索引,为"number"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象, 传"false"则使用"ident"参数ident:(可选)赋值目标的"ident",为"string"类型则赋值指定的一个实例对象,可传数组赋值多个实例对象 (参数:index、ident 二选一必传)设置"list"中指定实例对象的"elOns"属性
calcResultFunction( delInvalid:boolean )delInvalid:是否去除无效值(无效值:例: NaN, undefined, null, '', '', ''获取"list"中实例对象的计算结果
addRuleWithIdentsFunction( 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" 的方式直接修改。
    • 其一:各个实例对象的属性数据类型内部是定义好的, 直接修改可能会在某些步骤或场景发生一些异常。
    • 其二:某些属性的修改会涉及联动修改,直接修改的话则会跳过定义好的 "联动" 操作,可能导致在 "计算结果" 时可能会发生一些异常。
属性类型说明
classNameString类名(ClassInput、ClassNumber...)
cidString唯一标识符(一个你可能不需要使用的唯一id)
loadingBooleanloading状态
identString字段标识符(在使用"计算结果"时, 作为"结果对象"的key存在)
previewBoolean是否静态查看模式(保留, 暂未使用)
joinBoolean是否参与计算使用(=false时, 在 "计算结果" 时, 则不会参与计算)
showBoolean是否显示(保留, 暂未在包内部使用)
showNameBoolean是否显示 "name" 内容(保留, 暂未在包内部使用)
disableBoolean是否禁用(只是UI上禁用, 通过js操作值的方式仍可使用)
nameString 或 ()=> stringlabel,标题
typeString类型,组件类型(与 "className" 对等, 为包内部使用, 如需使用推荐使用 "className")
elBindsObject的 "elBinds" 属性, 以 js 形式绑定
elOnsObject的 "elOns" 属性, 以 js 形式绑定
ruleListArray校验规则
RuleItem.type校验类型, 目前仅支持"must" (must=必填)
RuleItem.msg提示文本, =false则使用 "placeholder"或"name"
RuleItem.func自定义提示函数, 目前暂未使用, 做保留项
placeholder(类型取决于实例对象)占位符
value(类型取决于实例对象)
getNameString(与 "name" 对等,当 "name" 为 function 时,则会计算 function 结果后返回)
setDisableFunction( value:boolean ): this设置 "disable" 的值
setLoadingFunction( value:boolean ): this设置 "loading" 的值
setShowFunction( value:boolean ): this设置 "show" 的值
setJoinFunction( value:boolean ): this设置 "join" 的值
setElBindsFunction( value:Object ):this设置 "elBinds" 的值
setElOnsFunction( value:Object ):this设置 "elOns" 的值
addRuleFunction( type:string, msg?:false | string, func?:false | Function ):this添加校验规则1. "type"参数目前仅支持"must"2. "msg"参数可选, 传入"false"或不传, 则默认使用 "placeholder"或"name"3. "func"参数可选, 暂未使用
genElRulesFunction()获取当前已设置的校验规则, 转为"el-form-item"的"rules"属性的匹配数据结构

ClassCheckBox(复选框)(包含"共有属性")

属性类型参数说明说明
placeholderString 或 ()=> string
valueArray<string | number>
builderFunction( ident, name, placeholder, value, selectList )简易构造函数(代替 "new ClassCheckBox()" 用法)
setValueFunction( value:string | number, index?:number): voidvalue:删除或添加的值 (存在则删除, 不存在则添加)index:(可选)当为添加时, 可指定插入现有"value"中的哪个索引赋值
setValueListFunction( value:Array<string | number> ): void批量删除或添加值 (存在则删除, 不存在则添加)
replaceSelectListFunction( list:Array ): voidlistItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值替换 "selectList" 列表数据

ClassColor(颜色选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString 或 ()=> string
valueString
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassColor()" 用法)
setValueFunction( value:string ): void

ClassDate(日期选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString 或 ()=> string
valueDate | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassDate()" 用法)
setValueFunction( value:Date | string | number ): void

ClassDateRange(日期区间选择器)(包含"共有属性")

属性类型参数说明说明
placeholderArray String | ()=> string, String | ()=> string
valueArray Date | String | Number, Date | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassDateRange()" 用法)
setValueFunction( value, index ): voidvalue 类型1:Datevalue 类型2:Stringvalue 类型3:Array Date | String | Number, Date | String | Number index:(可选)当参数value为string时, 通过index指定赋值索引

ClassDateTime(日期时间选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueDate | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassDateTime()" 用法)
setValueFunction( value: Date | String | Number ): void

ClassDateTimeRange(日期区间选择器)(包含"共有属性")

属性类型参数说明说明
placeholderArray String | ()=> string, String | ()=> string
valueArrayDate | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassDateTimeRange()" 用法)
setValueFunction( value, index ): voidvalue 类型1:Datevalue 类型2:Stringvalue 类型3:Array Date | String | Number, Date | String | Number index:(可选)当参数value为string时, 通过index指定赋值索引

ClassInput(单行文本输入框)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueString
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassInput()" 用法)
setValueFunction( value:string ): void

ClassMulti(下拉多选框)(包含"共有属性")

属性类型参数说明说明
placeholderString 或 ()=> string
valueArray<string | number>
builderFunction( ident, name, placeholder, value, selectList )简易构造函数(代替 "new ClassMulti()" 用法)
setValueFunction( value:string | number, index?:number): voidvalue:删除或添加的值 (存在则删除, 不存在则添加)index:(可选)当为添加时, 可指定插入现有"value"中的哪个索引赋值
setValueListFunction( value:Array<string | number> ): void批量删除或添加值 (存在则删除, 不存在则添加)
replaceSelectListFunction( list:Array ): voidlistItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值替换 "selectList" 列表数据

ClassNumber(数字输入框)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueNumber
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassNumber()" 用法)
setValueFunction( value:number ): void

ClassRadio(单选框)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueString | Number
builderFunction( ident, name, placeholder, value, selectList )简易构造函数(代替 "new ClassRadio()" 用法)
setValueFunction( value:string | number ): void
replaceSelectListFunction( list:Array ): voidlistItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值替换 "selectList" 列表数据

ClassSelect(下拉单选框)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueString | Number
builderFunction( ident, name, placeholder, value, selectList )简易构造函数(代替 "new ClassSelect()" 用法)
setValueFunction( value:string | number ): void
replaceSelectListFunction( list:Array ): voidlistItem:json格式listItemkey:String | ()=> string类型,显示名称listItemvalue:String | Number类型,值替换 "selectList" 列表数据

ClassSwitch(开关选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueBoolean
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassSwitch()" 用法)
setValueFunction( value:boolean ): void

ClassTextarea(多行文本输入框)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueString
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassTextarea()" 用法)
setValueFunction( value:string ): void

ClassTime(时间选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string
valueDate | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassTime()" 用法)
setValueFunction( value:Date | String | Number ): void

ClassTimeRange(时间区间选择器)(包含"共有属性")

属性类型参数说明说明
placeholderString | ()=> string, String | ()=> string
valueDate | String | Number, Date | String | Number
builderFunction( ident, name, placeholder, value )简易构造函数(代替 "new ClassTime()" 用法)
setValueFunction( value, index ): voidvalue 类型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