<template>
	<view>
		<view class="title_box rx-bc">
			<view class="name">半成品 - 报工信息： ({{list.length || 0}})个</view>
		</view>


		<view class="material " v-for="(it, idx) in list" :key="idx">


			<view class="content_table">

				<view class="item rx-sc">
					<view class="rx">
						<view class="lable lable190 rx-cc ">

							<view class="round">{{idx + 1}}</view>物料编码
						</view>
						<view class="content rx-sc">
							<view>{{it.code}}</view>
						</view>
					</view>
				</view>

				<view class="item rx-sc">
					<view class="rx">
						<view class="lable lable150 rx-cc ">名称</view>
						<view class="content rx-sc">
							<view>{{it.name}}</view>
						</view>
					</view>
				</view>

				<view class="item rx-sc">
					<view class="rx">
						<view class="lable lable150 rx-cc ">型号</view>
						<view class="content rx-sc">
							<view>{{it.modelType}}</view>
						</view>
					</view>
				</view>



				<view class="item rx-sc">
					<view class="rx ww50 ">
						<view class="lable lable150 rx-cc ">物料代号</view>
						<view class="content content_num">
							<view v-if='isDetails'>{{it.extInfo.materielCode }}</view>
							<input class="uni-input" v-else v-model="it.extInfo.materielCode"></input>

						</view>
					</view>

					<view class="rx ww50">
						<view class="lable lable150 rx-cc ">客户代号</view>
						<view class="content content_num">
							<view v-if='isDetails'>{{it.extInfo.clientCode }}</view>
							<input class="uni-input" v-else v-model="it.extInfo.clientCode"></input>
						</view>
					</view>

				</view>


				<view class="item rx-sc">
					<view class="rx ww50 ">
						<view class="lable lable150 rx-cc ">刻码</view>
						<view class="content content_num ">
							<view v-if='isDetails'>{{it.extInfo.engrave }}</view>
							<input class="uni-input" v-else v-model="it.extInfo.engrave"></input>

						</view>
					</view>

					<view class="rx ww50">
						<view class="lable lable150 rx-cc ">位置</view>
						<view class="content content_num">
							<view v-if='isDetails'>{{it.extInfo.position }}</view>
							<input class="uni-input" v-else v-model="it.extInfo.position"></input>
						</view>
					</view>

				</view>



			</view>



			<view class="content_table2">
				<view class="head row rx-sc">
					<view class="item ww25">{{isFirstTask == 1 ? '物料重量' : '工序重量'}} {{it.extInfo.weightUnit}}</view>
					<view class="item ww25">报工重量{{it.extInfo.weightUnit}}</view>
					<view class="item ww25" v-if="isFirstTask == 1">质检结果
					</view>
					<view class="item ww25" :class="[  isFirstTask == 1 ? 'ww25' : 'ww50' ]">处置
					</view>

				</view>

				<view class="table">

					<view class="tr row rx-sc">
						<view class="item ww25">{{isFirstTask == 1 ? it.extInfo.weight :   it.extInfo.newWeight }}
						</view>
						<view class="item ww25 content_num">
							<view v-if='isDetails'>{{it.extInfo.reportWeight }}</view>
							<input class="uni-input" v-else v-model="it.extInfo.reportWeight"></input>
						</view>
						<view class="item ww25" @click="openNumerate(it, idx)" v-if="isFirstTask == 1">
							<view class="numerate">点击计算</view>
						</view>




						<view class="item" v-if='isDetails' :class="[ isFirstTask == 1 ? 'ww25' : 'ww50' ]">
							{{it.extInfo.taskName}}
						</view>

						<view class="item " v-else :class="[ isFirstTask == 1 ? 'ww25' : 'ww50' ]">
							<zxz-uni-data-select :localdata="stepsList" v-model="it.extInfo.taskId" dataValue='taskId'
								format='{taskTypeName}' dataKey="taskId" filterable   @change=" e => it.extInfo.taskName = e.taskTypeName" 
								:clear='false'></zxz-uni-data-select>

						</view>


					</view>

				</view>

			</view>



		</view>



		<u-popup :show="show" mode='center' v-if='show' :closeOnClickOverlay='false'>
			<view class="popup_box">

				<view class="title_box rx-bc">
					<view class="name">工序计算列表</view>
					<view class="btn_box rx-ec">
						<view class="btn" @click="handAddParam">新增</view>


					</view>

				</view>

				<view class="content_table2">
					<view class="head row rx-sc">
						<view class="item ww30">工序名称</view>
						<view class="item ww20">坯体密度</view>
						<view class="item ww20">密度系数</view>
						<view class="item ww20">重量</view>




						<view class="item ww10">操作</view>

					</view>

					<view class="table">

						<view class="tr row rx-sc" v-for="(it, idx) in paramList" :key='idx'>
							<view class="item  rx-bc ww30">
								<zxz-uni-data-select :localdata="stepsList" v-model="it.taskId" dataValue='taskId'
									format='{taskTypeName}' dataKey="taskId" filterable
									@change=" e => it.taskName = e.taskTypeName" :clear='false'></zxz-uni-data-select>
							</view>


							<view class="item ww20 content_num">
								<input class="uni-input" v-model="it.billet" type="digit"
									@input="changeInp(it, idx)"></input>
							</view>


							<view class="item ww20 content_num">
								<input class="uni-input" v-model="it.density" type="digit"
									@input="changeInp(it, idx)"></input>
							</view>



							<view class="item ww20" v-if=" (idx == 0 || idx != paramList.length - 1)">
								< {{it.CVIWeight}} </view>

									<view class="item ww20" v-if=" paramList.length > 1 && idx == paramList.length - 1">
										≥ {{it.CVIWeight }}
									</view>

							</view>






						</view>

						<view class="formula_box">计算公式： 物料重量/坯体密度*密度系数 </view>


						<view class="rx-cc">
							<u-button size="small" class="u-reset-button" style="width: 300rpx;margin: 20rpx;"
								type="success" @click="paramSave">工序列表保存</u-button>
						</view>

						<view class="reportWeight rx-sc">
							物料重量: {{weight}} ;
							报工重量: {{reportWeight}}

						</view>



					</view>


					<view class="operate_box rx-sc">
						<u-button size="small" class="u-reset-button" @click="cancel">取消</u-button>
						<u-button size="small" class="u-reset-button" type="success" @click="save">确定</u-button>
					</view>
				</view>


		</u-popup>



	</view>
