<!-- 订单 -->
<template>
	<view class="content">
		<view class="fixed1"></view>
		<view v-if="!isSearch">
			<view class="fixed">
				<view class='title flex flex-center'>
					<view>订单</view>
					<u-icon class="search" name="search" color="" size="28" @click="search"></u-icon>
				</view>
				<view class="tab-content">
					<u-tabs :list="tabList" @click="clickTab" lineColor='#2772FB' :current='tabIndex' :activeStyle="{
									color: '#2772FB',
									fontWeight: 'bold',
									transform: 'scale(1.05)'
								}"></u-tabs>
					<view class="right-btn" @click="showMenu=true">
						<view class="">
							全部类型
						</view>
						<u-icon name="arrow-down-fill" color="#333333" size="12"></u-icon>
					</view>
				</view>
			</view>
			<view class="all-menu">
				<u-transition :show="showMenu" mode="fade">
					<view class="transition">
						<view v-for="(item,index) in tabList" :key='index' class="transition-item-style"
							:class="tabIndex==index?'menu-active':''" @click="clickTab({index:index})">
							{{item.name}}
						</view>
					</view>
				</u-transition>
				<view class="modal-black" v-show="showMenu" @click="closeMenu"></view>
			</view>

			<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
				class="mescroll">
				<view class="evaluatePage flex flex-space-between" v-show="tabIndex == 6" @click="evaluateClick">
					<view class="left flex flex-space-between" @click="evaluateClick">
						<u-icon size="20" name="edit-pen"></u-icon>
						<view style="margin-left: 20prx;">我的评价</view>
					</view>
					<view class="right">
						<u-icon size="20" name="arrow-right"></u-icon>
					</view>
				</view>
				<view :id="'good'+good.id" class="good-list" v-for="good in goods" :key="good.id"
					@click="toDetail(good.id)">
					<view style="padding: 0 35rpx 20rpx 35rpx;">
						<view class="flex flex-space-between row1">
							<view class="item1">
								{{good.orderNo}} {{good.goodsName}}
							</view>
							<view class="item2">
								{{good.orderStatus}}
							</view>
						</view>
						<view class="flex row2">
							<view class="left flex flex-space-between">
								<view class="ssx">{{$helper.getProvinceAbbreviation(good.sendPrivate?good.sendPrivate:good.sendCity)}}</view>
								<view class="level2-title">{{$helper.filterUrban(good.sendCity)}}
									{{$helper.filterArea(good.sendArea)}}
								</view>
								<view>
									<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'>
									</image>
								</view>
								<view class="ssx">
									{{$helper.getProvinceAbbreviation(good.unloadPrivate?good.unloadPrivate:good.unloadCity)}}
								</view>
								<view class="level2-title">{{$helper.filterUrban(good.unloadCity)}}
									{{$helper.filterArea(good.unloadArea)}}
								</view>
							</view>
						</view>
						<view class="flex row3">
							<view class="left">
								<image class="hz" src="@/static/images/news/hz.png"></image>
							</view>
							<view class="right">
								<view class="flex row">
									<view>{{good.compName}}</view>
									<view class="sline"></view>
									<view>{{good.cargoOwner}}</view>
								</view>
								<view class="flex align-center">
									<view class="">运距 {{good.distance}}km</view>
								</view>
							</view>
						</view>
						<view class="row4 flex flex-end align-center">
							<view class="time">{{good.updateDate}}</view>
							<!-- 货主装车确认前运费 -->
							<view class="car"
								v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'||good.orderStatus=='待货主确认装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='已终止'">
								<!-- {{good.billingMethod==0?good.freightInfo.freight?good.freightInfo.freight:good.freight:good.freightCar}}{{good.billingMethod==0?'元/吨':'元/车'}} -->
								{{good.freight}}{{good.billingMethod==0?'元/吨':'元/车'}}
							</view>
							<!-- 货主装车确认后卸车确认前运费 -->
							<view class="car"
								v-if="good.orderStatus=='待平台确认装车'||good.orderStatus=='平台驳回装车信息'||good.orderStatus=='运输中'||good.orderStatus=='待货主确认卸车'||good.orderStatus=='货主驳回卸车信息'">
								<!-- {{good.estimatedFreight}}{{good.illingMethod==0?'元/吨':'元/车'}} -->
								{{good.freight}}{{good.billingMethod==0?'元/吨':'元/车'}}
							</view>
							<!-- 货主装车卸车确认后 -->
							<view class="car"
								v-if="good.orderStatus=='待平台确认卸车'||good.orderStatus=='平台驳回卸车信息'||good.orderStatus=='待结算'||good.orderStatus=='已完结'||good.orderStatus=='结算中'||good.orderStatus=='待结算'">
								<!-- {{good.totalFreight}}{{good.illingMethod==0?'元/吨':'元/车'}} -->
								{{good.freight}}{{good.billingMethod==0?'元/吨':'元/车'}}
							</view>
							<!-- <view class='pay flex'
								v-if="good.orderStatus=='运输中'||good.orderStatus=='待货主确认卸车'||good.orderStatus=='待平台确认卸车'||good.orderStatus=='货主驳回卸车信息'||good.orderStatus=='平台驳回卸车信息'||good.orderStatus=='结算中'||good.orderStatus=='待结算'">
								<div>已付</div>
								<div class='number'>¥{{good.totalRepayable}}</div>
								<div class='number'>11</div>
							</view> -->
						</view>
						<view class="row5 flex flex-end">
							<view class="stop active" @click.stop="stop(good)"
								v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'">终止</view>
							<!-- 		<view class="start normal" @click.stop="confirmLoading(good)"
								v-if="good.orderStatus=='未装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='平台驳回装车信息'">
								确认装车</view> -->
							<view class="start normal" @click.stop="toDetail(good.id)"
								v-if="good.orderStatus=='未装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='平台驳回装车信息'">
								确认装车</view>

							<view class="start normal" v-if="good.orderStatus!='未装车'&&good.orderStatus!='待货主确认'"
								@click.stop="$helper.contactCustomerService()">联系客服
							</view>
							<view class="start normal" @click.stop="confirmUnLoading(good)"
								v-if="good.orderStatus=='运输中'||good.orderStatus=='货主驳回卸车信息'||good.orderStatus=='平台驳回卸车信息'">
								确认卸车</view>
							<view class="start normal" @click.stop="closed(good)" v-if="good.orderStatus=='结算中'">完结
							</view>
							<!-- <view class="start normal" @click.stop="addevaluation(good)" v-if="good.orderStatus=='已完结'">评价</view> -->
							<view class="start normal" @click.stop="addevaluation(good)" v-if="good.orderStatus=='已完结' && good.driverEvaluated != 1"><!-- driverEvaluated 为1是已评价过-->
								评价</view>
						</view>
					</view>
				</view>
			</mescroll-body>
		</view>
		<view v-else class="search-view">
			<view class="flex">
				<u-icon name="arrow-left" color="" size="20" class="back-icon" @click="back()"></u-icon>
				<u-search placeholder="可按编号、货主、收发地查找" placeholderColor="#AFB3BF" :actionStyle="textColor"
					bgColor="#F5F6FA" v-model="searchKeyWord" actionText='取消' @custom="cancel" @search="getSearch">
				</u-search>
			</view>
			<view class="near-search">
				<view class="flex flex-space-between">
					<view class="near-search-text">最近搜索</view>
					<u-icon name="trash-fill" color="#AFB3BF" size="20" class="back-icon" @click="del"></u-icon>
				</view>
				<view class="">
					<view v-for="(item,index) in useSearchList" :key="index" class="item-style inline-block" @click="getSearch(item)">
						{{item}}
					</view>
				</view>

			</view>
		</view>
		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :closeOnClickOverlay='true'
			:showCancelButton='showCancelButton' confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick"
			@cancel="cancelClick">
			<u-radio-group v-model="radiovalue1" placement="" v-if='isShowTerminationReason' class='row'>
				<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist1" :key="index"
					:label="item.name" :name="item.name" @change="radioChange">
				</u-radio>
			</u-radio-group>
			<u--textarea class="row" v-model="value2" placeholder="终止原因描述" count maxlength='50'
				v-if='isShowTerminationReason'>
			</u--textarea>
		</u-modal>

		<u-toast ref="uToast"></u-toast>
	</view>
