<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" :style="mainHeight">
			<view class="navs-block">
				<view class="navs-tab">
					<view class="navs-tab-item">
						<picker class="search-type-text" @change="bindPickerPlanChange" range-key='name'
							mode="selector" :value="punishPlanSelected.name" :range="selectDataOptions.PlanType">
							<text class="uni-input-text">{{punishPlanSelected.name}}</text>
						</picker>
						<image class="icon-arrow-down" src="@/static/image/arrow_down@3x.png" mode=""></image>
					</view>
					<view class="navs-tab-item">
						<picker class="search-type-text" @change="bindPickerTypesChange" range-key='name'
							mode="selector" :value="punishTypeSelected.name" :range="selectDataOptions.PunishType">
							<text class="uni-input-text">{{punishTypeSelected.name}}</text>
						</picker>
						<image class="icon-arrow-down" src="@/static/image/arrow_down@3x.png" mode=""></image>
					</view>
					<view class="navs-tab-item">
						<picker class="search-type-text" @change="bindPickerStatusChange" range-key='name'
							mode="selector" :value="orderStatusSelected.name"
							:range="selectDataOptions.ProcessOrderStatus">
							<text class="uni-input-text">{{orderStatusSelected.name}}</text>
						</picker>
						<image class="icon-arrow-down" src="@/static/image/arrow_down@3x.png" mode=""></image>
					</view>
				</view>
			</view>
			<view class="middle view planout-block-item">
				<view class="text-block">
					<text class="middle-date">销售计划编号</text>
					<input class="middle-date-des" type="text" v-model="condition.plan_number[0].LOW" placeholder="请输入" />
				</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[0].LOW" fields='year'>
									<text class="uni-input-text">{{condition.GJAHR[0].LOW}}</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="bindPickerMonthChange" range-key='name' mode="selector"
									:value="condition.monat[0].LOW" :range="selectDataOptions.monthArr">
									<text class="uni-input-text">{{condition.monat[0].LOW}}</text>
								</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" scroll-y="true" lower-threshold='150'
				@scrolltolower='scrolltolower'> -->
				<list ref="list" class="scroll-area view" loadmoreoffset='100' @loadmore="scrolltolower"
					:show-scrollbar='false'>
					<refresh @refresh="refresh" :display="refreshing ? 'show' : 'hide'">
						<!-- <loading-indicator></loading-indicator> -->
					</refresh>
					<cell v-for="(item,index) in lists" :key="item.plan_number">
						<view class="scroll-item" @click="checkDetal(item)">
							<view class="item-block item-block-code">
								<text class="item-block-label">销售计划编号：{{item.plan_number}}</text>
							</view>
							<view class="item-block item-block-name">
								<text class="item-block-label item-block__label">{{item.plan_type_text}}</text>
							</view>
							<view class="item-block">
								<text class="item-block-label-des">{{item.gjahr}}-{{item.monat}}</text>
								<text class="item-block-right-des">{{item.report_type_text}}</text>
							</view>
							<view class="block-detal">
								<view class="block-detal-item">
									<text class="detal-item-label">存货分类</text>
									<text class="detal-item-value">{{item.wlybrand_text}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">总计划(件)</text>
									<text class="detal-item-value">{{item.total_qty}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">初始计划(件)</text>
									<text class="detal-item-value">{{item.initplan_qty}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">已开票计划(件)</text>
									<text class="detal-item-value">{{item.billing_qty}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">已占用计划(件)</text>
									<text class="detal-item-value">{{item.atp_qty}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">总计划(瓶)</text>
									<text class="detal-item-value">{{item.total_bot}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">初始计划(瓶)</text>
									<text class="detal-item-value">{{item.initplan_bot}}</text>
								</view>
								<view class="block-detal-item">
									<text class="detal-item-label">已开票计划(瓶)</text>
									<text class="detal-item-value">{{item.billing_bot}}</text>
								</view>
								<view class="block-detal-item block-detal-item-last">
									<text class="detal-item-label">已占用计划(瓶)</text>
									<text class="detal-item-value">{{item.atp_bot}}</text>
								</view>
							</view>
						</view>
					</cell>
					<cell>
						<view class="loading-more" v-if='lists.length>2'>
							<text class="loading-more-text">{{loadingText}}</text>
						</view>
					</cell>
					<!-- <view class="planout-block-item__last"> </view> -->
				</list>
			<!-- </scroll-view> -->
			<no-data v-if="lists.length === 0"></no-data>
		</view>
	</view>
</template>

<script>
	import {
		mapState
	} from 'vuex'

	import {
		apiSalesPlanTypesSelect
	} from '@/servers/common.js'

	import {
		apiSalesPlan
	} from '@/servers/purchasePlan.js'
	import {
		querySysDictionaryDetailsByCode,
	} from '@/servers/purchaseList.js'
	import timeFormat from '@/uview-ui/libs/function/timeFormat.js'
	import noData from '@/components/nodata.nvue';
	export default {
		data() {
			return {
				scrollTop: 0,
				isOpened: 'none',
				loadingText: '加载中...',
				refreshing: false,
				condition: {
					MV_BP: '',
					ROLE: 'WLY001',
					GJAHR: [{
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: '',
						HIGH: ''
					}],
					monat: [{
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: '',
						HIGH: ''
					}],
					plan_number: [{
						SIGN: 'I',
						OPTION: 'CP',
						LOW: '',
						HIGH: ''
					}],
					plan_type: [{
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: '',
						HIGH: ''
					}],
					report_type: [{
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: '',
						HIGH: ''
					}],
					wlybrand: [{
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: '',
						HIGH: ''
					}],
				},
				page: {
					"PAGE": "1",
					"PAGESIZE": "10",
				},
				loadParams: {
					total: 0,
					totalPage: 1,
					isDone: false,
					isRefresh: false
				},
				selectedSalePlan: {},
				selectedSalePlanTypes: [],
				typesIndex: 0,
				lists: [],
				punishTypeSelected: {
					'value': '',
					'name': '全部提报'
				},
				orderStatusSelected: {
					'value': '',
					'name': '存货分类'
				},
				punishPlanSelected: {
					'value': '',
					'name': '全部计划'
				},
				monthSelected: {
					'value': '',
					'name': ''
				},
				selectDataOptions: {
					'PunishType': [{
						'value': '',
						'name': '全部提报'
					}],
					'ProcessOrderStatus': [{
						'value': '',
						'name': '全部品牌'
					}],
					'PlanType': [{
						'value': '',
						'name': '全部计划'
					}],
					'monthArr': []
				},
			}
		},
		components: {
			noData,
		},
		computed: {
			...mapState(['sysinfo', 'userInfo']),
			navHeight() {
				return {
					'height': `${this.sysinfo.safeArea.top + 44}px`
				}
			},
			mainHeight() {
				return {
					'height': `${this.sysinfo.safeArea.height - 44 }px`,
				}
			},
			scrollHeight() {
				return {
					'height': `${this.sysinfo.safeArea.height - 44 - 156 }px`
				}
			},

		},
		// onPullDownRefresh() {
		// 	console.log('refresh');
		// 	this.reset()
		// 	this.getSalesPlan(true)
		// 	setTimeout(function() {
		// 		uni.stopPullDownRefresh();
		// 	}, 600);
		// },
		created() {
			// this.condition.GJAHR[0].LOW = timeFormat(new Date(), 'yyyy')
			this.condition.MV_BP = this.userInfo.code
			this.reset()
			this.getSelectDictDataOrigin('A0001','PunishType')
			this.getSelectDictDataOrigin('A0002','PlanType')
			this.getSelectDictDataOrigin('A0019','ProcessOrderStatus')
			this.getSelectDictDataOrigin('month','monthArr')
			this.getSalesPlan(true);
		},
		methods: {
			search() {
				console.log(this.condition)
				this.reset()
				this.getSalesPlan(true);
			},
			getSelectDictDataOrigin(dictcode,key) {
			  querySysDictionaryDetailsByCode({'code': dictcode})
				.then(res => {
					if(res.data.Rows.length>0){
						this.selectDataOptions[key] = [...this.selectDataOptions[key], ...res.data.Rows]
					}
				})
				.catch(() => {})
			},
			bindPickerMonthChange(e) {
				console.log('bindPickerMonthChange', e.detail.value,this.selectDataOptions)
				this.condition.monat[0].LOW = this.selectDataOptions['monthArr'][e.detail.value].value
			},
			bindPickerPlanChange(e) {
				console.log(this.selectDataOptions,'this.selectDataOptions')
				console.log('bindPickerPlanChange', e.detail.value)
				this.punishPlanSelected = this.selectDataOptions['PlanType'][e.detail.value || 0]
				if (e.detail.value === 0) {
					this.condition.plan_type = []
				} else {
					this.condition.plan_type[0] = {
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: this.punishPlanSelected.value,
						HIGH: ''
					}
				}
				this.search();
			},
			bindPickerTypesChange(e) {
				console.log('bindPickerTypesChange', e.detail.value)
				this.punishTypeSelected = this.selectDataOptions['PunishType'][e.detail.value || 0]
				if (e.detail.value === 0) {
					this.condition.report_type = []
				} else {
					this.condition.report_type[0] = {
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: this.punishTypeSelected.value,
						HIGH: ''
					}
				}
				this.search();
			},
			bindPickerStatusChange(e) {
				console.log('bindPickerStatusChange', e.detail.value)
				this.orderStatusSelected = this.selectDataOptions['ProcessOrderStatus'][e.detail.value || 0]
				if (e.detail.value === 0) {
					this.condition.wlybrand = []
				} else {
					this.condition.wlybrand[0] = {
						SIGN: 'I',
						OPTION: 'EQ',
						LOW: this.orderStatusSelected.value,
						HIGH: ''
					}
				}
				this.search();
			},
			checkDetal(item) {
				uni.navigateTo({
					url: `/pages/purchase-plan-detail/purchase-plan-detail?planDetail=${JSON.stringify(item)}`
				})
			},
			async getSalesPlan(isRefresh) {
				if (isRefresh) {
					this.page.PAGE = 1
				}
				if (this.loadParams.isDone) {
					return
				}
				const condition = JSON.parse(JSON.stringify(this.condition))
				const params = {
					...this.page,
					...condition
				}
				this.orderStatusSelected.value ? "" : delete params.wlybrand
				this.punishTypeSelected.value ? "" : delete params.report_type
				this.punishPlanSelected.value ? "" : delete params.plan_type
				params.GJAHR[0].LOW ? "" : delete params.GJAHR
				params.monat[0].LOW ? "" : delete params.monat
				params.plan_number[0].LOW = params.plan_number[0].LOW ? '*' + params.plan_number[0].LOW + '*' : delete params.plan_number
				uni.showLoading({
					title: '加载中'
				});
				setTimeout(function() {
					uni.hideLoading();
				}, 2000);
				const res = await apiSalesPlan(params)
				uni.hideLoading();

				const {
					data,
					page,
					pagesize,
					total
				} = res
				this.page.PAGE = page * 1
				this.page.PAGESIZE = pagesize * 1
				this.loadParams.total = total * 1
				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)
				}

				setTimeout(() => {
					this.refreshing = false;
				}, 300)

			},
			refresh(e) {
				this.refreshing = true;
				this.reset()
				this.getSalesPlan(true)
				// #ifdef APP-NVUE
				try {
					// console.log('-------', this.$refs.list)
					this.$refs.list.resetLoadmore();
				} catch (e) {
					console.log('onrefresh', e)
				}
				// #endif

			},
			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
			// 	this.selectedSalePlan = this.selectedSalePlanTypes[this.typesIndex]
			// 	this.condition.PLAN_TYPE[0].LOW = this.selectedSalePlanTypes[this.typesIndex].VALUE_ID
			// 	this.getSalesPlan()
			// },
			// bindPickerTypesChange(e) {
			// 	console.log('bindPickerTypesChange', e.detail.value)
			// 	this.typesIndex = e.detail.value
			// 	this.condition.PLAN_TYPE[0].LOW = this.selectedSalePlanTypes[this.typesIndex].VALUE_ID
			// 	this.getSalesPlan(true)
			// },
			bindPickerYearChange(e) {
				console.log('bindPickerYearChange', e.detail.value)
				this.condition.GJAHR[0].LOW = e.detail.value
			},
			handleClick(e, content, index) {
				console.log('click当前索引：', e, content, index);
			},
			nextStep() {
				this.$emit('click', 'orderUpload')
			},
			preStep() {
				uni.switchTab({
					url: `/pages/go-order/go-order`
				})
			},
		}
	}
</script>

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

	.header-bg {
		height: 284rpx;
		opacity: 0.72;
		margin-top: -88rpx;
	}
	.header-bg-img {
		width: 750rpx;
	}

	.lists {
		position: relative;
		flex-direction: column;
		background: #f0f4f5;
		flex: 1;
	}

	.main {
		position: relative;
		flex-direction: column;
		padding: 0 16rpx;
		// padding-top: 40rpx;
		// background-color: #fff;
	}

	.scroll-area {
		overflow-y: scroll;
		background: #f0f4f5;
	}

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

	.text-block {
		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;
		overflow: hidden;
		text-overflow: ellipsis;
		color: #888;
	}

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

	.uni-list-cell {
		flex: 1;
		height: 96rpx;
		line-height: 96rpx;
	}

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

	.picker-block {
		flex: 1;
	}

	.uni-input-text {
		height: 96rpx;
		line-height: 96rpx;
		font-size: 14px;
		color: #888;
		text-overflow: ellipsis;
		white-space: nowrap;
		overflow: hidden;
	}

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

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

	.planout-block-item {
		// margin: 32rpx 0;
	}

	.scroll-item {
		flex: 1;
		display: flex;
		flex-direction: column;
		margin-bottom: 32rpx;
		background-color: #fff;
		border-radius: 16rpx;
		padding: 32rpx 64rpx 40rpx 48rpx;
	}

	.planout-block-item__last {
		height: 40px;
	}

	.item-block {
		overflow: hidden;
	}

	.item-block-label {
		font-size: 24rpx;
		color: #333;
	}

	.item-block__label {
		flex: 1;
		text-align: left;
		font-size: 32rpx;
		color: #333;
		font-weight: 500;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.item-block-code {
		padding-bottom: 16rpx;
	}

	.item-block-name {
		padding-top: 24rpx;
		padding-bottom: 32rpx;
	}

	.item-block-label-des {
		flex: 1;
		text-align: left;
		font-size: 28rpx;
		color: #333;
	}
	.item-block-right-des {
		flex: 1;
		text-align: right;
		font-size: 28rpx;
		color: #333;
	}

	.block-detal {
		display: flex;
		flex-direction: column;
		background: #f8f8f8;
		border-radius: 20rpx;
		padding: 32rpx;
		margin-top: 32rpx;
	}

	.block-detal-item {
		display: flex;
		margin-bottom: 32rpx;
		justify-content: space-between;
	}

	.block-detal-item-last {
		margin-bottom: 0;
	}

	.detal-item-label {
		color: #999;
		font-size: 24rpx;
	}

	.detal-item-value {
		color: #333;
		font-size: 28rpx;
	}

	.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;
	}
	.navs-block {
		flex-direction: column;
		background-color: #fff;
		padding-top: 40rpx;
	}
	
	.navs-tab {
		display: flex;
		flex: 1;
		align-items: center;
		height: 60rpx;
		border-bottom: 1px solid #F4F5F6;
		padding-bottom: 8rpx;
	}
	
	.navs-tab-item {
		display: flex;
		justify-content: center;
		flex: 1;
		align-items: center;
		height: 50rpx;
		overflow: hidden;
	}
	
	.search-type-text {
		color: #333;
		font-size: 28rpx;
	}
	
	.icon-arrow-down {
		width: 6px;
		height: 4px;
		margin-left: 16rpx;
	}
	.planout-block {
		display: flex;
		justify-content: space-between;
		margin-top: 30rpx;
		margin-bottom: 30rpx;
		padding: 0 24rpx;
	}
	
	.btn {
		flex: 1;
		height: 92rpx;
		background: $wly-primary-color;
		border-radius: 46rpx;
	}
	
	.btn-text {
		color: #fff;
		font-size: 34rpx;
	}
</style>
