uniapp 省、市、区、乡镇 数据层级选择插件 Ba-DataPicker

Ba-DataPicker 是一款uniapp数据层级选择弹窗插件。支持省市区乡四级;支持自定义数据。

  • 支持省、市、区、乡镇四级
  • 支持自定义数据
  • 支持字母检索

截图展示

在这里插入图片描述


支持定制、本地包、源码等,有建议和需要,请点击文章结尾“Uniapp插件开发”联系我(如下图)
在这里插入图片描述
也可关注博客,实时更新最新插件

uniapp 常用原生插件大全


使用方法

script 中引入组件

	const dataPicker = uni.requireNativePlugin('Ba-DataPicker')
默认数据使用

script 中调用

	export default {
		data() {
			return {
				msgList: []
			}
		},
		methods: {
			onShowDataPicker() { //显示数据选择弹窗
				dataPicker.show({},
					(res) => {
						this.showResult(JSON.stringify(res))
						if (res.action) {
							if (res.action == "onChecked") { 
								//监听事件:点击选择
							} else if (res.action == "onClickOk") {
								//监听事件:点击确认
								//res.checkeds中是选中的数据
							} else if (res.action == "onClickCancel") {
								//监听事件:点击取消
							}
						}
					});
			},
			showResult(msg) {
				console.log(msg)
				this.msgList.unshift(msg)
				uni.showToast({
					title: msg,
					icon: "none",
					duration: 3000
				})
			}
		}
	}
自定义数据使用

script 中调用

	export default {
		data() {
			return {
				options: {//数据参数
					isDefaultData:false,//不使用默认数据
					list: [ //多级数据
						[{
							"name": "浙江省"
						}, {
							"name": "浙江省2"
						}], //第一级数据
						[{
							"name": "宁波市"
						}, {
							"name": "宁波市2"
						}], //第二级数据
						[{
							"name": "象山县"
						}, {
							"name": "象山县2"
						}], //第三级数据
						[{
							"name": "石浦镇"
						}, {
							"name": "石浦镇2"
						}] //第四级数据
					],
					checkedList: [0, 0, 0, 0]//各级已选中的下标
				},
				tabIndex: 0,//多层面板显示位置
				msgList: []
			}
		},
		methods: {
			onShowDataPicker() { //显示数据选择弹窗
				dataPicker.show(this.options,
					(res) => {
						this.showResult(JSON.stringify(res))
						if (res.action) {
							if (res.action == "onChecked") { //监听事件:点击选择
							//如下是根据需求调好的处理逻辑,也可根据情况自行更改
								try {
									let tabIndex = res.tabIndex;//操作的层级
									this.options.checkedList[tabIndex] = res.checkedPosition;//某一层级的选中(下标)
									if (tabIndex < this.options.list.length - 1) {//如果不是最后层级,处理下级数据,并自动跳转下一级
										for (var i = tabIndex + 1; i < this.options.list.length; i++) {
											//下级数据默认选择第一个
											this.options.checkedList[i] = 0;
											//模拟下级数据更新,可在这里调用接口(这里模拟的是添加一个)
											//设置i层级新的数据:this.options.list[i]=新的数据
											this.options.list[i].unshift({
												name: "新数据"
											})
										}
									}
									//自动显示下一级
									if (tabIndex < this.options.list.length - 1)
										this.tabIndex = tabIndex + 1
									//调用刷新数据
									this.onUpdateData(this.options)
								} catch (e) {
									this.showResult("error " + e.message)
								}
							} else if (res.action == "onClickOk") { //监听事件:点击确认
								//res.checkeds中是选中的数据
							} else if (res.action == "onClickCancel") { //监听事件:点击取消
						
							}
						}
					});
			},
			onUpdateData(options) {//更新数据
				options.tabIndex = this.tabIndex;
				dataPicker.update(options,
					(res) => {
						//this.showResult(JSON.stringify(res))
					});
			},
			showResult(msg) {
				console.log(msg)
				this.msgList.unshift(msg)
				uni.showToast({
					title: msg,
					icon: "none",
					duration: 3000
				})
			}
		}
	}

方法清单

名称说明
show加载并显示弹窗
update更新数据
省市区乡镇四级联动插件 `element-china-area-data` 是基于 Vue.js 的组件库 Element Plus 提供的一个功能,用于在用户界面中展示并选择中国的行政数据。它可以帮助开发者快速集成一套完整、易于使用的地址输入控件。 ### 安装 首先你需要安装 `element-china-area-data` 插件到你的项目中。可以通过 npm 或者 yarn 进行安装: ```bash npm install element-china-area-data --save # 或者 yarn add element-china-area-data ``` ### 引入与配置 引入 `element-china-area-data` 到你的 Vue 组件,并进行基本配置。通常你会在主组件文件中引入这个插件: ```javascript import { AreaSelect } from 'element-china-area-data'; ``` 然后,在你的 Vue 实例或组件模板中添加 `<el-area-select>` 标签,并通过 `props` 或 `data` 属性配置初始值等信息。 ### 使用示例 假设你想创建一个允许用户选择份、城县直至乡镇的下拉列表,可以这样设置: ```html <template> <div id="app"> <el-area-select v-model="selectedArea" placeholder="请选择"></el-area-select> </div> </template> <script> export default { data() { return { selectedArea: null, }; }, }; </script> ``` 这里,`v-model` 控制了选定的域值,当用户从下拉菜单中选择域时,选定的值会更新到 `selectedArea` 中。 ### 配置选项 你可以自定义 `el-area-select` 组件的行为和样式,例如设置默认展开层级或提供预设的选择项: ```html <el-area-select v-model="selectedArea" placeholder="请选择" @change="handleAreaChange"></el-area-select> ``` 同时在 JavaScript 文件中添加事件处理函数: ```javascript methods: { handleAreaChange(value) { console.log('Selected area:', value); } } ``` 这将监听每次选择变化,并在控制台打印出已选中的域。 ### 动态配置 如果需要动态改变域显示的数据(比如根据其他条件筛选),可以利用插件提供的 API 来获取或设置数据源: ```javascript const areas = await getAreas(); this.$refs.areaSelect.setOptions(areas); ``` ### 扩展功能 为了增强用户体验,你还可以结合 Element Plus 其他组件(如按钮、表单元素等)以及自定义样式来构建复杂的界面。此外,针对国际化需求,你可以在获取数据时考虑加载对应地的语言翻译。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值