</template>

<script>
	import {
		getTaskInstanceList
	} from '@/api/pda/workOrder.js'

	import {
		saveParam,
		getComputeParam
	} from '@/api/pda/tangu.js'
	export default {
		props: {
			item: {
				type: Object,
				default: () => {}
			},

			list: {
				type: Array,
				default: () => []
			},

			isDetails: {
				type: Boolean,
				default: false

			}




		},

		watch: {

		},


		data() {
			return {
				taskTypeName: null,
				isFirstTask: null,

				stepsList: [],



				show: false,



				rowIt: [],

				paramList: [],
				paramObj: {},


				weight: 0,
				reportWeight: 0,

				resultObj: {},
				resultIdx: 0,





			}
		},
		created() {
			this.taskTypeName = this.item.currentTaskDiagram.taskTypeName
			this.isFirstTask = this.item.currentTaskDiagram.isFirstTask
			this.getSteps()
			this.getCompute()

		},
		methods: {




			getSteps() {

				getTaskInstanceList(this.item.workOrderId).then(res => {
					this.stepsList = res
				})
			},

			getCompute() {
				getComputeParam(this.item.workOrderId, this.item.currentTaskDiagram.taskId).then(res => {
					this.paramList = []
					this.paramList = res.paramList
					this.paramObj = res
				})
			},


			handAddParam() {
				// billet: null,
				// density: null,
				// result: null,

				// PIPDensity: null,
				// volume: null,
				// coefficient: null

				if (this.isFirstTask == 1) {
					this.paramList.push({
						taskId: null,
						taskName: null,

					})
				}


			},

			getDelete(idx) {
				this.paramList.splice(idx, 1)
			},

			changeInp(item, index) {
				if (Number(item.billet) && Number(item.density)) {
					this.paramList[index].CVIWeight = (Number(this.weight) / item.billet * item.density).toFixed(2)

				}

			},


			paramSave() {


				if (this.isFirstTask == 1 && this.paramList.length > 0) {
					let bol
					let _i
					bol = this.paramList.every((e, i) => {
						_i = i + 1
						return e.taskId && e.billet && e.density
					})

					if (!bol) {
						uni.showToast({
							title: `请完善第${_i}计算数据`,
							icon: 'none'
						})
						return false
					}

					if (this.paramList.length < 1) {
						uni.showToast({
							title: `请输入二个以上计算数据`,
							icon: 'none'
						})

						return false
					}


				}
				let param = {}

				if (!this.paramObj.hasOwnProperty('id')) {

					param = {
						paramList: this.paramList,
						workOrderId: this.item.workOrderId,
						taskId: this.item.currentTaskDiagram.taskId
					}

				} else {

					this.paramObj.paramList = this.paramList
					param = this.paramObj
				}




				saveParam(param).then(res => {
					uni.showToast({
						icon: 'none',
						title: '操作成功'
					})
					this.getCompute()



				})

			},

			openNumerate(row, idx) {
				if (!row.extInfo.reportWeight) {
					uni.showToast({
						icon: 'none',
						title: '请先输入报工重量'
					})
					return false
				}
				this.weight = row.extInfo.weight
				this.reportWeight = row.extInfo.reportWeight
				this.resultIdx = idx



				this.show = true
			},



			cancel() {
				this.show = false
				this.reportWeight = 0
				this.weight = 0
			},

			taskChange(e) {
				console.log(e)
			},

			save() {


				if (this.isFirstTask == 1) {

					this.resultObj = {}


					if (Number(this.reportWeight) < this.paramList[0].CVIWeight) {
						this.resultObj = this.paramList[0]
						this.setDataSave()
						return false
					}


					if (Number(this.reportWeight) >= this.paramList[this.paramList.length - 1].CVIWeight) {
						this.resultObj = this.paramList[this.paramList.length - 1]
						this.setDataSave()
						return false
					}

					for (let i = 1; i < this.paramList.length; i++) {
						if (Number(this.paramList[i - 1].CVIWeight) < Number(this.reportWeight) <= Number(this.paramList[i]
								.CVIWeight)) {
							this.resultObj = this.paramList[i]
							break;
						}
					}

					this.setDataSave()




				}

			},

			setDataSave() {

				this.$set(this.list[this.resultIdx].extInfo, 'taskId', this.resultObj.taskId)
				this.$set(this.list[this.resultIdx].extInfo, 'density', this.resultObj.density)
				this.$set(this.list[this.resultIdx].extInfo, 'billet', this.resultObj.billet)
				this.$set(this.list[this.resultIdx].extInfo, 'taskName', this.resultObj.taskName)


				this.cancel()
			},



		}
	}
