項目信息
- 項目名稱:
vue3-xmw-form
- 預覽地址:點擊預覽
- Github:vue3-element-form
使用方法
- 根目錄下執行
npm i vue3-xmw-form
命令
npm i vue3-xmw-form
- 全局掛載組件
import { createApp } from 'vue'
import App from './App.vue'
import Xmwform from 'vue3-xmw-form'
createApp(App).use(Xmwform).mount('#app')
- 在頁面上使用
<!-- template -->
<vue3-xmw-form
:formData="formData"
:formColumns="formColumns"
:formRules="formRules"
label-width="120px"
ref="baseForm"
>
<!-- 大標題 -->
<template v-slot:baseTitle>
<h1>基于 Element-plus 封裝的表單組件</h1>
</template>
<!-- 操作按鈕 -->
<template v-slot:Actions>
<div style="text-align: center">
<el-button type="primary" @click="onSubmit(baseForm)"
>提交</el-button
>
<el-button @click="handlerReset">重置</el-button>
</div>
</template>
</vue3-xmw-form>
Form 屬性
除此之外支持所有 el-form 所有屬性
參數 | 說明 | 類型 | 默認值 |
---|---|---|---|
formData | 表單數據,雙向綁定(字段需與 prop 屬性一樣) | Object | - |
formColumns | 表單配置項,詳情見下方 Column 屬性 | Array | - |
formRules | 表單規則驗證,校驗規則請參考 rules | Object | - |
Form 方法
表單組件已給 el-form
綁定 ref
并用 defineExpose
暴露出來,我們只需要在引入組件中綁定 ref
,即可調用 el-form
的方法
<XmwForm :formData="formData" :formColumns="formColumns" :formRules="formRules" ref="baseForm"></XmwForm>
調用方式
const baseForm = ref<HTMLElement | null>(null)
baseForm.value.formRef.resetFields()
具體寫法可參考 Demo
Column 配置
參數 | 說明 | 類型 | 默認值 |
---|---|---|---|
xType | 表單類型,詳情見下方 xType 屬性 | String | - |
slotName | 插槽,開啟 slot 支持(開啟這個屬性,其它屬性無效) | Boolean | false |
label | el-form-item label 屬性 | String | - |
prop | el-form-item prop 屬性 | String | - |
span | 柵格占據的列數 | Number | - |
offset | 柵格左側的間隔格數 | Number | - |
formItemOpts | 支持 el-form-item 的所有屬性 | Object | - |
$event | 支持 xType 表單類型的所有事件,事件名需與 Element 組件事件名一樣 | Function | - |
xType 表單類型
參數 | 類型 | 說明 |
---|---|---|
Input | 輸入框 | 支持 el-input 的所有屬性和事件 |
Autocomplete | 自動補全輸入框 | 支持 el-autocomplete 的所有屬性和事件 |
Select | 下拉框 | 支持 el-select 的所有屬性和事件 |
SelectV2 | 虛擬列表選擇器 | 支持 el-select-v2 的所有屬性和事件 |
DatePicker | 日期時間選擇器 | 支持 el-date-picker 的所有屬性和事件 |
TimePicker | 時間選擇器 | 支持 el-time-picker 的所有屬性和事件 |
TimeSelect | 時間選擇 | 支持 el-time-select 的所有屬性和事件 |
InputNumber | 數字輸入框 | 支持 el-input-number 的所有屬性和事件 |
Radio | 單選框 | 支持 el-radio 的所有屬性和事件 |
Checkbox | 多選框 | 支持 el-checkbox 的所有屬性和事件 |
Switch | Switch 開關 | 支持 el-switch 的所有屬性和事件 |
Slider | Slider 滑塊 | 支持 el-slider 的所有屬性和事件 |
Rate | Rate 評分 | 支持 el-rate 的所有屬性和事件 |
Transfer | 穿梭框 | 支持 el-transfer 的所有屬性和事件 |
Cascader | 級聯框 | 支持 el-cascader 的所有屬性和事件 |
ColorPicker | 顏色選擇器 | 支持 el-color-picker 的所有屬性和事件 |
Tree | 樹形控件 | 支持 el-tree 的所有屬性和事件 |
TreeSelect | 樹形選擇 | 支持 el-tree-select 的所有屬性和事件 |
TreeV2 | 虛擬化樹形控件 | 支持 el-tree-v2 的所有屬性和事件 |
存在的問題
- 還沒找到辦法支持所有
xType
的所有方法,如果需要用到組件的方法,目前只能用slotName
引入Element
原生組件,有想法的伙伴可以交流一下 - 由于獲取不到
el-tree
的方法,Tree
和TreeV2
組件目前還不能正確回顯和數據綁定 - 目前已支持大部分的表單類型,還缺少一個
LasySelect
懶加載,帶有空封裝 - 需要的伙伴可以在此基礎拓展
此項目不再維護,如需學習或者使用,可以把源碼拷貝到本地進行拓展。