<template>
	<view>
		<z-nav-bar backState="2000" title="购物车"></z-nav-bar>
		<view class="shopCarContent">
			<scroll-view scroll-y="true">
				<view class="cartItem" v-for="(item,index) in cartList" :key="index">
					<view class="select">
						<checkbox style="transform:scale(0.8)" :checked="item.checked" @click="checkboxGroupChange(index,item)"
							class="round checkedItem" />
					</view>
					<view class="cartContent" style="position: relative;">
						<span v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
									style="position: absolute;z-index: 10;top: 4px;left: 0px;margin-right: 10px;text-align: center;font-size: 18rpx;background-color: #f94f04;color: #fff;font-weight: bold;border-radius:4px;width: 80rpx; padding:2px 4px;box-sizing: border-box;">VIP优惠</span>
								
						<image :src="item.image" mode="" @click="goDetail(item.productId)"></image>
						<view class="itemCenter">
							<view class="cartTitle" @click="goDetail(item.productId)" style="display: flex;align-items: center;">
								<text>{{item.productName}}</text>
							</view>
							<view class="itemPrice">
								<text v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null">
									<text style="color: #e97512;font-size: 16px;font-weight: bold;">￥{{(item.vipPrice).toFixed(2)}}</text>
									<!-- <text style="color: #fa2d12;font-size: 10px;margin-left: 4px;">VIP到手价</text> -->
									<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">￥{{(item.price).toFixed(2)}}</text>
									
									
								
								</text>

							<text
								v-else-if="item.activityPrice && item.activityPrice > 0">
								<text style="color: #e97512;font-size: 16px;font-weight: bold;">￥{{(item.activityPrice).toFixed(2)}}</text>
								<!-- <text style="color: #613804;font-size: 10px;margin-left: 4px;">活动价</text> -->
									<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">￥{{(item.price).toFixed(2)}}</text>
									
								
							
							</text>

							<text v-else style="color: #e97512;font-size: 16px;font-weight: bold;">￥{{item.price}}</text>
							
								<u-number-box button-size="20" v-model="item.productAmount" @change="valChange($event,item)"
									:input-width="25" :input-height="10" :min="1" :max="item.productStock" integer
									@overlimit='overlimit'></u-number-box>
							</view>
						</view>
					</view>
				</view>
			</scroll-view>
		</view>

		<!-- 底部操作区 -->
		<view class="shopCarFooter">
			<view class="selectAll">
				<checkbox :checked="all" style="transform:scale(0.8)" @click="isSelectAll()" class="round checkedItem" />
				<text class="cartCho">全选</text>
				<!-- <text class="cartDel"  >删除</text> -->
				<button class="mini-btn"
					style="border-radius: 40rpx; font-size: 30rpx; height: 56rpx;  line-height: 56rpx; margin-left: 6rpx;"
					v-if="isCartDelShow" @click="delCart()" type="warn" size="mini">删除</button>
			</view>
			<view class="exhibition">
				<view class="total">合计: <b>￥{{totalPrice}}</b>
			
				<!-- <text style="display: inline-block;width: 80%;color: #8a8a8a;font-size: 10px;">
					不包含运费
				</text> -->
			</view>
				<view class="settlement" @click="setTment()">
					结算
				</view>
			</view>
		</view>

		<!-- 公共组件-每个页面必须引入 -->
		<public-module></public-module>

		<z-navigation></z-navigation>
		<music-play :playData="playData"></music-play>
	</view>
</template>

