<template>
	<uni-popup ref="popup" background-color="#fff" :is-mask-click="false">
		<view class="mainBox">
			<view class="main">
				<uni-nav-bar fixed="true" statusBar="true" left-icon="back" :title="`调拨(${cargoSpace})`"
					@clickLeft="backAdd"></uni-nav-bar>
				<!-- <view class="searchBox">
					<input v-model="searchVal" placeholder="请输入编码/名称" class="searchInput" />
					<u-button type="icon-shixiangxinzeng" size="30" @click="doSearch" data-icon="Search" class="searchBtn">
						<view class="iconfont icon-sousuo"></view>
						<view class="text">搜索</view>
					</u-button>
				</view> -->
				<view class="top-wrapper">
					<uni-section>
						<uni-easyinput prefixIcon="search" style="width: 460rpx" v-model="searchVal"
							placeholder="请输入编码/名称">
						</uni-easyinput>
					</uni-section>
					<view style="display: flex;">
						<button class="search_btn" @click="doSearch">搜索</button>
					</view>
				</view>
				<view class="wrapper">
					<u-list @scrolltolower="scrolltolower" class="listContent">
						<checkbox-group v-for="(item, index) in listData" :key="index"
							@change.stop="e => selectVal(e, item, index)">
							<label>
								<view class="listBox">
									<view class="listBox-sel">
										<checkbox :value="item.code" color="#fff" :disabled="item.disabled"
											:checked="item.checked" />
									</view>
									<view class="listBox-con">
										<view class="listBox-top">
											<view class="listBox-name">
												{{ item.categoryName }}
											</view>
											<view class="listBox-code">
												{{ item.categoryCode }}
											</view>
										</view>
										<view class="listBox-bottom">
											<view>牌号：{{ item.brandNum }}</view>
											<view>型号：{{ item.categoryModel }}</view>
											<view>规格：{{ item.specification }}</view>
											<view>批次号：{{ item.batchNo }}</view>
											<view>计量数量：{{ item.measureQuantity }}({{ item.measureUnit }})</view>
											<view class="w100">包装编码：{{ item.packageNo }}</view>
											<view>包装数量：{{ item.packingQuantity }}({{ item.packingUnit }})</view>
											<view>重量：{{ item.weight }}({{ item.weightUnit }})</view>
											<view>发货条码：{{ item.barcodes }}</view>
											<view>物料代号：{{ item.materielDesignation }}</view>
											<view>客户代号：{{ item.clientCode }}</view>
											<view>刻码：{{ item.engrave }}</view>
											<view>销售订单号：{{ item.saleOrderInfo.saleOrderNos }}</view>
											<view>客户：{{ item.saleOrderInfo.customerNames }}</view>
											<view class="w100">仓库：{{ item.warehouseName }}</view>
											<view class="w100">区域：{{ getLocation(item) }}</view>
										</view>
									</view>
								</view>
							</label>
						</checkbox-group>
						<u-empty class="noDate" style="margin-top: 20vh" v-if="!listData.length"></u-empty>
					</u-list>
				</view>

				<view class="footer">
					<view class="bottom">
						<checkbox v-if="!seletedAll" color="#fff" :checked="seletedAll" @tap="_seletedAll">全选</checkbox>
						<checkbox class="select-all" color="#fff" v-else :checked="seletedAll" @tap="_seletedAll">取消全选
						</checkbox>
					</view>
					<u-button type="success" size="small" class="u-reset-button" :disabled="!checkListLen"
						@click="jumpAdd">
						<view class="selBtn">选择( {{ checkListLen }} )</view>
					</u-button>
				</view>
			</view>
		</view>
	</uni-popup>
</template>

