achao vor 3 Jahren
Ursprung
Commit
6684056648

Datei-Diff unterdrückt, da er zu groß ist
+ 199 - 199
components/data/data.js


+ 1 - 1
config/index.js

@@ -1,5 +1,5 @@
 const dev = {
-	baseUrlNew: 'http://192.168.1.121:8090',
+	baseUrlNew: 'http://192.168.0.17:8090',
 	h5Appid: 'wxb66b599f7f61b46f',
 	debug: false
 }

+ 291 - 79
pages/goodSource/index.vue

@@ -5,68 +5,75 @@
 			<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">
+					<view class="flex s-row item1" @click="goCity(0)">
 						<view class="fontsize-28 gray">装车</view>
-						<view class="fontsize-46 fontweight-500 text" @click="goCity(0)">{{startPlace}}</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">
+					<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" @click="goCity(1)">{{endPlace}}</view>
+						<view class="fontsize-46 fontweight-500 text">{{endPlace.selected}}</view>
 					</view>
 				</view>
 				<view>
-					<u-button type="" class="btn-color fontsize-36 m-top20"> 查询</u-button>
+					<u-button type="" class="btn-color fontsize-36 m-top20" @click="upCallback()"> 查询</u-button>
 				</view>
 			</view>
 		</view>
 		<view :class="scrollTop>1200?'fixed1':''"></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-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 :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">
-						<view class="left flex flex-space-between">
+						<view class="item1">
 							<view class="ssx">辽</view>
-							<view class="level2-title">营口 鲅鱼圈</view>
-							<view>
-								<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'></image>
-							</view>
-							<view class="ssx">
-								京
-							</view>
-							<view class="level2-title">北京 通州</view>
+							<view class="level2-title">{{good.sendCity}} {{good.sendArea}}</view>
 						</view>
-						<view class="right gray">
-							01.10
+
+						<image class="jt-icon item2" src="@/static/images/goodSource/jt.png" mode='widthFix'></image>
+						<view class="item3">
+							<view class="ssx">京</view>
+							<view class="level2-title">{{good.unloadCity}} {{good.unloadArea}}</view>
 						</view>
+
+
+					</view>
+					<view class="right gray">
+						01.10
 					</view>
 					<view class="flex flex-space-between">
 						<view class="left">
 							<view class="flex">
-								<view class="fontsize-25 gray mr20">货距 10km</view>
-								<view class="fontsize-25 gray ">运距 35km</view>
+								<view class="fontsize-25 gray mr20">货距 {{good.cargoDistance}}km</view>
+								<view class="fontsize-25 gray ">运距 {{good.distance}}km</view>
 							</view>
 							<view class="flex fontsize-25 gray row">
-								<view>玉米 | </view>
-								<view>3.8-5米 | </view>
-								<view>厢式/平板/高栏 | </view>
-								<view>10吨</view>
+								<view>{{good.goodsName}} | </view>
+								<view>{{carLength(good)}} | {{carType(good)}} | {{carWeight(good)}}</view>
 							</view>
 							<view class="flex row">
-								<view class="row-tips">运输过程中其他费用,发货方承担。</view>
+								<view class="row-tips">{{good.taskDescription}}</view>
 							</view>
 						</view>
 						<view class="right flex h-color">
 							<view class="fontsize-46">
-								300
+								{{good.freightPrice}}
 							</view>
 							<view class="flex dw">元/吨</view>
 						</view>
@@ -74,29 +81,33 @@
 				</view>
 				<view class="flex flex-space-between item-bottom">
 					<view class="left flex row">
-						<u--image :showLoading="true" :src="good.goodImg" width="70rpx" height="70rpx" shape="circle">
+						<u--image :showLoading="true" :src="good.cargoOwnerPortrait" width="70rpx" height="70rpx"
+							shape="circle">
 						</u--image>
-						<view class="name">张颖</view>
-						<view class="hp flex fontsize-24">
+						<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>
 					<view class="right">
-						<view @click.stop="grabOrders(good.id)" class="qd">抢单</view>
+						<view @click.stop="grabOrders(good)" class="qd">抢单</view>
 					</view>
 				</view>
 			</view>
 		</mescroll-body>
-<u-toast ref="uToast"></u-toast>
+		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
 <script>
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import {
+		mapState
+	} from 'vuex';
 	import {
 		apiGoods
 	} from "@/api/mock.js"
@@ -104,24 +115,34 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
-				startPlace: '齐齐哈尔',
-				endPlace: '全国',
+				show: false,
+				columns: [
+					['全部类型', '运费先付']
+				],
+				startPlace: '1',
+				endPlace: '2',
 				goods: [], // 数据列表
 				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
 				height: "", // 需要固定swiper的高度
