<template>
	<block v-if="lists.length">
		<view class="m-card m-good" v-for="(item, index) in lists" :key="index">
			<view class="shop-check" @click="item.check=!item.check">
				<image v-if="!item.check" src="@/static/icon/n-check.png"></image>
				<image v-else src="@/static/icon/check.png"></image>
			</view>

			<view class="image">
				<up-image width="160rpx" height="160rpx" :src="item.image"></up-image>
			</view>
			<view class="body-content">
				<view>
					<view class="title">
						<view> <text>{{item.store_name }}</text> x<text>{{item.nums }}</text> </view>
						<view>¥{{item.price}}</view>
					</view>
				</view>
				<view class="time">
					<view style="float: right;">
						<up-number-box :min="1" :max="item.nums" v-model="item.num"></up-number-box>
					</view>
				</view>
			</view>
		</view>

	</block>

	<up-empty v-else mode="history" style="margin-top: 20vh;" text='没有更多内容了'>
	</up-empty>
	<view style="height: 200rpx;" />

	<view class="bottom">
		<view style="display: flex;align-items: center;">
			<view class="all-checl">
				<image v-if="getCheckNum()!=lists.length" @click="checkAll" src="@/static/icon/n-check.png"></image>
				<image @click="checkAllNot" v-else src="@/static/icon/check.png"></image>
			</view>
			<view style="margin-left: 8rpx;" @click="checkAll" v-if='getCheckNum() !=lists.length'>
				全选({{getCheckNum()}})
			</view>
			<view style="margin-left: 8rpx;" @click="checkAllNot" v-else>
				全不选({{getCheckNum()}})
			</view>
		</view>
		<view style="display: flex;align-items: center;">
			<up-button color="#20b128" shape="circle" @click="showPop=true">
				<view class="">
					预约提货({{getCheckNum()}})
				</view>
			</up-button>
		</view>
	</view>


	<up-popup :show="showPop" @close="showPop=false" @open="showPop=true" mode="center">
		<view class="popContent">
			<view class="tit">
				预约提货
			</view>
			<view class="label">
				预约时间:<view class="left" @click="showCalendar=true">
					{{formData.times}}
				</view>
			</view>
			<view class="label">
				选择门店:<view class="left" @click="navgo('/multipleShop/index/index?event=asset')">
					{{formData.store_name}}
				</view>
			</view>
			<view class="rect-btn">
				<view style="width: 236rpx;">
					<up-button @click="showPop=false">取消</up-button>
				</view>
				<view style="width: 236rpx;">
					<up-button color="#20b128" @click="submit">确定</up-button>
				</view>
			</view>
		</view>
	</up-popup>
	<up-calendar :show="showCalendar" color="#20B128" @confirm="confirmDate" @close='showCalendar=false'></up-calendar>
</template>

<script setup>
	import {
		ref,
		reactive
	} from "vue"
	import {
		onPullDownRefresh
	} from "@dcloudio/uni-app"

	import {
		getUserProductStorageLists,
		reservationUserProductStorage
	} from "@/api/asset.js"
	import useUserStore from "@/store/user";
	let userInfo = useUserStore().userInfo
	const value = ref(1)
	const showPop = ref(false)
	const showCalendar = ref(false)
	const lists = ref([])

	const navgo = (url) => {
		uni.navigateTo({
			url
		})
	}

	const getCheckNum = () => {
		return lists.value.filter(item => item.check).length
	}

	const formData = reactive({
		info: [],
		times: "",
		store_id: "",
		store_name: "",
	})

	uni.$on('asset', function(data) {
		let datas = JSON.parse(data)
		formData.store_id = datas.id
		formData.store_name = datas.name
	})

	const getLists = async (isPull) => {
		let res = await getUserProductStorageLists({
			uid: userInfo.id
		})
		lists.value = res.data.lists
		lists.value.forEach(item => {
			item.num = 1
		})
		if (isPull) uni.stopPullDownRefresh()
	}

	// 全选&&全不选
	const isAll = ref(false)
	const checkAll = () => {
		lists.value.forEach(item => item.check = true)
	}
	const checkAllNot = () => {
		lists.value.forEach(item => item.check = false)
	}
	// 全选&&全不选结束

	const submit = async () => {
		formData.info = (lists.value.filter(item => item.check)).map(item => {
			return {
				product_id: item.product_id,
				nums: item.num
			}
		})
		await reservationUserProductStorage({
			...formData
		})
		showPop.value = false
		getLists()
	}
	const confirmDate = (e) => {
		formData.times = e[0]
		showCalendar.value = false
	}

	onPullDownRefresh(() => {
		getLists(true)
	})
	getLists()
</script>

<style lang="scss">
	.m-card {
		margin: 20rpx;
		border-radius: 14rpx;
		background-color: #fff;
		padding: 20rpx;
	}

	.m-good {
		display: flex;
		justify-content: space-between;
		margin-bottom: 20rpx;

		.image {
			width: 160rpx;
			height: 160rpx;
			margin-right: 20rpx;
			border-radius: 14rpx;
			overflow: hidden;
		}

		.body-content {
			width: 490rpx;
			display: flex;
			flex-direction: column;
			justify-content: space-between;
			color: #989898;

			.title {
				display: flex;
				justify-content: space-between;
				font-size: 28rpx;
				color: #444;
			}

			.tips {
				display: flex;
				justify-content: space-between;
				font-size: 24rpx;
				margin-top: 10rpx;
				align-items: center;
			}

			.time {
				padding: 5rpx 10rpx;
				font-size: 26rpx;
				color: #444;
				border-radius: 10rpx;
				// display: flex;
			}
		}
	}

	.shop-check {
		width: 60rpx;
		height: 150rpx;
		display: flex;
		align-items: center;

		image {
			width: 40rpx;
			height: 40rpx;
		}
	}

	.all-checl {
		image {
			width: 40rpx;
			height: 40rpx;
		}
	}

	.bottom {
		width: 100vw;
		padding: 50rpx 20rpx;
		padding-top: 20rpx;
		position: fixed;
		bottom: 0;
		background-color: white;
		display: flex;
		box-sizing: border-box;
		justify-content: space-between;
		align-items: center;
	}

	.popContent {
		width: 600rpx;
		height: 400rpx;
		padding: 20rpx 50rpx;

		box-sizing: border-box;

		.tit {
			text-align: center;
			font-size: 34rpx;
			margin-bottom: 10rpx;
		}
	}

	.rect-btn {
		display: flex;
		// margin-top: 50rpx;
		justify-content: space-between;
	}

	.label {
		display: flex;
		position: relative;
		margin-bottom: 30rpx;
		align-items: center;

		.left {
			margin-left: 20rpx;
			width: 300rpx;
			height: 70rpx;
			border: 1px solid #EDF2FA;
			line-height: 70rpx;
			padding-left: 20rpx;
		}

		// vertical-align: bottom;
	}
</style>