H5微应用 Vue3+Vant4表单中使用下拉单选、多选控件

本文介绍了在Vue3+Vant4的H5微应用开发中,如何封装带有弹出层的下拉单选和多选控件。作者针对Vant4中缺乏此类组件的问题,结合<van-field/>、<van-popup/>、<van-picker/>等组件,实现了字典下拉单选和多选功能,提升了开发效率。
摘要由CSDN通过智能技术生成

目录

1.简介

2.下拉单选

3.下拉多选

4.控件源码


1.简介

        最近在做钉钉端H5微应用的开发,项目前端架构是Vue3+Vant4,表单中需要使用字典下拉单选、多选控件,但Vant4中没有直接可以使用的控件,在网上也没有找到类似的文章。因此整合<van-field/>、<van-popup/>、<van-picker/>、<van-checkbox-group/>、<van-checkbox/>等组件,封装了带有弹出层的下拉单选、多选控件。在新增、编辑、详情页面均可使用,快速提高团队开发效率。

2.下拉单选

        在弹出层中选中610-C班,表单列表展示610-C班,传给表单的project.workTeam值为610-C班对应id:3550,单选效果图:

         数据集合下拉单选使用方式:

                    <dict-select
                      :label-width="70"
                      label="工作班次"
                      :dict-data-list="workTeamList"
                      text-column="teamName"
                      value-column="id"
                      v-model="project.workTeam"
                      placeholder="请选择工作班次"
                      :rules="formRules.workTeam"
                      required
                    />

         字典下拉单选使用方式: 

               <dict-select
                        :label-width="100"
                        label="更换备件类别"
                        dict-type="change_component_type"
                        v-model="item.changeComponentType"
                        placeholder="请选择更换备件类别"
                        :rules="formRules.changeComponentType"
                        required
                      />
dictType、 dictDataList参数二选一必传
dictDataList:数据集合,下拉弹出层展示dictDataList中数据
textColumn:文本展示字段,默认值:dictLabel,dictDataList中对象对应的属性,下拉单选成功后在表单列表展示
valueColumn:实际值字段,默认值:dictValue,dictDataList中对象对应的属性, 传递给父组件表单的实际值
dictType:字典编码,传入时,控件会根据编码获取字典下拉数据集合

3.下拉多选

        在弹出层中选中610-C班、610-A2班,表单列表展示610-C班,610-A2班,传给表单的project.workTeam值为610-C班、610-A2班对应id:3550,3559,多个值以逗号分隔,多选效果图:

         数据集合下拉多选使用方式:

                    <dict-select
                      multiple
                      :label-width="70"
                      label="工作班次"
                      :dict-data-list="workTeamList"
     
您可以通过使用Vant组件库和Vue 3来实现上拉分页和下拉刷新功能。下面是一个简单的示例代码: 首先,您需要安装Vant组件库。可以通过npm或yarn来安装。 ```bash npm install vant ``` 在Vue文件,您需要引入Vant组件并注册使用它们。在需要使用上拉分页和下拉刷新的页面,您可以使用Vant的`PullRefresh`和`List`组件实现。 ```vue <template> <div> <van-pull-refresh v-model="refreshing" @refresh="onRefresh"> <van-list v-model="loading" :finished="finished" @load="onLoad"> <!-- 这里是列表内容 --> <van-list-item v-for="item in list" :key="item.id">{{ item.text }}</van-list-item> </van-list> </van-pull-refresh> </div> </template> <script> import { ref, reactive } from 'vue'; export default { setup() { // 列表数据 const list = reactive([]); // 是否正在刷新 const refreshing = ref(false); // 是否正在加载更多数据 const loading = ref(false); // 是否已加载完所有数据 const finished = ref(false); // 模拟异步获取数据 const fetchData = () => { return new Promise((resolve) => { setTimeout(() => { resolve([ { id: 1, text: 'item 1' }, { id: 2, text: 'item 2' }, { id: 3, text: 'item 3' }, ]); }, 1000); }); }; // 下拉刷新事件 const onRefresh = () => { refreshing.value = true; // 模拟异步获取最新数据 fetchData().then((data) => { list.splice(0, list.length, ...data); refreshing.value = false; finished.value = false; }); }; // 上拉加载更多事件 const onLoad = () => { loading.value = true; // 模拟异步加载更多数据 fetchData().then((data) => { if (data.length > 0) { list.push(...data); } else { finished.value = true; } loading.value = false; }); }; return { list, refreshing, loading, finished, onRefresh, onLoad, }; }, }; </script> ``` 在上述代码,我们通过`van-pull-refresh`组件实现下拉刷新功能,并通过`van-list`组件实现分页加载功能。当页面触发下拉刷新事件时,我们可以通过异步获取最新数据并更新列表。当页面触发上拉加载更多事件时,我们可以通过异步加载更多数据并追加到列表末尾。 这样,您就可以使用VantVue 3来实现上拉分页和下拉刷新功能了。希望对您有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值