<template>
	<view class="lists">
		<view class="status_bar" :style="navHeight"></view>
		<view class="header-bg">
			<image class="header-bg-img" src="@/static/image/nav_bg@3x.png" mode="scaleToFill"></image>
		</view>
		<view class="main">
			<view class="middle view">
				<view class="text-block">
					<text class="middle-date">年度</text>
					<view class="middle-date-des uni-list picker-year">
						<view class="uni-list-cell">
							<view class="uni-list-cell-db">
								<picker class="picker-block" @change="bindPickerYearChange" mode="date"
									:value="condition.GJAHR" fields='year'>
									<text class="uni-input">{{condition.GJAHR}}</text>
								</picker>
							</view>
						</view>
						<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
					</view>
				</view>
				<view class="text-block">
					<text class="middle-date">月度</text>
					<view class="middle-date-des uni-list picker-year">
						<view class="uni-list-cell">
							<view class="uni-list-cell-db">
								<picker class="picker-block" @change="bindPickerMonthChange" mode="date"
									:value="condition.MONAT" fields="month">
									<text class="uni-input">{{condition.MONAT}}</text>
								</picker>
							</view>
						</view>
						<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
					</view>
				</view>
				<view class="text-block text-block-last">
					<text class="middle-date">计划类型</text>
					<view class="middle-date-des uni-list picker-year">
						<view class="uni-list-cell">
							<view class="uni-list-cell-db">
								<picker class="picker-block" @change="bindPickerTypesChange" range-key='VALUE_KT'
									mode="selector" :value="typesIndex" :range="selectedSalePlanTypes">
									<view class="uni-input">
										{{selectedSalePlanTypes[typesIndex] && selectedSalePlanTypes[typesIndex].VALUE_KT || '请选择'}}
									</view>
								</picker>
							</view>
						</view>
						<image class="icon-arrow" src="@/static/image/arrow_r@3x.png" mode="aspectFit"></image>
					</view>
				</view>
			</view>

			<view class="planout-block">
				<button class="btn" type="default" @tap="search">
					<text class="btn-text">查询</text>
				</button>
			</view>

			<scroll-view class="scroll-area" :style='scrollHeight' scroll-y="true" lower-threshold='150'
				@scrolltolower='scrolltolower'>
				<!-- <uni-swipe-action class="planout-block-lists">
					<uni-swipe-action-item v-for="(item,index) in lists" :key='index' :threshold='100'
						:auto-close="false" :disabled='true' :show="isOpened"> -->
				<!-- <template v-slot:left>
							<view class="swipe-right-block" @click.stop="handleChecked($event,item, index)"><text
									class="swipe-right-block__text"
									:class="{'swipe-right-block__active':item.checked}"></text>
							</view>
						</template> -->
				<view class="middle view planout-block-item" v-for="(item,index) in lists" :key='index'
					@click="handleChecked($event,item, index)">
					<view class="text-block">
						<text class="middle-date">计划编码</text>
						<text class="middle-date-des">{{item.PLAN_NUMBER}}</text>
					</view>
					<view class="text-block">
						<text class="middle-date">类型</text>
						<text class="middle-date-des">{{item.PLAN_TYPE}}</text>
					</view>
					<view class="text-block">
						<text class="middle-date">产品</text>
						<text class="middle-date-des">{{item.WLYBRAND}}</text>
					</view>
					<view class="text-block text-block-last">
						<text class="middle-date">可用件数</text>
						<text class="middle-date-des">{{item.REMAIN_QTY}}</text>
					</view>
				</view>

				<!-- 		</uni-swipe-action-item>
				</uni-swipe-action> -->
				<view class="loading-more" v-if='lists.length>2'>
					<text class="loading-more-text">{{loadingText}}</text>
				</view>
			</scroll-view>

		</view>
	</view>
</template>

