<template>
	<view>
		<view v-if="orderList.length > 0">
			<view class='cancellate'>
				<view>
					<view class="order acea-row row-between">
						<view class="order_sn">订单号：{{orderData.order_sn}}</view>
						<view class="btn" @click="goBack">上一步</view>
					</view>	
					<view class='list'>
						<view class="acea-row row-between header">
							<view class="info">
								<view class="name">共{{orderData.total_num}}件</view>
							</view>
							<!-- <navigator url="" hover-class='none' class="coupon-btn">查看	<text class="iconfont icon-xiangyou"></text></navigator> -->
						</view>
						<view class='item acea-row row-between-wrapper'>
							<view v-for="goods in orderList" :key="goods.cart_id" class='picTxt acea-row'>
								<view v-if="goods.refund_num > 0 && orderData.status == 0" class="checkbox"  @click.stop="goodsCheck(goods)">
									<text v-if="goods.check" class="iconfont icon-xuanzhong1"></text>
									<text v-else class="iconfont icon-weixuanzhong"></text>
								</view>
								<view v-else class="checkbox">
									<text class="iconfont icon-weixuanzhong disabled"></text>
								</view>
								
								<view class='pictrue'>
									<image :src='goods.cart_info.product.image'></image>
								</view>
								<view class='text'>
									<view class='line1 name'>{{goods.cart_info.product.store_name}}</view>
									<view class='money acea-row row-middle'>
										<text>HK${{goods.cart_info.productAttr.price}}</text>
									</view>
									<view class="callate_bom acea-row row-between">
										<view class="callate_text refund_text">x{{goods.product_num}}</view>
										<view class='carnum acea-row row-center-wrapper'>
											<view class="reduce" :class="(goods.numSub || goods.refund_num == 1) ? 'on' : ''" @click.stop='subCart(goods)'>-</view>
											<view class='num'>{{goods.refund_num}}</view>
											<view class="plus" :class="(goods.max_count == goods.refund_num || goods.numAdd) ? 'on' : ''" @click.stop='addCart(goods)'>+</view>
										</view>
									</view>	
								</view>
							</view>
						</view>
					</view>
				</view>
			</view>
			<view class='footer acea-row row-between-wrapper' v-if="orderList.length > 0">
				<view>
					<view class="allcheckbox" @click.stop="checkboxAllChange">
						<text v-if="!isAllSelect" class="iconfont icon-weixuanzhong"></text>
						<text v-else class="iconfont icon-xuanzhong1"></text>
						全选
					</view>
				</view>
				<view class='money acea-row row-middle'>
					<form @submit="goCallate" report-submit='true'>
						<button class='placeOrder' formType="submit">立即核销</button>
					</form>
				</view>	
			</view>
		</view>
		<view v-else>
			<emptyPage title="暂无订单信息~"></emptyPage>
		</view>
	</view>
</template>

