<template>
	<view>
		<lf-nav title="搜索" :showIcon="true"></lf-nav>
		<view class="head">
			<u-search placeholder="请输入商品名或商户名" 
				:focus="is_focus" 
				v-model="value" 
				@search="search"
				@custom="customClick">
			</u-search>
		</view>
		<view class="content">
			<!-- 大家都在搜 -->
			<block v-if="hot_list.length">
				<view>
					<text class="title">大家都在搜</text>
				</view>
				<view class="list">
					<view class="item" 
						@click="activeKeyWord(item)"
						v-for="(item, index) in hot_list" 
						:key="index">{{ item }}
					</view>
				</view>
			</block>
			<!-- 我搜过的 -->
			<block v-if="history_list.length">
				<view class="lf-row-between">
					<text class="title">我搜过的</text>
					<text class="lf-iconfont icon-shanchu lf-color-777" @click="remove"></text>
				</view>
				<view class="list">
					<view class="item item-2"
						@click="activeKeyWord(item)"
						v-for="(item, index) in history_list" 
						:key="index">{{ item }}
					</view>
				</view>
			</block>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				value: '', // 搜索的值
				is_focus: true, // 是否自动获得焦点
				hot_list: [], // 热门搜索
				history_list: [], // 历史搜索
				max_history_count: 12 // 最多存多少个历史搜索值
			}
		},
		onLoad(){
			this.getHistorySearch();
			this.getHotSearch();
		},
		onHide(){
			this.setHistorySearch();
		},
		methods: {
			// 获取搜索历史
			getHistorySearch(){
				let history_search = this.$cookieStorage.get('history_search') || [];
				this.history_list = JSON.parse(JSON.stringify(history_search));
			},
			// 设置搜索历史
			setHistorySearch(){
				if(this.history_list.length){
					this.$cookieStorage.set('history_search', this.history_list);
				}else{
					this.$cookieStorage.clear('history_search');
				}
			},
			// TODO 获取热门搜索 待对接请求接口
			getHotSearch(){
				// this.$http.get({
				// 	api: ''
				// }).then(res => {
				// 	console.log("hot", res);
				// })
				let list = ['秋上新','纪梵希','雅诗兰黛','中秋','苹果爱普','基督教烧烤'];
				this.hot_list = list;
			},
			// 激活关键词搜索
			activeKeyWord(value){
				this.value = value;
				this.customClick(value);
			},
			// 用户按下搜索按钮，或回车键
			search(value){
				this.customClick(value);
			},
			// 点击了搜索按钮
			customClick(value){
				if(!value || !value.trim()) return this.$msg('搜索内容不能为空');
				this.updateHistory(value).then(() => {
					this.$url('/pages/shop/searchList?value='+ value);
				})
			},
			// 更新搜索历史列表
			updateHistory(value){
				return new Promise((resolve, reject) => {
					let history_list = [...this.history_list];
					if(history_list.includes(value)){
						history_list.map((item, index) => {
							if(item == value){
								this.history_list.splice(index, 1); // 删除掉已经存在的key值
							}
						})
						this.history_list.unshift(value); // 向头部追加新的key值
						if(this.history_list.length > this.max_history_count){
							this.history_list.pop(); // 如果历史记录超出预设最大范围，将最尾key值移除
						}
					}else{
						this.history_list.unshift(value);
						if(this.history_list.length > this.max_history_count){
							this.history_list.pop();
						}
					}
					resolve(value); // 操作完成，回调成功
				})
			},
			// 清空搜索记录
			remove(){
				uni.showModal({
					title: '温馨提示',
					content: '确定清空搜索历史吗？',
					confirmColor: '#15716E',
					success: result => {
						if(result.confirm){
							this.history_list = [];
						}
					}
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
	.head{
		padding: 30rpx 32rpx;
	}
	.content{
		padding: 20rpx 32rpx;
		.title{
			font-size: 28rpx;
			color: #999999;
		}
		.list{
			display: flex;
			flex-wrap: wrap;
			padding: 20rpx 0 40rpx;
			.item{
				padding: 4rpx 20rpx;
				background-color: #15716E;
				color: #FFFFFF;
				border-radius: 34rpx;
				font-size: 28rpx;
				margin-right: 20rpx;
				margin-bottom: 20rpx;
			}
			.item-2{
				background-color: #F4F8F8;
				color: #333333;
			}
		}
	}
</style>
