<template>
	<view class="classify-goods">
		<view class="tab-container">
			<view class="salenum" :class="{ 'current' : current == 0 }" @click="switchCurrent(0)">销量</view>
			<view class="price" :class="{ 'current' : current == 1 }" @click="switchCurrent(1)">
				<view class="text">价格</view>
				<view class="icon">
					<u-icon name="arrow-up-fill" :color="(current == 1 && priceOrderAsc) ? '#FF780F' : '#333333'" size="22"></u-icon>
					<u-icon name="arrow-down-fill" :color="(current == 1 && !priceOrderAsc) ? '#FF780F' : '#333333'" size="22"></u-icon>
				</view>
			</view>
			<view class="evaluation" :class="{ 'current' : current == 2 }" @click="switchCurrent(2)">好评</view>
		</view>
		<scroll-view scroll-y class="goods-container" :style="{ height: scrollHeight }" @scrolltolower="loadMore" :scroll-top="scrollTop" @scroll="scroll">
			<view v-for="goods in goodsList" :key="goods.goods_id" class="goods-item" @click="toDetailsPage(goods.goods_id)">
				<image :src="goods.goods_image"></image>
				<view class="right">
					<view class="name u-line-1">{{ goods.goods_name }}</view>
					<view class="briefing u-line-1">{{ goods.goods_advword }}</view>
					<view class="price">￥{{ goods.goods_price }}</view>
				</view>
			</view>
			<u-loadmore :status="loadStatus" bgColor="#FFFFFF" margin-top="20" margin-bottom="20" v-if="goodsList.length >= pageSize"></u-loadmore>
			<u-empty mode="list" v-if="!goodsList.length"></u-empty>
		</scroll-view>
	</view>
</template>
<script>
export default {
	data() {
		return {
			pageSize: 12,
			cid: '',
			page: 1,
			current: 0,
			priceOrderAsc: true,　// 是否升序
			goodsList: [],
			scrollHeight: '',
			loadStatus: 'loadmore',
			timer: true, // 防止上拉加载短时间内多次调用,
			value:"",
			scrollTop: 0,
            old: {
                scrollTop: 0
            }
		}
	},
	watch: {
		current(value) {
			this.page = 1;
			this.ShopSearch({ laod: 'reload' });
		},
		priceOrderAsc(value) {
			this.page = 1;
			this.ShopSearch({ laod: 'reload' });
		}
	},
	onLoad(option) {
		this.value = option.value
		this.setViewHeight();
		this.ShopSearch()
		this.setNavSearchInput(this.value);

	},
	onNavigationBarSearchInputConfirmed(value) {
		this.value = value.text
		this.page = 1
		this.ShopSearch()
	},
	methods: {
		scroll: function(e) {
            this.old.scrollTop = e.detail.scrollTop; // 必要
        },
		setNavSearchInput(keyword) {
			console.log(keyword);
			// #ifdef APP-PLUS
			let webView = this.$mp.page.$getAppWebview();
			webView.setTitleNViewSearchInputText(keyword);
			// #endif
			// #ifdef H5
			let inputSearch=document.querySelector('.uni-input-input[type=search]');
			const evt = new InputEvent('input', {
				inputType: 'insertText',
				data: keyword,
				dataTransfer: null,
				isComposing: false
			});
			if(inputSearch){
				inputSearch.value = keyword;
				inputSearch.dispatchEvent(evt);
			}
			// #endif
		},
		setOrderSort() {
			let sort = '';
			if(this.current == 0) {
				sort = 'goods_salenum';
			} else if (this.current == 1) {
				if(this.priceOrderAsc) sort = 'goods_price_asc';
				else sort = 'goods_price_desc';
			} else if (this.current == 2) {
				sort = 'evaluation_count';
			}
			return sort;
		},
		// 排序方式 goods_salenum：销量　evaluation_count：评价　goods_price_asc：价格从低到高　goods_price_desc：价格从高到低
		async ShopSearch({ load = 'reload' } = {}) {
			console.log(this.value);
			const sort = this.setOrderSort();
			const res = await this.$u.api.ShopSearch({ 
				keyword: this.value, 
				page: this.page,
				order: sort,
			})
			this.timer = true;
			if(res.errCode == 0) {
				if(load == 'reload') this.goodsList = res.data.data;
				else if(load == 'loadmore') this.goodsList.push(...res.data.data);
			}
			return res.data.data.length;
		},
		loadMore() {
			if(this.goodsList.length < this.pageSize) return false;
			if(!this.timer) return false;
			this.loadStatus = "loading";
			this.page++;
			this.ShopSearch({  load: 'loadmore' }).then(length => {
				if(length == 0) {
					this.page--;
					this.loadStatus = 'nomore';
				} else {
					this.loadStatus = 'loading';
				}
			}).catch(() => {
				this.loadStatus = "nomore";
				this.page--;
			})
		},
		switchCurrent(current) {
			this.page = 1
			if(current == 1 && this.current == 1) this.priceOrderAsc = !this.priceOrderAsc;
			this.scrollTop = this.old.scrollTop
            this.$nextTick(function() {
                this.scrollTop = 0
            });
			this.ShopSearch()
			this.current = current;
		},
		setViewHeight() {
			const res = uni.getSystemInfoSync();
			this.scrollHeight = res.windowHeight - res.windowWidth / 750 * 92  + 'px';
		},
		toDetailsPage(id) {
			this.$u.route('/pageB/sdetails/index', {
				id: id
			});
		}
	}
};
</script>
<style lang="scss" scoped>
.classify-goods {
	.tab-container {
		box-sizing: border-box;
		padding: 30rpx 40rpx;
		display: flex;
		// margin-bottom: 30rpx;
		height: 92rpx;
		> view {
			height: 30rpx;
			line-height: 1;
			flex: 1;
			font-size: 32rpx;
			color: rgba(51,51,51,1);
		}
		.salenum {
			text-align: left;
		}
		.price {
			display: flex;
			align-items: center;
			justify-content: center;
			.text {
				margin-right: 5rpx;
			}
			.icon {
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
			}
		}
		.evaluation {
			text-align: right;
		}
		.current {
			color: rgba(255,120,15,1);
		}
	}
	.goods-container {
		.goods-item {
			margin: 0 auto;
			width: 690rpx;
			display: flex;
			background-color: #F5F5F5;
			margin-bottom: 30rpx;
			align-items: center;
			> image {
				width: 220rpx;
				height: 200rpx;
				flex-shrink: 0;
				margin-right: 30rpx;
			}
			.right {
				width: 418rpx;
				height: 200rpx;
				display: flex;
				flex-direction: column;
				justify-content: space-around;
				.name {
					font-size: 30rpx;
					color: rgba(51,51,51,1);
				}
				.briefing {
					font-size: 28rpx;
					color: rgba(102,102,102,1);
				}
				.price {
					font-size: 26rpx;
					color: rgba(255,49,49,1);
				}
			}
		}
	}
}
</style>