<template>
	<view class="content-box">
		<uni-nav-bar fixed="true" statusBar="true" left-icon="back" :title="title" background-color="#F7F9FA"
			color="#000" @clickLeft="back">
		</uni-nav-bar>


		<view class="list_box">
			<u-list @scrolltolower="scrolltolower">
				<view class="card_box" v-for="(item,index) in List" :key="index">
					<workOrderBom :item='item' v-if='item' @handleScan='handleWordScan'></workOrderBom>

					<deviceBom v-if='item.equipmentList.length != 0' :workOrderId='item.workOrderId'
						:list='item.equipmentList' @scanIt='scanIt'></deviceBom>
						
						<turnoverBom v-if='item.turnover.length != 0' :list='item.turnover' :wordItem='item' pattern='job'
							>
						</turnoverBom>
						


					<view class="operate_box rx-sc">
						<u-button size="small" class="u-reset-button" type="success"
							@click="handAdd(item.workOrderId)">手动添加</u-button>
						<u-button size="small" class="u-reset-button" type="success"
							@click="scanIt(item.workOrderId)">扫一扫</u-button>
					</view>



					<diagramLast :item='item.lastObj' v-if='item && item.workOrderType != 2'></diagramLast>


					<inspectionBom v-if='inspectionList.length' :inspectionList='inspectionList'
						:normalQuality='item.normalQuality'></inspectionBom>



				</view>
			</u-list>
		</view>

		<view class="bottom-wrapper">
			<view class="btn_box" @click="save">确认</view>
		</view>




	</view>


</template>

<script>
	import {
		workorderList,
		getLastTreeByPid,
		scanLedger,
		qualityReview
	} from '@/api/pda/workOrder.js'
	import {
		batchSave
	} from '@/api/pda/feeding.js'

	import workOrderBom from '../../feeding/components/workOrderBom.vue'
	import inspectionBom from '../components/inspectionBom.vue'
	import deviceBom from '../../feeding/components/deviceBom.vue'
	import diagramLast from '../components/diagramLast.vue'
	
	import turnoverBom from '../../sample/components/turnoverBom.vue'

	export default {
		components: {
			workOrderBom,
			inspectionBom,
			deviceBom,
			diagramLast,
			turnoverBom
		},
		data() {
			return {
				title: null,
				id: null,
				taskId: null,

				inspectionId: null,
				inspectionName: null,
				List: [],
				inspectionList: [],

				isLastJob: true


			}
		},

		onLoad(options) {
			this.title = options.taskName ? options.taskName + '-' + options.inspectionName : '质检'
			this.inspectionId = options.inspectionId
			this.inspectionName = options.inspectionName
			this.id = options.workOrderId
			this.taskId = options.taskId
			this.getList()


			this.getLastTree()

		},

		onShow() {
			uni.$off("setSelectList");

			uni.$on("setSelectList", (selectList, id) => {

				this.List.forEach(m => {
					if (m.workOrderId == id) {
						let equipmentList = [] // 生产设备
						let turnover = []

						selectList.forEach(f => {
							if (f.rootCategoryLevelId == 4) {
								equipmentList = equipmentList.concat(f)
							}

							if (f.rootCategoryLevelId == 7) {
								turnover = turnover.concat(f)
							}
						})

						this.$set(m, 'equipmentList', equipmentList)
						this.$set(m, 'turnover', turnover)

					}

				})

			})
		},

		methods: {
			getList() {
				workorderList({
					ids: [this.id],
					taskId: this.taskId,

				}).then(res => {


					this.List = res.map(m => {
						m.workOrderId = m.id

						m.equipmentList = [] // 设备
						m.turnover = [] // 周转车




						if (m.normalQuality != null || m.workOrderType == 2) {
							this.$set(m, 'normalQuality', {})
							m.normalQuality.quantity = 0
							m.normalQuality.inspectionId = this.inspectionId
							m.normalQuality.inspectionName = this.inspectionName
						} else {
							this.isLastJob = false
						}


						m.lastObj = {
							formedNum: m.formedNumLast,
							taskNameLast: m.taskNameLast,
							unit: m.unit
						}
						m.feedType = 3

						delete m.id

						if (this.taskId) {
							m.taskId = this.taskId
						}
						return {
							...m
						}
					})
				})
			},



			getLastTree() {


				getLastTreeByPid(this.inspectionId).then(res => {

					this.inspectionList = res

					this.inspectionList.push({
						id: -1,
						name: '废品总数量'
					})

					this.getGualityReview()
				})
			},

			getGualityReview() {
				let param = {
					inspectionId: this.inspectionId,
					workOrderId: this.id,
					taskId: this.taskId,
				}
				qualityReview(param).then(res => {
					if (res && res.extInfo && res.extInfo.inspectionList) {
						this.inspectionList = res.extInfo.inspectionList
					}
				})

			},



			scrolltolower() {},
			handleWordScan() {
				uni.showToast({
					icon: 'none',
					title: '不支持换工单'
				})
			},

			scanIt(id) {


				let _this = this
				uni.scanCode({
					success: function(res) {
						_this.scanItData(res.result, id)
					}
				})
			},

			scanItData(result, id) {
				scanLedger(result).then(res => {

					let _arr = []
					if (res.length == 1 && res[0].rootCategoryLevelId == 4) { // 设备
						_arr = this.List
						_arr.forEach((e, index) => {
							if (e.workOrderId == id) {
								_arr[index].equipmentList = res
							}
						})
						this.List = _arr
						this.$forceUpdate()

					}


					if (res.length == 1 && res[0].rootCategoryLevelId == 7) { // 周转车
						_arr = this.List
						_arr.forEach((e, index) => {
							if (e.workOrderId == id) {
								_arr[index].turnover = res
							}
						})
						this.List = _arr
						this.$forceUpdate()

					}


				})

			},

			save() {

				if (!this.isLastJob) {
					uni.showToast({
						icon: 'none',
						title: '上道工序暂未报工'
					})
					return false

				}


				if (this.List[0].normalQuality.quantity < 0) {

					uni.showToast({
						icon: 'none',
						title: '废品数量小于0'
					})
					return false
				}

				if (this.List[0].normalQuality.formedNum - this.List[0].normalQuality.quantity < 0) {
					uni.showToast({
						icon: 'none',
						title: '废品数量不能大于合格数量'
					})
					return false
				}


				this.List[0].normalQuality.inspectionList = this.inspectionList

				batchSave(this.List).then(res => {
					uni.navigateBack()
				})
			},


			handAdd(id) {
				console.log(id)

				const storageKey = Date.now() + "";
				uni.setStorageSync(storageKey, this.List || []);
				uni.navigateTo({
					url: `/pages/pda/workOrder/search/index?id=${id}&storageKey=${storageKey}&isType=zdy&taskId=${this.taskId}&classIds=[4,7]`
				})
			},


		}
	}
</script>
<style lang="scss" scoped>
	.content-box {
		height: 100vh;
		overflow: hidden;
		display: flex;
		flex-direction: column;

	}

	.list_box {
		flex: 1;
		overflow: hidden;
		padding: 4rpx 0;

		.u-list {
			height: 100% !important;
		}

		.card_box {
			padding: 16rpx 24rpx;
		}



	}

	.bottom-wrapper {
		.btn_box {
			width: 750rpx;
			height: 88rpx;
			line-height: 88rpx;
			background: $theme-color;
			text-align: center;
			font-size: 36rpx;
			font-style: normal;
			font-weight: 400;
			color: #fff;
		}
	}


	.operate_box {
		padding: 10rpx 160rpx;

		/deep/ .u-button {
			width: 160rpx;
		}
	}
</style>