關(guān)于uniapp的高級(jí)表單組件mosowe-form
引言
常年做web系統(tǒng)端,對(duì)web系統(tǒng)端的功能布局等有很深刻的了解,經(jīng)常cv一些表單標(biāo)簽改來改去比較繁瑣,重復(fù)性很多,且樣式布局啥的幾乎萬變不離其中,為了偷懶,開發(fā)了mosowe-form及mosowe-table兩款高級(jí)組件,其思路借鑒了antdesign的高級(jí)組件。
這里面依賴的組件基本是uniapp官方的和自己二次封裝的:
依賴組件
uni-form
uni-data-picker
uni-datetime-picker
uni-file-picker
uni-easyinput
uni-datetime-picker
uni-data-select
uni-data-picker
uni-data-checkbox
uni-combox
uni-popup
uni-row
uni-col
mosowe-editor
props
屬性 | 類型 | 默認(rèn) | 說明 |
options | {formConfig , list:optionItem[] } | - | 表單配置項(xiàng) |
hideButton | boolean | false | 隱藏自帶按鈕 |
readOnly | boolean | false | 只讀 |
resetIntercept | boolean | false | 重置表單前攔截 |
filterEmpty | boolean | false | 提交時(shí)過濾空值 |
groupCol | object | - | 表單分組布局,這里是統(tǒng)一配置,參考uni-col |
itemCol | object | 表單項(xiàng)布局,這里是統(tǒng)一配置,參考uni-col | |
btnAlign | string | left | 底部提交按鈕位置 可選:left、right、center |
submitText | string | 提交 | 提交按鈕文案 |
resetText | string | 重置 | 重置按鈕文案 |
formConfig
uni-form配置數(shù)據(jù)
optionItem
屬性 | 類型 | 默認(rèn) | 說明 |
subTitle | string | - | 表單分組標(biāo)題,非必選 |
col | object | - | 表單分組布局,參考uni-col |
items | object | - | 下一級(jí)為formItem的name(標(biāo)記itemName),配置為nameConfig |
nameConfig
屬性 | 類型 | 默認(rèn) | 說明 |
type | string | - | 表單類型,typeString |
defaultValue | any | - | 默認(rèn)值 |
col | object | - | 該項(xiàng)布局,參考uni-col |
hide | boolean | false | 隱藏該表單,不渲染在html中 |
visible | boolean | true | 顯示該表單,display顯隱 |
typeProps | object | 即表單項(xiàng)類型type的props配置 | |
formItemProps | object | uni-forms-item的props配置,配置項(xiàng)內(nèi)的name不會(huì)成為uni-forms-item的name,會(huì)被itemName覆蓋 | |
unionName | string | 關(guān)聯(lián)表單類型,editer及upload無效,多個(gè)unionName用& 分割,注意前后沒有空格,即當(dāng)本itemName值改變時(shí),相關(guān)表單的值清空或者賦值,賦值方式:[關(guān)聯(lián)itemName]=defaultValue,defaultValue多個(gè)的話使用[]包裹(目前組件中沒有多選功能),若defaultValue值為number類型,則在值前添加一個(gè)~ ,例:sex=~1 | |
transform | function | 提交時(shí)轉(zhuǎn)化,一般來說都是吐給后端的存在數(shù)據(jù)庫里的數(shù)據(jù),參數(shù)為當(dāng)前值 |
typeString
值 | 說明 |
input | 表單輸入框,文本域,注意:uni-easyinput文檔中少寫了一個(gè)prop:primaryColor 設(shè)置主題色(默認(rèn)#2979ff) |
select | 下拉選擇,注意:uni-data-select文檔中少寫了一個(gè)prop:disabled 禁用 |
combox | 組合框 |
editor | 富文本編輯器,內(nèi)部文件上傳功能依賴云存儲(chǔ),需安裝wangeditor |
radio | 單選+多選 |
switch | 開關(guān)選擇器 |
date | 日期選擇器 |
slider | 滑動(dòng)選擇器 |
picker | picker選擇器 |
cascade | 級(jí)聯(lián)選擇器,僅限本地?cái)?shù)據(jù) |
upload | 文件上傳,會(huì)自動(dòng)上傳至當(dāng)前云服務(wù)空間,若未使用unicloud云服務(wù)空間,則不使用該組件,非自動(dòng)上傳,點(diǎn)擊提交時(shí)上傳 |
emits
emits | 說明 |
submit | 表單提交 |
reset | 表單重置 |
change | 表單項(xiàng)改變,返回表單項(xiàng)name及值 |
slots
slot | 說明 |
[itemName]Default | formItem的default插槽 |
[itemName]DefaultBefore | formItem的default插槽內(nèi)前置插槽 |
[itemName]DefaultAfter | formItem的default插槽內(nèi)后置插槽 |
[itemName]Label | formItem的label插槽 |
[itemName]LabelBefore | formItem的label插槽內(nèi)前置插槽 |
[itemName]LabelAfter | formItem的label插槽內(nèi)后置插槽 |
button | 提交重置按鈕區(qū)插槽,作用域參數(shù)為:submit,reset |
lineAfter | 最后一個(gè)表單項(xiàng)后面的插槽,將會(huì)與表單項(xiàng)內(nèi)聯(lián)展示,不獨(dú)立占一行,作用域參數(shù)為:submit,reset |
示例代碼
<template> <view class="index-page"> <mosowe-form :options="formOptions" ref="mosoweFormRef" :groupCol="{ span: 12 }" @submit="submit" @reset="reset" @change="change" ></mosowe-form> </view> </template> <script setup lang="ts"> import { ref } from 'vue'; const mosoweFormRef = ref<any>(null) const submit = (data:any) => { console.log('submit',data) } const reset = (data:any) => { console.log('reset',data) } const formOptions = ref({ formConfig:{ 'label-width': '100px', 'label-align': 'right' }, list:[ { subTitle: '表單分組一', col:{ span: 24 }, items:{ name:{ type:'input', defaultValue: '測(cè)試', col:{ span: 12 }, unionName: 'address=哈哈哈&sex=~1', typeProps:{ placeholder:'請(qǐng)輸入' }, formItemProps:{ label:'測(cè)試', required:true, rules:[ { required:true, errorMessage: '請(qǐng)?zhí)顚懶彰? } ] } }, address:{ type:'input', col:{ span: 12 }, defaultValue: null, typeProps:{ primaryColor:'#999999', autoHeight:true, type:'textarea', placeholder:"寫這里", placeholderStyle:"color:#ff0000", }, formItemProps:{ label:'文本域', } }, editor:{ type:'editor', defaultValue: '<p>11112222<strong>22</strong></p>', typeProps:{ }, formItemProps:{ label:'編輯器', } } } }, { subTitle: '表單分組二', items:{ sex:{ type:'select', defaultValue: '', unionName: 'address-哈哈哈,你是誰', typeProps:{ placeholder:'請(qǐng)選擇', localdata:[ { value:0, text:'男' }, { value:1, text:'女' }, { value:2, text:'未知', }, ] }, formItemProps:{ label:'性別', } }, city:{ type: 'combox', defaultValue: '', unionName: 'address=combox', typeProps:{ candidates:[ '北京', '重慶', '上海', '南京', '天津' ] }, formItemProps:{ label:'城市', } }, chooseR:{ type: 'radio', defaultValue: '', typeProps:{ localdata:[ {"value": 0,"text": "籃球" }, {"value": 1,"text": "足球"}, {"value": 2,"text": "游泳"}, ] }, formItemProps:{ label:'單選', } }, switchData:{ type:'switch', defaultValue: true, formItemProps:{ label:'開關(guān)', } }, sliderData:{ type:'slider', defaultValue: 20, typeProps:{ 'show-value':true }, formItemProps:{ label:'滑塊', } }, date:{ type:'date', defaultValue: '', typeProps:{}, formItemProps:{ label:'日期', } }, daterange:{ type:'date', defaultValue: '', typeProps:{ type:'daterange' }, formItemProps:{ label:'日期范圍', } }, datetime:{ type:'date', defaultValue: '', typeProps:{ type:'datetime' }, formItemProps:{ label:'日期時(shí)間', } }, datetimerange:{ type:'date', defaultValue: '', typeProps:{ type:'datetimerange' }, formItemProps:{ label:'日期時(shí)間范圍', } }, time:{ type:'picker', defaultValue: '12:00', typeProps:{ mode: 'time', start:'00:00', end:'13:59' }, formItemProps:{ label:'時(shí)間', } }, pickerdate:{ type:'picker', defaultValue: '2023-03', typeProps:{ mode: 'date', fields:'month' }, formItemProps:{ label:'月份', } }, cascade:{ type:'cascade', defaultValue: [], typeProps:{ localdata:[{ text: "一年級(jí)", value: "1-0", children: [{ text: "1.1班", value: "1-1" }, { text: "1.2班", value: "1-2" }] }, { text: "二年級(jí)", value: "2-0", children: [{ text: "2.1班", value: "2-1" }, { text: "2.2班", value: "2-2" }] }, { text: "三年級(jí)", value: "3-0", disable: true }] }, formItemProps:{ label:'級(jí)聯(lián)', } }, file:{ type:"upload", defaultValue:{ extname: "png", name: "1111111.png", url: "https:..." // 改成實(shí)際地址 }, typeProps:{ 'return-type':'object' }, formItemProps:{ label: '文件上傳' } }, fileArr:{ type:"upload", defaultValue:[{ extname: "png", name: "1111111.png", url: "https:..." // 改成實(shí)際地址 }], typeProps:{}, formItemProps:{ label: '文件上傳' } }, fileArrNo:{ type:"upload", defaultValue:'', typeProps:{}, formItemProps:{ label: '文件上傳' } }, } } ] }) const change = (name:string,value:any) =>{ console.log('change',name,value) if (name === 'chooseR') { formOptions.value.list[1].items.city.typeProps.candidates = [ '北京', '重慶', value ] } } </script> <style lang="scss" scoped></style>
到此這篇關(guān)于關(guān)于uniapp的高級(jí)表單組件mosowe-form的文章就介紹到這了,更多相關(guān)uniapp的mosowe-form表單組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vant中的picker選擇器自定義選項(xiàng)內(nèi)容
這篇文章主要介紹了vant中的picker選擇器自定義選項(xiàng)內(nèi)容,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12vue的全局變量和全局?jǐn)r截請(qǐng)求器的示例代碼
這篇文章主要介紹了vue的全局變量和全局?jǐn)r截請(qǐng)求器的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09vue項(xiàng)目開發(fā)中setTimeout等定時(shí)器的管理問題
這篇文章主要介紹了vue項(xiàng)目開發(fā)中setTimeout等定時(shí)器的管理問題,需要的朋友可以參考下2018-09-09如何使用el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)
我們?nèi)粘W鲰?xiàng)目,特別是后臺(tái)管理系統(tǒng),常常需要導(dǎo)出excel文件,這篇文章主要給大家介紹了關(guān)于如何使用el-table實(shí)現(xiàn)純前端導(dǎo)出的相關(guān)資料,本文適用于el-table任意表格,需要的朋友可以參考下2024-03-03Vue3中進(jìn)行二維碼的生成與解碼實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Vue3中進(jìn)行二維碼的生成與解碼實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03ElementUI?復(fù)雜頂部和左側(cè)導(dǎo)航欄實(shí)現(xiàn)示例
本文主要介紹了ElementUI?復(fù)雜頂部和左側(cè)導(dǎo)航欄實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04使用Vue開發(fā)自己的Chrome擴(kuò)展程序過程詳解
這篇文章主要介紹了使用Vue開發(fā)自己的Chrome擴(kuò)展程序過程詳解,瀏覽器擴(kuò)展程序是可以修改和增強(qiáng) Web 瀏覽器功能的小程序。它們可用于各種任務(wù),例如阻止廣告,管理密碼,組織標(biāo)簽,改變網(wǎng)頁的外觀和行為等等。,需要的朋友可以參考下2019-06-06