<!-- 货源 -->
<template>
	<view class="content">
		<view class="banner">
			<image class="banner-img" src="@/static/images/goodSource/banner@2x.png" mode='widthFix'></image>
			<view class="head flex s-row paddingr35">
				<view class="flex flex-space-between">
					<view class="flex s-row item1" @click="goCity(0)">
						<view class="fontsize-28 gray">装车</view>
						<view class="fontsize-46 fontweight-500 text">{{startPlace.selected}}</view>
					</view>
					<image class="change-btn item2" src="@/static/images/goodSource/change.png" mode='widthFix'
						@click="changeCity"></image>
					<view class="flex s-row item3" @click="goCity(1)">
						<view class="fontsize-28 gray text-align-right">卸车</view>
						<view class="fontsize-46 fontweight-500 text">{{endPlace.selected}}</view>
					</view>
				</view>
				<view>
					<u-button type="" class="btn-color fontsize-36 m-top20" @click="upCallback({size:10,num:1})"> 查询
					</u-button>
				</view>
			</view>
		</view>
		<view :class="scrollTop>1200?'fixed1':''"></view>
		<view class="tab-view">
			<u-tabs :list="tabList" @click="clickTab" :lineColor="scrollTop>1200?'white':'#303133'" :current='tabIndex'
				:inactiveStyle="{color: scrollTop>1200?'white':'',}" :activeStyle="{
							color: scrollTop>1200?'white':'',
							fontWeight: 'bold',
							transform: 'scale(1.05)'
						}" :class="scrollTop>1200?'fixed':''"></u-tabs>
			<view class="tab-right" @click="selectType">
				<view>{{pickerSelect}}</view>
				<u-icon name="arrow-down" size="20"></u-icon>
			</view>
		</view>
		<u-picker :show="show" :columns="columns" :closeOnClickOverlay='true' @close='selectTypeClose'
			@cancel='selectTypeClose' @confirm='confirmSelectType'></u-picker>
		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
			<view v-for="(good,index) in goods" :key="index" @click="toDetail(good.id)">
				<view v-if="good.peripheralInfo==1&&isFirstIndex==index" class="other-goods">周边货源</view>
				<view class="good-list">
					<view style="padding: 0 35rpx 20rpx 35rpx;position: relative;">
						<image src="@/static/images/goodSource/xf.png" mode="widthFix" class="xf-iamge"
							v-if="good.freightAdvance==1"></image>
						<view class="flex align-center">
							<view class="item1">
								<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 item2" src="@/static/images/goodSource/jt.png" mode='widthFix'>
							</image>
							<view class="item3">
								<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="right gray">
							{{$helper.changeTime(good.updateDate)}}
						</view>
						<view class="flex flex-space-between yf-style">
							<view class="left">
								<view class="flex">
									<view class="gray mr20" v-if="good.cargoDistance">货距 {{good.cargoDistance}}km</view>
									<view class="gray " v-if="good.distance">运距 {{good.distance}}km</view>
								</view>
								<view class="u-flex-wrap flex gray row ">
									<view>{{good.goodsName}} | </view>
									<!-- <u-line direction="col"></u-line> -->
									<view v-if="carLength(good)"> {{carLength(good)}} | </view>
									<view v-if="carType(good)">{{carType(good)}} | </view>
									<view v-if="carWeight(good)">{{carWeight(good)}}</view>
								</view>
								<view class="flex row">
									<view class="row-tips" v-if="good.taskDescription">{{good.taskDescription}}</view>
								</view>
							</view>
							<view class="right flex h-color">
								<view class="fontsize-46">
									{{good.freightPrice}}
								</view>
								<view class="flex dw">元/吨</view>
							</view>
						</view>
					</view>
					<view class="flex flex-space-between item-bottom">
						<view class="left flex row" @click.stop="cargoOwner(good)">
							<u--image
								:src="good.cargoOwnerPortrait?good.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
								width='100rpx' height='100rpx' shape="circle" >
							</u--image>
							<view class="name">{{good.cargoOwnerName}}</view>
							<!-- <view class="hp flex fontsize-24">
								<view class="gray">评分</view>
								<view class="number-color">99%</view>
							</view>
							
							<view class="sum flex fontsize-24">
								<view class="gray">发运次数</view>
								<view class="number-color">106</view>
							</view> -->
						</view>
						<view class="right">
							<view @click.stop="grabOrders(good)" class="qd" v-if='hasLogin'>抢单</view>
						</view>
					</view>
				</view>
			</view>
		</mescroll-body>
		<u-toast ref="uToast"></u-toast>
		<u-modal :show="isShowAlert" :title="alertTitle" :closeOnClickOverlay='true' :confirmText='confirmText'
			:showCancelButton='showCancelButton' confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick"
			@cancel="cancelClick"></u-modal>
	</view>
