<template>
	<dialog-base ref="baseDialog" title="结束报工">
		<view class="list-container">
			<view class="list-title uni-row">
				<text class="label">合格量</text>
				<input class="input" @input="handleInputQualifiedNum" style="width: 70%;"
					v-model="workInfo.qualifiedNum" placeholder="请输入合格量" />
			</view>
			<view class="list-title uni-row">
				<text class="label">废品信息</text>
				<view class="uni-row" style="justify-content: flex-end;"><text class="label" style="color: blue;"
						@click="handleAddWasteInfo">+添加</text></view>
			</view>
			<view class="list-title uni-row" v-for="(item, index) in wasteInfo">
				<input class="input" @input="handleInputRejectNum" style="width: 20%;" v-model="item.rejectNum" placeholder="废品量" />
				<uni-data-select style="margin-left: 40rpx;width: 70%;" v-model="item.reason" :localdata="reasonList"
					@change="handleTenantChange"></uni-data-select>

				<uni-icons class="icon-gear" type="close" size="60" color="red"
					@click="handleDeleteWasteInfo(index)"></uni-icons>
			</view>

			<view class="list-title uni-row" style="margin-top: 48rpx;">
				<text class="label">当前序是否完成</text><text>否</text>
				<switch class="switch" @change="switchChange" color="rgba(255,85,85,1)" />
				<text>是</text>
			</view>
		</view>
		<view class="add-btn-container uni-row">
			<button type="default" class="btn" @click="handleFinishReporting">结束报工</button>
		</view>
	</dialog-base>
</template>


<script setup>
	import {
		ref,
		getCurrentInstance
	} from 'vue'
	import {
		onLoad
	} from '@dcloudio/uni-app'
	import {
		updateDayWorkItem,
		saveDayWorkItem
	} from "@/api/business/dayWorkItem.js"
	import {
		timestampToTime,
		toHHmmss
	} from '@/utils/common.js'
	import {
		getDictInfoByType
	} from '@/api/dict/dict.js'
	const baseDialog = ref(null)
	const workInfo = ref({})
	const wasteInfo = ref([])
	const reasonList = ref([])
	const emit = defineEmits(['reset'])

	onLoad(() => {
		init();
	})

	function init() {
		getDictInfoByType("waste_causes").then(res => {
			for (let i = 0; i < res.data.length; i++) {
				reasonList.value[i] = {
					value: res.data[i].dictValue,
					text: res.data[i].dictLabel
				}
			}
			console.log(res);
			console.log(reasonList.value);
		})
	}

	function open(data) {
		workInfo.value = {
			...data
		};
		workInfo.value.qualifiedNum = null;
		console.log(data)
		wasteInfo.value = []
		baseDialog.value.open()
	}

	function close() {
		baseDialog.value.close()
	}

	function switchChange(event) {
		if (event.detail.value) {
			workInfo.value.status = "3"
		}else{
			workInfo.value.status = "2"
		}
	}

	function handleInputQualifiedNum() {
		workInfo.value.qualifiedNum = workInfo.value.qualifiedNum.replace(/^0+|^-+|[^\d]/g, '');
	}

	function handleInputRejectNum() {
		for (let i = 0; i < wasteInfo.value.length; i++) {
			wasteInfo.value[i].rejectNum = wasteInfo.value[i].rejectNum.replace(/^0+|^-|[^\d]/g, '');
		}
	}

	function handleFinishReporting() {
		if(!workInfo.value.qualifiedNum){
			uni.showToast({
				icon: "error",
				title: "请输入合格数",
			})
			return;
		}
		for (let i = 0; i < wasteInfo.value.length; i++) {
			if ((!wasteInfo.value[i].rejectNum && wasteInfo.value[i].reason) ||
			 (wasteInfo.value[i].rejectNum && !wasteInfo.value[i].reason) || 
			 (!wasteInfo.value[i].rejectNum && !wasteInfo.value[i].reason)) {
				uni.showToast({
					icon: "error",
					title: "请输入废弃数或废弃原因",
					duration: 2000
				})
				return;
			}
		}
		close();
		if (workInfo.value.status != '3') {
			workInfo.value.status = '2';
		}
		workInfo.value.endTime = timestampToTime(new Date());
		workInfo.value.rejectList = wasteInfo.value;
		console.log(workInfo.value)
		saveDayWorkItem(workInfo.value).then(res => {
			if (res.code === 200) {
				uni.showToast({
					icon: 'success',
					title: '操作成功',
				});
				uni.$emit('dayworkItemUpdate');
				baseDialog.value.close();
				workInfo.value.qualifiedNum = null;
			} else {
				uni.showToast({
					icon: 'none',
					title: res.msg
				});
			}
		})
	}

	function handleAddWasteInfo() {
		wasteInfo.value.push({
			rejectNum: '',
			reason: ''
		})
	}

	function handleDeleteWasteInfo(index) {
		wasteInfo.value.splice(index, 1)
	}

	function handleTenantChange() {

	}

	defineExpose({
		open
	})
</script>

<style lang="scss">
	.dialog-body {
		.list-container {
			width: 100%;
			display: flex;
			align-items: flex-start;
			padding: 0 4rpx;

			.list-title {
				width: 100%;
				margin-top: 16rpx;
				height: 64rpx;
				line-height: 64rpx;

				.label {
					flex: 1;
					font-size: 32rpx;
				}

				.input {
					width: 40%;
					height: 66rpx;
					padding-left: 10rpx;
					font-size: 22rpx;
					border: 1rpx solid #e1e1e1;
					border-radius: 8rpx;
				}

				.icon-gear {
					font-size: 56rpx;
				}
			}

			.switch {
				margin-top: -8rpx;
				align-items: center;
				transform: scale(0.7);
			}

			.equipment-container {
				width: 100%;
				height: 120rpx;
				flex-wrap: wrap;
				justify-content: flex-start;
				overflow: auto;

				.checkbox {
					padding: 12rpx 0;
					justify-content: center;
					align-items: center;
				}
			}

			.table-item {
				margin-top: 24rpx;


			}

		}

		.add-btn-container {
			margin-top: 32rpx;

			.btn {
				flex: 1;
				background-color: rgba(255, 85, 85, 1);
				color: #FFFFFF;

			}
		}
	}
</style>