<script>
	import {
		getPackingList
	} from '@/api/warehouseManagement'
	export default {
		data() {
			return {
				warehouse: {},
				cargoSpace: '',
				popupInfo: {
					dimension: 3,
					warehouseId: ''
				},
				dimension: 3,
				warehouseId: '',
				page: 1,
				size: 20,
				isEnd: true,
				searchVal: '',
				pickTabIndex: 1,
				popupShow: false, //右侧搜索窗
				typeIndex: 1,
				listData: [], //列表数据
				seletedAll: false, //全选状态
				bizScene: '',
				warehousingName: '',
				warehousingType: ''
			}
		},
		//选择的列表长度
		computed: {
			checkListLen() {
				return this.listData.filter(el => el.checked).length
			}
		},
		// onLoad(warehouse) {
		// 	if (warehouse.areaName) {
		// 		if (warehouse.shelfCode) {
		// 			if (warehouse.cargoSpaceCode) {
		// 				this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName + '-' + warehouse.shelfCode + '-' + warehouse.cargoSpaceCode
		// 			} else {
		// 				this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName + '-' + warehouse.shelfCode
		// 			}
		// 		} else {
		// 			this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName
		// 		}
		// 	} else {
		// 		this.cargoSpace = warehouse.warehouseName
		// 	}
		// 	this.warehouse = warehouse
		// },
		//触底刷新
		// onReachBottom: function () {
		// 	if (this.isEnd) {
		// 		return
		// 	}
		// 	// 显示加载图标
		// 	uni.showLoading({
		// 		title: '数据加载中'
		// 	})
		// 	//获取更多数据
		// 	this.page++
		// 	this.getList()
		// },
		// onShow() {
		// 	this.doSearch()
		// },
		methods: {
			getLocation(item) {
				if (item.areaName && item.goodsShelfName && item.goodsAllocationName) {
					return item.areaName + '/' + item.goodsShelfName + '/' + item.goodsAllocationName
				} else if (item.areaName && item.goodsShelfName) {
					return item.areaName + '/' + item.goodsShelfName
				} else if (item.areaName) {
					return item.areaName
				} else {
					return ''
				}
			},
			async open(warehouse) {
				this.warehouse = {}
				console.log('warehouse---------', warehouse)
				if (warehouse.areaName) {
					if (warehouse.shelfCode) {
						if (warehouse.cargoSpaceCode) {
							this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName + '-' + warehouse
								.shelfCode + '-' + warehouse.cargoSpaceCode
						} else {
							this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName + '-' + warehouse
								.shelfCode
						}
					} else {
						this.cargoSpace = warehouse.warehouseName + '-' + warehouse.areaName
					}
				} else {
					this.cargoSpace = warehouse.warehouseName
				}
				this.warehouse = warehouse
				this.$refs.popup.open('right')
				this.doSearch()
			},
			scrolltolower() {
				if (this.isEnd) {
					return
				}
				// 显示加载图标
				uni.showLoading({
					title: '数据加载中'
				})
				//获取更多数据
				this.page++
				this.getList()
			},
			//列表数据
			async getList() {
				this.isEnd = false
				this._getClassifyList()
			},
			async _getClassifyList() {
				uni.showLoading({
					title: '数据加载中'
				})
				let res = null
				const params = {
					pageNum: this.page,
					size: this.size,
					keyWord: this.searchVal,
					warehouseId: this.warehouse.warehouseId,
					warehouseAreaId: this.warehouse.areaId,
					warehouseAreaGoodsId: this.warehouse.shelfId,
					warehouseAreaGoodsShelvesId: this.warehouse.cargoSpaceId
				}
				res = await getPackingList(params)
				uni.hideLoading()
				if (this.page == 1) {
					this.listData = res.list.map(item => {
						return {
							...item,
							checked: false
						}
					})
				} else {
					this.listData = this.listData.concat(res.list)
				}

				console.log('this.listData--------------', this.listData)
				this.isEnd = this.listData.length >= res.count
				this.$forceUpdate()
			},
			doSearch() {
				this.page = 1
				this.getList()
			},
			//勾选
			selectVal(e, val, index) {
				this.$set(this.listData[index], 'checked', !this.listData[index].checked)
				// this.listData[index].checked = !this.listData[index].checked
				this.seletedAll = !this.listData.some(item => !item.checked)
			},
			//全选按钮
			_seletedAll() {
				if (!this.seletedAll) {
					this.seletedAll = true
					this.listData.map(item => {
						this.$set(item, 'checked', true)
					})
				} else {
					this.seletedAll = false
					//this.checkListLen = 0;
					this.listData.map(item => {
						this.$set(item, 'checked', false)
					})
				}
			},
			//跳转回添加页面
			async jumpAdd() {
				let selectionList = this.listData.filter(item => item.checked)
				this.$emit('success', selectionList)
				this.backAdd()
			},
			//返回添加页
			backAdd() {
				this.$refs.popup.close()
				this.$emit('cancel')
				this.listData = []
			}
		}
	}