<script>
	 
	import {
		verifierOrder, orderVerific
	} from '@/api/admin.js';
	import { getProductHot } from '@/api/store.js';
	import { mapGetters } from "vuex";
	import { toLogin } from '@/libs/login.js';
	import emptyPage from '@/components/emptyPage.vue'
	import { configMap } from '@/utils';
	const app = getApp();
	export default {
		components: {
			emptyPage
		},
		data() {
			return {
				loading: false, //是否加载中
				loadend: false, //是否加载完毕
				loadTitle: '加载更多', //提示语
				cartCount: 0,
				hostProduct: [],
				orderData: {},
				orderList: [],
				verify_code: '',
				mer_id: '',
				isAllSelect: true, //全选
				selectValue: [], //选中的数据
				selectCountPrice: 0.00,
				isScan: 0,
			};
		},
		computed: mapGetters(['isLogin']),
		onReady(){},
		mounted: function() {},
		onLoad: function(options) {
			let that = this;
			that.verify_code = options.cal_code
			that.mer_id = options.mer_id
			that.isScan = options.is_jump
		},
		onShow: function() {
			if (this.isLogin == true) {
				this.getOrderData();
			}else{
				setTimeout(() =>{
					toLogin()
				}, 300);
			}
		},
		methods: {
			goBack: function() {
				if(this.isScan==1){
					uni.navigateTo({
						url: '/pages/admin/order_cancellation/index?mer_id='+this.mer_id
					});
				}else{
					uni.navigateBack();
				}
				
			},
			getOrderData(){
				let that = this
				verifierOrder(that.mer_id,that.verify_code)
					.then(res => {
						that.orderData = res.data
						that.orderList = res.data.orderProduct
						that.orderList.forEach((item) => {
							item.max_count = item.refund_num
							this.$set(item, "check", true);
						})
					}).catch(res => {
						that.$util.Tips({
							title: res
						});
						setTimeout(()=>{
							uni.switchTab({
								url: '/pages/user/index'
							});
						},500)
					})
			},
			// 商品递减
			subCart(goods) {
				if(goods.refund_num <= 0){
					return
				}else{
					if (goods.refund_num <= 1) {
						goods.refund_num = 1;
						goods.numSub = true;
					} else {
						goods.refund_num--
						goods.numAdd = false;
					}
				}
			},
			// 商品增加
			addCart(goods) {
				if(goods.max_count <= goods.refund_num){
					goods.refund_num = goods.max_count
					goods.numAdd = true;
				}else{
					goods.refund_num++
					goods.numSub = false;
				}
			},
			goCallate() {
				let that = this;
				let products = that.getSelectedProduct();
				if(products.length == 0){
					that.$util.Tips({
						title: '请勾选商品'
					});
					// uni.navigateTo({
					// 	url: '/pages/admin/order_cancellation/index?mer_id='+that.mer_id
					// });
				}else{
					orderVerific(that.mer_id,that.orderData.order_id,{verify_code: that.verify_code,data: products})
						.then(res => {
							that.$util.Tips({
								title: res.message
							});
							that.getOrderData();
						})
						.catch(res => {
							that.$util.Tips({
								title: res
							});
							setTimeout(()=>{
								uni.navigateTo({
									url: '/pages/admin/order_cancellation/index?mer_id='+that.mer_id
								});
							},500)
						});
				}
				
			},
			// 获取选中的商品
			getSelectedProduct(){
				let arr = []
				this.orderList.forEach((item) => {
					if(item.check && item.refund_num !=0){
						arr.push({id: item.order_product_id, num: item.refund_num})
					}
				})
				return arr
			},
			// 商品选中
			goodsCheck(goods) {
				goods.check = !goods.check
				this.cartAllCheck('goodsCheck')
			},
			// 全选
			checkboxAllChange() {
				this.isAllSelect = !this.isAllSelect
				this.cartAllCheck('allCheck')
			},
			// 全选判断
			cartAllCheck(type) {
				let tempArr = [], calArr = [];
				this.orderList.forEach((item) => {
					if((this.orderData.status == 0 && item.refund_num > 0)){
						calArr.push(item)
					}
				})
				if (type == 'goodsCheck') {
					tempArr = calArr.filter(item => {
						return item.check
					})
					this.isAllSelect = calArr.length == tempArr.length
				} else {
					calArr.forEach((item) => {
						item.check = this.isAllSelect
						if(item.check)tempArr.push(item)
					})
				}	
				// 全选
				this.isAllSelect = tempArr.length == calArr.length ? true : false
			},
		},
		onReachBottom() {
			
		},
		// 滚动监听
		onPageScroll(e) {
			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
			uni.$emit('scroll');
		}
	}
</script>