</template>

<script>
	var that
	import {
		mapState
	} from 'vuex';
	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
	import {
		apiGoods
	} from "@/api/mock.js"
	export default {
		mixins: [MescrollMixin], // 使用mixin
		data() {
			return {
				confirmText: '确定',
				showCancelButton: true,
				showMenu: false,
				searchStyle: {
					background: "#317AFE",
					color: 'white',
					position: "absolute",
					right: "30rpx",
					padding: "6rpx 20rpx",
					"border-radius": '30rpx'
				},
				// isShowStopBtn: false,
				// isConfirmLoadingBtn:false,
				// isShowCustomerServiceBtn:false,
				// isConfirmUnLoadingBtn:false,
				// isClosedBtn:false,
				searchKeyWord: '',
				useSearchList: [],
				mescroll: null,
				isShowTerminationReason: false,
				id: '',
				value2: '',
				radiolist1: [{
						name: '已与货主协商',
						disabled: false
					},
					{
						name: '货主原因终止',
						disabled: false
					},
					{
						name: '司机个人原因终止',
						disabled: false
					}, {
						name: '其他',
						disabled: false
					}
				],
				radiovalue1: '已与货主协商',
				confirmText: '终止',
				alertTitle: '确定终止订单？',
				alertContent: "",
				isShowAlert: false,
				textColor: {
					"color": "#AFB3BF"
				},
				isSearch: false,
				startPlace: '齐齐哈尔齐齐哈尔',
				endPlace: '全国',
				goods: [], // 数据列表
				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
				height: "", // 需要固定swiper的高度
				tabList: [{
						name: '全部'
					}, {
						name: '未发运'
					}, {
						name: '运输中'
					}, {
						name: '待收货'
					}, {
						name: '待结算'
					},
					{
						name: '已完结'
					},
					{
						name: '评价'
					},
				],
				tabIndex: 0,
				scrollTop: 0
			}
		},
		computed: {
			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
		},
		onTabItemTap(e) {
			// tab 点击时执行，此处直接接收单击事件
			uni.pageScrollTo({
				scrollTop: 0,
				duration: 300
			});
		},
		created() {
			//#ifdef APP-PLUS
			// this.getLngLat();
			//#endif
		},
		async onLoad() {
			that = this
			// #ifdef APP-PLUS
			let _status = await that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
				driverPhone: this.userInfo.phone,
			}).then(res => {
				return res.data.authenticationStatus
			})
			// if (_status == '已禁用') {
			// 	this.isShowAlert = true
			// 	this.alertTitle = '账号审核中'
			// 	this.confirmText = '退出APP'
			// 	this.showCancelButton = false
			// } else {
			// 	console.log(1231233212332312312213)
			// }
			// #endif

		},
		onShow() {
			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
				reCommonId: this.userInfo.id,
			}).then(res3 => {
				if (res3.data) {
					let name = 'myTip';
					let value = res3.data
					if (value == 0) {
						uni.removeTabBarBadge({
							index: 3
						})
					}
					that.$store.commit('$uStore', {
						name,
						value
					});
					if (value != 0 && value) {
						uni.setTabBarBadge({
							index: 3,
							text: value + ""
						})
					}
				}
			})
			// this.upCallback({
			// 	size: 10,
			// 	num: 1
			// })
		},
		onPageScroll(res) {
			this.scrollTop = res.scrollTop
			console.log("页面滚动了", res.scrollTop)
			if (this.scrollTop > 1200) {
				uni.setTabBarItem({
					index: 2,
					text: '返回顶部',
					iconPath: 'static/images/common/top@2x.png',
					selectedIconPath: 'static/images/common/top@2x.png'
				})
			} else {
				uni.setTabBarItem({
					index: 2,
					text: '订单',
					iconPath: 'static/images/common/dingdan@2x(1).png',
					selectedIconPath: 'static/images/common/dingdan@2x.png'
				})
			}

		},
		methods: {
			addevaluation(good) {
				uni.$u.route('/pages/order/addEvaluation', {
					val: JSON.stringify(good)
				});
			},
			evaluateClick() {
				//我的评价记录
				uni.$u.route('/pages/order/evaluateList');
			},
			closeMenu() {
				this.showMenu = false
			},
			// 完结
			closed(item) {
				this.$request.baseRequest('post', '/orderInfo/api/editEnd', {
						id: item.id,
					}).then(res => {
						if (res.code == 200) {
							this.$refs.uToast.show({
								type: 'success',
								message: "提交成功",
								complete() {
									that.upCallback({
										size: 10,
										num: 1
									})
								}
							})
						}
					})
					.catch(res => {
						uni.$u.toast(res.message);
					});
			},
			confirmLoading(item) {
				uni.$u.route('/pages/order/confirmLoading', item);
			},
			confirmUnLoading(item) {
				uni.$u.route('/pages/order/confirmUnloading', {
					obj: JSON.stringify(item)
				});
			},
			back() {
				uni.navigateBack(-1)
			},
			mescrollInit(mescroll) {
				this.mescroll = mescroll;
			},
			radioChange(n) {
				console.log('radioChange', n);

			},
			stop(item) {
				// 货主接单
				if (item.orderStatusKey == 1) {
					this.isShowTerminationReason = false
				} else {
					this.isShowTerminationReason = true
				}
				this.id = item.id
				this.isShowAlert = true
			},
			init() {

			},
			del() {
				this.isShowAlert = true
				this.alertTitle = '确定删除全部历史记录?'
				this.confirmText = '确定'
			},
			confirmClick() {
				// #ifdef APP-PLUS
				if (this.alertTitle == '账号审核中') {
					if (uni.getSystemInfoSync().platform == 'ios') {
						plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
					} else if (uni.getSystemInfoSync().platform == 'android') {
						plus.runtime.quit();
					}
					return
				}
				// #endif
				if (this.alertTitle == '确定删除全部历史记录?') {
					uni.removeStorageSync('useSearchList');
					this.useSearchList = [];
					this.isShowAlert = false
				} else {
					console.log('终止', this.radiovalue1 == '其他' && !this.value2)
					if (this.radiovalue1 == '其他' && !this.value2) {
						uni.showToast({
							title: '请填写终止原因描述',
							icon: 'none',
							duration: 2000
						});
						return
					}
					let _terminationReason = ''
					if (this.radiovalue1 == '已与货主协商') {
						_terminationReason = 1
					} else if (this.radiovalue1 == '货主原因终止') {
						_terminationReason = 2
					} else if (this.radiovalue1 == '司机个人原因终止') {
						_terminationReason = 3
					} else if (this.radiovalue1 == '其他') {
						_terminationReason = 4
					}
					this.$request.baseRequest('post', '/orderInfo/api/end', {
							id: this.id,
							terminator: 1,
							terminationReason: _terminationReason,
							terminationReasonDescription: this.value2
						}).then(res => {
							console.log(res)
							if (res.code == 200) {
								this.$refs.uToast.show({
									type: 'success',
									message: "终止订单成功",
									complete() {
										that.mescroll.resetUpScroll()
									}
								})


							} else {
								uni.$u.toast("终止订单失败！");
							}
							this.isShowAlert = false

						})
						.catch(res => {
							uni.$u.toast(res.message);
						});
				}

			},
			cancelClick() {
				this.isShowAlert = false
			},
			getSearch(e) {
				if(!e){
					this.$refs.uToast.show({
						type: 'error',
						message: "搜索内容不能为空！",
					})
					return
				}
				this.useSearchList.unshift(e)
				this.useSearchList = [...new Set(this.useSearchList)]
				uni.setStorageSync("useSearchList", this.useSearchList)
				if (this.useSearchList.length > 9) {
					this.carList.splice(this.useSearchList.length, 1)
				}
				console.log("点击搜索", e)
				this.upCallback({
					size: 10,
					num: 1
				})
			},
			cancel() {
				this.isSearch = false
			},
			toDetail(id) {
				uni.$u.route('/pages/order/orderDetails', {
					id: id,
				});
			},
			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
			upCallback(page) {
				// uni.$u.sleep(300).then(() => {
				uni.showLoading({
					mask: true,
					title: '加载中'
				})
				// })

				// 此处可以继续请求其他接口
				// if(page.num == 1){
				// 	// 请求其他接口...
				// }

				// 如果希望先请求其他接口,再触发upCallback,可参考以下写法
				// if(!this.isInitxx){
				// 	apiGetxx().then(res=>{
				// 		this.isInitxx = true
				// 		this.mescroll.resetUpScroll() // 重新触发upCallback
				// 	}).catch(()=>{
				// 		this.mescroll.endErr()
				// 	})
				// 	return // 此处return,先获取xx
				// }
				// 订单状态12345
				this.$request.baseRequest('get', '/orderInfo/selectOrderInfo', {
						commonId: this.userInfo.id,
						searchKeyWord: this.searchKeyWord,
						searchType: this.searchType,
						pageSize: page.size,
						currentPage: page.num
					}).then(res => {
						this.isSearch = false
						if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
						this.goods = this.goods.concat(res.data.records); //追加新数据
						this.mescroll.endBySize(res.data.records.length, res.data.total);
						this.searchKeyWord = ""//搜索完成之后清空筛选内容
					})
					.catch(res => {
						uni.$u.toast(res.message);
					});
				uni.$u.sleep(500).then(() => {
					uni.hideLoading()
				})
			},
			clickTab(val) {
				uni.showLoading({
					mask: true
				})
				console.log(val)
				this.searchType = val.index
				this.tabIndex = val.index
				this.upCallback({
					size: 10,
					num: 1
				})
				this.showMenu = false
			},
			search() {
				this.isSearch = true
				//获取缓存搜索数据
				this.useSearchList = uni.getStorageSync('useSearchList')
				if (!this.useSearchList) this.useSearchList = [];
			}
		}
	}