</template>
<script>
	var that
	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
	import {
		mapState
	} from 'vuex';
	import {
		apiGoods
	} from "@/api/mock.js"
	export default {
		mixins: [MescrollMixin], // 使用mixin
		data() {
			return {
					confirmText: '确定',
				showCancelButton: true,
				isFirstIndex: null,
				ObjSelect: {},
				isShowAlert: false,
				alertTitle: '确定抢单？',
				show: false,
				columns: [
					['全部类型', '运费先付']
				],
				startPlace: {},
				endPlace: {},
				otherGoods: [], // 数据列表
				goods: [], // 数据列表
				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
				height: "", // 需要固定swiper的高度
				tabList: [
					// 	{
					// 	name: '全部'
					// }, 
					{
						name: '推荐'
					}, {
						name: '按时间'
					}, {
						name: '按距离'
					},
					// {
					// 	name: '运费先付'
					// },
				],
				pickerSelect: '全部类型',
				tabIndex: 0,
				scrollTop: 0,
				count: 0,
				lng: '',
				lat: '',
				bool: false,
			}
		},
		onTabItemTap(e) {
			// tab 点击时执行，此处直接接收单击事件
			uni.pageScrollTo({
				scrollTop: 0,
				duration: 300
			});
		},
		created() {

		},
		computed: {
			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
		},
		onShow() {
			//获取上一次点击起装卸地
			if (uni.getStorageSync('fPlaceObj')) {
				this.startPlace = uni.getStorageSync('fPlaceObj');
			} else {
				// #ifdef APP-PLUS
				var that=this
				this.$nextTick(function(){
					that.getLngLat();
				})
				
				// #endif
				if(!this.startPlace.selected){
					this.startPlace.selected = ''
				}
			}
			if (uni.getStorageSync('sPlaceObj')) {
				this.endPlace = uni.getStorageSync('sPlaceObj');
			} else {
				this.endPlace.selected = '全国'
			}
			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.mescroll.resetUpScroll()

		},
		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

		},
		onPageScroll(res) {
			this.scrollTop = res.scrollTop
			// console.log("页面滚动了", res.scrollTop)
			if (this.scrollTop > 1200) {
				uni.setTabBarItem({
					index: 0,
					text: '返回顶部',
					iconPath: 'static/images/common/top@2x.png',
					selectedIconPath: 'static/images/common/top@2x.png'
				})
			} else {
				uni.setTabBarItem({
					index: 0,
					text: '货源',
					iconPath: 'static/images/common/huoyuan@2x(1).png',
					selectedIconPath: 'static/images/common/huoyuan@2x.png'
				})
			}

		},
		methods: {
			cargoOwner(_obj){
				// uni.$u.route('/pages/order/evaluateList');
				uni.$u.route('/pages/goodSource/cargoOwnerSee',_obj)
			},
			mescrollInit(mescroll) {
				this.mescroll = mescroll;
			},
			confirmClick() {
				let item = this.ObjSelect
				let _obj = {
					driverCommonId: this.firstAuthentication.commonId,
					commonId: item.commonId,
					cargoOwnerName: item.cargoOwnerName,
					cargoOwner: item.cargoOwner,
					sendPrivate: item.sendPrivate,
					sendCity: item.sendCity,
					sendArea: item.sendArea,
					sendDetailedAddress: item.sendDetailedAddress,
					unloadPrivate: item.unloadPrivate,
					unloadCity: item.unloadCity,
					unloadArea: item.unloadArea,
					unloadDetailedAddress: item.unloadDetailedAddress,
					goodsName: item.goodsName,
					distance: item.distance,
					freightPrice: item.freightPrice,
					driverName: this.firstAuthentication.driverName,
					driverPhone: this.firstAuthentication.driverPhone,
					cargoOwnerPhone: item.cargoOwnerPhone,
					id:item.id,
					billingMethod:item.billingMethod
				}

				this.$request.baseRequest('post', '/publishTaskInfo/api/addOrder', _obj).then(res => {
						if (res.code == 200) {
							this.$refs.uToast.show({
								type: 'success',
								message: "抢单成功！",
								complete() {
									uni.switchTab({
										url: "/pages/order/index"
									})
								}
							})
						} else {
							this.$refs.uToast.show({
								type: 'error',
								message: res.message,
							})
						}
					})
					.catch(res => {
						uni.$u.toast(res.message);
					});
				this.isShowAlert = false
			},
			cancelClick() {
				this.isShowAlert = false
			},
			carLength(good) {
				let length = ''
				if (good.carLengthSmall && good.carLength) {
					length = good.carLengthSmall + '~' + good.carLength + '米'
				} else if (good.carLengthSmall && !good.carLength) {
					length = "大于" + good.carLengthSmall + '米'
				} else if (good.carLength && !good.carLengthSmall) {
					length = "小于" + good.carLength + '米'
				}
				return length
			},
			carType(good) {
				let _val = '';
				if (good.carModel == 1) {
					_val = ''
				} else {
					if (good.carModel.includes(2)) {
						_val += '高栏/'
					}
					if (good.carModel.includes(3)) {
						_val += '集装箱/'
					}
					if (good.carModel.includes(4)) {
						_val += '自卸车'
					}
				}
				return _val
			},
			carWeight(good) {
				good.loadWeightSmall
				good.loadWeight
				let weight = ''
				if (good.loadWeightSmall && good.loadWeight) {
					weight = good.loadWeightSmall + '~' + good.loadWeight + '吨'
				} else if (good.loadWeightSmall) {
					weight = "大于" + good.loadWeightSmall + '吨'
				} else if (good.loadWeight) {
					weight = "小于" + good.loadWeight + '吨'
				}
				return weight
			},
			getdate() {
				var date = new Date()
				var year = date.getFullYear() //获取完整的年份(4位)
				var mouth = date.getMonth() + 1 //获取当前月份(0-11,0代表1月)
				var datetime = date.getDate() //获取当前日(1-31)
				if (mouth < 10) {
					mouth = '0' + mouth
				}
				if (datetime < 10) {
					datetime = '0' + datetime
				}
				return String(year) + String(mouth) + String(datetime)
			},
			grabOrders(item) {

				this.isShowAlert = true
				this.ObjSelect = item

			},
			confirmSelectType(val) {
				this.pickerSelect = val.value[0]
				
				this.show = false
				this.upCallback({size:10,num:1})
			},
			selectTypeClose() {
				this.show = false
			},
			selectType() {
				this.show = true
			},
			getLngLat() {
				var that=this
				uni.showLoading({
					title: '获取定位信息'
				})
				uni.getLocation({
					type: 'gcj02',
					geocode: true,
					success: res => {
						if (res.latitude) {
							// console.log(that.startPlace)
							if(res.address.city.indexOf('市')!=-1){
								res.address.city=res.address.city.substring(0,res.address.city.length-1)
							}
							
							that.$set(that.startPlace,'selected',res.address.city)
							that.lng = res.longitude;
							that.lat = res.latitude;
							uni.hideLoading()
						} else {
							if (uni.getSystemInfoSync().platform == 'android') {
								var context = plus.android.importClass("android.content.Context");
								var locationManager = plus.android.importClass(
									"android.location.LocationManager");
								var main = plus.android.runtimeMainActivity();
								var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
								that.bool = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)
							}
							if (that.bool === false) {
								uni.showModal({
									title: '提示',
									content: '请打开定位服务',
									success: ({
										confirm,
										cancel
									}) => {
										if (confirm) {
											if (uni.getSystemInfoSync().platform == 'android') {
												var Intent = plus.android.importClass(
													'android.content.Intent');
												var Settings = plus.android.importClass(
													'android.provider.Settings');
												var intent = new Intent(Settings
													.ACTION_LOCATION_SOURCE_SETTINGS);
												var main = plus.android.runtimeMainActivity();
												main.startActivity(intent); // 打开系统设置GPS服务页面
											}
											uni.hideLoading()
										}else{
											uni.hideLoading()
										}
									}
									
								});
							}
							uni.hideLoading()
						}
					}
				});
			},
			toDetail(id) {
				//司机是否认证身份
				if (this.firstAuthentication.authenticationStatus == '已认证') {
					uni.$u.route('/pages/goodSource/shippingDetails', {
						id: id,
					});
				} else if (this.firstAuthentication.authenticationStatus == '已过期') {
					this.$refs.uToast.show({
						type: 'error',
						message: "证件已过期,请上传新证件！",
					})
				} else {
					this.$refs.uToast.show({
						type: 'error',
						message: "请先完成司机认证！",
					})
				}

			},
			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
			upCallback(page) {
				let _pickerSelect;
				if (this.pickerSelect == '运费先付') {
					_pickerSelect = 1
				} else {
					_pickerSelect = 0
				}
				//选择省市区
				let _data = {
					searchKeyWord: this.tabIndex + 1,
					searchType: _pickerSelect,
					// loadingPlace: this.startPlace.selected,
					// unLoadingPlace: this.endPlace.selected=="全国"?'':this.endPlace.selected,
					pageSize: page.size,
					currentPage: page.num,

					// loadingPlaceCity: this.startPlace.fchoosecity,
					// unLoadingPlaceCity: this.endPlace.schoosecity

				}
				// if (this.tabIndex == 2) {
					if(!this.startPlace.selected){
						console.log(1111111)
						this.getLngLat();
					}
					_data.driverLongitude = this.lng
					_data.driverLatitude = this.lat
				// }
				console.log('------')
				console.log(_data)
				if (uni.getStorageSync('fPlaceObj')) {
					if (this.startPlace.fchoosearea && this.startPlace.fchoosearea == '全部' && this.startPlace
						.fchoosearea != '请选择区') {
						_data.loadingPlaceCity = this.startPlace.fchoosecity
					} else if (this.startPlace.fchoosecity == '全部') {
						_data.loadingPlace = this.startPlace.selected
					} else {
						_data.loadingPlaceCity = this.startPlace.fchoosecity
						_data.loadingPlace = this.startPlace.fchoosearea
					}

				} else {
					_data.loadingPlaceCity = this.startPlace.fchoosecity
				}
				if (uni.getStorageSync('sPlaceObj')) {
					if (this.endPlace.schoosearea && this.endPlace.schoosearea == '全部' && this.endPlace.schoosearea !=
						'请选择区') {
						_data.unLoadingPlaceCity = this.endPlace.schoosecity
					} else if (this.endPlace.schoosearea) {
						_data.unLoadingPlace = this.endPlace.selected == "全国" ? '' : this.endPlace.selected
					} else {
						_data.unLoadingPlace = this.endPlace.selected == "全国" ? '' : this.endPlace.selected
						_data.unLoadingPlaceCity = this.endPlace.schoosecity
					}
				} else {
					_data.unLoadingPlace = this.endPlace.selected == "全国" ? '' : this.endPlace.selected
				}
				if (this.lng) {
					_data.longitude = this.lng
					_data.latitude = this.lat
				}
				uni.showLoading({
					mask: true,
					title: '加载中'
				})
				this.$request.baseRequest('get', '/publishTaskInfo/selectGoodsSource', _data).then(res => {
						if (res.code == 200) {
							uni.hideLoading()
							this.mescroll.endBySize(res.data.records.length, res.data.total);
							// for (var i = 0; i < res.data.records.length; i++) {
							// 	res.data.records[i].cargoOwnerName1=
							// }
							if (page.num == 1) {
								this.goods = [];
								// this.otherGoods = []
							}; //如果是第一页需手动制空列表
							that.goods = that.goods.concat(res.data.records);
							for (let i = 0; i < that.goods.length; i++) {
								if (that.goods[i].peripheralInfo == 1) {
									that.isFirstIndex = i
									return
								}
							}
						}
						uni.hideLoading()
					})
					.catch(res => {
						uni.$u.toast(res.message);
						this.mescroll.endErr();
					});
			},
			clickTab(val) {
				this.tabIndex = val.index
				this.upCallback({
					size: 10,
					num: 1,
				})
			},
			changeCity() {
				if (this.endPlace.selected == '全国') {
					this.$refs.uToast.show({
						type: 'error',
						message: "卸车地为全国不允许切换！",
					})
					return
				}

				[this.startPlace.fchooseprovince, this.endPlace.schooseprovince] = [this.endPlace.schooseprovince, this
					.startPlace.fchooseprovince
				];
				[this.startPlace.fchoosecity, this.endPlace.schoosecity] = [this.endPlace.schoosecity, this.startPlace
					.fchoosecity
				];
				[this.startPlace.fchoosearea, this.endPlace.schoosearea] = [this.endPlace.schoosearea, this.startPlace
					.fchoosearea
				];
				[this.startPlace.selected, this.endPlace.selected] = [this.endPlace.selected, this.startPlace.selected];
				// [this.startPlace, this.endPlace] = [this.endPlace, this.startPlace];
				uni.setStorageSync('fPlaceObj', this.startPlace);
				uni.setStorageSync('sPlaceObj', this.endPlace);
			},
			goCity(type) {
				uni.$u.route('/pages/goodSource/selectCity', {
					startPlace: JSON.stringify(this.startPlace),
					endPlace: JSON.stringify(this.endPlace),
					type: type
				});
			},
			swiperChange(e) {
				this.tabIndex = e.detail.current
			}
		}
	}