<script>
	import {
		mapState
	} from 'vuex'
	import {
		apiSalesPlanSelect,
		apiSalesPlanTypesSelect
	} from '@/servers/common.js'
	import timeFormat from '@/uview-ui/libs/function/timeFormat.js'

	export default {
		data() {
			return {
				isOpened: 'none',
				loadingText: '加载中...',
				condition: {
					year: '',
					MONAT: '',
					PLAN_TYPE: ''
				},
				page: {
					"PAGE": "1",
					"PAGESIZE": "10",
				},
				loadParams: {
					total: 0,
					totalPage: 1,
					isDone: false,
					isRefresh: false
				},
				lists: [{
					checked: false,
					"PLAN_NUMBER": "3800000826",
					"PLAN_TYPE": "运营商配额酒年度计划",
					"WLYBRAND": "五粮液.1618",
					"GJAHR": "2022",
					"REMAIN_QTY": 9.000
				}, ],
				selectedSalePlan: {},
				selectedSalePlanTypes: [],
				typesIndex: -1,
				toPageParams: {
					page: '',
					index: 0,
					product: {},
					head: {}
				}
			}
		},
		computed: {
			...mapState(['sysinfo']),
			navHeight() {
				return {
					'height': `${this.sysinfo.safeArea.top + 44}px`
				}
			},
			scrollHeight() {
				return {
					'height': `${this.sysinfo.safeArea.height - 297- 44 - 20}px`
				}
			}
		},
		onNavigationBarButtonTap(e) {
			// console.log('onNavigationBarButtonTap：', e, this.isOpened, this.selectedSalePlan);
			// if (this.isOpened === 'left' && this.selectedSalePlan && this.selectedSalePlan.PLAN_NUMBER) {
			// 	uni.$emit('selectedSalePlan', {
			// 		selectedSalePlan: this.selectedSalePlan,
			// 		index: this.toPageParams.index
			// 	})
			// 	uni.navigateBack()
			// 	return
			// }
			// this.isOpened = this.isOpened === 'none' ? 'left' : 'none';
			// #ifdef APP-PLUS  
			// let pages = getCurrentPages()
			// let page = pages[pages.length - 1]
			// let webView = page.$getAppWebview();
			// console.log('webView', webView)
			// webView.setTitleNViewButtonStyle(0, {
			// 	text: this.isOpened === 'none' ? '选择' : '完成',
			// });
			// let titleObj = webView.getStyle().titleNView;
			//  if(!titleObj.buttons){
			// 	 returnl
			//  }
			//  titleObj.buttons[0].text = 'dd';
			//  webView.setStyle({
			// 	 titleNView:titleObj
			//  })
			// #endif
		},
		onLoad(option) {
			console.log('select-saleplan', option)
			if (option && option.from) {
				const {
					from,
					product,
					head
				} = option
				this.toPageParams.product = JSON.parse(product)
				this.toPageParams.page = from
				this.toPageParams.head = JSON.parse(head)
			}
		},
		onPullDownRefresh() {
			console.log('refresh');
			this.reset()
			this.getSalesPlan(true)
			setTimeout(function() {
				uni.stopPullDownRefresh();
			}, 600);
		},
		created() {
			// this.condition.GJAHR = timeFormat(new Date(), 'yyyy')
			// this.condition.MONAT = timeFormat(new Date(), 'mm')
			this.getSalesPlanTypes();
			this.reset()
			this.getSalesPlan(true);
		},
		methods: {
			async getSalesPlan(isRefresh) {
				if (this.loadParams.isDone) {
					return
				}

				const {
					GJAHR,
					MONAT,
					PLAN_TYPE
				} = this.condition
				const params = {
					...this.page,
					"INFO": this.toPageParams.head,
					"ITEM": this.toPageParams.product,
					"INPUT": {},
					"INPUT_APP": {
						GJAHR,
						MONAT,
						PLAN_TYPE
					},
				}

				uni.showLoading({
					title: '加载中'
				});
				setTimeout(function() {
					uni.hideLoading();
				}, 2000);
				const res = await apiSalesPlanSelect(params)
				uni.hideLoading();

				const {
					DATA,
					TOTAL
				} = res
				this.loadParams.total = TOTAL
				this.loadParams.totalPage = Math.ceil(TOTAL * 1 / this.page.PAGESIZE * 1)

				const dataMap = DATA && DATA.map((item) => {
					item.checked = false
					return item
				})

				if (isRefresh) {
					this.lists = dataMap
					this.loadParams.isDone = false
				} else {
					this.lists = this.lists.concat(dataMap)
				}

			},
			scrolltolower() {
				console.log('onReachBottom');
				if (this.page.PAGE < this.loadParams.totalPage) {
					this.page.PAGE++
					this.getSalesPlan()
				} else {
					this.loadParams.isDone = true
					this.loadingText = '-- 到底了 --'
				}
			},
			reset() {
				this.loadParams = {
					total: 0,
					totalPage: 1,
					isDone: false,
					isRefresh: false
				}
				this.page.PAGE = 1
				this.lists = []
				this.loadingText = '加载中'
			},
			async getSalesPlanTypes() {
				const params = {
					"object_id": [{
						"sign": "I",
						"option": "EQ",
						"low": "A0002",
						"HIGH": ""
					}]
				}
				const res = await apiSalesPlanTypesSelect(params)
				this.selectedSalePlanTypes = res.DATA
			},
			search() {
				this.reset()
				this.getSalesPlan(true);
			},
			bindPickerTypesChange(e) {
				console.log('picker发送选择改变，携带值为', e.detail.value)
				this.typesIndex = e.detail.value
				this.condition.PLAN_TYPE = this.selectedSalePlanTypes[this.typesIndex].VALUE_ID
			},
			bindPickerYearChange(e) {
				console.log('picker发送选择改变，携带值为', e.detail.value)
				this.condition.GJAHR = e.detail.value
			},
			bindPickerMonthChange(e) {
				console.log('picker发送选择改变，携带值为', e.detail.value)
				this.condition.MONAT = e.detail.value
			},
			handleChecked(e, item, index) {
				console.log('当前索引：', e, index);

				this.lists.forEach((cur) => {
					if (cur.PLAN_NUMBER === item.PLAN_NUMBER) {
						cur.checked = !cur.checked
					} else {
						cur.checked = false
					}
				})

				if (item.checked === true) {
					this.selectedSalePlan = item

					if (this.selectedSalePlan && this.selectedSalePlan.PLAN_NUMBER) {
						uni.$emit('selectedSalePlan', {
							selectedSalePlan: this.selectedSalePlan,
							index: this.toPageParams.index
						})
						uni.navigateBack()
					}
				} else {
					// const selectIndex = this.selectedSalePlan.findIndex((saleplan)=>{
					// 	return saleplan.id === item.id
					// })
					// this.selectedSalePlan.splice(selectIndex,1)
					this.selectedSalePlan = {}
				}
			},
		}
	}