</script>

<style lang="scss" scoped>
	.title_box {
		margin-top: 20rpx;

		.name {
			font-size: 28rpx;
			font-style: normal;
			font-weight: 400;
			color: $theme-color;
			padding-left: 20rpx;

			position: relative;

			&:before {
				position: absolute;
				content: '';
				left: 0rpx;
				top: 0rpx;
				bottom: 0rpx;
				width: 4rpx;
				height: 28rpx;
				background: $theme-color;
				margin: auto;
			}


		}

		.btn_box {

			.btn {
				padding: 0 18rpx;
				height: 50rpx;
				line-height: 50rpx;
				background: $theme-color;
				font-size: 26rpx;
				font-style: normal;
				font-weight: 400;
				font-size: 24rpx;
				color: #fff;
				border-radius: 4rpx;
				margin-left: 24rpx;
			}
		}



	}


	.material {
		margin-top: 10rpx;



		.content_table {
			width: 100%;
			border: 2rpx solid $border-color;

			.item {
				display: flex;
				border-bottom: 2rpx solid $border-color;


				.lable {
					width: 132rpx;
					text-align: center;
					background-color: #F7F9FA;
					font-size: 26rpx;
					border-right: 2rpx solid $border-color;
					flex-shrink: 0;
				}

				.lable150 {
					width: 156rpx !important;
					font-size: 24rpx;
				}

				.lable190 {
					width: 190rpx !important;
					font-size: 24rpx;
				}

				.ww80 {
					width: 80rpx;
				}

				.content {
					width: 518rpx;
					min-height: 64rpx;
					font-size: 28rpx;
					line-height: 28rpx;
					font-style: normal;
					font-weight: 400;
					padding: 18rpx 8rpx;
					box-sizing: border-box;
					word-wrap: break-word;
					flex-grow: 1 !important;


					.unit {
						padding: 0 4rpx;
						font-size: 24rpx;
						color: #404446;
					}

					.penalize {
						width: 160rpx;
						line-height: 60rpx;
						background: $theme-color;
						font-size: 24rpx;
						text-align: center;
						color: #fff;
					}

				}



				.content_H {
					min-height: 92rpx;
				}

				.pd4 {
					padding: 4rpx 8rpx;
				}



				&:last-child {
					border-bottom: none;
				}
			}

			.ww55 {
				width: 55%;
			}

			.ww50 {
				width: 50%;
			}

			.ww45 {
				width: 45%;
			}
		}
	}




	.content_table2 {
		width: 100%;
		margin-top: 16rpx;


		.row {
			width: 100%;


			.item {

				color: #404446;
				font-size: 28rpx;
				padding-left: 12rpx;

			}

			.color157 {
				color: $theme-color;
			}


			.ww30 {
				width: 30%;
			}

			.ww20 {
				width: 20%;
			}

			.ww15 {
				width: 15%;
			}

			.ww25 {
				width: 25%;
			}

			.ww50 {
				width: 50%;
			}

			.ww10 {
				width: 10%;
			}

		}

		.head {
			height: 64rpx;
			background: #F7F9FA;
			border-top: 2rpx solid #E3E5E5;
			border-left: 2rpx solid #E3E5E5;

			.item {
				height: 64rpx;
				line-height: 64rpx;
				border-right: 2rpx solid #E3E5E5;
				box-sizing: border-box;
				font-size: 22rpx;
			}
		}



		.tr {
			border-top: 2rpx solid #E3E5E5;
			border-left: 2rpx solid #E3E5E5;


			.item {
				font-size: 24rpx;
				min-height: 74rpx;
				display: flex;
				align-items: center;
				border-right: 2rpx solid #E3E5E5;
				box-sizing: border-box;
				white-space: normal;
				word-break: break-all;

			}


			&:last-child {
				border-bottom: 2rpx solid #E3E5E5;

			}

			.numerate {
				font-size: 22rpx;
				color: $theme-color;
			}
		}
	}

	.content_num {
		display: flex;
		align-items: center;
		padding: 0 4rpx;

		/deep/ .uni-input-input {
			border: 2rpx solid #F0F8F2;
			background: #F0F8F2;
			color: $theme-color;
		}


	}

	.round {
		width: 32rpx;
		height: 32rpx;
		line-height: 32rpx;
		text-align: center;
		border-radius: 50%;
		background: $theme-color;
		font-size: 24rpx;
		font-style: normal;
		font-weight: 400;
		color: #fff;
		margin-right: 18rpx;
	}


	.popup_box {
		width: 94vw;
		padding: 16rpx 12rpx;
		box-sizing: border-box;

	}



	.operate_box {
		margin-top: 32rpx;
		padding: 10rpx 100rpx;

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


	.formula_box {
		font-size: 24rpx;
		font-style: normal;
		font-weight: 400;
		margin-top: 12rpx;
	}

	.reportWeight {
		font-size: 24rpx;
		font-style: normal;
		font-weight: 400;
		margin-top: 30rpx;

		text {
			color: $theme-color;
		}
	}
</style>