<template>
	<view class="container">
		<view class="detail-desc">
			<view class="d-header">
				<text>派车单</text>
			</view>
			 <view class="c-list">
				<view class="c-row b-b">
					<text class="tit">出发地</text>
					<view class="con-list">
						<text>{{carInfo.startPlace}}</text>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">目的地</text>
					<view class="con-list">
						<text>{{carInfo.endPlace}}</text>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">任务量</text>
					<view class="con-list">
						<text>{{numFilter(carInfo.num)}}</text>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">已发运量</text>
					<view class="con-list">
						<text>{{numFilter(carInfo.tranCount)}}</text>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">货名</text>
					<view class="con-list">
						<text>{{carInfo.goodsName}}</text>
					</view>
				</view>
			</view>
			<view class="d-header">
				<text>发运数据</text>
			</view>
			<view class="c-list">
				<view class="c-row b-b">
					<text class="tit">下线费(元/吨)</text>
					<view class="con-list">
						<input placeholder="请填写下线费" name="input" v-model="offFee" @input="priceInput"></input>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">下线杂费(元/吨)</text>
					<view class="con-list">
						<input placeholder="请填写下线杂费" name="input" v-model="offOtherFee" @input="otherPriceInput"></input>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">车皮号</text>
					<view class="con-list">
						<input placeholder="请填写车皮号" name="input" v-model="carSkinNo" @input="carNoInput"></input>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">箱号</text>
					<view class="con-list">
						<input placeholder="请填写箱号" name="input" v-model="boxNo" @input="boxNoInput"></input>
					</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">汽车号</text>
					<view class="con-list">
						<text>{{inPersonName}}</text>
					</view>
					<button class='cu-btn bg-green shadow' @click="selectPerson">选择汽车号</button>
				</view>
				<view>
					<view class='carwrap' v-for='(item,index) in carlist'>
						<text>{{item.carNo}}</text>
						<input class='trancount' type="text" v-model="item.count" name="input" @input="carInput(item,$event)">
						</view>
				</view>
				<view class="c-row b-b">
					<text class="tit">净重</text>
					<view class="con-list">
						<text>{{numFilter(suttleWeight)}}</text>
					</view>
				</view>
			</view> 
		</view>
		<view class="cu-modal" :class="modalName=='workModal'?'show':''" @tap="hideModal">
			<scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
				<view class="cu-list menu text-center" >
					<view class="cu-item" v-for="(item,index) in userList" :key="index" @click="nextPerson(item.id)">
						<label class="flex justify-between align-center flex-sub">
							<view class="flex-sub">{{item.userName}}</view>
						</label>
					</view>
				</view>
			</scroll-view>
		</view>
		<view class="cu-modal" :class="modalfieldName=='workModal'?'show':''" @tap="hideModal">
			<scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
				<view class="cu-list menu text-center" >
					<view class="cu-item" v-for="(item,index) in fieldList" :key="index" @click="nextPerson2(item.id)">
						<label class="flex justify-between align-center flex-sub">
							<view class="flex-sub">{{item.userName}}</view>
						</label>
					</view>
				</view>
			</scroll-view>
		</view>
		
		<view class="cu-modal" :class="modalName=='userModal'?'show':''" @tap="hideModal">
			<scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
				<view class="cu-list menu text-center" >
					<view class="cu-item" v-for="(item,index) in userList" :key="index" @click="mygaipai(item.id)">
						<label class="flex justify-between align-center flex-sub">
							<view class="flex-sub">{{item.userName}}</view>
						</label>
					</view>
				</view>
			</scroll-view>
		</view>
		<view  class="page-bottom">
			<view class="action-btn-group">
				<button type="primary" class=" action-btn no-border buy-now-btn" @click="save">保存</button>
				<button type="primary" v-if="taskStatus == 1" class=" action-btn no-border add-cart-btn" @click="finish">完成</button>
				<button type="primary" v-if="taskStatus == 1" class=" action-btn no-border add-cart-btn" @click="gaipai">改派</button>
			</view>
		</view> 
		<view class="cu-modal" :class="modalName=='inModal'?'show':''" @tap="hideModal">
			<scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
				<view class="cu-list menu text-center" >
					<view class="cu-item" v-for="(item,index) in userList" :key="index" @click="selectInPerson(item)">
						<label class="flex justify-between align-center flex-sub">
							<view class="flex-sub">{{item.carNo}}<text v-if="paiCarType=='到站派车' "> ———— {{item.tranCount}}</text></view>
						</label>
					</view>
				</view>
			</scroll-view>
		</view>
	</view>
