<template>
	<view class="uni-column container">
		<scroll-view class="scroll-container" scroll-y>
			<view v-for="(item, index) in listData" :key="index" class="list-item">
				<view class="title-container">
					<view class="title uni-row">
						<text class="label">批次号:</text>
						<text class="label code"> {{ item['lotCode'] }}</text>
					</view>
					<view class="uni-row">
						<view class="right-info uni-row"> <text class="label">工时</text>
							<text class="label time">{{ item['taskTime'] }}</text>
							<!-- <text class="label time">{{ item['taskTime'] }}h</text> -->
						</view>
						<view class="right-info uni-row" style="margin-left: 50rpx;"> <text class="label">合格数</text>
							<text class="label number ">{{ item['qualifiedNum'] }}</text>
						</view>
					</view>
				</view>
				<view class="item-info uni-row">
					<text class="label">产品描述</text>
					<text class="label right">{{ curSubDetails['productDescription'] }}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">操作者</text>
					<text class="label right">{{ item['nickName'] }}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">开始时间</text>
					<text class="label right">{{ item['startTime']}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">结束时间</text>
					<text class="label right">{{ (item['endTime'] !="")?item['endTime']:'-'}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">废品数</text>
					<text class="label right">{{ item['rejectNum']}}</text>
				</view>
				<view class="item-info uni-row">
					<text class="label">废品原因</text>
					<text class="label right">{{ (item['reason'] != "")?item['reason']:'-'}}</text>
				</view>

				<!-- 		<view v-if="item['userId'] == userInfo['userId'] ? item['status'] == 0 : false" class="status-btn uni-row ">
					<button class="finished-turnover-tag" size="mini">开始加工</button>
				</view> -->
				<view v-if="item['userId'] == userInfo['userId'] ? item['status'] == 1 : false"
					class="status-btn uni-row ">
					<button class="finished-turnover-tag" size="mini"
						@click.stop="handleShowEndWorkDialog(item)">结束报工</button>
				</view>
				<view v-if="item['userId'] == userInfo['userId'] ? item['status'] == 0 : false"
					class="status-btn uni-row ">
					<button class="finished-turnover-tag" size="mini" type="primary"
						@click.stop="handleStartProcessing(item)">开始报工</button>
				</view>
			</view>
		</scroll-view>
		<view class="bottom uni-row">
			<button class="bottom-btn left-btn" @click="HandleChangevehicle"><text class="label">更换载具</text></button>
			<button class="bottom-btn right-btn" type="primary" @click="handleStartProcessing(null)"
				:disabled="flag"><text class="label">开始加工</text></button>
		</view>
		<dialog-end-work ref="endWorkDialog" @sendEquipment='getEquipment' @reset="reset" />
		<dialog-selectEquipment ref='selectEquipment'
			@handleAddDayWorkItem='handleAddDayWorkItem'></dialog-selectEquipment>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue'
	import {
		onLoad,
		onReady
	} from '@dcloudio/uni-app'
	import {
		getDayWorkItemList,
		saveDayWorkItemBatch,
		updateDayWorkItem
	} from "@/api/business/dayWorkItem.js"
	import {
		store
	} from '@/store/index.js'
	import {
		timestampToTime,
		toHHmmss
	} from '@/utils/common.js'

	const listData = ref([]) // 回显 
	const curSubDetails = ref({}) // 接收生产计划单信息 
	const dayWorkInfo = ref({}) // 接收daywork信息
	const equipmentList = ref([]) // 设备列表
	const endWorkDialog = ref(null) // 组件
	const selectEquipment = ref(null) // 组件   
	const dayWorkItem = ref({}) // 添加传输对象
	const reqParam = ref([]) // 请求参数
	const userInfo = ref(null) // 登录员工信息
	const flag = ref(true) // 控制底部开始加工按钮功能


	onLoad(() => {
		curSubDetails.value = store.planSubDetails;
		dayWorkInfo.value = store.dayworkInfo;
		console.log(dayWorkInfo.value)
		init();
	})

	function init() {
		userInfo.value = store.userInfo;
		uni.showLoading({
			title: '加载中'
		});
		getDayWorkItemList({
			dayworkId: dayWorkInfo.value.id,
			type: '1'
		}).then(res => {
			listData.value = res.rows || [];
			console.log(listData)
			// 时间戳转工时
			for (var i = 0; i < listData.value.length; i++) {
				let timeStamp = Date.parse(listData.value[i].endTime) - Date.parse(listData.value[i].startTime);
				console.log(timeStamp)
				// listData.value[i].taskTime = (timeStamp / 3600000).toFixed(2) === 'NaN' ? 0 : (timeStamp / 3600000)
				// 	.toFixed(2);
				listData.value[i].taskTime = toHHmmss(timeStamp);
			}
			// 判断是否是新批次默认生成的第一条,下面的开始加工按钮不能点(有一个为0就不能点)
			let arr = []
			for (var i = 0; i < listData.value.length; i++) {
				arr[i] = listData.value[i].status;
			}

			flag.value = arr.includes('0');
			// flag.value = listData.value.some(value => {value.status == '0'|| value.status == '3'})
			console.log(flag.value)
		})
		uni.hideLoading();
	}

	function reset() {
		init();
	}

	function handleShowEndWorkDialog(data) {
		// 调用子组件中的方法
		endWorkDialog.value.open(data)
	}

	function HandleChangevehicle() {
		uni.navigateTo({
			url: "/pages/changeBox/index"
		})
	}

	function getEquipment(data) {
		console.log(data);
		equipmentList.value = data;
	}

	function handleStartProcessing(item) {
		selectEquipment.value.open(item);
	}

	/**
	 * 新批次默认item去报工(执行方法)
	 * @param {Object} item
	 */
	function handleStartFirstItem(item) {
		let reqParam = item;
		reqParam.status = 1;
		reqParam.startTime = timestampToTime(new Date());
		updateDayWorkItem(reqParam).then(res => {
			if (res.code === 200) {
				uni.showToast({
					icon: "success",
					title: "报工成功",
					duration: 2000
				})
				init();
			} else {
				uni.showToast({
					icon: "fail",
					title: "报工失败,请联系管理员",
					duration: 2000
				})
			}
		})
	}

	function handleAddDayWorkItem(data) {
		console.log(data)
		if (data[0].dayworkId) { // data里面任意一对象除了设备相关的字段存在,直接给reqParam赋值
			reqParam.value = data;
		} else {
			// equipmentList.value = data;
			dayWorkItem.value = {
				dayworkId: dayWorkInfo.value.id,
				lotId: dayWorkInfo.value.lotId,
				productionPlanId: curSubDetails.value.productionPlanId,
				productionPlanDetailId: curSubDetails.value.productionPlanDetailId,
				productionPlanDetailSubDetailId: curSubDetails.value.id,
				processId: store.dayworkInfo.currentProcess.id,
				technologicalProcessId: store.dayworkInfo.technologicalProcessId,
				status: 1,
				startTime: timestampToTime(new Date())
			}

			for (var i = 0; i < data.length; i++) {
				reqParam.value.push(dayWorkItem.value);
				reqParam.value[i].equipmentDetailId = data[i].equipmentDetailId;
				reqParam.value[i].equipmentDetailCode = data[i].equipmentDetailCode;
			}
		}
		console.log(reqParam.value)
		saveDayWorkItemBatch(reqParam.value).then(res => {
			if (res.code === 200) {
				uni.showToast({
					icon: 'success',
					title: '操作成功',
					duration: 2000
				});
				reqParam.value = [];
				init();
				uni.$emit('dayworkItemUpdate');
			} else {
				uni.showToast({
					icon: 'error',
					title: '操作失败',
					duration: 2000
				});
			}
		})
	}
</script>

<style lang="scss">
	.container {
		height: 2000rpx;
		background-color: #f5f5f5;
		overflow: auto;
	}

	.scroll-container {
		position: absolute;
		top: 24rpx;
		right: 0;
		bottom: 144rpx;
		left: 0;
	}

	.selected {
		border: 1px solid #1684fc;
	}

	.list-item {
		background-color: #fff;
		position: relative;
		padding: 16rpx;
		padding-bottom: 24rpx;
		margin: 0 24rpx;
		margin-bottom: 24rpx;
		border-radius: 8rpx;

		.title-container {
			margin-top: 8rpx;
			width: 100%;

			.title {
				height: 48rpx;
				align-items: center;
				flex: 7;

				.label {
					// font-size: 32rpx;
					font-weight: bold;
				}

				.code {
					margin-left: 8rpx;
				}
			}
		}

		.item-info {
			margin-bottom: 8rpx;

			.label {
				font-size: 28rpx;
				width: 152rpx;
				color: #808080;

				&.right {
					flex: 1;
					color: #000000;
				}
			}
		}

		.right-info {

			// justify-content: flex-end;
			// width:45%;
			// margin-top: 5rpx;
			.label {
				font-size: 28rpx;
			}

			.time {
				margin-left: 8rpx;
				color: #1684fc;
			}

			.number {
				margin-left: 8rpx;
				color: #1684fc;
			}

		}
	}

	.bottom {
		position: fixed;
		right: 0;
		bottom: 0;
		left: 0;
		height: 100rpx;
		padding: 16rpx 24rpx;
		align-items: center;
		background-color: #FFFFFF;
		justify-content: space-between;

		.bottom-btn {
			flex: 1;
			font-size: 28rpx;
			color: #FFFFFF;

			&.left-btn {
				background-color: rgba(0, 226, 166, 1);
			}

			&.right-btn {
				margin-left: 24rpx;
			}
		}
	}

	.status-btn {
		width: 100%;
		justify-content: flex-end;

		.finished-turnover-tag {
			margin: unset;
			border-radius: 8rpx;
			// background-color: rgb(255, 85, 85);
			font-size: 28rpx;
			color: #FFFFFF;
		}
	}
</style>