| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | <template>	<view class="phone-main" :style="{height: winHeight + 'px'}">		<view class="phone-main-search">			<navigator :url="'phone-search?phones=' + phonesEscape" hover-class="none">				<input disabled="false" class="phone-main-input" type="text" placeholder="请输入要搜索的联系人"/>			</navigator>		</view>		<view class="phoneDirectory">			<phone-list 			:phones="phones" 			:letter="letter"			:scrollAnimationOFF="scrollAnimationOFF" 			@change="handlePhoneListIndex"			@reset="handleReset"			@handleClick="handleClick"			>			</phone-list>			<phone-alphabet 			:phones="phones"			:phoneListIndex="phoneListIndex"			@change="handleDatasetKey" 			@scrollAnimationOFF="handleScrollAnimationOFF"			@reset="handleReset"			>			</phone-alphabet>		</view>	</view></template><script>	import phoneList from './phone-list.vue'	import phoneAlphabet from './phone-alphabet.vue'		export default {		name:"phone-directory",		components:{			phoneList,			phoneAlphabet		},		props:{			phones:Object,			default:false		},		data () {			return {				winHeight:0,				letter : 'A',				scrollAnimationOFF:true,				phoneListIndex:'A',				reset:true			}		},		computed:{			phonesEscape () {				return escape(JSON.stringify(this.phones))			}		},		mounted () {			let windowHeight = uni.getSystemInfoSync().windowHeight						// #ifndef APP-PLUS			this.winHeight = windowHeight			//#endif						//#ifdef APP-PLUS			this.winHeight = windowHeight - 56			//#endif			 			if(!this.phones){				uni.showToast({					title: '没有数据',					icon:"none",					mask: false,					duration: 1500				})			}		},		methods:{			handleClick (e) {				this.$emit('paramClick',e)			},			handleDatasetKey (val) {				this.letter = val			},			handleScrollAnimationOFF (val) {				this.scrollAnimationOFF = val			},			handlePhoneListIndex(val){				if(this.reset){					this.phoneListIndex = val				}			},			handleReset (val){				if(val){					this.letter = ''				}				this.reset = val			}					}	}</script><style>.phone-main{	display: flex;	flex-direction: column;	overflow: hidden;}.phoneDirectory{	display: flex;	flex-direction: row;}.phone-main-search{	background-color: #fff;	padding: 10upx 20upx;	border-bottom: 1px solid #e5e5e5;}.phone-main-input{	font-size:28upx;	border: 1px solid #e5e5e5;	border-radius: 3px;	padding: 10upx 20upx 10upx 20upx;}</style>
 |