</script>

<style lang="scss" scoped>
	.view {
		flex-direction: column;
	}

	.header-bg {
		height: 284rpx;
		margin-top: -88rpx;
	}

	.header-bg-img {
		width: 750rpx;
	}

	.lists {
		position: relative;
		flex-direction: column;
		overflow-y: scroll;
		background: #f0f4f5;
		height: 100vh;
	}

	.main {
		position: relative;
		flex-direction: column;
		margin-top: -164rpx;
		padding: 0 16rpx;
	}

	.middle {
		background-color: #fff;
		border-radius: 16rpx;
		padding: 32rpx 64rpx 40rpx 48rpx;
	}

	.text-block {
		display: flex;
		overflow: hidden;
		height: 96rpx;
		margin-bottom: 14rpx;
		border-bottom: 1px solid #f4f5f6;
	}

	.text-block-last {
		margin-bottom: 0;
		border-bottom: 0;
	}

	.middle-date {
		flex: 2;
		font-size: 28rpx;
		line-height: 96rpx;
		color: #333;
		margin-bottom: 8rpx;
	}

	.middle-date-des {
		flex: 3;
		font-size: 28rpx;
		line-height: 96rpx;
		height: 96rpx;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		color: #888;
	}

	.picker-year {
		position: relative;
		border-radius: 4px;
		align-items: center;
	}

	.uni-list-cell {
		flex: 1;
	}

	.uni-list-cell-db {
		flex: 1;
	}

	.picker-block {
		height: 96rpx;
		flex: 1;
	}

	.icon-arrow {
		position: absolute;
		right: 0;
		top: 16px;
		width: 12rpx;
		height: 20rpx;
		z-index: 10;
	}

	.planout-block-lists {
		display: flex;
		flex-direction: column;
		overflow: hidden;
	}

	.uni-swipe {
		flex: 1;
		margin-bottom: 26rpx;
	}

	/deep/ .uni-swipe_box {
		flex: 1;
	}

	.swipe-right-block {
		display: flex;
		width: 100rpx;
		justify-content: center;
		align-items: center;
	}

	.swipe-right-block__text {
		display: inline-block;
		width: 52rpx;
		height: 52rpx;
		border-radius: 50%;
		background-color: #fff;
	}

	.swipe-right-block__active {
		width: 52rpx;
		height: 52rpx;
		border-radius: 50%;
		background-color: $wly-primary-color;
	}

	.planout-block {
		display: flex;
		justify-content: space-between;
		height: 84rpx;
		margin-top: 64rpx;
		margin-bottom: 48rpx;
		padding: 0 24rpx;
	}

	.planout-block-item {
		flex: 1;
		width: 750rpx;
		margin-bottom: 26rpx;
	}

	.btn {
		flex: 1;
		height: 92rpx;
		background: $wly-primary-color;
		border-radius: 46rpx;
	}

	.btn-text {
		color: #fff;
		font-size: 34rpx;
	}

	.loading-more {
		flex: 1;
		align-items: center;
		justify-content: center;
		padding-top: 14px;
		padding-bottom: 14px;
		text-align: center;
	}

	.loading-more-text {
		font-size: 12px;
		color: #999;
	}
</style>
