| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | 
							- <template>
 
- <view>
 
- 	<cu-custom bgColor="bg-blue">
 
- 		<block slot="content">通讯录</block>
 
- 	</cu-custom>
 
- 	<u-sticky>
 
- 		<view  style="padding: 20upx; background-color: white;">
 
- 			<u-search placeholder="输入搜索的关键词" :clearabled="true" :showAction="false" v-model="searchUserName"></u-search>
 
- 		</view>
 
- 	</u-sticky>
 
- 	
 
- 	<view>
 
- 		<u-index-list :indexList="indexList">
 
- 			<template v-for="(item, index) in list">
 
- 				<!-- #ifdef APP-NVUE -->
 
- 				<u-index-anchor :text="list[index].letter" :key="index"></u-index-anchor>
 
- 				<!-- #endif -->
 
- 				<u-index-item :key="index">
 
- 					<!-- #ifndef APP-NVUE -->
 
- 					<u-index-anchor :text="list[index].letter"></u-index-anchor>
 
- 					<!-- #endif -->
 
- 					<view class="list" v-for="(user, index1) in list[index].data" :key="index1">
 
- 						<view class="list__item">
 
- 							<u-avatar shape="square" size="35" icon="account-fill" fontSize="26" randomBgColor></u-avatar>
 
- 							<!-- <view class="cu-avatar round " :style="'background-image:url('+(user.photo?user.photo:'/h5/static/user/flat-avatar.png')+');'"></view> -->
 
- 							<text class="list__item__user-name">{{user.name}}</text>
 
- 						</view>
 
- 						<u-line></u-line>
 
- 					</view>
 
- 				</u-index-item>
 
- 			</template>
 
- 			<view style="font-size: 15px; color: gray; text-align: center; margin-top: 15px;">共{{total}}位好友</view>
 
- 		</u-index-list>
 
- 		<u-gap height="100" bgColor="#fff"></u-gap>
 
- 	</view>
 
- </view>	
 
- </template>
 
- <script>
 
- 	import userService from '@/api/sys/userService'
 
- 	export default {
 
- 		data() {
 
- 			return {
 
- 				indexList: [],
 
- 				userList: [],
 
- 				total: 0,
 
- 				searchUserName: ''
 
- 			}
 
- 		},
 
- 		created() {
 
- 			userService.list({current: 1, size: 10000}).then((data)=>{
 
- 				this.userList = data.records
 
- 				this.total = data.total
 
- 			}).catch((e)=>{
 
- 				throw e
 
- 			})
 
- 		},
 
- 		computed: {
 
- 			list () {
 
- 				let resultList = this.userList.filter((item)=>{
 
- 					if(item.name.indexOf(this.searchUserName) >= 0){
 
- 						return true
 
- 					}
 
- 				})
 
- 				return this.pySegSort(resultList)
 
- 			}
 
- 		},
 
- 		methods: {
 
- 			// 排序
 
- 			pySegSort(arr) {
 
- 			    if(!String.prototype.localeCompare)
 
- 			        return null;
 
- 			     
 
- 			    var letters = "0abcdefghjklmnopqrstwxyz".split('');
 
- 			    var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');
 
- 			     
 
- 			    var segs = [];
 
- 			    var curr;
 
- 			    letters.forEach((item,i) => {
 
- 			        curr = {letter: item, data:[]};
 
- 			        arr.forEach((item2) => {
 
- 			            if((!zh[i-1] || zh[i-1].localeCompare(item2.name) <= 0) && item2.name.localeCompare(zh[i]) == -1) {
 
- 			                curr.data.push(item2);
 
- 			            }
 
- 			        });
 
- 			        if(curr.data.length) {
 
- 			            segs.push(curr);
 
- 						this.indexList.push(curr.letter)
 
- 			            curr.data.sort((a,b)=>{
 
- 			                return a.name.localeCompare(b.name);
 
- 			            });
 
- 			        }
 
- 			    });
 
- 			    return segs;
 
- 			}
 
- 		}
 
- 	}
 
- </script>
 
- <style lang="scss">
 
- 	.list {
 
- 		
 
- 		&__item {
 
- 			@include flex;
 
- 			padding: 6px 12px;
 
- 			align-items: center;
 
- 			
 
- 			&__avatar {
 
- 				height: 35px;
 
- 				width: 35px;
 
- 				border-radius: 3px;
 
- 			}
 
- 			
 
- 			&__user-name {
 
- 				font-size: 16px;
 
- 				margin-left: 10px;
 
- 				color: $u-main-color;
 
- 			}
 
- 		}
 
- 		
 
- 		&__footer {
 
- 			color: $u-tips-color;
 
- 			font-size: 14px;
 
- 			text-align: center;
 
- 			margin: 15px 0;
 
- 		}
 
- 	}
 
- </style>
 
 
  |