<template>
	<!-- <u-navbar title="签收订单扫描" placeholder border=true :autoBack="true" leftIconSize='35'></u-navbar> -->
	<u-navbar title="签收订单扫描"
	 bgColor='#D3832A' leftIconColor='#ffffff'
	titleStyle='color:#ffffff' placeholder 
	:autoBack="true" leftIconSize='35'></u-navbar>
	<view class="hdstop">
		<view class="khxb">
			<view>客户:{{items.consignee}}</view>
			<view>地址:{{items.deliveryAddress}}</view>
			<view>电话:{{items.deliveryPhone}}</view>
			<view class="butlur" @click="showsdqs">
				录入包条码
			</view>
		</view>
		<view class="tps">
			<view>
				<view>订单总数</view>
				<view>{{ordNub}}</view>
			</view>
			<view>
				<view>计划件数</view>
				<view>{{Plannednub}}</view>
			</view>
			<view>
				<view>配送件数</view>
				<view>{{items.reservationNum}}</view>
			</view>
			<view>
				<view>签收件数</view>
				<view>{{signNub}}</view>
			</view>
		</view>
	</view>
	<view class="scinp">
		<view>齐套状态</view>
		<view>
			<cusSelects  @change='checktype' :data='typearr' :value="schanvalue" placeholder='全部' :arrLeft='5' size='145' :clearable='true'></cusSelects>
		</view>
		<view class="inputs">
			<input placeholder="请输入查询的订单号" v-model="inputtxt"/>
		</view>
		<view class="btscan" @click="initpage">查询</view>
	</view>
	<view class="tabtip">
		<view @click="setorderStatus(1)">
			<view :class="orderStatus==1?'xz':''">定制品</view>
		</view>
		<view @click="setorderStatus(2)">
			<view :class="orderStatus==2?'xz':''">库存品</view>
		</view>
	</view>
	<scroll-view class="scve" scroll-y="true">
		<view class="mabx">
			<view class="itec" @click="setcheckindex(index)" v-if="orderStatus==1" v-for="(item,index) in datalist">
				<view class="contenbx1">
					<view><text style="color: #90A0AF;" @click.stop="goorderdetail(item)">订单编号:</text>{{item.orderCode}}</view>
				</view>
				<view class="contenbx1">
					<view><text style="color: #90A0AF;">总数:</text>{{item.reservationNum}}</view>
					<view><text style="color: #90A0AF;">计划:</text>{{item.reservationNum}}</view>
				</view>
				<view class="contenbx1">
					<view><text style="color: #90A0AF;">装车:</text>{{item.loadingNub}}</view>
					<view><text style="color: #90A0AF;">签收:</text>{{item.signforNub}}</view>
				</view>
				<view class="xialaxz" v-if="listcheckindex==index">
					<view v-for="ite in item.distributionAppParcelListVOS">
						<view>包条码:{{ite.packetBarCode}}</view>
						<view>货物品类:{{ite.thirdProduct}}</view>
						<view>扫描状态:{{ite.isScan?ite.isScan:'未扫'}}</view>
					</view>
				</view>
				<view :class="item.signforNub==0?'tip tp2':item.signforNub==item.reservationNum?'tip tp1':'tip tp3'">{{item.signforNub==0?'未扫':item.signforNub==item.reservationNum?'齐套':'部分扫'}}</view>
			</view>
			<view class="itec" @click="setcheckindex(index)" v-if="orderStatus==2" v-for="(item,index) in datalist">
				<view class="contenbx1">
					<view><text style="color: #90A0AF;">SKU:</text>{{item.sku}}</view>
				</view>
				<view class="contenbx1">
					<view><text style="color: #90A0AF;">物品:</text>{{item.descriptionGoods}}</view>
					<view><text style="color: #90A0AF;">规格:</text>{{item.specification}}</view>
				</view>
				<view class="contenbx1">
					<view><text style="color: #90A0AF;">单位:</text>{{item.logpmUnit}}</view>
					<!-- <view><text style="color: #90A0AF;">签收:</text>{{item.signforNub}}</view> -->
				</view>
				<!-- <view :class="item.signforNub==0?'tip tp2':item.signforNub==item.reservationNum?'tip tp1':'tip tp3'">{{item.signforNub==0?'未扫':item.signforNub==item.reservationNum?'齐套':'部分扫'}}</view> -->
			</view>
		</view>
	</scroll-view>
	<tips ref="tip"></tips>
	<tiplist ref="tiplists"></tiplist>
	<saomiao2></saomiao2>
</template>

