最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于uniapp的高級表單組件mosowe-form

 更新時間:2023年04月23日 10:32:26   作者:Mosowe  
這篇文章主要介紹了關(guān)于uniapp的高級表單組件mosowe-form,由于一些表單標(biāo)簽改來改去比較繁瑣,重復(fù)性很多,且樣式布局啥的幾乎萬變不離其中,為了偷懶,開發(fā)了mosowe-form及mosowe-table兩款高級組件,需要的朋友可以參考下

演示地址

下載地址

引言

常年做web系統(tǒng)端,對web系統(tǒng)端的功能布局等有很深刻的了解,經(jīng)常cv一些表單標(biāo)簽改來改去比較繁瑣,重復(fù)性很多,且樣式布局啥的幾乎萬變不離其中,為了偷懶,開發(fā)了mosowe-form及mosowe-table兩款高級組件,其思路借鑒了antdesign的高級組件。

這里面依賴的組件基本是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[]}-表單配置項
hideButtonbooleanfalse隱藏自帶按鈕
readOnlybooleanfalse只讀
resetInterceptbooleanfalse重置表單前攔截
filterEmptybooleanfalse提交時過濾空值
groupColobject-表單分組布局,這里是統(tǒng)一配置,參考uni-col
itemColobject表單項布局,這里是統(tǒng)一配置,參考uni-col
btnAlignstringleft底部提交按鈕位置 可選:left、right、center
submitTextstring提交提交按鈕文案
resetTextstring重置重置按鈕文案

formConfig

uni-form配置數(shù)據(jù)

optionItem

屬性類型默認(rèn)說明
subTitlestring-表單分組標(biāo)題,非必選
colobject-表單分組布局,參考uni-col
itemsobject-下一級為formItem的name(標(biāo)記itemName),配置為nameConfig

nameConfig

屬性類型默認(rèn)說明
typestring-表單類型,typeString
defaultValueany-默認(rèn)值
colobject-該項布局,參考uni-col
hidebooleanfalse隱藏該表單,不渲染在html中
visiblebooleantrue顯示該表單,display顯隱
typePropsobject即表單項類型type的props配置
formItemPropsobjectuni-forms-item的props配置,配置項內(nèi)的name不會成為uni-forms-item的name,會被itemName覆蓋
unionNamestring關(guān)聯(lián)表單類型,editer及upload無效,多個unionName用&分割,注意前后沒有空格,即當(dāng)本itemName值改變時,相關(guān)表單的值清空或者賦值,賦值方式:[關(guān)聯(lián)itemName]=defaultValue,defaultValue多個的話使用[]包裹(目前組件中沒有多選功能),若defaultValue值為number類型,則在值前添加一個~,例:sex=~1
transformfunction提交時轉(zhuǎn)化,一般來說都是吐給后端的存在數(shù)據(jù)庫里的數(shù)據(jù),參數(shù)為當(dāng)前值

typeString

