<template>
	<view class="container">
		<view class="reply_btn flex_item">
			<view class="btn" v-for="(item, index) in navList" :key="index" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">
				{{ item.text }}({{ item.number }})
			</view>
		</view>
		<swiper :current="tabCurrentIndex" class="swiper-box" :style="{ height: maxheight + 'px' }" duration="300" @change="changeTab">
			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
				<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadDate">
					<!-- 评论列表 -->
					<view v-for="(item, index) in tabItem.orderList" :key="index" class="eva-box">
						<view class="row-1 flex1">
							<image class="portrait" :src="item.avatar" mode="aspectFill"></image>
							<view class="right flex1">
								<view>
									<view class="name flex1">
										<view>{{ item.nickname }}</view>
										<!-- <image src="../../static/label/vip.png"></image> -->
									</view>
									<uniRate class="rate" disabled size="10" margin="1" :value="item.product_score" ></uniRate>
								</view>
								<view class="bot">
									<text class="attr"></text>
									<text class="time">{{ item.add_time }}</text>
								</view>
							</view>
						</view>
						<view class="con">{{ item.comment }}</view>
						<view class="con_box">
							<view class="con_image" v-for="ls in item.pics"><image :src="ls"></image></view>
						</view>
					</view>
					<uni-load-more :status="tabItem.loadingType"></uni-load-more>
				</scroll-view>
			</swiper-item>
		</swiper>
	</view>
</template>

<script>
import { reply_config, reply_list } from '@/api/product.js';
import uniRate from '@/components/uni-rate/uni-rate.vue';
export default {
	components: {
		uniRate
	},
	watch: {},
	data() {
		return {
			maxheight: '',
			id: '', //商品id
			list: '', //评论列表
			reply: '', //评论配置
			tabCurrentIndex: 0,
			navList: [
				{
					state: 0,
					text: '全部',
					loadingType: 'more',
					number: '',
					orderList: [],
					page: 1, //当前页数
					limit: 5 //每次信息条数
				},
				{
					state: 1,
					text: '好评',
					loadingType: 'more',
					number: '',
					orderList: [],
					page: 1, //当前页数
					limit: 5 //每次信息条数
				},
				{
					state: 3,
					text: '差评',
					loadingType: 'more',
					number: '',
					orderList: [],
					page: 1, //当前页数
					limit:5 //每次信息条数
				},
				{
					state: 2,
					text: '中评',
					loadingType: 'more',
					number: '',
					orderList: [],
					page: 1, //当前页数
					limit: 5 //每次信息条数
				}
			]
		};
	},
	computed: {},
	onReady() {
		// 初始化获取页面宽度
		uni.createSelectorQuery()
			.select('.container')
			.fields(
				{
					size: true
				},
				data => {
					// 保存头部高度
					this.maxheight = data.height - Math.floor((data.width / 750) * 145);
				}
			)
			.exec();
	},
	onLoad(option) {
		this.id = option.id;
	},
	onShow() {
		let obj = this;
		reply_config({}, this.id).then(function({ data }) {
			obj.reply = data;
			obj.navList[0].number = obj.reply.sum_count;
			obj.navList[1].number = obj.reply.good_count;
			obj.navList[2].number = obj.reply.poor_count;
			obj.navList[3].number = obj.reply.in_count;
		});
		this.loadDate();
	},
	methods: {
		async loadDate(source) {
			//这里是将订单挂载到tab列表下
			let index = this.tabCurrentIndex;
			let navItem = this.navList[index];
			let state = navItem.state;
			if (source === 'tabChange' && navItem.loaded === true) {
				//tab切换只有第一次需要加载数据
				return;
			}
			if (navItem.loadingType === 'loading') {
				//防止重复加载
				return;
			}
			if (navItem.loadingType === 'noMore') {
				//防止重复加载
				return;
			}
			// 修改当前对象状态为加载中
			navItem.loadingType = 'loading';
			reply_list(
				{
					type: state,
					page: navItem.page,
					limit: navItem.limit
				},
				this.id
			)
				.then(({ data }) => {
					let arr = data;
					navItem.orderList = navItem.orderList.concat(arr);
					console.log(navItem.orderList,111)
					navItem.page++;
					if (navItem.limit == data.length) {
						//判断是否还有数据, 有改为 more, 没有改为noMore
						navItem.loadingType = 'more';
						return;
					} else {
						//判断是否还有数据, 有改为 more, 没有改为noMore
						navItem.loadingType = 'noMore';
					}
					this.$set(navItem, 'loaded', true);
				})
				.catch(e => {
					console.log(e);
				});
		},
		// async GetList(){
		// 	let obj = this;
		// 	reply_list({}, obj.id).then(function({ data }) {
		// 		// console.log(data)
		// 		obj.list = data;
		// 	});
		// },
		//跳转接口
		navTo(url) {
			uni.navigateTo({
				url
			});
		},
		//swiper 切换
		changeTab(e) {
			this.tabCurrentIndex = e.target.current;
			this.loadDate('tabChange');
		},
		//顶部tab点击
		tabClick(index) {
			this.tabCurrentIndex = index;
		}
	}
};
</script>

<style lang="scss">
page {
	background: #ffffff;
	height: 100%;
	.container {
		height: 100%;
		padding: 25rpx 25rpx;
		padding-top: 120rpx;
		.swiper-box {
			// height: 100%;
			.list-scroll-content {
				height: 100%;
			}
		}
	}
}
.reply_btn {
	padding: 15rpx 0rpx;
	.btn {
		padding: 10rpx 25rpx;
		font-size: 24rpx;
		background: #f4f4f4;
		margin-right: 25rpx;
	}
	.current {
		background-color: #e93323 !important;
		color: #ffffff !important;
	}
}
.eva-box {
	padding: 20rpx 0;
	// height: 100%;
	.row-1{
		.portrait {
			flex-shrink: 0;
			width: 80rpx;
			height: 80rpx;
			border-radius: 100px;
		}
		.right {
			flex: 1;
			font-size: $font-base;
			color: $font-color-base;
			padding-left: 26rpx;
			.name{
				margin-bottom: 20rpx;
				image{
					width: 35rpx;
					height: 25rpx;
				}
			}
			.bot {
				display: flex;
				justify-content: space-between;
				font-size: $font-sm;
				color: $font-color-light;
			}
		}
	}
	.con {
		font-size:24rpx;
		font-weight:500;
		color:rgba(84,84,86,1);
		padding: 20rpx 0 35rpx 0;
		letter-spacing: 3rpx;
	}
	.con_image {
		width: 150rpx;
		height: 150rpx;
		display: inline-block;
		margin-right: 20rpx;
		image {
			width: 100%;
			height: 100%;
		}
	}
}


</style>