<script lang="ts" setup>
	import {
		signfororder,
		signforinventory,
		signforsignfor,
		signforsignforIn,
		signforsignforcontinue
	} from '@/api/user.js'
	import {
		onLoad,
		onShow,
		onHide,
		onUnload
	} from '@dcloudio/uni-app'
	import cusSelects from '@/compoment/cus-selects-fan/cus-selects-fan.vue'
	import { computed, inject, reactive, ref, toRefs, watchEffect } from "vue";
	const utils=inject('utils') as any
	let details=reactive({
		schanvalue:'',
		typearr:[
			{
				value:3,
				label:'齐套'
			},
			{
				value:2,
				label:'部分扫'
			},
			{
				value:1,
				label:'未扫'
			}
		],
		items:{} as any,
		datalist:[] as any,
		id:'',
		orderStatus:1,
		scancode:'',
		deliveryId:'',
		orderType:'' as string|number,
		inputtxt:'',
		listcheckindex:-1,
	})
	const tiplists=ref(null)
	const tip=ref(null)
	const Plannednub=computed(()=>{
		let num=0
		details.datalist.map(item=>{
			if(item.reservationNum){
				num+=item.reservationNum
			}
		})
		return num
	})
	const ordNub=computed(()=>{
		return details.datalist.length
	})
	const signNub=computed(()=>{
		let num=0
		details.datalist.map(item=>{
			if(item.signforNub){
				num+=item.signforNub
			}
		})
		return num
	})
	watchEffect(()=>{
		if(signNub.value!=0){
			console.log(signNub.value+'件')
			utils.ttsspke(signNub.value+'件')
		}
	})
	onLoad((op)=>{
		details.items=JSON.parse(op.item)
		details.id=JSON.parse(op.item).id
		details.deliveryId=op.deliveryId
		initpage()
		// details.scancode='23072506149-1'
		// scandata()
		uni.$on('scancodedate', function(code) {
			if (code) {
				console.log(code);
				details.scancode=code
				scandata()
			}
		})
	})
		function goorderdetail(item){
			uni.navigateTo({
				url:'/pagesHome/pages/orderDetails/orderDetails?orderCode='+item.orderCode
			})
		}
	async function scandata(){
		let data={
			barcode:details.scancode,
			deliveryId:details.deliveryId,
			reservationId:details.id,
		}
		if(details.orderStatus==1){
			let response=await signforsignfor(data)
			console.log(response);
			if(response.code==3006){
				tip.value.setdetails({
					isshow:true,
					content:'请确认是否异常签收',
					success:async ()=>{
						let data={
							barcode:details.scancode,
							deliveryId:details.deliveryId,
							reservationId:details.id
						}
						let response=await signforsignforcontinue(data)
						console.log(response);
						uni.showToast({
							title:response.msg,
							icon:'none'
						})
						tip.value.setdetails({isshow:false})
					},
					cancel:()=>{
						tip.value.setdetails({isshow:false})
					},
					close:()=>{
						tip.value.setdetails({isshow:false})
					}
				})
			}else{
				uni.showToast({
					title:response.msg,
					icon:'none'
				})
			}
		}else if(details.orderStatus==2){
			// data.barcode="23072405915-2"
			let response=await signforsignforIn(data)
			console.log(response);
			if(response.code==3006){
				tip.value.setdetails({
					isshow:true,
					content:'请确认是否异常签收',
					success:async ()=>{
						let data={
							barcode:details.scancode,
							deliveryId:details.deliveryId,
							reservationId:details.id
						}
						let response=await signforsignforcontinue(data)
						console.log(response);
						uni.showToast({
							title:response.msg,
							icon:'none'
						})
						tip.value.setdetails({isshow:false})
					},
					cancel:()=>{
						tip.value.setdetails({isshow:false})
					},
					close:()=>{
						tip.value.setdetails({isshow:false})
					}
				})
			}else{
				uni.showToast({
					title:response.msg,
					icon:'none'
				})
			}
		}
		initpage()
	}
	function showsdqs(){
		tiplists.value.setdetails({
			isshow:true,
			tipstate:1,
			title:'请输入扫描的码',
			placeholder:'请输入扫描的码',
			inputtext:'',
			success:(detail)=>{
				details.scancode=detail.inputtext
				scandata()
				tiplists.value.setdetails({isshow:false})
			},
			cancel:()=>{
				tiplists.value.setdetails({isshow:false})
			},
			close:()=>{
				tiplists.value.setdetails({isshow:false})
			}
		})
	}
	function setorderStatus(state:number){
		details.orderStatus=state
		initpage()
	}
	async function initpage(){
		let data={
			reservationId:details.id,
			completecode:details.orderType,
			orderCode:details.inputtxt,
		}
		details.datalist=[]
		let response=null;
		if(details.orderStatus==1){
			response=await signfororder(data)
		}else if(details.orderStatus==2){
			response=await signforinventory(data)
		}
		// scandata()
		details.datalist=response.data.records
	}
	function setcheckindex(index:number){
		if(details.listcheckindex==index){
			details.listcheckindex=-1
		}else{
			details.listcheckindex=index
		}
		
	}
	function checktype(e){
		if(e==''){
			details.schanvalue=''
			details.orderType=''
			return
		}
		details.typearr.map(item=>{
			if(item.value==e){
				details.schanvalue=item.label
				details.orderType=item.value
			}
		})
	}
	const { listcheckindex,inputtxt,orderStatus,datalist,items,typearr,schanvalue }=toRefs(details)