說明
input表單輸入框,文本域,注意:uni-easyinput文檔中少寫了一個prop:primaryColor 設(shè)置主題色(默認(rèn)#2979ff)
select下拉選擇,注意:uni-data-select文檔中少寫了一個prop:disabled 禁用
combox組合框
editor富文本編輯器,內(nèi)部文件上傳功能依賴云存儲,需安裝wangeditor
radio單選+多選
switch開關(guān)選擇器
date日期選擇器
slider滑動選擇器
pickerpicker選擇器
cascade級聯(lián)選擇器,僅限本地數(shù)據(jù)
upload文件上傳,會自動上傳至當(dāng)前云服務(wù)空間,若未使用unicloud云服務(wù)空間,則不使用該組件,非自動上傳,點擊提交時上傳

emits

emits說明
submit表單提交
reset表單重置
change表單項改變,返回表單項name及值

slots

slot說明
[itemName]DefaultformItem的default插槽
[itemName]DefaultBeforeformItem的default插槽內(nèi)前置插槽
[itemName]DefaultAfterformItem的default插槽內(nèi)后置插槽
[itemName]LabelformItem的label插槽
[itemName]LabelBeforeformItem的label插槽內(nèi)前置插槽
[itemName]LabelAfterformItem的label插槽內(nèi)后置插槽
button提交重置按鈕區(qū)插槽,作用域參數(shù)為:submit,reset
lineAfter最后一個表單項后面的插槽,將會與表單項內(nèi)聯(lián)展示,不獨立占一行,作用域參數(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: '測試',
          col:{
            span: 12
          },
          unionName: 'address=哈哈哈&sex=~1',
          typeProps:{
            placeholder:'請輸入'
          },
          formItemProps:{
            label:'測試',
            required:true,
            rules:[
              {
                required:true,
                errorMessage: '請?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:'請選擇',
            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:'日期時間',
          }
        },
        datetimerange:{
          type:'date',
          defaultValue: '',
          typeProps:{
            type:'datetimerange'
          },
          formItemProps:{
            label:'日期時間范圍',
          }
        },
        time:{
          type:'picker',
          defaultValue: '12:00',
          typeProps:{
            mode: 'time',
            start:'00:00',
            end:'13:59'
          },
          formItemProps:{
            label:'時間',
          }
        },
        pickerdate:{
          type:'picker',
          defaultValue: '2023-03',
          typeProps:{
            mode: 'date',
            fields:'month'
          },
          formItemProps:{
            label:'月份',
          }
        },
        cascade:{
          type:'cascade',
          defaultValue: [],
          typeProps:{
            localdata:[{
              text: "一年級",
              value: "1-0",
              children: [{
                text: "1.1班",
                value: "1-1"
              },
              {
                text: "1.2班",
                value: "1-2"
              }]
            },
            {
              text: "二年級",
              value: "2-0",
              children: [{
                text: "2.1班",
                value: "2-1"
              },
              {
                text: "2.2班",
                value: "2-2"
              }]
            },
            {
              text: "三年級",
              value: "3-0",
              disable: true
            }]
          },
          formItemProps:{
            label:'級聯(lián)',
          }
        },
        file:{
          type:"upload",
          defaultValue:{
            extname: "png",
            name: "1111111.png",
            url: "https:..." // 改成實際地址
          },
          typeProps:{
            'return-type':'object'
          },
          formItemProps:{
            label: '文件上傳'
          }
        },
        fileArr:{
          type:"upload",
          defaultValue:[{
            extname: "png",
            name: "1111111.png",
            url: "https:..." // 改成實際地址
          }],
          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的高級表單組件mosowe-form的文章就介紹到這了,更多相關(guān)uniapp的mosowe-form表單組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue重要修飾符.sync對比v-model的區(qū)別及使用詳解

    Vue重要修飾符.sync對比v-model的區(qū)別及使用詳解

    這篇文章主要為大家介紹了Vue中重要修飾符.sync與v-model的區(qū)別對比及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 解決Vue開發(fā)中對話框被遮罩層擋住的問題

    解決Vue開發(fā)中對話框被遮罩層擋住的問題

    在Vue的開發(fā)中,一旦我們用到對話框,經(jīng)常出現(xiàn)的問題是對話框被遮罩層擋住,怎么來解決這個問題呢?下面小編給大家?guī)砹薞ue開發(fā)中對話框被遮罩層擋住的問題及解決方法,一起看看吧
    2018-11-11
  • vue項目中使用vue-layer彈框插件的方法

    vue項目中使用vue-layer彈框插件的方法

    這篇文章主要介紹了vue項目中使用vue-layer彈框插件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • vue3項目如何使用prettier格式化代碼

    vue3項目如何使用prettier格式化代碼

    這篇文章主要介紹了vue3項目如何使用prettier格式化代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue中子組件向父組件傳值$emit、.sync的案例詳解

    Vue中子組件向父組件傳值$emit、.sync的案例詳解

    這篇文章主要介紹了Vue中子組件向父組件傳值$emit、.sync的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • vue實現(xiàn)的下拉框功能示例

    vue實現(xiàn)的下拉框功能示例

    這篇文章主要介紹了vue實現(xiàn)的下拉框功能,涉及vue.js數(shù)據(jù)讀取、遍歷、事件響應(yīng)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Vue使用Vue-cropper實現(xiàn)圖片裁剪

    Vue使用Vue-cropper實現(xiàn)圖片裁剪

    這篇文章主要為大家詳細(xì)介紹了Vue使用Vue-cropper實現(xiàn)圖片裁剪,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 一文帶你了解Vue中的axios和proxy代理

    一文帶你了解Vue中的axios和proxy代理

    這篇文章主要為大家詳細(xì)介紹了Vue中的axios和proxy代理的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2023-03-03
  • Vue請求JSON Server服務(wù)器數(shù)據(jù)的實現(xiàn)方法

    Vue請求JSON Server服務(wù)器數(shù)據(jù)的實現(xiàn)方法

    這篇文章主要介紹了Vue請求JSON Server服務(wù)器數(shù)據(jù)的實現(xiàn)方法,需要的朋友可以參考下
    2018-11-11
  • vue3父組件和子組件如何傳值實例詳解

    vue3父組件和子組件如何傳值實例詳解

    近期學(xué)習(xí)vue3的父子組件之間的傳值,發(fā)現(xiàn)跟vue2.x的父子組件之間的傳值并沒有太大的區(qū)別,下面這篇文章主要給大家介紹了關(guān)于vue3父組件和子組件如何傳值的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

涞源县| 海安县| 镇沅| 岗巴县| 微山县| 库尔勒市| 淳化县| 陈巴尔虎旗| 邵阳市| 阿瓦提县| 青浦区| 吉水县| 大理市| 甘德县| 宁安市| 枣强县| 前郭尔| 临沧市| 独山县| 湄潭县| 云浮市| 乐昌市| 金门县| 太和县| 陈巴尔虎旗| 焦作市| 绍兴县| 抚远县| 三都| 全州县| 鸡东县| 安平县| 宁强县| 来安县| 安达市| 德江县| 常州市| 建水县| 日照市| 湟源县| 弥渡县|