</template>

<script>
    import uploadImage from '@/components/ossutil/uploadFile.js';
	import Handwriting from '@/components/ossutil/signature.js';
	import {  
	    mapState 
	} from 'vuex';
	export default {
		data() {
			return {
				carInfo:[],
				grossWeight:'',
				skinWeight:'',
				offFee:'',
				offOtherFee:'',
				carNo:'',
				carSkinNo:'',
				boxNo:'',
				taskStatus:'',
				userStyle:'',
				fieldList:[],
				modalName:'',
				modalfieldName:'',
				taskType:'',
				taskId:'',
				goodsValue:'',
				addNumStatus:false,
				wechatNo:'',
				lineColor:'black',
				slideValue:50,
				handwriting:'',
				selectColor:'black',
				color:'',
				userList:[],
				inPersonName:'',
				carlist:[],
				suttleWeight2:''
			};
		},
		computed: {
			...mapState(['hasLogin','userInfo']),
			suttleWeight(){
				let num=0
				if(this.carlist.length>0){
					for(var i=0;i<this.carlist.length;i++){
						num=Number(num+Number(this.carlist[i].count))
					}
				}else{
			        num=this.suttleWeight2
				}
				return num
			}
		},
		onShow() {
		},
		onLoad(options) {
			const that = this
			this.taskId = options.taskId
			this.taskType = options.taskType
			this.taskStatus = options.taskStatus
			uni.showLoading({
				title: '正在加载',
						mask:true
			})
			that.$api.request('tran', 'getTrainDetailInfo', {
				id: options.taskId
			}, failres => {
				that.$api.msg(failres.errmsg)
				uni.hideLoading()
			}).then(res => {
				that.carInfo = res.data
				console.log(that.carInfo)
				// that.inPersonName = res.data.receiver
				that.fee = that.carInfo.fee
				that.trainImg = that.carInfo.trainImg
				that.carNo = that.carInfo.carNos
				that.otherfee = that.carInfo.otherFee
				that.offFee = that.carInfo.offFee
				that.offOtherFee = that.carInfo.offOtherFee
				that.suttleWeight2=that.carInfo.netWeight
				that.insuranceFee= that.carInfo.insuranceFee
				that.rentboxFee= that.carInfo.rentBoxFee
				that.loadingFee= that.carInfo.loadingFee
				that.carSkinNo= that.carInfo.carSkinNo
				that.boxNo= that.carInfo.boxNo
				that.otherImg = that.carInfo.otherImg
				uni.hideLoading()
			})
		},
		onReady(){
			
		},
		methods: {
			priceInput(e){
				this.offFee = e.detail.value
			},
			otherPriceInput(e){
				this.offOtherFee = e.detail.value
			},
			insuranceFeeInput(e){
				console.log(this.insuranceFee)
				this.insuranceFee = e.detail.value
			},
			netWeightInput(e){
				this.netWeight = e.detail.value
			},
			carNoInput(e){
				this.carNo = e.detail.value
			},
			rentboxFeeInput(e){
				this.rentboxFee = e.detail.value
			},
			loadingFeeInput(e){
				this.loadingFee = e.detail.value
			},
			boxNoInput(e){
				this.boxNo = e.detail.value
			},
			numFilter (value) {
				if(!value){
					return 0
				}
				// 截取当前数据到小数点后两位
				let realVal = parseFloat(value).toFixed(2)
				return realVal
			},
			carInput(item,e){
				if(item.count>item.tranCount){
					uni.showToast({
						title: `当前车辆可载吨数为${item.tranCount},请不要超过`,
						icon:'none',
						duration: 2000
					})
					item.count = 0
				}else{
					item.count = e.detail.value
				}
				
			},
			selectInPerson(item){
				if(JSON.stringify(this.carlist).indexOf(JSON.stringify(item))==-1){
				    this.carlist.push(item)
				}else{
					uni.showLoading({
						
						title: '正在加载',
						mask:true
					})
				}
				this.modalName = null
			},
			ChooseSignImage() {
				this.handwriting = new Handwriting({
				  lineColor: this.lineColor,
				  slideValue: this.slideValue, // 0, 25, 50, 75, 100
				  canvasName: 'handWriting',
				})
				this.showAutograph = true
			},
			uploadScaleStart(event){
			  this.handwriting.uploadScaleStart(event)
		    },
		    uploadScaleMove(event){
			  this.handwriting.uploadScaleMove(event)
		    },
		    uploadScaleEnd(event){
			  this.handwriting.uploadScaleEnd(event)
		    },
			retDraw() {
				this.handwriting.retDraw()
			},
			hideModal(e) {
				this.modalName = null
			},
			ViewImage(e) {
				var img = [];
				img = e.currentTarget.dataset.url.split(' ')
				uni.previewImage({
					current:0,
					urls: img
				});
			},
			selectPerson(){
				const that = this
				uni.showLoading({
					title: '正在加载',
						mask:true
				})
				that.$api.request('tran', 'getCarList', {
					tranNo:that.carInfo.tranNo,
					taskId:that.taskId
				}, failres => {
				 	that.$api.msg(failres.errmsg)
				 	uni.hideLoading()
				 }).then(res => {
					for(var i=0;i<res.data.length;i++){
						console.log(res.data[i].tranCount)
						res.data[i].count = res.data[i].tranCount
				    }
					that.userList = res.data
					if(that.userList.length == 0){
						that.$api.msg('暂无汽车号')
					}
					else{
						var height = that.userList.length * 100
						var width = 500
						that.userStyle = "height:"+height+"rpx;width:" + width+"rpx"
						that.modalName = 'inModal'
					}
					
					uni.hideLoading()
				})
			},
			DelImg(e) {
				uni.showModal({
					title: '提示',
					content: '确定要删除该照片吗？',
					cancelText: '取消',
					confirmText: '确定',
					success: res => {
						if (res.confirm) {
							if(e.currentTarget.dataset.index == 0){
								this.poundImg = "";
							}
							else if(e.currentTarget.dataset.index == 1){
								this.otherImg = "";
							}
						}
					}
				})
			},
			ChooseImage() {
				uni.chooseImage({
					count: 1, //默认9
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album','camera'], //从相册选择
					success: (res) => {
						//上传图片
						//图片路径可自行修改
						uploadImage(res.tempFilePaths[0], 'poundImg/',
							result => {
								this.trainImg = result
								uni.hideLoading();
							}
						)
					}
				});
			},
			ChooseImageOther() {
				uni.chooseImage({
					count: 1, //默认9
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
					sourceType: ['album','camera'], //从相册选择
					success: (res) => {
						//上传图片
						//图片路径可自行修改
						uploadImage(res.tempFilePaths[0], 'otherImg/',
							result => {
								this.otherImg = result
								uni.hideLoading();
							}
						)
					}
				});
			},
			
			goodsValueInput(e){
				this.goodsValue = e.detail.value
			},
			numInput(e){
				this.addNum = e.detail.value
			},
			wechatNoInput(e) {
				this.wechatNo = e.detail.value
			},
			save(){
				const that = this
				uni.showLoading({
					title: '正在加载',
						mask:true
				})
				var param = {};
				param.carSkinNo = that.carSkinNo
				param.boxNo = that.boxNo
				param.offFee = that.offFee
				param.offOtherFee = that.offOtherFee
				param.taskId = that.taskId
				param.netWeight = that.suttleWeight
				param.list = that.carlist
				that.$api.request('tran', 'saveOffTrainInfo', {
					trainDTO:JSON.stringify(param)
				}, failres => {
					that.$api.msg(failres.errmsg)
					uni.hideLoading()
				}).then(res => {			
					that.$api.msg('保存成功')
					uni.hideLoading()
				})
			},
			finish(){
				var that =this
				
		
					  var param = {};
					  param.carSkinNo = that.carSkinNo
					  param.boxNo = that.boxNo
					  param.offFee = that.offFee
					  param.boxNo = that.boxNo
					  param.offOtherFee = that.offOtherFee
					  param.taskId = that.taskId
					  param.netWeight = that.suttleWeight
					  param.list = that.carlist
					  that.$api.request('tran', 'finishOffTrainInfo', {
						trainDTO:JSON.stringify(param),
						nextUserId: -1
					  }, failres => {
						that.$api.msg(failres.errmsg)
						uni.hideLoading()
					  }).then(res => {
							that.$api.msg('完成成功')
							setTimeout(()=>{uni.navigateBack({})},1000);
						  uni.hideLoading()
					  
					 
				})
			},
			gaipai(){
				const that = this
				uni.showLoading({
					title: '正在加载',
						mask:true
				})
				that.$api.request('user', 'getUserList', {
					role:'外勤'
				}, failres => {
				 	that.$api.msg(failres.errmsg)
				 	uni.hideLoading()
				 }).then(res => {
					that.userList = res.data
					if(that.userList.length == 0){
						that.$api.msg('暂无外勤信息')
					}
					else{
						var height = that.userList.length * 100
						var width = 500
						that.userStyle = "height:"+height+"rpx;width:" + width+"rpx"
						that.modalName = 'userModal'
					}
					
					uni.hideLoading()
				})
			},
			mygaipai(id){
				var that = this
				that.$api.request('tran', 'gaipai',{
					taskId: that.taskId,
					outPersonId:id,
					taskType:that.taskType
				},failres => {
					that.$api.msg(failres.errmsg)
					that.modalName = null
					uni.hideLoading()
				}).then(res => {		
					that.modalName = null
					uni.navigateBack({
						delta: 2
					})
					uni.hideLoading()
				})
			},
			nextPerson(id){
				var that = this
				uni.showLoading({
					title: '正在加载',
						mask:true
				})
				that.$api.request('tran', 'finishTrainInfo', {
					taskId: that.taskId,
					price:!that.price?'':that.price,
					netWeight:that.netWeight,
					poundImg:!that.poundImg?'':that.poundImg,
					carNo:!that.carNo?'':that.carNo,
					otherPrice:!that.otherPrice?'':that.otherPrice,
					otherImg:!that.otherImg?'':that.otherImg,
					userId: id
				}, failres => {
					that.$api.msg(failres.errmsg)
					uni.hideLoading()
				}).then(res => {			
					uni.hideLoading()
					that.$api.msg('完成成功')
					setTimeout(()=>{uni.navigateBack()},1000);
				})
			},
			nextPerson2(id){
				var that = this
				var param = {};
				param.carSkinNo = this.carSkinNo
				param.boxNo = this.boxNo
				param.fee = this.fee
				param.fee = this.fee
				param.boxNo = this.boxNo
				param.otherFee = this.otherFee
				param.otherFee = this.otherFee
				param.insuranceFee = this.insuranceFee
				param.rentboxFee = this.rentboxFee
				param.loadingFee = this.loadingFee
				param.taskId = this.taskId
				param.trainImg = this.trainImg
				param.otherImg = this.otherImg
				param.netWeight = this.suttleWeight
				param.list = this.carlist
				that.$api.request('tran', 'finishTrainInfo', {
					trainDTO:JSON.stringify(param),
					nextUserId: id
				}, failres => {
					that.$api.msg(failres.errmsg)
					uni.hideLoading()
				}).then(res => {		
					that.$api.msg('完成成功')
					setTimeout(()=>{uni.navigateBack({})},1000);	
					uni.hideLoading()
				})
			},

			
		},
	}