<script>
	import musicPlay from '@/components/music.vue'
	import $http from '@/config/requestConfig.js';
	import {
		mapState
	} from 'vuex';
	export default {
		data() {
			return {
				playData: {},
				totalPrice: 0, // 总价
				all: false, // 是否全选
				isCartDelShow: false, // 是否展示删除按钮
				cartList: [] // 购物车列表
			};
		},
		//第一次加载
		onLoad(e) {
			// 隐藏原生的tabbar
			uni.hideTabBar();
			this.getCartList()
		},
		//页面显示
		onShow() {
			// 隐藏原生的tabbar
			uni.hideTabBar();
			this.getCartList();
			this.all = false;
			this.isCartDelShow = false
			this.totalPrice = 0
		},
		computed: {
			...mapState(['userInfo']),
		},
		components: {
			musicPlay
		},
		//方法
		methods: {
			// 获取购物车列表
			getCartList() {
				this.$http.post(`book/ordercart/getCartList?userId=${this.userInfo.id}`).then(res => {
					this.cartList = res.cartList
					if (res.cartList.length > 0) {
						res.cartList.forEach((item, index) => {
							item.checked = false
						})
						this.cartList = res.cartList
					}
				})
			},
			// 是否全选
			isSelectAll(e) {
				if (this.cartList.length > 0) {
					this.all = !this.all
					this.cartList.forEach((item, index) => {
						item.checked = this.all
					})
					this.isCartDelShow = this.all
					this.total()
				} else {
					this.all = false
				}
			},
			// 选中单独商品
			checkboxGroupChange(index, item) {
				// 修改当前item的checked
				this.cartList[index].checked = !item.checked
				// 判断是否全选
				this.all = this.cartList.every((item, index) => {
					return item.checked == true
				})
				// 判断是否展示删除按钮
				this.isCartDelShow = this.cartList.some((item, index) => {
					return item.checked == true
				})
				// 计算总价
				this.total()
			},
			// 计算总价
			total() {
				let allprice = 0;
				this.cartList.forEach((item, index) => {
					let price = 0;
					if (item.checked) {
						if (item.isVipPrice == 1 && item.vipPrice != 0 && item.vipPrice != null) {
						price = (item.productAmount * item.vipPrice).toFixed(2);
					} else {
						if (item.activityPrice && item.activityPrice > 0) {
							price = (item.productAmount * item.activityPrice).toFixed(2);
						} else {
							price = (item.productAmount * item.price).toFixed(2);
						}
					}
					}
					allprice += Number(price)
				})
				this.totalPrice = allprice.toFixed(2)
			},
			// 超出阈值时
			overlimit() {
				uni.showToast({
					title: '超出商品数量',
					icon: 'error',
					duration: 1000
				})
			},
			valChange(e, item) {
				console.log(e)
				let productItem = {}
				productItem = item
				productItem.productAmount = e.value
				this.updateCart(productItem)
				setTimeout(() => {
					this.total()
				}, 300)
			},
			// 更新购物车
			updateCart(shagnpin) {
				// 已在购物车中添加
				$http.request({
					url: "book/ordercart/update",
					method: "POST", // POST、GET、PUT、DELETE，具体说明查看官方文档
					data: shagnpin,
					header: { //默认 无 说明：请求头
						'Content-Type': 'application/json'
					}
				}).then(res => {
					if (res.code == 0) {
						// uni.showToast({
						// 	title: '加入购物车成功',
						// 	duration: 1000,
						// });
					}
				})
			},
			// 删除购物车
			delCart() {
				let cartIdArr = [];
				this.cartList.forEach((item, index) => {
					if (item.checked) {
						cartIdArr.push(item.cartId)
					}
				})
				uni.showModal({
					title: '提示',
					content: '是否删除这个商品',
					confirmText: '确定',
					success: (res) => {
						if (res.confirm) {
							uni.showLoading({
								title: '加载中',
								mask: true
							})
							console.log(cartIdArr)
							$http.request({
								url: "book/ordercart/delete",
								method: "POST", // POST、GET、PUT、DELETE，具体说明查看官方文档
								data: cartIdArr,
								header: { //默认 无 说明：请求头
									'Content-Type': 'application/json'
								},
							}).then(res => {
								this.isCartDelShow = false
								this.totalPrice = 0
								this.getCartList()
								uni.hideLoading()
							})
						} else {
							console.log('cancel') //点击取消之后执行的代码
						}
					}
				})
			},

			// 跳转结算页面
			setTment() {
				let shangList = []
				this.cartList.forEach((item, index) => {
					if (item.checked) {
						shangList.push({productId:item.productId,num:item.productAmount})
					}
				})
				// 如果没有勾选
				if (shangList.length == 0) {
					uni.showToast({
						title: "请先勾选商品",
						icon: 'error',
						duration: 1000,
					})
				} else {
					uni.navigateTo({
						url: '../bookShop/settlement?type=1&list=' + JSON.stringify(shangList)
					});
				}
			},


			// 商品内容跳转
			goDetail(id) {
				uni.navigateTo({
					url: '../bookShop/commodityDetail?id=' + id
				});
			},
		},

	};
</script>
<style lang="scss" scoped>
	@import '@/style/mixin.scss';

	.shopCarContent {
		width: 100%;
		height: 100%;
		padding-bottom: 104rpx;
		padding-top: 20rpx;

		.cartItem {
			padding: 10rpx 10rpx 10rpx 10rpx;
			margin-bottom: 20rpx;
			display: flex;
			align-items: center;
			background-color: #fff;

			.cartContent {

				flex: 1;
				display: flex;

				image {
					width: 130rpx;
					height: 150rpx;
					border-radius: 10rpx;
					padding: 10rpx;
					margin-right: 15rpx;
				}

				.itemCenter {
					flex: 1;
					flex-direction: column;
					justify-content: space-around;
				}

				.cartTitle {
					font-size: 30rpx;
					margin: 35rpx 0 20rpx 0;
				}

				.itemPrice {
					font-size: 28rpx;
					display: flex;
					justify-content: space-between;
				}
			}
		}
	}

	.shopCarFooter {
		width: 100%;
		height: 100rpx;
		padding: 20rpx;
		background-color: #fff;
		display: flex;
		align-items: center;
		justify-content: space-between;
		position: fixed;
		bottom: 110rpx;

		.selectAll {

			display: flex;


			.cartCho {
				margin-top: 12rpx;
				font-size: 25rpx;
				color: #888;
			}

			.cartDel {
				font-weight: bold;
				color: #bf0c0c;
				font-size: 14px;
				margin: 12rpx 0 0 20rpx;
			}
		}

		.exhibition {
			display: flex;
			align-items: center;

			.total {
				font-size: 15px;
				padding: 0 40rpx 0 0;
				color: #888;

				b {
					margin-left: 10rpx;
					color: #e97512;
					font-size: 35rpx;
				}
			}

			.settlement {
				font-size: 15px;
				font-weight: 700;
				padding: 10rpx 50rpx;
				background-image: linear-gradient(90deg, #eba00b 0%, #c96713 100%);
				color: #fff;
				border-radius: 40rpx;
			}
		}
	}
</style>