<!-- 订单详情 -->
<template>
	<view class="container-wrap">
		<uni-nav-bar title="订单详情" :status-bar="true" background-color="#3F92F9" color="#FFF">
			<view slot="left">
				<u-icon name="account-fill" color="#FFF" size="35"></u-icon>
				<span style="padding: 0 5rpx;color: #FFFFFF;">{{ userInfo.name }}</span>
			</view>
			<view slot="right" @tap="$utils.back()">
				<span style="color: #FFFFFF;">返回</span>
			</view>
		</uni-nav-bar>
		<view class="container">
			<div class="top">
				<view class="info">
					<view class="row">
						<view class="col">
							<view class="label">合同号:</view>
							<view class="value">{{ option.purchaseBillNo }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">批次号:</view>
							<view class="value">{{ option.batchNo }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">供应商:</view>
							<view class="value">{{ option.supplier }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">物料名称:</view>
							<view class="value">{{ option.materialName }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">物料规格:</view>
							<view class="value">{{ option.spec }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">到货时间:</view>
							<view class="value">{{ option.arriveTime }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">申购数量:</view>
							<view class="value">{{ option.purchaseCount }}</view>
						</view>
						<view class="col">
							<view class="label">到货数量:</view>
							<view class="value">{{ option.inStockQty }}</view>
						</view>
					</view>
				</view>
				<view class="title">质检记录</view>
				<view class="sub-title">共有{{ option.checkNum }}个物料待质检</view>
			</div>
			<view class="list">
				<view class="item" v-for="(item, index) in list" :key="item.checkDetailId">
					<view class="row"> 
						<view class="col">
							<view class="label">标签值:</view>
							<view class="value">{{ item.rfidCode }}</view>
						</view>
					</view>
					<view class="row">
						<view class="col">
							<view class="label">物料名称:</view>
							<view class="value">{{ item.materialName }}</view>
						</view>
					</view>
					<view class="row border">
						<view class="col">
							<view class="label">物料数量:</view>
							<view class="value">{{ item.quantity }}</view>
						</view>
					</view>
					<view class="row border" style="justify-content: center;padding-bottom: 20rpx;">
						<span>质检结论:</span>
						<span 
							:class="item.checkJudgment === 0 ? 'orange' : item.checkJudgment === 1 ? 'blue' : 'red'"
						>
							{{ item.checkJudgment === 0 ? '目测合格' : item.checkJudgment === 1 ? '合格' : '不合格' }}
						</span>
					</view>
					<view class="row" style="justify-content: center;">
						<span style="color: red;font-weight: bold;" @tap="del(index)">删除</span>
					</view>
				</view>
			</view>
			<view class="btn" v-if="option.stockBatchNum === 0">
				<u-button v-if="option.hasExemptInspec" disabled throttleTime="300" type="primary" style="width: 100%;">免检审批中</u-button>
				<u-button v-else throttleTime="300" type="primary" plain style="width: 100%;" @click="toNoChack">申请免检</u-button>
			</view>
			<view class="btn" v-else-if="option.stockBatchNum >= option.checkNum">
				<u-button v-if="option.checkNum === list.length" throttleTime="300" type="primary" style="width: 100%;" @click="(cfmShow = true) && (isNoCheck = false)">结束质检</u-button>
				<u-button v-else throttleTime="300" type="primary" style="width: 100%;" @click="bind">开始质检</u-button>
			</view>
			<view class="btn" v-else>
				<u-button v-if="(option.stockBatchNum === list.length) && (option.hasExemptInspec)" disabled type="primary" style="width: 100%;">免检审批中</u-button>
				<u-button v-if="(option.stockBatchNum === list.length) && (!option.hasExemptInspec)" throttleTime="300" type="primary" style="width: 100%;" @click="(cfmShow = true) && (isNoCheck = true)">结束质检</u-button>
				<u-button v-if="option.stockBatchNum !== list.length" throttleTime="300" type="primary" style="width: 100%;" @click="bind">开始质检</u-button>
			</view>
			<!-- 物料修正 -->
			<u-modal
				v-model="show" 
				:show-title="false"
				:show-confirm-button="false"
				:show-cancel-button="false"
			>
				<view class="modal">
					<view class="img">
						<image :src="error" mode="widthFix"></image>
					</view>
					<view class="content">
						质检出现布料短少记录<br/>
						将自动发起数量修正
					</view>
					<view class="btn">
						<u-button throttleTime="300" type="primary" size="medium" style="width: 250rpx;" @click="toChange">确认</u-button>
					</view>
				</view>
			</u-modal>
			<u-modal
				v-model="delShow" 
				:show-confirm-button="true"
				:show-cancel-button="true"
				@confirm="delCfm"
			>
				<view class="modal">
					<view class="content">
						是否删除?
					</view>
				</view>
			</u-modal>
			<my-dialog v-model="cfmShow" title="本次质检结果为:" :closeOnClickOverlay="true"
				@cancelClick="cfmShow = false" @cfmClick="over">
				<view slot="content" style="width: 100%;padding: 0 20rpx;">
					<view class="row">
						<view class="col" style="justify-content: center;">
							<view class="label" style="width: 160rpx;font-size: 32rpx;font-weight: bold;color: #19BE6B;">合格:</view>
							<view class="value" style="flex: 0;font-size: 32rpx;font-weight: bold;color: #19BE6B;">
								{{ list.filter(item => item.checkJudgment === 1).length }}
							</view>
						</view>
					</view>
					<view class="row">
						<view class="col" style="justify-content: center;">
							<view class="label" style="width: 160rpx;font-size: 32rpx;font-weight: bold;color: #834100;">目测合格:</view>
							<view class="value" style="flex: 0;font-size: 32rpx;font-weight: bold;color: #834100;">
								{{ list.filter(item => item.checkJudgment === 0).length }}
							</view>
						</view>
					</view>
					<view class="row">
						<view class="col" style="justify-content: center;">
							<view class="label" style="width: 160rpx;font-size: 32rpx;font-weight: bold;color: #d50000;">不合格:</view>
							<view class="value" style="flex: 0;font-size: 32rpx;font-weight: bold;color: #d50000;">
								{{ list.filter(item => item.checkJudgment === 2).length }}
							</view>
						</view>
					</view>
				</view>
			</my-dialog>
		</view>
	</view>
</template>

<script>
	import error from '../../../static/images/error.png'
	export default {
		data() {
			return {
				index: '',
				error,
				cfmShow: false,
				delShow: false,
				show: false,
				option: {},
				list: [],
				changeData: {},
				isNoCheck: false, // 是否免检
				isCfm: false, // 是否已结束质检
			};
		},
		methods: {
			/* 申请免检 */
			toNoChack () {
				this.$utils.open(`/pages/store-in-manage/quality/quality-no-check?data=${this.$utils.object2Code(this.option)}`)
			},
			delCfm() {
				this.list.splice(this.index, 1)
				this.$storage.setStorage(this.option.stockQuantityCheckId, this.list)
				this.index = ''
			},
			/* 删除质检记录 */
			del(index) {
				this.index = index
				this.delShow = true
			},
			/* 跳转数量修正 */
			toChange() {
				let data = {
					...this.changeData,
					...this.option
				}
				this.$utils.open(`/pages/store-in-manage/quality/quality-update?data=${this.$utils.object2Code(data)}`)
			},
			/* 结束质检 跳转数量修正 */
			over() {
				if(this.isNoCheck && this.option.hasQtyAdjust) {
					/* 如果结束质检需要免检 且已数量修正 */
					return this.$utils.open(`/pages/store-in-manage/quality/quality-no-check?data=${this.$utils.object2Code(this.option)}`)
				} else if(this.isNoCheck && this.isCfm) {
					/* 如果结束质检需要免检 且已结束质检 */
					if(this.option.hasQtyAdjust) {
						/* 已提交且已数量修正 */
						return this.$utils.open(`/pages/store-in-manage/quality/quality-no-check?data=${this.$utils.object2Code(this.option)}`)
					} else {
						this.$http.GetQuantityCheckLake({
							stockQuantityCheckId: this.option.stockQuantityCheckId
						}).then(res => {
							if(res.code === 0) {
								this.changeData = {
									...res.result,
									isNoCheck: true
								}
								this.cfmShow = false
								this.show = true
							}
						})
						return
					}
				}
				console.log('over')
				console.log(this.list)
				this.$http.SubmitStockCheck({
					dataItems: this.list,
					uniqueCode: this.option.stockQuantityCheckId
				}).then(res => {
					console.log(res)
					if(res.code === 0) {
						this.cfmShow = false
						this.$http.GetQuantityCheckLake({
							stockQuantityCheckId: this.option.stockQuantityCheckId
						}).then(res => {
							console.log(res)
							if(res.code === 0) {
								if(this.isNoCheck) {
									/* 需要数量修正 且需要免检 */
									this.changeData = {
										...res.result,
										isNoCheck: true
									}
								} else {
									this.changeData = {
										...res.result
									}
								}
								this.show = true
							} else {
								/* 如果结束质检 不需要数量修正 */
								if(this.isNoCheck) {
									/* 需要免检 */
									return this.$utils.open(`/pages/store-in-manage/quality/quality-no-check?data=${this.$utils.object2Code(this.option)}`)
								} else {
									this.$storage.removeStorageSync(this.option.stockQuantityCheckId)
									this.$utils.back()
								}
							}
						})
					}
				})
			},
			/* 绑定标签 */
			bind() {
				this.$utils.open(`/pages/store-in-manage/quality/quality-scan?id=${this.option.stockQuantityCheckId}`)
			},
			/* 获取质检列表 */
			getList() {
				this.$http.GetStockCheckRecord({
					stockQuantityCheckId: this.option.stockQuantityCheckId
				}).then(res => {
					console.log(res)
					if(res.code === 0) {
						this.list = res.result
						if (this.list.length === 0) {
							this.list = this.$storage.getStorageSync(this.option.stockQuantityCheckId) || []
							console.log('?????list')
							console.log(this.list)
						} else {
							/* 如果接口列表有数据则代表该质检单已提交过 */
							this.isCfm = true
						}
					}
				})
			}
		},
		onLoad(option) {
			this.option = this.$utils.code2Object(option.data)
			this.getList()
			uni.$on('getScanData', res => {
				let data = this.$utils.code2Object(res)
				console.log(data)
				let findObj = this.list.find(item => item.rfidCode === data.rfidCode)
				if (findObj) {
					this.$msg.showToast('物料已质检!')
				} else {
					this.list.push(this.$utils.code2Object(res))
					this.$storage.setStorage(this.option.stockQuantityCheckId, this.list)
				}
			})
		},
		onShow() {
			// this.getList()
		},
		onUnload() {
			uni.$off('getScanData')
		}
	}
</script>

<style lang="scss" scoped>
.container-wrap {
	overflow: hidden;
	.container {
		padding: 10rpx;
		height: calc(100vh - var(--status-bar-height) - 44px);
		overflow: hidden;
		display: flex;
		flex-direction: column;
		.top {
			.info {
				padding: 10rpx 20rpx;
				font-size: 32rpx;
			}
			.title {
				margin-top: 20rpx;
				font-size: 36rpx;
				font-weight: bold;
				text-align: center;
			}
			.sub-title {
				padding: 10rpx 0;
				font-size: 24rpx;
				text-align: center;
				color: #7f7f7f;
			}
		}
		.list {
			padding: 10rpx 0;
			margin-bottom: 10rpx;
			flex: 1;
			overflow: auto;
			background-color: #FFFFFF;
			.item {
				padding: 20rpx;
				margin-bottom: 10rpx;
				background-color: #FFFFFF;
				border: 1rpx solid rgba(215, 215, 215, 1);
				border-radius: 10rpx;
				.row {
					&.border {
						border-bottom: 1px solid rgba(215, 215, 215, 1);
					}
					.orange {
						color: rgb(245, 154, 35);
					}
					.blue {
						color: #02A7F0;
					}
					.red {
						color: red;
					}
				}
			}
		}
	}
}
.modal {
	padding: 40rpx 0;
	text-align: center;
	.img {
		margin: auto;
		width: 200rpx;
	}
	.content {
		padding: 30rpx 0;
		font-size: 36rpx;
		font-weight: bold;
	}
}
</style>