-				tabList: [{
-					name: '全部'
-				}, {
-					name: '推荐'
-				}, {
-					name: '按时间'
-				}, {
-					name: '按距离'
-				}, {
-					name: '运费先付'
-				}],
+				tabList: [
+					// 	{
+					// 	name: '全部'
+					// }, 
+					{
+						name: '推荐'
+					}, {
+						name: '按时间'
+					}, {
+						name: '按距离'
+					},
+					// {
+					// 	name: '运费先付'
+					// },
+				],
+				pickerSelect: '全部类型',
 				tabIndex: 0,
-				scrollTop: 0
+				scrollTop: 0,
+				count: 0
 			}
 		},
 		onTabItemTap(e) {
@@ -133,24 +154,44 @@
 			console.log(e)
 		},
 		created() {
-		
+
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onShow() {
+			debugger
+			//获取上一次点击起装卸地
+			console.log(uni.getStorageSync('fPlaceObj'))
+			if (uni.getStorageSync('fPlaceObj')) {
+				this.startPlace = uni.getStorageSync('fPlaceObj');
+			} else {
+				console.log(123)
+				// this.getLngLat();
+			}
+			console.log(uni.getStorageSync('sPlaceObj'))
+			if (uni.getStorageSync('sPlaceObj')) {
+				this.endPlace = uni.getStorageSync('sPlaceObj');
+			}
+
+
 		},
 		onLoad() {
 			//#ifdef APP-PLUS
-			this.getLngLat();
+			// this.getLngLat();
 			//#endif
 			// let _isHave = this.$utils.getRoles('aaa')
 			// console.log(_isHave)
-			  // var Ip=returnCitySN['cip']
-			  //     var cityname=returnCitySN['cname']
-			  //     localStorage.setItem('Ip', Ip)
-			  //     console.log(localStorage.getItem('Ip', Ip))
-			  //     localStorage.setItem('cityname', cityname)
-			  //     console.log(localStorage.getItem('cityname', cityname))
+			// var Ip=returnCitySN['cip']
+			//     var cityname=returnCitySN['cname']
+			//     localStorage.setItem('Ip', Ip)
+			//     console.log(localStorage.getItem('Ip', Ip))
+			//     localStorage.setItem('cityname', cityname)
+			//     console.log(localStorage.getItem('cityname', cityname))
 		},
 		onPageScroll(res) {
 			this.scrollTop = res.scrollTop
-			console.log("页面滚动了", res.scrollTop)
+			// console.log("页面滚动了", res.scrollTop)
 			if (this.scrollTop > 1200) {
 				uni.setTabBarItem({
 					index: 0,
@@ -169,6 +210,108 @@
 
 		},
 		methods: {
+			carLength(good) {
+				let length = ''
+				if (good.carLengthSmall && good.carLength) {
+					length = good.carLengthSmall + '~' + good.carLength + '米'
+				} else if (good.carLengthSmall) {
+					length = "大于" + good.carLengthSmall + '米'
+				} else if (good.carLength) {
+					length = "小于" + good.carLength + '米'
+				}
+				return length
+			},
+			carType(good) {
+				let _val = '';
+				if (good.carModel == 1) {
+					_val = '不限'
+				} else {
+					if (good.carModel.includes(2)) {
+						debugger
+						_val += '高栏/'
+					}
+					if (good.carModel.includes(3)) {
+						debugger
+						_val += '集装箱/'
+					}
+					if (good.carModel.includes(4)) {
+						debugger
+						_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) {
+				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
+				}
+				this.$request.baseRequest('post', '/publishTaskInfo/api/addOrder', _obj).then(res => {
+						debugger
+						if (res.code == 200) {
+
+						}
+
+
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			confirmSelectType(val) {
+				debugger
+				console.log(val)
+				this.pickerSelect = val.value[0]
+				this.show = false
+			},
+			selectTypeClose() {
+				this.show = false
+			},
+			selectType() {
+				this.show = true
+			},
 			getLngLat() {
 				console.log(11111111111111111111111111111111111111111111111111111)
 				uni.getLocation({
@@ -225,6 +368,42 @@
 			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
+				debugger
+				debugger
+				let _pickerSelect;
+				if (this.pickerSelect == '运费先付') {
+					_pickerSelect = 1
+				} else {
+					_pickerSelect = 0
+				}
+
+				this.$request.baseRequest('get', '/publishTaskInfo/selectGoodsSource', {
+						// searchKeyWord: this.tabIndex + 1,
+						// searchType: _pickerSelect,
+						loadingPlace: this.startPlace.selected,
+						unLoadingPlace: this.endPlace.selected,
+						pageSize: page.size,
+						currentPage: page.num,
+						// loadingPlaceCity: this.startPlace.fchoosecity,
+						// unLoadingPlaceCity: this.endPlace.schoosecity
+
+					}).then(res => {
+						debugger
+						if (res.code == 200) {
+							this.goods = res.data.records
+							this.mescroll.endBySize(res.data.records.length, res.data.total);
+						}
+
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+						this.mescroll.endErr();
+					});
+
+
+
+
+
 				// 此处可以继续请求其他接口
 				// if(page.num == 1){
 				// 	// 请求其他接口...
@@ -241,36 +420,36 @@
 				// 	return // 此处return,先获取xx
 				// }
 
-				//联网加载数据
-				apiGoods(page.num, page.size).then(res => {
-					//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
-					//mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
+				// //联网加载数据
+				// apiGoods(page.num, page.size).then(res => {
+				// 	//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
+				// 	//mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
 
-					//方法一(推荐): 后台接口有返回列表的总页数 totalPage
-					//this.mescroll.endByPage(res.list.length, totalPage); //必传参数(当前页的数据个数, 总页数)
+				// 	//方法一(推荐): 后台接口有返回列表的总页数 totalPage
+				// 	//this.mescroll.endByPage(res.list.length, totalPage); //必传参数(当前页的数据个数, 总页数)
 
-					//方法二(推荐): 后台接口有返回列表的总数据量 totalSize
-					//this.mescroll.endBySize(res.list.length, totalSize); //必传参数(当前页的数据个数, 总数据量)
+				// 	//方法二(推荐): 后台接口有返回列表的总数据量 totalSize
+				// 	this.mescroll.endBySize(res.list.length, totalSize); //必传参数(当前页的数据个数, 总数据量)
 
-					//方法三(推荐): 您有其他方式知道是否有下一页 hasNext
-					//this.mescroll.endSuccess(res.list.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)
+				// 	//方法三(推荐): 您有其他方式知道是否有下一页 hasNext
+				// 	//this.mescroll.endSuccess(res.list.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)
 
-					//方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据
-					this.mescroll.endSuccess(res.list.length);
+				// 	//方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据
+				// 	// this.mescroll.endSuccess(res.list.length);
 
-					//设置列表数据
-					if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
-					this.goods = this.goods.concat(res.list); //追加新数据
-				}).catch(() => {
-					//联网失败, 结束加载
-					this.mescroll.endErr();
-				})
+				// 	//设置列表数据
+				// 	if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
+				// 	this.goods = this.goods.concat(res.list); //追加新数据
+				// }).catch(() => {
+				// 	//联网失败, 结束加载
+				// 	this.mescroll.endErr();
+				// })
 			},
 			clickTab(val) {
 				console.log(val)
 			},
 			changeCity() {
-				if(this.endPlace=='全国') {
+				if (this.endPlace == '全国') {
 					this.$refs.uToast.show({
 						type: 'error',
 						message: "卸车地为全国不允许切换!",
@@ -360,6 +539,27 @@
 		margin: 20rpx;
 		padding: 20rpx 0rpx 0 0;
 		border-radius: 20rpx;
+
+		.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 {
@@ -412,4 +612,16 @@
 
 		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;
+	}
 </style>

+ 109 - 25
pages/goodSource/selectCity.vue

@@ -12,7 +12,7 @@
 					<view class="history-city-title">历史发货地</view>
 					<view class="city-list">
 						<view class="city" v-for="(item,index) in historyFcityList" :key='index'>
-							{{item}}
+							{{item.selected}}
 						</view>
 					</view>
 				</view>
@@ -155,7 +155,30 @@
 			makeHistoryList(val) {
 				debugger
 				if (this.type == 0) {
+					let _obj = {}
+					// for (let i = 0; i < this.historyScityList.length; i++) {
+					// 	// let _data = this.historyScityList[i]
+					// }
+					if (val.selected == '全国' || val.fchoosecity == '全部') {
+
+						this.historyFcityList = this.historyFcityList.reduce((cur, item) => {
+							_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
+							return cur;
+						}, [])
+					} else {
+						this.historyFcityList = this.historyFcityList.reduce((cur, item) => {
+							if (item.fchoosecity == val.fchoosecity) {
+								_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
+								return cur;
+							} else {
+								_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
+								return cur;
+							}
+
 
+						}, [])
+					}
+					return this.historyFcityList
 				} else {
 					let _obj = {}
 					// for (let i = 0; i < this.historyScityList.length; i++) {
@@ -163,13 +186,20 @@
 					// }
 					if (val.selected == '全国' || val.schoosecity == '全部') {
 
+						this.historyScityList = this.historyScityList.reduce((cur, item) => {
+							_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
+							return cur;
+						}, [])
+					} else {
 						this.historyScityList = this.historyScityList.reduce((cur, item) => {
 							if (item.schoosecity == val.schoosecity) {
 								_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
 								return cur;
+							} else {
+								_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
+								return cur;
 							}
-							_obj[item.selected] ? "" : _obj[item.selected] = true && cur.push(item);
-							return cur;
+
 
 						}, [])
 					}
@@ -177,24 +207,75 @@
 				}
 			},
 			confirmBtn() {
-				debugger
-				//设置地区
+				//设置地区 0发货地 1收货地
 				if (this.type == 0) {
 					if (this.fchooseprovince == '选择' || (this.fchoosecity == '请选择市' && this.fchooseprovince != '全国')) {
 						this.$refs.uToast.show({
 							type: 'error',
 							message: "请选择区域!",
 						})
+						return
+					}
+					console.log("省", this.fchooseprovince)
+					console.log("市", this.fchoosecity)
+					console.log("区", this.fchoosearea)
+					let _obj = {
+						fchooseprovince: this.fchooseprovince,
+						fchoosecity: this.fchoosecity,
+						fchoosearea: this.fchoosearea,
+						selected: ''
+					}
+					//选中全国
+					if (this.fchoosecity == '请选择市' && this.fchooseprovince == '全国') {
+						_obj.selected = this.fchooseprovince
+						this.historyFcityList.unshift(_obj)
+						let _newList = this.makeHistoryList(_obj)
+						uni.setStorageSync('fPlaceList', _newList);
+
+					}
+					//选择省
+					if (this.fchoosearea == '请选择区' && this.fchoosecity == '全部') {
+						_obj.selected = this.fchooseprovince
+						this.historyFcityList.unshift(_obj)
+						let _newList = this.makeHistoryList(_obj)
+
+						uni.setStorageSync('fPlaceList', _newList);
+					}
+					//选择市
+					if (this.fchoosearea == '全部') {
+						_obj.selected = this.fchoosecity
+						this.historyFcityList.unshift(_obj)
+						let _newList = this.makeHistoryList(_obj)
+						uni.setStorageSync('fPlaceList', _newList);
+					}
+					uni.setStorageSync('fPlaceObj', _obj);
+					//选择区
+					if (this.fchoosearea != '请选择区' && this.fchoosearea != '全部') {
+						let _list = this.fchoosearea.split(',')
+						let _newList
+						//设置历史收发地并去重,区重名判断是否是同一个市在去重
+						for (let i = 0; i < _list.length; i++) {
+							let _deepObj = uni.$u.deepClone(_obj)
+							_deepObj.selected = _list[i]
+							this.historyFcityList.unshift(_deepObj)
+							_newList = this.makeHistoryList(_deepObj)
+
+						}
+						console.log(_newList)
+						uni.setStorageSync('fPlaceList', this.historyFcityList);
+						uni.setStorageSync('fPlaceObj', {
+							fchooseprovince: this.fchooseprovince,
+							fchoosecity: this.fchoosecity,
+							fchoosearea: this.fchoosearea,
+							selected: this.fchoosearea
+						});
 					}
-					console.log(this.fchooseprovince)
-					console.log(this.fchoosecity)
-					console.log(this.fchoosearea)
-					// if(this.fchoosecity)
-					// this.historyFcityList.push('')
-					// this.fchooseprovince
-					// this.fchoosecity
-					// this.fchoosearea
+					console.log(this.historyFcityList)
+					uni.switchTab({
+						url: '/pages/goodSource/index'
+					});
 				} else {
+					//收货地
 					if (this.schooseprovince == '选择' || (this.schoosecity == '请选择市' && this.schooseprovince != '全国')) {
 						this.$refs.uToast.show({
 							type: 'error',
@@ -210,12 +291,14 @@
 						schoosearea: this.schoosearea,
 						selected: ''
 					}
+					//选中全国
 					if (this.schoosecity == '请选择市' && this.schooseprovince == '全国') {
 						_obj.selected = this.schooseprovince
 						this.historyScityList.unshift(_obj)
 						let _newList = this.makeHistoryList(_obj)
 						uni.setStorageSync('sPlaceList', _newList);
 					}
+					//选择省
 					if (this.schoosearea == '请选择区' && this.schoosecity == '全部') {
 						_obj.selected = this.schooseprovince
 						this.historyScityList.unshift(_obj)
@@ -223,13 +306,15 @@
 
 						uni.setStorageSync('sPlaceList', _newList);
 					}
+					//选择市
 					if (this.schoosearea == '全部') {
 						_obj.selected = this.schoosecity
 						this.historyScityList.unshift(_obj)
 						let _newList = this.makeHistoryList(_obj)
 						uni.setStorageSync('sPlaceList', _newList);
 					}
-					debugger
+					uni.setStorageSync('sPlaceObj', _obj);
+					//选择区
 					if (this.schoosearea != '请选择区' && this.schoosearea != '全部') {
 						let _list = this.schoosearea.split(',')
 						let _newList
@@ -239,17 +324,20 @@
 							_deepObj.selected = _list[i]
 							this.historyScityList.unshift(_deepObj)
 							_newList = this.makeHistoryList(_deepObj)
-
 						}
 						console.log(_newList)
 						uni.setStorageSync('sPlaceList', this.historyScityList);
+						uni.setStorageSync('sPlaceObj', {
+							schooseprovince: this.schooseprovince,
+							schoosecity: this.schoosecity,
+							schoosearea: this.schoosearea,
+							selected: this.schoosearea
+						});
 					}
-
 					console.log(this.historyScityList)
-					// this.historyScityList
-					// schooseprovince
-					// schoosecity
-					// schoosearea
+					uni.switchTab({
+						url: '/pages/goodSource/index'
+					});
 				}
 			},
 			//返回上一级
@@ -292,6 +380,7 @@
 					this.isfprovince = null
 					this.isfcity = null
 					this.isfarea = null
+
 					if (this.fchoosecity == '全部') return;
 				} else {
 					this.sstatus = status
@@ -300,8 +389,6 @@
 					this.issarea = null
 					if (this.fchoosecity == '全部') return;
 				}
-
-
 				if (status == 0) {
 					if (this.type == 0) {
 						this.fchooseprovince = '选择'
@@ -325,7 +412,6 @@
 			},
 			// 选择省
 			selectProvince(item, i, statusIndex) {
-				debugger
 				this.count = 0;
 				if (this.type == 0) {
 					if (i == 0) {
@@ -409,7 +495,6 @@
 							} else {
 								this.farealist[i].checked = false
 							}
-
 						}
 						this.fchoosearea = '全部'
 						this.$forceUpdate()
@@ -435,7 +520,6 @@
 					} else if (!item.checked && this.count < 3) {
 						this.count--;
 					}
-
 				} else {
 					if (item.checked) {
 						item.checked = !item.checked

+ 117 - 30
pages/goodSource/shippingDetails.vue

@@ -1,17 +1,20 @@
 <!-- 发运详情 -->
 <template>
 	<view class="content">
-		<u-navbar title="发运详情" :bgColor="bgColor" @leftClick='back' :placeholder='true' leftIconColor="#fff" titleStyle='color:#fff'
+		<!-- 	<u-navbar title="发运详情" :bgColor="bgColor" @leftClick='back' :placeholder='true' leftIconColor="#fff" titleStyle='color:#fff'
 			rightText='已关注'>
+		</u-navbar> -->
+		<u-navbar title="发运详情" :bgColor="bgColor" @leftClick='back' :placeholder='true' leftIconColor="#fff"
+			titleStyle='color:#fff'>
 		</u-navbar>
 		<view class="top-bgc"></view>
 		<view class="content-move">
 			<view class="content1">
 				<view class="row1 flex flex-space-between">
 					<view class="left flex">
-						<u--image src="https://cdn.uviewui.com/uview/album/1.jpg" width='122rpx' height='122rpx'
-							shape="circle"></u--image>
-						<view class="fontsize-46 ml20">张三</view>
+						<u--image :src="detailData.cargoOwnerPortrait" width='122rpx' height='122rpx' shape="circle">
+						</u--image>
+						<view class="fontsize-46 ml20">{{detailData.cargoOwnerName}}</view>
 					</view>
 					<view class="right">
 						<view class="flex">
@@ -26,7 +29,8 @@
 						黑龙江中天贸易有限公司
 					</view>
 				</view>
-				<view class="row3 flex fontsize-24">
+				<!-- 当前版本不做 -->
+				<!-- 		<view class="row3 flex fontsize-24">
 					<view class="item flex">
 						<view class="gray">好评率</view>
 						<view class="number-color">99%</view>
@@ -39,61 +43,71 @@
 						<view class="gray">评价</view>
 						<view class="number-color">10</view>
 					</view>
-				</view>
+				</view> -->
 				<view class="row4">
 					<view class="flex fontsize-26">
 						<view class="left">装</view>
-						<view class="right flex align-center">辽宁省营口市鲅鱼圈区蝴蝶泉路116号</view>
+						<view class="right flex align-center">
+							{{detailData.sendPrivate}}{{detailData.sendCity}}{{detailData.sendArea}}{{detailData.sendDetailedAddress}}
+						</view>
 					</view>
 					<u-line class="line" margin="20rpx 0"></u-line>
 					<view class="flex fontsize-26">
 						<view class="left-x">卸</view>
-						<view class=" right align-center">黑龙江省齐齐哈尔市梅里斯达斡尔族区杜尔门沁达斡尔乡53农场</view>
+						<view class=" right align-center">
+							{{detailData.unloadPrivate}}{{detailData.unloadCity}}{{detailData.unloadArea}}{{detailData.unloadDetailedAddress}}
+						</view>
 					</view>
 				</view>
 			</view>
 			<view class="content2">
 				<view class="flex align-center">
 					<view class="left">货物</view>
-					<view>玉米|20吨</view>
+					<view class="flex">
+						<view>{{detailData.goodsName}}</view>
+						<view style='margin: 0 10rpx;'>|</view>
+						<view>{{detailData.weight}}吨</view>
+					</view>
+
 				</view>
 				<view class="flex align-center msx20">
 					<view class="left">距离</view>
 					<view class="right flex">
-						<view>运输距离月500公里</view>
+						<view>运输距离约{{detailData.distance}}公里</view>
 						<u-icon name="map-fill" color="#2772FB" @click="toMap()"></u-icon>
 					</view>
 				</view>
 				<view class="flex align-center">
 					<view class="left">运费</view>
-					<view class="right">100元/车</view>
+					<view class="right">{{detailData.freightPrice}}元/吨</view>
 				</view>
 				<view class="flex msx20">
 					<view class="left">日期</view>
 					<view class="right">
 						<view class="in-row flex">
-							<view class="text">发</view>
-							<view class="time">2022-01-27 15:15:15</view>
+							<view class="text">发</view>
+							<view class="time">{{detailData.createDate}}</view>
 						</view>
 						<view class="in-row flex">
 							<view class="text">装车</view>
-							<view class="time">2022-01-27~2022-01-30</view>
+							<view class="time">{{detailData.loadingDateStart}}~{{detailData.loadingDateEnd}}</view>
 						</view>
 					</view>
 				</view>
 				<view class="flex align-center">
 					<view class="left">车型</view>
-					<view class="right">10-15米 | 平板/高栏 | 约30吨</view>
+					<view class="right">{{carLength}} | {{carType}} | {{carWeight}}</view>
 				</view>
 				<view class="flex mt20">
 					<view class="left">描述</view>
 					<view class="right">
-						我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述我是发运任务描述
+						{{detailData.taskDescription}}
 					</view>
 				</view>
 			</view>
 			<view class="content3">
-				<view class="left">运费<view class="text">100元/车</view></view>
+				<view class="left">运费<view class="text">{{detailData.freightPrice}}元/吨</view>
+				</view>
 				<view class="right">
 					<view class="btn">立即抢单</view>
 				</view>
@@ -107,25 +121,94 @@
 </template>
 
 <script>
+	import {
+		mapState
+	} from 'vuex';
 	export default {
 		data() {
 			return {
 				bgColor: '#317AFE',
 				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
+				id: '',
+				detailData: {},
 			};
 		},
 		onLoad(options) {
 			console.log(options)
+			this.id = options.id
+			this.init()
+
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+			carLength() {
+				let length = ''
+				if (this.detailData.carLengthSmall && this.detailData.carLength) {
+					length = this.detailData.carLengthSmall + '~' + this.detailData.carLength + '米'
+				} else if (this.detailData.carLengthSmall) {
+					length = "大于" + this.detailData.carLengthSmall + '米'
+				} else if (this.detailData.carLength) {
+					length = "小于" + this.detailData.carLength + '米'
+				}
+				return length
+			},
+			carType() {
+				let _val = '';
+				if (this.detailData.carModel == 1) {
+					_val = '不限'
+				} else {
+					if (this.detailData.carModel.includes(2)) {
+						debugger
+						_val += '高栏/'
+					}
+					if (this.detailData.carModel.includes(3)) {
+						debugger
+						_val += '集装箱/'
+					}
+					if (this.detailData.carModel.includes(4)) {
+						debugger
+						_val += '自卸车'
+					}
+				}
+				return _val
+			},
+			carWeight() {
+				this.detailData.loadWeightSmall
+				this.detailData.loadWeight
+				let weight = ''
+				if (this.detailData.loadWeightSmall && this.detailData.loadWeight) {
+					weight = this.detailData.loadWeightSmall + '~' + this.detailData.loadWeight + '吨'
+				} else if (this.detailData.loadWeightSmall) {
+					weight = "大于" + this.detailData.loadWeightSmall + '吨'
+				} else if (this.detailData.loadWeight) {
+					weight = "小于" + this.detailData.loadWeight + '吨'
+				}
+				return weight
+			},
 		},
 		methods: {
-			toMap(){
+			init() {
+				this.$request.baseRequest('get', '/publishTaskInfo/seeTask', {
+						id:this.id,
+						// id: '8f1f3c624d7946d79a9d44a4057d9623',
+					}).then(res => {
+						debugger
+						if (res.code == 200) {
+							this.detailData = res.data
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			toMap() {
 				uni.$u.route('/pages/goodSource/map', {
 					id: 1,
 				});
 			},
-			back(){
+			back() {
 				uni.navigateBack({
-					
+
 				})
 			},
 			call() {
@@ -184,6 +267,7 @@
 		.row4 {
 			align-items: center;
 			padding-bottom: 20rpx;
+			margin-top: 20rpx;
 
 			.left {
 				display: flex;
@@ -241,24 +325,24 @@
 		padding: 30rpx;
 
 		.left {
-			font-size: 26rpx;
 			color: #666666;
 			margin-right: 20rpx;
 			box-sizing: border-box;
-			width: 10%;
+			width: 20%;
 		}
 
 		.right {
 			width: 90%;
-			font-size: 26rpx;
 		}
-		.in-row{
-			.text{
+
+		.in-row {
+			.text {
 				margin-right: 60rpx;
 			}
 		}
 	}
-	.content3{
+
+	.content3 {
 		position: fixed;
 		bottom: 0;
 		width: 100%;
@@ -268,15 +352,18 @@
 		padding: 30rpx 20rpx;
 		box-sizing: border-box;
 		align-items: center;
-		.left{
+
+		.left {
 			display: flex;
-			.text{
-				color:#FE6300 ;
+
+			.text {
+				color: #FE6300;
 				margin-left: 20rpx;
 			}
 		}
 	}
-	.btn{
+
+	.btn {
 		background: #2772FB;
 		color: white;
 		font-size: 28rpx;

+ 2 - 2
pages/mine/index.vue

@@ -113,7 +113,7 @@
 
 			};
 		},
-		onShow() {
+		onShow() {debugger
 			console.log("111111111111111111111111111", this.firstAuthentication)
 			if (this.firstAuthentication) {
 				this.userName = this.firstAuthentication.driverCall
@@ -148,7 +148,7 @@
 		},
 		onLoad() {
 			that = this
-
+			debugger
 		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication']),

+ 146 - 53
pages/order/index.vue

@@ -21,16 +21,16 @@
 					<view style="padding: 0 35rpx 20rpx 35rpx;">
 						<view class="flex flex-space-between row1">
 							<view class="item1">
-								CY20220210666666 玉米
+								{{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">辽</view>
-								<view class="level2-title">营口 鲅鱼圈</view>
+								<view class="level2-title">{{good.sendCity}} {{good.sendArea}}</view>
 								<view>
 									<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'>
 									</image>
@@ -38,7 +38,7 @@
 								<view class="ssx">
 								</view>
-								<view class="level2-title">北京 通州</view>
+								<view class="level2-title">{{good.unloadCity}} {{good.unloadArea}}</view>
 							</view>
 						</view>
 						<view class="flex row3">
@@ -47,23 +47,21 @@
 							</view>
 							<view class="right">
 								<view class="flex fontsize-26 row">
-									<view>中天昊元贸易有限公司</view>
+									<view>{{good.compName}}</view>
 									<view class="sline"></view>
-									<view>李振华</view>
+									<view>{{good.cargoOwner}}</view>
 								</view>
 								<view class="flex align-center">
-									<view class="fontsize-26">货距 10km</view>
-									<view class="sline"></view>
-									<view class="fontsize-26 ">运距 35km</view>
+									<view class="fontsize-26 ">运距 {{good.distance}}km</view>
 								</view>
 							</view>
 						</view>
 						<view class="row4 flex flex-end align-center">
-							<view class="time">2022-02-10 10:08</view>
-							<view class="car">1000元/车</view>
+							<view class="time">{{good.updateDate}}</view>
+							<view class="car">{{good.freight}}{{good.illingMethod==0?'元/吨':'元/车'}}</view>
 						</view>
 						<view class="row5 flex flex-end">
-							<view class="stop active">终止</view>
+							<view class="stop active" @click.stop="stop(good)">终止</view>
 							<view class="start normal">确认装车</view>
 							<!-- 	<view class="start">联系客服</view>
 							<view class="start">确认卸车</view>
@@ -93,13 +91,25 @@
 
 			</view>
 		</view>
-		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :closeOnClickOverlay='true'
-			:showCancelButton='true' @confirm="confirmClick" @close="cancelClick"
-			@cancel="cancelClick"></u-modal>
+		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :confirmText='confirmText'
+			:closeOnClickOverlay='true' :showCancelButton='true' @confirm="confirmClick" @close="cancelClick"
+			@cancel="cancelClick" class="modal">
+			<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-toast ref="uToast"></u-toast>
+		</u-modal>
 	</view>
 </template>
 
 <script>
+	import {
+		mapState
+	} from 'vuex';
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import {
 		apiGoods
@@ -108,9 +118,31 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
-				alertTitle:'',
-				alertContent:"确定删除全部历史记录?",
-				isShowAlert:false,
+				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"
 				},
@@ -135,14 +167,17 @@
 					{
 						name: '已完结'
 					},
-					{
-						name: '评价'
-					},
+					// {
+					// 	name: '评价'
+					// },
 				],
 				tabIndex: 0,
 				scrollTop: 0
 			}
 		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
 		onTabItemTap(e) {
 			// tab 点击时执行,此处直接接收单击事件
 			uni.pageScrollTo({
@@ -157,8 +192,12 @@
 			//#endif
 		},
 		onLoad() {
-			let _isHave = this.$utils.getRoles('aaa')
-			console.log(_isHave)
+			// let _isHave = this.$utils.getRoles('aaa')
+			// console.log(_isHave)
+			this.init()
+		},
+		onShow() {
+
 		},
 		onPageScroll(res) {
 			this.scrollTop = res.scrollTop
@@ -181,11 +220,64 @@
 
 		},
 		methods: {
-			del(){
-				this.isShowAlert= true
+			mescrollInit(mescroll) {
+								this.mescroll = mescroll;
+							},
+			radioChange(n) {
+				console.log('radioChange', n);
+
+			},
+			stop(item) {debugger
+				// 货主接单
+				if (item.orderStatusKey == 1) {
+					this.isShowTerminationReason = false
+				} else {
+					this.isShowTerminationReason = true
+				}
+				this.id = item.id
+				this.isShowAlert = true
 			},
-			confirmClick(){},
-			cancelClick(){
+			init() {
+
+			},
+			del() {
+				this.isShowAlert = true
+			},
+			confirmClick() {
+				debugger
+				console.log('终止')
+				if (this.radiovalue1 == '其他' && !this.value2) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "请填写终止原因描述!",
+					})
+					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,
+						terminationReason: _terminationReason,
+						terminationReasonDescription: this.value2
+					}).then(res => {
+						console.log(res)
+						this.isShowAlert = false
+						this.mescroll.resetUpScroll( isShowLoading )
+
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			cancelClick() {
 				this.isShowAlert = false
 			},
 			getSearch() {
@@ -216,34 +308,30 @@
 				// 	})
 				// 	return // 此处return,先获取xx
 				// }
-
-				//联网加载数据
-				apiGoods(page.num, page.size).then(res => {
-					//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
-					//mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
-
-					//方法一(推荐): 后台接口有返回列表的总页数 totalPage
-					//this.mescroll.endByPage(res.list.length, totalPage); //必传参数(当前页的数据个数, 总页数)
-
-					//方法二(推荐): 后台接口有返回列表的总数据量 totalSize
-					//this.mescroll.endBySize(res.list.length, totalSize); //必传参数(当前页的数据个数, 总数据量)
-
-					//方法三(推荐): 您有其他方式知道是否有下一页 hasNext
-					//this.mescroll.endSuccess(res.list.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)
-
-					//方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据
-					this.mescroll.endSuccess(res.list.length);
-
-					//设置列表数据
-					if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
-					this.goods = this.goods.concat(res.list); //追加新数据
-				}).catch(() => {
-					//联网失败, 结束加载
-					this.mescroll.endErr();
-				})
+				// 订单状态12345
+				this.$request.baseRequest('get', '/orderInfo/selectOrderInfo', {
+						commonId: this.userInfo.id,
+						searchKeyWord: '',
+						searchType: this.searchType,
+						pageSize: page.size,
+						currentPage: page.num
+					}).then(res => {
+						debugger
+						if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
+						this.goods = this.goods.concat(res.data.records); //追加新数据
+						this.mescroll.endBySize(res.data.records.length, res.data.total);
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
 			},
 			clickTab(val) {
 				console.log(val)
+				this.searchType = val.index
+				this.upCallback({
+					size: 10,
+					num: 1
+				})
 			},
 			search() {
 				this.isSearch = true
@@ -379,7 +467,8 @@
 
 		.row5 {
 			margin: 20rpx 0;
-font-size: 28rpx;
+			font-size: 28rpx;
+
 			.stop {
 				border-radius: 33px;
 				border: 1px solid #FE6300;
@@ -476,4 +565,8 @@ font-size: 28rpx;
 		font-size: 26rpx;
 		color: #333333;
 	}
+
+	/deep/.u-modal__content {
+		flex-direction: column;
+	}
 </style>

+ 1 - 1
pages/public/login.vue

@@ -136,7 +136,7 @@
 						}).then(res => {
 							_this.$request.baseRequest('', '/driverInfo/firstAuthentication', {
 									driverPhone: _this.dataDetails.phone,
-								}).then(res1 => {
+								}).then(res1 => {debugger
 									uni.setStorageSync('pcUserInfo', res.data)
 									uni.setStorageSync('userInfo', res.data)
 									uni.setStorageSync('firstAuthentication', res1.data)

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.