</script>

<style lang="scss">
	.butlur{
		width: 200upx !important;
		height: 64upx !important;
		background: #D3832A;
		border-radius: 8upx;
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 32upx;
		font-weight: 400;
		color: #FFFFFF;
	}
	.xialaxz{
		display: flex;
		flex-direction: column;
		>view{
			display: flex;
			align-items: flex-start;
			justify-content: space-between;
			border-top: 1upx solid #00000010;
			padding: 20upx 0;
			box-sizing: border-box;
			font-size: 28upx;
			color: #092C4D;
			>view{
				word-wrap: break-word;
				word-break: break-all;
				margin-right: 20upx;
				&:nth-last-child(1){
					margin-right: 0upx;
				}
			}
		}
	}
	.tabtip{
		display: flex;
		align-items: center;
		justify-content: space-between;
		>view{
			width: 50%;
			display: flex;
			align-items: center;
			justify-content: center;
			background-color: #ffffff;
			font-size: 32upx;
			font-weight: 400;
			color: #90A0AF;
			>view{
				height: 80upx;
				border-bottom: 8upx solid #ffffff;
				display: flex;
				align-items: center;
				justify-content: center;
			}
		}
		.xz{
			color: #D3832A;
			border-bottom: 8upx solid #D3832A;
			// border-radius: 5upx;
		}
	}
	.scve {
		width: 100%;
		height: 62.2vh;
		margin-top: 20upx;
	
		.mabx {
			display: flex;
			flex-direction: column;
			align-items: center;
	
			>.itec {
				width: 686upx;
				// height: 176upx;
				background: #FFFFFF;
				border-radius: 8upx;
				padding: 36upx 24upx;
				box-sizing: border-box;
				position: relative;
				margin-bottom: 20upx;
	
				&:nth-last-child(1) {
					margin-bottom: 0;
				}
	
				>.contenbx1 {
					display: flex;
					align-items: center;
					justify-content: space-between;
					font-size: 28upx;
					color: #092C4D;
					margin-bottom: 20upx;
	
					&:nth-last-child(1) {
						margin-bottom: 0;
					}
	
					>view {
						flex: 1;
					}
				}
	
				.tip {
					position: absolute;
					right: 0;
					top: 0;
					width: 96upx;
					height: 48upx;
					border-radius: 0 8upx 0 8upx;
					display: flex;
					align-items: center;
					justify-content: center;
					font-size: 24upx;
				}
	
				.tp1 {
					background-color: #0086F120;
					color: #0086F1;
				}
	
				.tp2 {
					background-color: #F8544B20;
					color: #F8544B;
				}
	
				.tp3 {
					background-color: #FA8C1620;
					color: #FA8C16;
				}
			}
		}
	}
	.hdstop{
		width: 100%;
		padding: 34upx 32upx;
		background-color: #fff;
		box-sizing: border-box;
		font-size: 28upx;
		font-weight: 400;
		color: #092C4D;
		>.khxb{
			display: flex;
			align-items: flex-start;
			margin-bottom: 40upx;
			flex-wrap: wrap;
			>view{
				width: 50%;
				margin-bottom: 20upx;
			}
		}
		>.tps{
			display: flex;
			align-items: center;
			justify-content: space-around;
			>view{
				display: flex;
				align-items: center;
				flex-direction: column;
				&:nth-of-type(1){
					>view:nth-of-type(2){
						color: #092C4D;
					}
				}
				&:nth-of-type(2){
					>view:nth-of-type(2){
						color: #0086F1;
					}
				}
				&:nth-of-type(3){
					>view:nth-of-type(2){
						color: #3AD8BC;
					}
				}
				&:nth-of-type(4){
					>view:nth-of-type(2){
						color: #FA8C16;
					}
				}
				>view:nth-of-type(2){
					font-size: 36upx;
					font-weight: 400;
					
					margin-top: 20upx;
				}
			}
		}
	}
	.scinp{
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 12upx 32upx;
		box-sizing: border-box;
		background-color: #ffffff;
		border-top: 3upx solid #EEEEEE;
		>view:nth-of-type(1){
			font-size: 28upx;
			font-weight: 400;
			color: #092C4D;
		}
		.inputs {
			width: 276upx;
			height: 64upx;
			background: #F5F5F6;
			border-radius: 8upx;
			opacity: 1;
			border: 2upx solid #EEEEEE;
			padding: 10upx;
			box-sizing: border-box;
			font-size: 24upx;
			font-weight: 400;
			color: #AFB4BA;
			>input{
				flex: 1;
				font-size: 24upx;
				color: #092C4D;
			}
		}
		.btscan{
			width: 128upx;
			height: 64upx;
			background: #D3832A;
			border-radius: 8upx;
			display: flex;
			align-items: center;
			justify-content: center;
			font-size: 32upx;
			font-weight: 400;
			color: #FFFFFF;
		}
	}
</style>