<style scoped lang="scss">
	page {	
		background: #F5F5F5;
	}
	.cancellate {
		margin-top: 20rpx;
		padding: 0 30rpx;
		.order {
			background: #fff;
			height: 90rpx;
			border-radius: 16rpx;
			padding: 0 30rpx;
			align-items: center;
			color: #282828;
			font-size: 28rpx;
			.btn{
				width: 124rpx;
				height: 48rpx;
				display: flex;
				align-items: center;
				justify-content: center;
				border: 1px solid #707070;
				border-radius: 25rpx;
			}
		}
		.list{
			background: #fff;
			border-radius: 16rpx;
			margin-top: 20rpx;
			.header{
				height: 88rpx;
				line-height: 88rpx;
				padding: 0 30rpx;
				border-bottom: 1px solid #f0f0f0;
				.info{
					color: #282828;
					text{
						color: #999;
					}
				}
				.coupon-btn{
					color: #666;
					font-size: 24rpx;
					.iconfont{
						font-size: 20rpx;
					}
				}
			}
		}
		.item{
			padding: 20rpx;
		}
		.picTxt {
			width: 100%;
			position: relative;
			align-items: center;
			margin-bottom: 30rpx;
			.checkbox {
				width: 60rpx;
				.iconfont {
					font-size: 40rpx;
					color: #CCCCCC;
					border-radius: 100%;
					&.disabled{
						background: #f3f3f3;
					}
				}
				.icon-xuanzhong1 {
					color: #2291F8;
				}
			}
			.pictrue {
				width: 160rpx;
				height: 160rpx;
				image {
					width: 100%;
					height: 100%;
					border-radius: 6rpx;
				}
			}
			.text {
				width: 410rpx;
				margin-left: 20rpx;
				font-size: 28rpx;
				color: #282828;
			}
			.text .money {
				font-size: 26rpx;
				color: #282828;
				margin-top: 8rpx;
			}
			.callate_bom{
				margin-top: 20rpx;
				align-items: center;
				.callate_text{
					font-size: 26rpx;
					color: #999;
					&.refund_text{
						color: #FF9600;
					}
					&.uncall_text{
						color: #2291F8;
					}
				}
			}
			.carnum {
				height: 47rpx;
			}
			.carnum view {
				border: 1px solid #a4a4a4;
				min-width: 66rpx;
				text-align: center;
				height: 100%;
				line-height: 46rpx;
				font-size: 28rpx;
				color: #a4a4a4;
			}
			.reduce {
				border-right: 0;
				border-radius: 3rpx 0 0 3rpx;
				&.on{
					border-color: #e3e3e3;
					color: #dedede;
				}
			}
			.plus {
				border-left: 0;
				border-radius: 0 3rpx 3rpx 0;
				&.on{
					border-color: #e3e3e3;
					color: #dedede;
				}
			}
			.carnum .num {
				color: #282828;
			}
		}
	}
	.footer {
		z-index: 9;
		width: 100%;
		height: 96rpx;
		background-color: #fafafa;
		position: fixed;
		padding: 0 30rpx;
		box-sizing: border-box;
		border-top: 1px solid #eee;
		bottom: 0;
	}
	.footer .checkAll {
		font-size: 28rpx;
		color: #282828;
		margin-left: 16rpx;
	}
	.footer .placeOrder {
		color: #fff;
		font-size: 30rpx;
		width: 226rpx;
		height: 70rpx;
		border-radius: 50rpx;
		text-align: center;
		line-height: 70rpx;
		margin-left: 22rpx;
		background-color: #2291F8;
	}
	.allcheckbox {
		display: flex;
		align-items: center;
		width: 260rpx;
		.iconfont {
			margin-right: 20rpx;
			font-size: 40rpx;
			color: #CCCCCC;
		}
		.icon-xuanzhong1 {
			color: #2291F8;
		}
	}
	.footer .button .bnt {
		font-size: 28rpx;
		color: #999;
		border-radius: 50rpx;
		border: 1px solid #999;
		width: 160rpx;
		height: 60rpx;
		text-align: center;
		line-height: 60rpx;
		&.bt-color {
			color: #2291F8;
			border: 1px solid #2291F8;
		}
	}
</style>