</script>

<style scoped lang="scss">
	.content {
		background: #F2F4F7;
	}

	.banner {
		width: 100%;
		position: relative;
	}
.u-flex-wrap{
	flex-wrap: wrap;
}
	.fixed,
	.fixed1 {
		background: linear-gradient(97deg, #4FABFD 0%, #2772FB 100%);
		position: fixed;
		top: var(--status-bar-height);
		z-index: 999;
		// width: calc(100% - 40rpx);
		width: 100%;
		// margin:0 20rpx;
	}

	.fixed1 {
		top: 0;
		height: var(--status-bar-height);
		background: linear-gradient(97deg, #4FABFD 0%, #2772FB 100%);
	}

	.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: 10px 10px 15px 10px;
		padding: 10px 0px 0px 0;
		border-radius: 30rpx;
		box-shadow: 0px 5rpx 20rpx #E3E3E3;

		.item1,
		.item3 {
			// width: 40%;
			display: flex;

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

		}

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

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

	.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;
		border-radius: 0 0 30rpx 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;
	}

	.place {

		height: var(--status-bar-height);
	}

	.tab-view {
		display: flex;
		align-items: center;
		justify-content: space-between;
	}

	.tab-right {
		display: flex;
		margin-right: 20rpx;
		align-items: center;
	}

	.other-goods {
		// background: red;
		margin: 40rpx 0;
		display: flex;
		justify-content: center;
		font-size: 36rpx;
	}

	.level2-title {
		font-size: 28rpx;
	}

	.yf-style {
		position: relative;

		.h-color {
			position: absolute;
			right: 0;
			top: -30rpx;
		}
	}

	.xf-iamge {
		width: 74rpx;
		height: 43rpx;
		position: absolute;
		top: -20rpx;
		right: 0;
	}
</style>