</script>

<style scoped lang="scss">
	.banner {
		width: 100%;
		position: relative;
	}

	.fixed,
	.fixed1 {
		background: white;
		position: fixed;
		top: var(--status-bar-height);
		z-index: 999;
		width: 100%;
	}

	.fixed {
		.title {
			background: white;
			position: relative;
			font-size: 36rpx;
			font-weight: 500;
			color: rgba(0, 0, 0, 0.85);

			.search {
				position: absolute;
				right: 20rpx;
			}
		}
	}

	.fixed1 {
		top: 0;
		height: var(--status-bar-height);
		background: white;
	}

	.banner-img {
		width: 100%;
	}

	.head {
		position: absolute;
		width: calc(100% - 108rpx);
		bottom: 0;
		background: white;
		margin: 0 20rpx;
		border-radius: 20rpx;

		.item1,
		.item3 {
			width: 40%;

			.text {
				text-overflow: ellipsis;
				overflow: hidden;
				white-space: nowrap;
			}

		}

		.item1 .text {
			text-align: left;
		}

		.item3 .text {
			text-align: right;
		}
	}

	.change-btn {
		width: 86rpx;
		height: 86rpx;
	}

	.good-list {
		background-color: white;
		margin: 20rpx;
		padding: 20rpx 0rpx 0 0;
		border-radius: 20rpx;

		.row1 {
			font-size: 26rpx;

			.item1 {

				color: #333333;
			}

			.item2 {
				color: #FE6300;
			}
		}

		.row2 {
			margin: 30rpx 0;
		}

		.row3 {
			background: #F5F6FA;
			padding: 20rpx;
			border-radius: 10rpx;
			color: #333333;

			.hz {
				width: 74rpx;
				height: 74rpx;
				margin-right: 30rpx;
			}
		}

		.row4 {
			margin: 20rpx 0;

			.time {
				color: #999999;
				margin-right: 20rpx;
			}

			.car {
				color: #000000;
			}

			.pay {
				margin-left: 20rpx;

				.number {
					color: #FE6300;
					margin-left: 20rpx;
				}
			}
		}

		.row5 {
			margin: 20rpx 0;
			font-size: 28rpx;

			.stop {
				border-radius: 33px;
				border: 1px solid #FE6300;
				padding: 13rpx 31rpx;
				margin-right: 20rpx;
				color: #FE6300;
			}

			.normal {
				border: 1px solid #CDCDCD;
				border-radius: 33px;
				padding: 13rpx 31rpx;
			}
		}
	}

	.jt-icon {
		position: relative;
		top: 6rpx;
		width: 60rpx;
		margin: 0 20rpx;

	}

	.row {
		margin: 10rpx 0;
		align-items: center;
	}

	// .item-bottom {
	// 	background: #F0F5FF;
	// 	padding: 0 30rpx;

	// 	.name {
	// 		font-size: 26rpx;
	// 		font-weight: 700;
	// 		color: #000000;
	// 		margin-left: 30rpx;
	// 	}

	// 	.hp {
	// 		margin: 30rpx;
	// 	}

	// 	.number-color {
	// 		margin: 0 10rpx;
	// 	}

	// 	.qd {
	// 		background: linear-gradient(97deg, #4FABFD 0%, #2772FB 100%);
	// 		border-radius: 13px;
	// 		font-size: 29rpx;
	// 		font-weight: 400;
	// 		color: #FFFFFF;
	// 		padding: 10rpx 35rpx;
	// 	}
	// }

	.dw {
		align-items: center;
	}

	.mescroll {
		margin-top: calc(var(--status-bar-height) + 140rpx);
	}

	.sline {
		height: 28rpx;
		width: 1px;
		background: black;
		margin: 0 20rpx;
	}

	.search-view {
		margin-top: var(--status-bar-height);
		background: white;
		padding: 0 20rpx;
	}

	.back-icon {
		margin-right: 20rpx;
	}

	.near-search-text {
		margin: 20rpx 0;
	}

	.item-style {
		margin-top: 20rpx;
		background: #F5F6FA;
		padding: 11rpx 24rpx;
		margin-right: 20rpx;
		border-radius: 10px;
		font-size: 26rpx;
		color: #333333;
	}

	/deep/.u-modal__content {
		flex-direction: column;
	}

	.tab-content {
		position: relative;
		padding-right: 200rpx;
	}

	.right-btn {
		position: absolute;
		background: #F3F3F3;
		// box-shadow: -14px 0px 8px -8px rgba(0, 53, 149, 0.21);
		display: flex;
		right: 20rpx;
		height: 60rpx;
		top: 0;
		bottom: 0;
		margin: auto;
		color: #333333;
		align-items: center;
		justify-content: center;
		padding: 0rpx 20rpx;
		box-sizing: border-box;
		border-radius: 6rpx;
	}

	.all-menu {
		position: absolute;
		z-index: 99;
		top: 136rrpx;
	}

	/deep/.u-transition {
		border-radius: 0 0 50rpx 50rpx;
	}

	.transition {
		background: white;
		padding-bottom: 40rpx;

		.transition-item-style {
			display: inline-block;
			width: calc(25% - 40rpx);
			text-align: center;
			box-sizing: border-box;
			background: #F7F8FA;
			border-radius: 6px;
			margin: 20rpx 20rpx 0 20rpx;
			padding: 16rpx 0;

		}

		.menu-active {
			background: #2772FB;
			color: white;
		}
	}

	.modal-black {
		background: black;
		height: 100vh;
		width: 100vw;
		position: absolute;
		z-index: 999;
		opacity: 0.3;
	}

	.menu-active {
		background: #2772FB;
		color: white;
	}

	.evaluatePage {
		background: white;
		margin: 20rpx;
		padding: 20rpx;
		border-radius: 20rpx;
	}
</style>