</script>

<style lang='scss' scoped="true">
	.container{
		padding-bottom: 160upx;
	}
	.detail-desc {
		background: #fff;
		margin-top: 16upx;
		width: 750upx;
	
		.d-header {
			display: flex;
			justify-content: center;
			align-items: center;
			height: 80upx;
			font-size: $font-base + 2upx;
			color: $font-color-dark;
			position: relative;
	
			text {
				padding: 0 20upx;
				background: #fff;
				position: relative;
				z-index: 1;
			}
	
			&:after {
				position: absolute;
				left: 50%;
				top: 50%;
				transform: translateX(-50%);
				width: 300upx;
				height: 0;
				content: '';
				border-bottom: 1px solid #ccc;
			}
		}
	}
	.carwrap{
		display: flex;
		justify-content: space-between;
		padding: 10px 26px 10px 15px;
		border-bottom:1px solid #f0f0f0;
	}
	.trancount{
		display: inline-block;
		vertical-align: middle;
		text-align: right;
		width: 100rpx;
	}
	.c-list {
		font-size: $font-sm + 2upx;
		color: $font-color-base;
		background: #fff;
	
		.c-row {
			display: flex;
			align-items: center;
			padding: 20upx 30upx;
			position: relative;
		}
	
		.tit {
			width: 220upx;
		}
	
		.con {
			flex: 1;
			color: $font-color-dark;
	
			.selected-text {
				margin-right: 10upx;
			}
		}
	
		.bz-list {
			height: 40upx;
			font-size: $font-sm+2upx;
			color: $font-color-dark;
	
			text {
				display: inline-block;
				margin-right: 30upx;
			}
		}
	
		.con-list {
			flex: 1;
			display: flex;
			flex-direction: column;
			color: $font-color-dark;
			line-height: 40upx;
			text-align: right;
			padding-right: 20upx;
		}
	
		.red {
			color: $uni-color-primary;
		}
	}
	/* 底部操作菜单 */
	.page-bottom {
		.action-btn-group {
			.action-btn {
				width: 33.3333%;
			}
		}
	}
	@mixin playcenter {
		display: flex;
		align-items: center;
		justify-content: center;
	}
	.xsh-start {
		width: 105rpx;
		height: 105rpx;
		background: #FFFFFF;
		border-radius: 50%;
		font-size: 29rpx;
		color: #4135EB;
		@include playcenter;
		flex-wrap: wrap;
	}
	.x-modal {
		width: 100%;
		.x-m-title {
			width: 100%;
			height: 90rpx;
			padding: 0 38rpx 0 31rpx;
			box-sizing: border-box;
			font-size: 29rpx;
			color: #333333;
			border-bottom: 1px dashed #999;
			@include playcenter;
			justify-content: space-between;
			.xm-t-clear {
				font-size: 25rpx;
				color: #341DB7;
				@include playcenter;
				>image {
					width: 28rpx;
					height: 28rpx;
					display: block;
					margin-right: 8rpx;
				}
			}
		}
		.x-m-con {
			width: 100%;
			padding: 0 31rpx 18rpx;
			margin-top: 5rpx;
			box-sizing: border-box;
		}
	}
	.wrapper {
	  width: 100%;
	  height: 100%;
	  margin: 30upx 0;
	  overflow: hidden;
	  display: flex;
	  align-content: center;
	  flex-direction: column;
	  justify-content: center;
	  font-size: 28upx;
	}
	
	.handWriting {
	  background: #fff;
	  width: 100%;
	  height: 350upx;
	}
	
	.handRight {
	  align-items: center;
	}
	
	.handCenter {
	  border: 4upx dashed #e9e9e9;
	  flex: 5;
	  overflow: hidden;
	  box-sizing: border-box;
	  width: 90%;
	  margin: 0 auto;
	}
	.handTitle {
	  flex: 1;
	  color: #666;
	  justify-content: center;
	  font-size: 30upx;
	}
	.handBtn {
	  flex-direction: column;
	  padding: 40upx 20upx;
	}
	.buttons{
		width: 100%;
		margin-top: 20upx;
		justify-content: space-between;
	}
	.buttons>button{
		font-size: 30upx;
		height: 80upx;
	}
	.delBtn {
	  background: #23df02;
	  color: #fff;
	}
	.color{
		align-items: center;
	}
	.color>text{
		margin-right: 20upx;
	}
	.subBtn {
	  background: #008ef6;
	  color: #fff;
	  text-align: center;
	  justify-content: center;
	}
	
	.black-select {
	  width: 60upx;
	  height: 60upx;
	}
	.black-select.color_select {
	  width: 90upx;
	  height: 90upx;
	}
	.red-select {
	  width: 60upx;
	  height: 60upx;
	}
	.red-select.color_select {
	  width: 90upx;
	  height: 90upx;
	}
	.slide-wrapper {
	  align-items: center;
	  margin-bottom: 20upx;
	}
	.slider{
		width: 400upx;
		padding-left: 20upx;
	}
	.drop {
	  width: 50upx;
	  height: 50upx;
	  border-radius: 50%;
	  background: #FFF;
	  position: absolute;
	  left: 0upx;
	  top: -10upx;
	  box-shadow: 0px 1px 5px #888888;
	}
	
	.slide {
	  width: 250upx;
	  height: 30upx;
	}
	.showimg{
		border: 4upx solid #e9e9e9;
		overflow: hidden;
		width: 90%;
		margin: 0 auto;
		background: #eee;
		height: 350upx;
		margin-top: 40upx;
		align-items: center;
		justify-content: center;
	}
	.showimg>image{
		width: 100%;
		height: 100%;	
	}
	.showimg>text{
		font-size: 40upx;
		color: #888;
	}	
	.indexFixed{
		position: fixed;
		left:0;
		bottom:0;
		right:0;
	}
</style>
