| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | <template>	<view>		<view class="search">			<input 			@input="handleInput"			class="search-input" 			type="text" 			focus  			placeholder="请输入要搜索的联系人"			/>		</view>		<view class="search-main" v-if="keyword">			<view class="search-main-errtitle" v-if="hasNoData">无搜索结果</view>			<view class="search-main-title"			hover-class="hover" 			@click="handleClick"			:hover-start-time="20" 			:hover-stay-time="70" 			v-for="item of list" 			:key="item.id"			:data-name="item.name"			:data-id="item.id"			:data-phoneNumber="item.phoneNumber">				{{item.name}}			</view>		</view>	</view>		</template><script>	export default {		name:"phone-search-list",		props:{			phones:Object		},		data() {			return {				keyword:'',				list:[],				timer:null			}		},		computed:{			hasNoData () {				return !this.list.length			}		},		watch:{			keyword () {				if(this.timer) {					clearTimeout(this.timer)				}				if(!this.keyword){					this.list = []					return				}				this.timer = setTimeout(()=>{					const result = []					for (let i in this.phones){						this.phones[i].forEach((item)=>{							if(item.spell.indexOf(this.keyword) > -1||item.name.indexOf(this.keyword) > -1){								result.push(item)							}						})					}					this.list = result				},100)			}		},		methods:{			handleInput (e) {				this.keyword = e.detail.value			},			handleClick (e) {				this.$emit('paramClick',e.target.dataset)			}		}	}</script><style>	.hover{		background-color: #eee;	}	.search{		background-color: #fff;		padding: 10upx 20upx;		border-bottom: 1px solid #e5e5e5;	}	.search-input{		font-size:28upx;		border: 1px solid #e5e5e5;		border-radius: 3px;		padding: 10upx 20upx 10upx 20upx;	}		.search-main{		height: 100%;		padding-bottom: 20upx;		background-color:#fff;		overflow: hidden;	}		.search-main-errtitle,.search-main-title{		width: 100%;		height: 92upx;		line-height: 92upx;		font-size: 32upx;		padding: 0 20upx;		border-bottom: 1px solid #e5e5e5;	}</style>
 |