</script>

<style lang="scss" scoped>
	.mainBox {
		height: 100vh;
		width: 100vw;

		.main {
			height: 100%;
			display: flex;
			flex-direction: column;
		}

		.wrapper {
			flex: 1;
			overflow: hidden;
		}

		.top-wrapper {
			display: flex;
			height: 88rpx;
			align-items: center;
			justify-content: space-between;
			padding: 20rpx;

			/deep/.uni-section {
				margin-top: 0px;
			}

			/deep/.uni-section-header {
				padding: 0px;

			}

			.search_btn {
				width: 120rpx;
				height: 70rpx;
				line-height: 70rpx;
				background: $theme-color;
				font-size: 28rpx;
				color: #fff;
			}

			.menu_icon {
				width: 44rpx;
				height: 44rpx;
				margin-left: 14rpx;
			}

			.more_search {
				display: flex;
				align-items: center;
				height: 70rpx;
				line-height: 70rpx;

			}

			/deep/.u-input {
				border: 1rpx solid #ccc;

				.u-input__content__field-wrapper__field {
					height: 40rpx !important;
				}
			}

			image {
				width: 52rpx;
				height: 52rpx;
				margin-left: 10rpx;
			}

		}

		// .searchBox {
		// 	padding: 10rpx 0;
		// 	box-sizing: border-box;
		// 	background-color: #dedede;
		// 	height: 90rpx;
		// 	width: 100%;
		// 	line-height: 90rpx;
		// 	display: flex;
		// 	justify-content: space-around;
		// 	align-items: center;

		// 	input {
		// 		height: 78rpx;
		// 		width: 65%;
		// 		background: #f9f9f9 !important;
		// 		margin: 0 10rpx;
		// 		padding: 0 10rpx;
		// 		box-sizing: border-box;
		// 		border-radius: 5rpx;
		// 	}

		// 	.searchBtn {
		// 		height: 80rpx;
		// 		background: #f9f9f9 !important;
		// 		color: #676767;
		// 		font-size: 28rpx;
		// 		padding: 0 42rpx;
		// 		box-sizing: border-box;
		// 		outline: none;
		// 		border: none;
		// 		width: 260rpx;
		// 		.icon-sousuo {
		// 			font-size: 22px;
		// 		}

		// 		.text {
		// 			font-size: 16px;
		// 			margin-left: 10px;
		// 		}
		// 	}
		// 	.search-icon {
		// 		display: flex;
		// 		align-items: center;
		// 		justify-content: space-around;
		// 		font-size: 28rpx;
		// 		white-space: nowrap;
		// 		margin-left: 10rpx;
		// 		image {
		// 			width: 30rpx;
		// 			height: 30rpx;
		// 		}
		// 	}
		// }

		.tab-title {
			position: fixed;
			top: 190rpx;
			z-index: 99;
			width: 100%;
			display: flex;
			justify-content: space-between;
			align-items: center;
			height: $tab-height;
			line-height: $tab-height;
			background-color: #ffffff;
			border-bottom: 2rpx solid #f2f2f2;
			box-sizing: border-box;

			.tab-item {
				width: 25%;
				text-align: center;
				font-size: 32rpx;
				color: $uni-text-color-grey;
			}

			.tab-item.active {
				color: $j-primary-border-green;
				border-bottom: 1px solid $j-primary-border-green;
				font-weight: bold;
			}

			.tab-item.filter {
				flex: 1;
				padding: 0px 30rpx;

				.uni-icons {
					display: flex;
					padding-top: 5px;
				}
			}

			.screenIcon {
				display: flex;
				width: 80px;
				justify-content: center;

				.screenText {
					font-size: 32rpx;
					color: $uni-text-color-grey;
				}
			}
		}

		.listContent {
			height: 100% !important;

			.listBox {
				display: flex;
				// height: 180rpx;
				padding: 20rpx 0;
				border-top: 2rpx solid #e5e5e5;

				.listBox-sel {
					height: 90rpx;
					width: 80rpx;
					// line-height: 90rpx;
					text-align: center;

					checkbox {
						transform: scale(1.2);
					}
				}

				.listBox-con {
					width: 100%;
					// display: flex;
					// flex-wrap: wrap;
					// justify-content: space-between;
					align-items: center;
					padding: 0 18rpx 0 0;

					.listBox-top {
						width: 100%;
						display: flex;
						justify-content: space-between;
						padding-bottom: 10rpx;

						.listBox-name,
						.listBox-code {
							display: inline-block;
							font-size: $uni-font-size-sm;
							font-weight: bold;
						}
					}

					.listBox-bottom {
						width: 100%;
						display: flex;
						justify-content: space-between;
						font-size: $uni-font-size-sm;
						flex-wrap: wrap;

						>view {
							width: 50%;
							overflow: hidden;
							white-space: nowrap;
							text-overflow: ellipsis;
						}

						.input_view {
							display: flex;
							align-items: center;
							justify-content: center;

							.u-input {
								height: 36rpx;
								padding: 0 !important;
								margin-right: 10rpx;
								border: 1px solid #ddd;
							}
						}

						.w100 {
							width: 100%;
						}
					}
				}
			}

			.noDate {
				height: 100%;
			}
		}

		//底部按钮
		.footer {
			height: 90rpx;
			position: relative;
			display: flex;
			justify-content: space-between;
			align-items: center;
			bottom: 0;
			width: 100%;
			height: 100rpx;
			border-top: 1rpx solid #eeecec;
			background-color: #ffffff;
			z-index: 999;

			.bottom {
				margin-left: 10rpx;
			}

			.u-reset-button {
				position: absolute;
				right: 10rpx;
				top: 20rpx;
				width: 150rpx;
			}
		}

		.search-container {
			width: 70vw;
			padding: 30rpx 36rpx;

			.footer {
				position: absolute;
				bottom: 0;
				left: 0;
				width: 100%;
				display: flex;
				box-shadow: 0 10rpx 30rpx 0 #000;

				.btn {
					width: 50%;
					height: 80rpx;
					border-radius: 0 !important;
					flex: 1;
					display: flex;
					justify-content: center;
					align-items: center;

					&.reset {
						color: $j-primary-border-green;
					}

					&.search {
						color: #fff;
						background-color: $j-primary-border-green;
					}
				}
			}

			.title {
				font-weight: bold;
				font-size: 30rpx;
			}

			.status-wrapper {
				display: flex;
				align-items: center;
				justify-content: space-between;

				view {
					background-color: rgba(242, 242, 242, 1);
					height: 60rpx;
					border-radius: 30rpx;
					line-height: 60rpx;
					text-align: center;
					width: 160rpx;
					border: 1rpx solid rgba(242, 242, 242, 1);

					&.active {
						color: #157a2c;
						border-color: rgba(21, 122, 44, 1);
					}
				}
			}

			/deep/.uni-date {
				.uni-icons {
					display: none;
				}

				.uni-date-x {
					padding: 0;

					view {
						margin: 0 20rpx;
					}
				}
			}

			/deep/.uni-date__x-input,
			/deep/.uni-easyinput__content-input {
				height: 60rpx;
				border-radius: 30rpx;
				overflow: hidden;
				background-color: rgba(242, 242, 242, 1);
			}
		}
	}
</style>