【uniapp前端组件】仿微信通讯录列表组件

仿微信通讯录列表组件

示例图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前言

仿微信通讯录列表组件,可实现通讯列表以及选择多个联系人功能。

组件介绍

本组件有三个自定义组件构成,都已经集成在bugking7-contact-list中,该组件具有两种模式,不带选择框和带选择框,分别对应前言的两种功能。另外两个组件分别为:

1、字母列表组件(bugking7-letter-list

通讯录列表右侧字母列表组件,同样本组件也具有两种展现形式,

1.1 全字母形式

全字母模式下固定显示为A-Z以及⬆和#。

1.2 数据决定展现字母形式

显示那些字母由数据决定,需注意,当通讯录组件为带选择框模式下,字母列表组件固定为本形式

2、选择框组件(bugking7-contact-circle

当通讯录组件为带选择框模式时,本组件生效,具有选择和非选择两种状态。

属性介绍

属性名类型默认值必填说明
contactListArray通讯录列表数据,详见下方数组类型示例。注:1、当为string类型时,showAvatar应填为false。2、当为Obj类型时,但Obj对象没有图片属性时,showAvatar应填为false
formatContactlistByValueString1、contactList类型为String数组时,本属性只能为空。2、contactList类型为Obj数组时,本属性为name(见下方数组类型示例)。即:contactList数组类型为对象时,本属性需要填列表展示的数据对应的字段名
showAllLetterBooleantrue字母列表组件是否显示全字母形式。showSelectBtntrue时,本属性失效。
showSelectBtnBooleanfalse切换通讯录组件为带选择框模式。true时,showAllLetter属性失效。
letterPropWidthNumber25,单位px字母列表组件长度。
contactItemHeightNumber40,单位px通讯录列表组件item宽度。
showAvatarBooleantrue通讯录列表是否显示头像。必要条件:1、contactList为对象类型且对象包含图片属性。2、avatarValue不为空,可参考formatContactlistByValue属性。
avatarValueString通讯录列表头像对应的属性值。showAvatar为true时必填,反之为空。
headOptionsObject通讯录是否添加头部列表,包含以下属性:
showHeadBooleanfalseheadOptions是否显示通讯录头部列表。showSelectBtntrue时,本属性为false
headListArrayheadOptions头部列表数组。固定格式为[{img:'https://xxxx.png',title:'新朋友'},{img:'https://xxxx.png',title:'仅聊天的朋友'}]
headItemHeightNumber50,单位pxheadOptions头部列表item高度。
headAvatarValueStringheadOptions头部列表数组头像对应属性名。参考formatContactlistByValue属性
headTitleValueStringheadOptions头部列表数组标题对应属性名。参考formatContactlistByValue属性
注:以下属性,只有当showSelectBtntrue时生效。**
showCheckBooleanfalse选择框选中状态。****
borderWidthNumber1,单位px选择框未选中状态下边框宽度。****
borderColorString#d2c5c0选择框未选中状态下边框颜色。****
borderStyleStringsolid选择框未选中状态下选择框样式。支持solid实线、dashed虚线。****
checkBgColorString#007aff选择框选中状态下背景色。****
iconWidthNumber15,单位px选择框长宽大小。****
checkIconWidthNumber15,单位px选择框选中状态下对号图标大小。****
selectFinishBtnCheckBgColorString#007aff通讯录组件为带选择框模式下,完成按钮为可点击模式下,完成按钮的背景色。****

事件介绍

事件名说明
@selectContactFinish选择多个联系人事件回调。返回值event:{selectList:array}showSelectBtntrue时生效。
@contactItemClick通讯录列表点击事件。返回值event:{superIndex: 1, index: 0, superLetter: 'B', contactData: '保山机场'}superIndex为格式化后数据的父级下标 、index为点击的item下标、 superLetter为点击的字母、contactData为点击的item内容,具体形式根据contactList而变。showSelectBtntrue时,本事件失效。
@headItemClick头部列表点击事件。返回值event:{headItemIndex:index},headItemIndex对应头部列表item下标。

使用示例

<bugking7-contact-list 
		:contactList="listObj" 
		:formatContactlistByValue="test"
		:avatarValue="avatarValue"
		:contactItemHeight="50"
		:showAllLetter="true"
		:showSelectBtn="true"
		:showAvatar="true"
		:headOptions="headOptions"
		@selectContactFinish="handleSelectFinish"
		@contactItemClick="handleContactClick"
		@headItemClick="handleHeadClick"
		></bugking7-contact-list>
		
data() {
	return {
		list:airport.list,
				listObj:airportobj.list,
				test:'name',
				avatarValue:'img',
				headOptions:{
					showHead:true,
					headList:[
							{img:'https://img1.baidu.com/it/u=317200242,1525371697&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400',title:'新的朋友'},
						{img:'https://img1.baidu.com/it/u=317200242,1525371697&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400',title:'仅聊天的朋友'}
					],
					headItemHeight:50,
					headAvatarValue:'img',
					headTitleValue:'title'
				}
	}
},
methods: {
	handleCircleClick(e){
				
	},
	handleContactClick(e){
		console.log(e)
	},
	handleSelectFinish(e){
		console.log(e)
	},
    handleHeadClick(e){
		console.log(e)
	}
			
}
		
		

数组(contactList)类型示例

1、Stirng类型数组

export default {
	'list': [
		'123333',
		'$dsadasdas',
		'三亚凤凰国际机场',
		'汕头外砂机场',
		'阿克苏机场',
		'济宁曲阜机场',
		'喀什机场',
		'克拉玛依机场',
		'库车龟兹机场',
		'库尔勒机场',
		'昆明巫家坝国际机场',
		'UFO机场',
		'V机场',
		'万州五桥机场',
		'潍坊机场',
		'西安咸阳国际机场',
		'西昌青山机场',
		'锡林浩特机场',
		'延安二十里堡机场',
		'盐城机场',
		'湛江机场',
		'昭通机场',
		
	]
}

2、Obj类型数组

export default {
	'list': [
		{
			name:'123333',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'上海虹桥国际机场',
			age:'123',
			img:'https://img2.baidu.com/it/u=319390679,1961129989&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'
		},
		{
			name:'临沂机场',
			age:'123',
			img:'https://img0.baidu.com/it/u=3314467930,2227940019&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=440'
		},
		{
			name:'铜仁凤凰机场',
			age:'123',
			img:'https://img2.baidu.com/it/u=1010282593,3475916619&fm=253&fmt=auto&app=138&f=JPEG?w=640&h=478'
		},
		{
			name:'龙岩冠豸山机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=317200242,1525371697&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'
		},
		{
			name:'玉树巴塘机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'西安咸阳国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=317200242,1525371697&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'
		},
		{
			name:'上海虹桥国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'UFO机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'二连浩特赛乌苏国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'贵阳龙洞堡国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=317200242,1525371697&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400'
		},
		{
			name:'景德镇机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'@#¥@@!',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'上海虹桥国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'临沂机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'铜仁凤凰机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'龙岩冠豸山机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'玉树巴塘机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'西安咸阳国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'上海虹桥国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'UFO机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'二连浩特赛乌苏国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'贵阳龙洞堡国际机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		},
		{
			name:'景德镇机场',
			age:'123',
			img:'https://img1.baidu.com/it/u=1573021393,3002820466&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
		}
	]
}

其他

欢迎使用,评论留言。

项目地址

仿微信通讯录列表组件

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小二者也

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值