소스 검색

Merge branch 'master' of http://git.zthymaoyi.com/gongdecai/wangluohuoyun-app

ccj 2 년 전
부모
커밋
9811303c1e
80개의 변경된 파일4458개의 추가작업 그리고 1572개의 파일을 삭제
  1. 103 4
      App.vue
  2. 84 311
      common/components/uni-rate.vue
  3. BIN
      common/components/xingxing.png
  4. BIN
      common/components/xingxing_check.png
  5. 14 4
      common/helper.js
  6. 3 3
      components/bert-suggest/suggest.vue
  7. 153 0
      components/fh-no-network/fh-no-network.vue
  8. 12 0
      components/fh-no-network/readme.md
  9. 24 0
      components/fh-no-network/utils.js
  10. 39 16
      components/master-keyboard/master-keyboard.vue
  11. 2 2
      config/index.js
  12. 31 28
      hybrid/html/map.html
  13. 41 0
      manifest.json
  14. 9 7
      package.json
  15. 45 3
      pages.json
  16. 59 15
      pages/goodSource/cargoOwnerSee.vue
  17. 70 0
      pages/goodSource/fk.vue
  18. 486 209
      pages/goodSource/index.vue
  19. 68 0
      pages/goodSource/jb.vue
  20. 6 2
      pages/goodSource/map.vue
  21. 235 107
      pages/goodSource/selectCity.vue
  22. 21 3
      pages/goodSource/shippingDetails.vue
  23. 66 17
      pages/mine/driverCertification.vue
  24. 175 43
      pages/mine/driverCertificationNext.vue
  25. 64 22
      pages/mine/editDriverCertification.vue
  26. 181 40
      pages/mine/editDriverCertificationNext.vue
  27. 18 18
      pages/mine/evaluate.vue
  28. 30 0
      pages/mine/fankui.vue
  29. 13 8
      pages/mine/index.vue
  30. 93 2
      pages/mine/manageBankCards/addBankCard.vue
  31. 19 0
      pages/mine/manageBankCards/editBankCard.vue
  32. 2 1
      pages/mine/manageBankCards/index.vue
  33. 290 128
      pages/mine/manageVehicles/addVehicle.vue
  34. 169 44
      pages/mine/manageVehicles/editVehicle.vue
  35. 26 6
      pages/mine/manageVehicles/index.vue
  36. 65 7
      pages/mine/often/addRoute.vue
  37. 88 37
      pages/mine/often/oftenRoute.vue
  38. 7 5
      pages/mine/set.vue
  39. 37 45
      pages/mine/settings/editAvatar.vue
  40. 8 2
      pages/mine/settings/editPassword.vue
  41. 78 72
      pages/news/index.vue
  42. 1 1
      pages/news/newsSee.vue
  43. 64 41
      pages/order/addEvaluation.vue
  44. 2 1
      pages/order/bankCard.vue
  45. 426 0
      pages/order/cargoOwnerSee.vue
  46. 56 23
      pages/order/confirmLoading.vue
  47. 122 36
      pages/order/confirmUnloading.vue
  48. 125 29
      pages/order/index.vue
  49. 231 54
      pages/order/orderDetails.vue
  50. 100 31
      pages/order/signContract.vue
  51. 12 9
      pages/public/code.vue
  52. 26 14
      pages/public/login.vue
  53. 14 2
      pages/public/loginOther.vue
  54. 4 5
      pages/public/register.vue
  55. 19 0
      pages/riders/addFleet.vue
  56. 18 15
      pages/riders/fleetSee.vue
  57. 192 53
      pages/riders/index.vue
  58. 6 1
      pages/riders/notice.vue
  59. 19 0
      pages/riders/report.vue
  60. BIN
      static/fh-no-network/no-network.png
  61. BIN
      static/images/dianhua.png
  62. BIN
      static/images/kefu.png
  63. BIN
      static/images/mine/addcar.png
  64. BIN
      static/images/mine/content.png
  65. BIN
      static/images/mine/edit.png
  66. BIN
      static/images/mine/sanchu.png
  67. BIN
      static/images/order/dianhua.png
  68. BIN
      static/images/order/guanbi.png
  69. BIN
      static/images/order/guanbi@3x.png
  70. BIN
      static/images/order/shangla.png
  71. BIN
      static/images/order/xiala.png
  72. BIN
      static/images/return.png
  73. BIN
      static/images/search_icon.png
  74. BIN
      static/xianshi.png
  75. BIN
      static/yioncang.png
  76. 1 1
      uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-uni-option.js
  77. 1 1
      uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-uni-option.js
  78. 1 1
      uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js
  79. 83 42
      util/request.js
  80. 1 1
      websocket_sdk.js

+ 103 - 4
App.vue

@@ -14,6 +14,7 @@
 	import permision from "@/js_sdk/wa-permission/permission.js"
 	export default {
 		methods: {
+			
 			...mapMutations(['login']),
 			// vue的method里编写如下代码
 			// async requestAndroidPermission(permisionID) {
@@ -34,6 +35,104 @@
 		},
 	
 		onLaunch: function() {
+			var that = this
+			// #ifdef APP-PLUS
+			// uni.getNetworkType({
+			// 	success: function (res) {
+			// 		if(res.networkType=='none'){
+			// 			let options = {
+			// 			    title: '提示', 
+			// 				info:'当前没有网络中',
+			// 			    okText: '连接Wifi', 
+			// 				cancelText:'开启流量',
+			// 				infoAlignment:'center',
+			// 				radius:10,
+			// 			    // cancelText: '否',
+			// 				// showCancel:false,
+			// 				okButtonColor:'#2772FB'
+			// 			};
+			// 			const native = uni.requireNativePlugin('AJ-Alert');
+			// 			native.showAction(options, result => {
+			// 				// #ifdef APP-PLUS
+			// 				            	if (uni.getSystemInfoSync().platform == 'ios') {
+			// 				            		plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
+			// 				            	} else if (uni.getSystemInfoSync().platform == 'android') {
+			// 				            		plus.runtime.quit();
+			// 				            	}
+			// 				            // #endif
+			// 			    // 点击是的回调, result暂时没有返回内容
+			// 			}, cancel => {
+			// 			    // 点击否的回调
+			// 			});
+						
+			// 		}
+			// 		console.log(res.networkType);
+			// 	}
+			// });
+			console.log(uni.getStorageSync('userInfo'))
+			if(uni.getStorageSync('userInfo')){
+				that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+					driverPhone:uni.getStorageSync('userInfo').phone,
+				}).then(res => {
+					if (res.data.authenticationStatus == '已禁用') {
+						
+					// this.isShowAlert = true
+					// this.alertTitle = '账号审核中'
+					// this.confirmText = '退出APP'
+					// this.showCancelButton = false
+					let options = {
+					    title: '提示', 
+						info:'账号审核中',
+					    okText: '退出程序', 
+						infoAlignment:'center',
+						radius:10,
+					    // cancelText: '否',
+						showCancel:false,
+						okButtonColor:'#2772FB'
+					};
+					const native = uni.requireNativePlugin('AJ-Alert');
+					native.showAction(options, result => {
+						// #ifdef APP-PLUS
+						            	if (uni.getSystemInfoSync().platform == 'ios') {
+						            		plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
+						            	} else if (uni.getSystemInfoSync().platform == 'android') {
+						            		plus.runtime.quit();
+						            	}
+						            // #endif
+					    // 点击是的回调, result暂时没有返回内容
+					}, cancel => {
+					    // 点击否的回调
+					});
+					// uni.showModal({
+					//     title: '提示',
+					//     content: '这是一个模态弹窗',
+					// 	showCancel:false,
+					// 	confirmText:'退出app',
+					// 	// confirmColor:'#317AFE',
+					// 	confirmColor:'#F54E40',
+					//     success: function (res) {
+					//         if (res.confirm) {
+					//             // #ifdef APP-PLUS
+					//             	if (uni.getSystemInfoSync().platform == 'ios') {
+					//             		plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
+					//             	} else if (uni.getSystemInfoSync().platform == 'android') {
+					//             		plus.runtime.quit();
+					//             	}
+					//             // #endif
+					//         } else if (res.cancel) {
+					//             console.log('用户点击取消');
+					//         }
+					//     }
+					// });
+			
+					} else {
+						console.log(1231233212332312312213)
+					}
+				})
+			}
+			
+			
+			// #endif
 			 uni.setStorageSync("region", region);
 			uni.getSystemInfo({
 			        success:function(e){
@@ -93,9 +192,9 @@
 								}
 								this.$helper.gjList.push(_data)
 								uni.setStorageSync('mapGJ', this.$helper.gjList);
-								console.log('this.$helper.gjList')
-								console.log(this.$helper.gjList)
-								console.log("条数", uni.getStorageSync('mapGJ').length)
+								// console.log('this.$helper.gjList')
+								// console.log(this.$helper.gjList)
+								// console.log("条数", uni.getStorageSync('mapGJ').length)
 								if (uni.getStorageSync('mapGJ').length > 100) {
 									console.log(JSON.stringify(uni.getStorageSync('mapGJ')) )
 									this.$request.baseRequest('post', '/hyOrderTravelPath/api/addInfo',  {
@@ -236,7 +335,7 @@
 
 			// }, false);
 			// #endif
-			this.$socket.initWebIM(this.$ws, true, true)
+			// this.$socket.initWebIM(this.$ws, true, true)
 			let userInfo = uni.getStorageSync('userInfo') || '';
 			if (userInfo.id) {
 				//更新登陆状态

+ 84 - 311
common/components/uni-rate.vue

@@ -1,358 +1,131 @@
 <template>
-	<view>
-		<view ref="uni-rate" class="uni-rate">
-			<view class="uni-rate__icon" :class="{'uni-cursor-not-allowed': disabled}"
-				:style="{ 'margin-right': marginNumber + 'px' }" v-for="(star, index) in stars" :key="index"
-				@touchstart.stop="touchstart" @touchmove.stop="touchmove" @mousedown.stop="mousedown"
-				@mousemove.stop="mousemove" @mouseleave="mouseleave">
-				<uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
-				<!-- #ifdef APP-NVUE -->
-				<view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
-					<uni-icons style="text-align: left;" :color="disabled?'#ccc':activeColor" :size="size"
-						type="star-filled" />
-				</view>
-				<!-- #endif -->
-				<!-- #ifndef APP-NVUE -->
-				<view :style="{ width: star.activeWitch}" class="uni-rate__icon-on">
-					<uni-icons :color="disabled?disabledColor:activeColor" :size="size" type="star-filled" />
-				</view>
-				<!-- #endif -->
+	<view class="rate-media">
+		<view class="rate-media-body">
+			<view class="rate-media-cell"
+				  v-for="(item,index) in max"
+				  :key="index"
+				  @click="clickStars(index)">
+				<img :style="{'width': size + 'rpx','height':size+'rpx','margin':margin+'rpx'}" :src="valueSync>index?star_fill:star_empty"/>
 			</view>
 		</view>
+		<view class="rate-media-info" v-if="is_score||is_attitude">
+			<view v-if="is_score">{{is_infos_text()}}</view>
+			<view v-if="is_attitude">{{rateScoreText}}</view>
+		</view>
 	</view>
 </template>
 
 <script>
-	/**
-	 * Rate 评分
-	 * @description 评分组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=33
-	 * @property {Boolean} 	isFill = [true|false] 		星星的类型,是否为实心类型, 默认为实心
-	 * @property {String} 	color 						未选中状态的星星颜色,默认为 "#ececec"
-	 * @property {String} 	activeColor 				选中状态的星星颜色,默认为 "#ffca3e"
-	 * @property {String} 	disabledColor 				禁用状态的星星颜色,默认为 "#c0c0c0"
-	 * @property {Number} 	size 						星星的大小
-	 * @property {Number} 	value/v-model 				当前评分
-	 * @property {Number} 	max 						最大评分评分数量,目前一分一颗星
-	 * @property {Number} 	margin 						星星的间距,单位 px
-	 * @property {Boolean} 	disabled = [true|false] 	是否为禁用状态,默认为 false
-	 * @property {Boolean} 	readonly = [true|false] 	是否为只读状态,默认为 false
-	 * @property {Boolean} 	allowHalf = [true|false] 	是否实现半星,默认为 false
-	 * @property {Boolean} 	touchable = [true|false] 	是否支持滑动手势,默认为 true
-	 * @event {Function} change 						uniRate 的 value 改变时触发事件,e={value:Number}
-	 */
-
-	export default {
-		name: "UniRate",
-		props: {
-			isFill: {
-				// 星星的类型,是否镂空
-				type: [Boolean, String],
-				default: true
+	export default{
+		name:'rate',
+		props:{
+			star_fill: {
+				//亮星星
+				type: [String],
+				default: 'https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/star.png'
+			},
+			star_empty: {
+				//暗星星
+				type: [String],
+				default: 'https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/tmp/star1.png'
+			},
+			score:{
+				type:Array,
+				default:function(){
+					return ['极差','差','一般','较好','非常好']
+				}
 			},
-			color: {
-				// 星星未选中的颜色
-				type: String,
-				default: "#ececec"
+			is_score:{
+				type: [Boolean, String],
+				default: false
 			},
-			activeColor: {
-				// 星星选中状态颜色
-				type: String,
-				default: "#FEC823"
+			attitude:{
+				type: Array,
+				default:function(){
+					return ['非常不满意,各方面都很差', '不满意,比较差', '一般,还需改善', '比较满意,仍可改善', '非常满意,无可挑剔']
+				}
 			},
-			disabledColor: {
-				// 星星禁用状态颜色
-				type: String,
-				default: "#c0c0c0"
+			is_attitude:{
+				type: [Boolean, String],
+				default: false
 			},
 			size: {
 				// 星星的大小
 				type: [Number, String],
-				default: 20
+				default: 48
 			},
 			value: {
 				// 当前评分
 				type: [Number, String],
 				default: 0
 			},
-			modelValue: {
-				// 当前评分
-				type: [Number, String],
-				default: 0
-			},
 			max: {
 				// 最大评分
 				type: [Number, String],
 				default: 5
 			},
-			margin: {
-				// 星星的间距
-				type: [Number, String],
-				default: 0
-			},
 			disabled: {
 				// 是否可点击
 				type: [Boolean, String],
 				default: false
 			},
-			readonly: {
-				// 是否只读
-				type: [Boolean, String],
-				default: false
-			},
-			allowHalf: {
-				// 是否显示半星
-				type: [Boolean, String],
-				default: false
+			margin: {
+				// 星星的间距
+				type: [Number, String],
+				default: '0 5'
 			},
-			touchable: {
-				// 是否支持滑动手势
-				type: [Boolean, String],
-				default: true
-			}
 		},
 		data() {
 			return {
-				valueSync: "",
-				userMouseFristMove: true,
-				userRated: false,
-				userLastRate: 1
+				valueSync: 0,
+				rateScoreText:"",
 			};
 		},
-		watch: {
-			value(newVal) {
-				this.valueSync = Number(newVal);
-			},
-			modelValue(newVal) {
-				this.valueSync = Number(newVal);
-			},
-		},
-		computed: {
-			stars() {
-				const value = this.valueSync ? this.valueSync : 0;
-				const starList = [];
-				const floorValue = Math.floor(value);
-				const ceilValue = Math.ceil(value);
-				for (let i = 0; i < this.max; i++) {
-					if (floorValue > i) {
-						starList.push({
-							activeWitch: "100%"
-						});
-					} else if (ceilValue - 1 === i) {
-						starList.push({
-							activeWitch: (value - floorValue) * 100 + "%"
-						});
-					} else {
-						starList.push({
-							activeWitch: "0"
-						});
-					}
-				}
-				return starList;
-			},
-
-			marginNumber() {
-				return Number(this.margin)
-			}
-		},
 		created() {
-			this.valueSync = Number(this.value || this.modelValue);
-			this._rateBoxLeft = 0
-			this._oldValue = null
-		},
-		mounted() {
-			setTimeout(() => {
-				this._getSize()
-			}, 100)
-			// #ifdef H5
-			this.PC = this.IsPC()
-			// #endif
+console.log(this.is_score)
+			this.valueSync = Number(this.value);
 		},
 		methods: {
-			touchstart(e) {
-				// #ifdef H5
-				if (this.IsPC()) return
-				// #endif
-				if (this.readonly || this.disabled) return
-				const {
-					clientX,
-					screenX
-				} = e.changedTouches[0]
-				// TODO 做一下兼容,只有 Nvue 下才有 screenX,其他平台式 clientX
-				this._getRateCount(clientX || screenX)
-			},
-			touchmove(e) {
-				// #ifdef H5
-				if (this.IsPC()) return
-				// #endif
-				if (this.readonly || this.disabled || !this.touchable) return
-				const {
-					clientX,
-					screenX
-				} = e.changedTouches[0]
-				this._getRateCount(clientX || screenX)
-			},
-
-			/**
-			 * 兼容 PC @tian
-			 */
-
-			mousedown(e) {
-				// #ifdef H5
-				if (!this.IsPC()) return
-				if (this.readonly || this.disabled) return
-				const {
-					clientX,
-				} = e
-				this.userLastRate = this.valueSync
-				this._getRateCount(clientX)
-				this.userRated = true
-				// #endif
-			},
-			mousemove(e) {
-				// #ifdef H5
-				if (!this.IsPC()) return
-				if (this.userRated) return
-				if (this.userMouseFristMove) {
-					console.log('---mousemove----', this.valueSync);
-					this.userLastRate = this.valueSync
-					this.userMouseFristMove = false
-				}
-				if (this.readonly || this.disabled || !this.touchable) return
-				const {
-					clientX,
-				} = e
-				this._getRateCount(clientX)
-				// #endif
-			},
-			mouseleave(e) {
-				// #ifdef H5
-				if (!this.IsPC()) return
-				if (this.readonly || this.disabled || !this.touchable) return
-				if (this.userRated) {
-					this.userRated = false
-					return
-				}
-				this.valueSync = this.userLastRate
-				// #endif
-			},
-			// #ifdef H5
-			IsPC() {
-				var userAgentInfo = navigator.userAgent;
-				var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
-				var flag = true;
-				for (let v = 0; v < Agents.length - 1; v++) {
-					if (userAgentInfo.indexOf(Agents[v]) > 0) {
-						flag = false;
-						break;
-					}
-				}
-				return flag;
-			},
-			// #endif
-
-			/**
-			 * 获取星星个数
-			 */
-			_getRateCount(clientX) {
-				this._getSize()
-				const size = Number(this.size)
-				if (size === NaN) {
-					return new Error('size 属性只能设置为数字')
-				}
-				const rateMoveRange = clientX - this._rateBoxLeft
-				let index = parseInt(rateMoveRange / (size + this.marginNumber))
-				index = index < 0 ? 0 : index;
-				index = index > this.max ? this.max : index;
-				const range = parseInt(rateMoveRange - (size + this.marginNumber) * index);
-				let value = 0;
-				if (this._oldValue === index && !this.PC) return;
-				this._oldValue = index;
-				if (this.allowHalf) {
-					if (range > (size / 2)) {
-						value = index + 1
-					} else {
-						value = index + 0.5
-					}
-				} else {
-					value = index + 1
-				}
-
-				value = Math.max(0.5, Math.min(value, this.max))
-				this.valueSync = value
-				this._onChange()
-			},
-
-			/**
-			 * 触发动态修改
-			 */
-			_onChange() {
-
-				this.$emit("input", this.valueSync);
-				this.$emit("update:modelValue", this.valueSync);
-				this.$emit("change", {
-					value: this.valueSync
-				});
-			},
-			/**
-			 * 获取星星距离屏幕左侧距离
-			 */
-			_getSize() {
-				// #ifndef APP-NVUE
-				uni.createSelectorQuery()
-					.in(this)
-					.select('.uni-rate')
-					.boundingClientRect()
-					.exec(ret => {
-						if (ret) {
-							this._rateBoxLeft = ret[0].left
-						}
-					})
-				// #endif
-				// #ifdef APP-NVUE
-				dom.getComponentRect(this.$refs['uni-rate'], (ret) => {
-					const size = ret.size
-					if (size) {
-						this._rateBoxLeft = size.left
-					}
-				})
-				// #endif
-			}
+			clickStars(i){
+			  if (this.disabled) {
+			  	return;
+			  }
+			  this.rateScoreText = this.attitude[i]||''
+			  this.valueSync = i+1
+			  this.$emit("change", {
+			  	value: this.valueSync,
+				attitude: this.attitude[i]||'',
+				score: this.score[i]||''
+			  });
+			},
+			is_infos_text(){
+				return this.score[this.valueSync-1||0]||''
+			},
+			// is_score_text(index){
+			// 	return this.score[index]
+			// }
 		}
-	};
+	}
 </script>
 
 <style lang="scss">
-	.uni-rate {
-		/* #ifndef APP-NVUE */
+	.rate-media{
 		display: flex;
-		/* #endif */
-		line-height: 1;
-		font-size: 0;
-		flex-direction: row;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-rate__icon {
-		position: relative;
 		line-height: 1;
-		font-size: 0;
-	}
-
-	.uni-rate__icon-on {
-		overflow: hidden;
-		position: absolute;
-		top: 0;
-		left: 0;
-		line-height: 1;
-		text-align: left;
-	}
-
-	.uni-cursor-not-allowed {
-		/* #ifdef H5 */
-		cursor: not-allowed !important;
-		/* #endif */
+		justify-content: space-between;
+		.rate-media-body{
+			display: flex;
+			
+		}
+		.rate-media-info{
+			display: flex;
+			align-items: center;
+			color: #999;
+			font-size: 30rpx;
+			view:nth-child(1){
+				margin:0 20rpx;
+			}
+			
+		}
 	}
 </style>

BIN
common/components/xingxing.png


BIN
common/components/xingxing_check.png


+ 14 - 4
common/helper.js

@@ -15,7 +15,8 @@ const imgTypeList = [{
 		name: '拍照',
 	}
 ]
-const makeValidityPeriod = function(type) {
+const makeValidityPeriod = function(type,yearnum) {
+	console.log(yearnum)
 	//获取当前年
 	let nowDate = new Date();
 	let year = nowDate.getFullYear()
@@ -28,9 +29,18 @@ const makeValidityPeriod = function(type) {
 		"31"
 	]
 	let _ValidityPeriod = []
-	for (let i = 0; i < 30; i++) {
-		_list1.push(year + i)
+	if(yearnum){
+		var len=year-Number(yearnum)
+		var len2=30+len
+		for (let i = 0; i < len2; i++) {
+			_list1.push(yearnum + i)
+		}
+	}else{
+		for (let i = 0; i < 30; i++) {
+			_list1.push(year + i)
+		}
 	}
+	
 	if (type == 0) {
 		_list1.unshift('长期')
 		_list2.unshift('')
@@ -210,7 +220,7 @@ function isToday(str,type) {
 	}
 }
 const changeTime = (t1) => {
-	console.log(t1)
+	// console.log(t1)
 	// t1截止时间  t2当前时间
 	// 调用getDtes函数把当前时间传过去,获取本周一和本周日时间戳
 	// var weeks = getDates(t2)

+ 3 - 3
components/bert-suggest/suggest.vue

@@ -2,11 +2,11 @@
 	<view>
 		<view style='background:#fff;margin:20px 10px 10px;border-radius:10px;'>
 			<uni-card class="box" :isFull="true" title="反馈意见" >
-				<textarea v-model="data.content" placeholder="您的反馈对我们非常重要,请在此输入."></textarea>
+				<textarea v-model="data.content" placeholder="您的反馈对我们非常重要,请在此输入。"></textarea>
 				<view style='position:absolute;right:22px;bottom:16px;font-size:13px;'>{{data.content.length}}/150个字</view>
 			</uni-card>
 			<uni-card class="box contact" :isFull="true" title="联系方式" >
-				<input v-model="data.contact" placeholder="手机 QQ或e-mail,方便我们联系您" />
+				<input v-model="data.contact" placeholder="请输入您的手机号,方便我们联系您" />
 			</uni-card>
 		</view>
 		
@@ -97,7 +97,7 @@
 		}
 	}
 	.submit-btn {
-		background-color: #22C572;
+		background-color: #2772FB;
 		color:#fff;
 		border-radius:30px;
 		margin: 20rpx;

+ 153 - 0
components/fh-no-network/fh-no-network.vue

@@ -0,0 +1,153 @@
+<template>
+	<view
+		v-if="show"
+		class="no-network-main"
+		:style="{ height: backgroundHeight + 'px', width: backgroundWidth + 'px' }"
+	>
+		<view class="no-network-area">
+			<view
+				class="no-network-picture"
+				:style="{ height: backgroundImageHeight, width: backgroundImageWidth }"
+			></view>
+			<view class="no-network-content">哎呀,网络信号丢失</view>
+			<view class="no-network-handle">
+				请检查网络,或前往
+				<span class="go-to-sitting" @click="gotoSitting">设置</span>
+			</view>
+			<view class="no-network-retry" @click="retry">重试</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import gotoAppPermissionSetting from './utils.js'
+export default {
+	name: 'FhNoNetwork',
+	mounted() {
+		const that = this
+		// #ifdef APP-PLUS
+		uni.getNetworkType({
+			success: function(res) {
+				console.log(res)
+				if (res.networkType == 'none' || res.networkType == 'unknown') {
+					that.shrink()
+				} else {
+					that.unfold()
+				}
+			}
+		})
+		// #endif
+		uni.onNetworkStatusChange(function(res) {
+			if (res.isConnected) {
+				that.unfold()
+				console.log(res.networkType)
+			} else {
+				that.shrink()
+			}
+		})
+	},
+	computed: {
+		backgroundImageWidth() {
+			if (this.backgroundWidth < 768) {
+				return this.backgroundWidth + 'px'
+			}
+			return '439.46rpx'
+		},
+		backgroundImageHeight() {
+			if (this.backgroundWidth < 768) {
+				return this.backgroundWidth / 2 + 'px'
+			}
+			return '219.73rpx'
+		}
+	},
+	data() {
+		return {
+			show: false,
+			backgroundHeight: uni.getSystemInfoSync().screenHeight,
+			backgroundWidth: uni.getSystemInfoSync().screenWidth
+		}
+	},
+	methods: {
+		shrink: function() {
+			this.show = true
+		},
+		unfold: function() {
+			this.show = false
+		},
+		gotoSitting: function() {
+			gotoAppPermissionSetting()
+		},
+		retry: function() {
+			uni.getNetworkType({
+				success: function(res) {
+					console.log(res)
+					if (res.networkType == 'none' || res.networkType == 'unknown') {
+						uni.showToast({
+							title: '无网络连接',
+							icon: 'none'
+						})
+					}
+				}
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss" scoped>
+.no-network-main {
+	position: absolute;
+	top: 0;
+	background-color: #ffffff;
+	z-index: 10000;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	.no-network-area {
+		.no-network-picture {
+			background-image: url(../../static/fh-no-network/no-network.png);
+			background-repeat: no-repeat;
+			background-size: contain;
+		}
+		.no-network-content {
+			width: 100%;
+			text-align: center;
+			height: 18.32rpx;
+			line-height: 18.32rpx;
+			color: #333333;
+			font-family: PingFangSC-Medium;
+			font-size: 13.19rpx;
+			margin-bottom: 6.6rpx;
+		}
+		.no-network-handle {
+			width: 100%;
+			text-align: center;
+			height: 14.65rpx;
+			line-height: 14.65rpx;
+			font-family: PingFangSC-Regular;
+			font-size: 10.26rpx;
+			color: #666666;
+			margin-bottom: 29.3rpx;
+		}
+		.go-to-sitting {
+			height: 14.65rpx;
+			line-height: 14.65rpx;
+			font-family: PingFangSC-Regular;
+			font-size: 10.26rpx;
+			color: #1677ff;
+		}
+		.no-network-retry {
+			width: 209.48rpx;
+			height: 33.7rpx;
+			border: 1.47rpx solid #333333;
+			border-radius: 16.48rpx;
+			line-height: 32.23rpx;
+			text-align: center;
+			font-size: 11.72rpx;
+			font-family: PingFangSC-Medium;
+			letter-spacing: 1.18rpx;
+			margin: 0 auto;
+		}
+	}
+}
+</style>

+ 12 - 0
components/fh-no-network/readme.md

@@ -0,0 +1,12 @@
+# 无网络页面
+<fh-no-network\>是在无网络信号时覆盖屏幕的页面,提供“前往设置”按钮让用户进入设置,设置网络;在网络连接后会自动收起。
+# 平台差异
+全平台基本支持
+# 安装方式
+本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,通过**使用HBuilderX导入插件**或者**下载插件ZIP**,将解压出**fh-no-network**文件夹放到**components**目录下。
+# 基本用法
+~~~
+<template>
+    <fh-no-network></fh-no-network>
+</template>
+~~~

+ 24 - 0
components/fh-no-network/utils.js

@@ -0,0 +1,24 @@
+const gotoAppPermissionSetting = function() {
+    if (plus.os.name === 'iOS') {
+        var UIApplication = plus.ios.import('UIApplication');
+        var application2 = UIApplication.sharedApplication();
+        var NSURL2 = plus.ios.import('NSURL');
+        var setting2 = NSURL2.URLWithString('app-settings:');
+        application2.openURL(setting2);
+        plus.ios.deleteObject(setting2);
+        plus.ios.deleteObject(NSURL2);
+        plus.ios.deleteObject(application2);
+    } else {
+        var Intent = plus.android.importClass('android.content.Intent');
+        var Settings = plus.android.importClass('android.provider.Settings');
+        var Uri = plus.android.importClass('android.net.Uri');
+        var mainActivity = plus.android.runtimeMainActivity();
+        var intent = new Intent();
+        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+        var uri = Uri.fromParts('package', mainActivity.getPackageName(), null);
+        intent.setData(uri);
+        mainActivity.startActivity(intent);
+    }
+};
+
+export default gotoAppPermissionSetting;

+ 39 - 16
components/master-keyboard/master-keyboard.vue

@@ -104,6 +104,10 @@
 				type: String,
 				default: 'number' // number=数字键盘 digit=带小数点的数字键盘  idcard=身份证号键盘  car=车牌号键盘
 			},
+			guastatus:{
+				type: Boolean,
+				default: false
+			},
 			defaultValue: {
 				type: String,
 				default: ''
@@ -121,7 +125,7 @@
 			return {
 				numberArr: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
 				carProvinceArr: ['京', '津', '渝', '沪', '冀', '晋', '辽', '吉', '黑', '苏', '浙', '皖', '闽', '赣', '鲁', '豫',
-					'', '湘', '粤', '琼', '川', '贵', '云', '陕', '甘', '青', '蒙', '桂', '宁', '新', '藏', '使',
+					'', '湘', '粤', '琼', '川', '贵', '云', '陕', '甘', '青', '蒙', '桂', '宁', '新', '藏', '使',
 					'领', '警', '学', '港', '澳'
 				],
 				carLatterArr: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
@@ -222,24 +226,43 @@
 						return
 					}
 				} else {
-					if (value.length === (this.$props.newCar ? 7 : 6) && pattern.test(keyValue) && this
-						.formatCarProvinceFirst(keyValue) == -1) {
-						return
-					}
-					if (pattern.test(keyValue) && value.length !== (this.$props.newCar ? 7 : 6)) {
-						return
+					if(this.$props.guastatus){
+						if (value.length ===  5 && pattern.test(keyValue) && this
+							.formatCarProvinceFirst(keyValue) == -1) {
+							return
+						}
+						if (pattern.test(keyValue) && value.length !== 5) {
+							return
+						}
+					}else{
+						if (value.length === (this.$props.newCar ? 7 : 6) && pattern.test(keyValue) && this
+							.formatCarProvinceFirst(keyValue) == -1) {
+							return
+						}
+						if (pattern.test(keyValue) && value.length !== (this.$props.newCar ? 7 : 6)) {
+							return
+						}
 					}
+					
 				}
-
-				if (value.length < 7 && !this.$props.newCar) {
-					this.$emit('keyboardClick', {
-						value: value + keyValue
-					})
+				if(this.$props.guastatus){
+					if (value.length < 6 ) {
+						this.$emit('keyboardClick', {
+							value: value + keyValue
+						})
+					}
 				}
-				if (value.length < 8 && this.$props.newCar) {
-					this.$emit('keyboardClick', {
-						value: value + keyValue
-					})
+				else{
+					if (value.length < 7 && !this.$props.newCar) {
+						this.$emit('keyboardClick', {
+							value: value + keyValue
+						})
+					}
+					if (value.length < 8 && this.$props.newCar) {
+						this.$emit('keyboardClick', {
+							value: value + keyValue
+						})
+					}
 				}
 			},
 			//车牌键盘删除事件

+ 2 - 2
config/index.js

@@ -1,6 +1,6 @@
 const dev = {
-	baseUrlNew: 'https://apitest.eliangeyun.com',
-	// baseUrlNew: 'http://192.168.110.9:8099',
+	// baseUrlNew: 'https://apitest.eliangeyun.com',
+	baseUrlNew: 'http://192.168.110.9:8099',
 	// baseUrlNew: 'http://192.168.110.82:8999',
 	// baseUrlNew: 'http://192.168.1.119:8999',
 	h5Appid: 'wxb66b599f7f61b46f',

+ 31 - 28
hybrid/html/map.html

@@ -48,8 +48,10 @@
 				}
 				return null;
 			}
-			// let starLnglat = getQuery('lat').toString().split(',');
-			let starLnglat = [40.243655, 122.114407]
+			let starLnglat = getQuery('lat').toString().split(',');
+			let endLnglat = getQuery('unsendaddress').toString().split(',')
+			console.log(endLnglat,111111111)
+			// let starLnglat = [40.243655, 122.114407]
 			console.log('---------------------')
 			console.log(starLnglat)
 			var map = new AMap.Map('container', {
@@ -78,34 +80,35 @@
 				hideMarkers: false, // 设置隐藏路径规划的起始点图标
 				autoFitView: true
 			}
-			var dis = getDistance(122.114407, 40.243655, 122.114407, 42.243655)
+			// var dis = getDistance(starLnglat[1], starLnglat[0], endLnglat[1], endLnglat[0])
+			var dis = '距离'+getQuery('distance')+'公里'
 			document.getElementById("distance").innerHTML = dis
-			console.log(dis)
-			render(122.114407, 42.243655)
+			// console.log(dis)
+			render(endLnglat[1], endLnglat[0])
 
-			function getDistance(lat1, lng1, lat2, lng2) {
-				function Rad(d) {
-					return d * Math.PI / 180.0;
-				}
-				if (!lat1 || !lng1) {
-					return '';
-				}
-				// lat1用户的纬度
-				// lng1用户的经度
-				// lat2商家的纬度
-				// lng2商家的经度
-				let radLat1 = Rad(lat1);
-				let radLat2 = Rad(lat2);
-				let a = radLat1 - radLat2;
-				let b = Rad(lng1) - Rad(lng2);
-				let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) *
-					Math.pow(
-						Math.sin(b / 2), 2)));
-				s = s * 6378.137;
-				s = Math.round(s * 10000) / 10000;
-				s = '距离' + s.toFixed(2) + '公里' //保留两位小数
-				return s
-			}
+			// function getDistance(lat1, lng1, lat2, lng2) {
+			// 	function Rad(d) {
+			// 		return d * Math.PI / 180.0;
+			// 	}
+			// 	if (!lat1 || !lng1) {
+			// 		return '';
+			// 	}
+			// 	// lat1用户的纬度
+			// 	// lng1用户的经度
+			// 	// lat2商家的纬度
+			// 	// lng2商家的经度
+			// 	let radLat1 = Rad(lat1);
+			// 	let radLat2 = Rad(lat2);
+			// 	let a = radLat1 - radLat2;
+			// 	let b = Rad(lng1) - Rad(lng2);
+			// 	let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) *
+			// 		Math.pow(
+			// 			Math.sin(b / 2), 2)));
+			// 	s = s * 6378.137;
+			// 	s = Math.round(s * 10000) / 10000;
+			// 	s = '距离' + s.toFixed(2) + '公里' //保留两位小数
+			// 	return s
+			// }
 
 			function render(endLng, endLat) {
 				// 构造路线导航类

+ 41 - 0
manifest.json

@@ -118,6 +118,47 @@
                     "pid" : "2018",
                     "parameters" : {}
                 }
+            },
+            "Lyuan-KeepAlive" : {
+                "app_description" : "",
+                "app_name" : "",
+                "__plugin_info__" : {
+                    "name" : "Android保活插件,后台持续运行,永生不死 - [试用版,仅用于自定义调试基座]",
+                    "description" : "Android保活插件,后台持续运行,永生不死",
+                    "platforms" : "Android",
+                    "url" : "https://ext.dcloud.net.cn/plugin?id=6249",
+                    "android_package_name" : "",
+                    "ios_bundle_id" : "",
+                    "isCloud" : true,
+                    "bought" : 0,
+                    "pid" : "6249",
+                    "parameters" : {
+                        "app_description" : {
+                            "des" : "通知栏描述,不填默认后台服务,请勿关闭!",
+                            "key" : "com.keepalive.description",
+                            "value" : ""
+                        },
+                        "app_name" : {
+                            "des" : "通知栏标题, 不填默认app名称",
+                            "key" : "com.keepalive.name",
+                            "value" : ""
+                        }
+                    }
+                }
+            },
+            "AJ-Alert" : {
+                "__plugin_info__" : {
+                    "name" : "原生 弹窗 Alert 提示框  dialog 支持苹果安卓 - [试用版,仅用于自定义调试基座]",
+                    "description" : "uni的showModel样式单一,直接写vue弹窗又遮盖不了原生的组件,这是一个优化原生弹窗api",
+                    "platforms" : "Android,iOS",
+                    "url" : "https://ext.dcloud.net.cn/plugin?id=1664",
+                    "android_package_name" : "",
+                    "ios_bundle_id" : "",
+                    "isCloud" : true,
+                    "bought" : 0,
+                    "pid" : "1664",
+                    "parameters" : {}
+                }
             }
         }
     },

+ 9 - 7
package.json

@@ -1,11 +1,13 @@
 {
-    "id": "gaojianghua-linkage",
-    "name": "完美三级联动",
-    "version": "1.0.1",
-    "description": "简单, 好用, 易自行更改的地区三级联动选择器, 拥有市, 区的全部选项. ",
+    "id": "fh-no-network",
+    "name": "无网络信号页面",
+    "version": "1.0.0",
+    "description": "在无网络信号情况下弹出遮挡屏幕,提供“前往设置”按钮让用户可以直接进入设置,设置网络;网络连接后自动收起",
     "keywords": [
-        "简单",
-        "易用",
-        "易根据自身需求更改"
+        "无网络",
+        "无网络信号",
+        "没有网络",
+        "遮罩",
+        "遮罩页面"
     ]
 }

+ 45 - 3
pages.json

@@ -121,6 +121,25 @@
 		
 			}
 		},
+		{
+			"path": "pages/order/cargoOwnerSee",
+			"style": {
+				"navigationBarTitleText": "货主详情",
+				"enablePullDownRefresh": false,
+				"navigationBarBackgroundColor": "white",
+				"app-plus": {
+					"titleNView": {
+						"buttons": [{
+							"text": "\ue7c3",
+							"fontSrc": "/static/addfleet/iconfont.ttf",
+							"fontSize": "22"
+							 // "redDot": "true"
+						}]
+					}
+				}
+		
+			}
+		},
 		{
 			"path": "pages/riders/myTeam",
 			"style": {
@@ -356,11 +375,25 @@
 		}, {
 			"path": "pages/mine/manageVehicles/index",
 			"style": {
+				"navigationStyle": "custom",
 				"navigationBarTitleText": "管理车辆",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "white"
+				"navigationBarBackgroundColor": "white",
+				"app-plus": {
+				    "pullToRefresh": {
+				        "support": true,
+				        "color": "#ff3333",
+				        "style": "default",
+				        "contentdown": {
+				            "caption": "下拉刷新"
+				        },
+
+				        "contentrefresh": {
+				            "caption": "正在刷新中"
+				        }
+				    }
+				}
 			}
-
 		}, {
 			"path": "pages/mine/manageVehicles/addVehicle",
 			"style": {
@@ -516,7 +549,16 @@
 			}
 
 		}
-	],
+	    ,{
+            "path" : "pages/mine/fankui",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "意见反馈",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",

+ 59 - 15
pages/goodSource/cargoOwnerSee.vue

@@ -9,7 +9,7 @@
 					width='170rpx' height='170rpx' shape="circle">
 				</u--image>
 				<view class="name">{{objectInfo.cargoOwnerName}}</view>
-				<image src="../../static/qy@2x.png" mode="widthFix" class="title_css" v-show="objectInfo.cargoOwner">
+				<image src="../../static/qy@2x.png" mode="widthFix" class="title_css" v-show="objectInfo.cargoOwner=='企业货主'">
 				</image>
 				<view class="feedback_css"></view>
 			</view>
@@ -41,9 +41,12 @@
 		<!-- 货主信息 -->
 		<view v-if="indexBtn == 1" class="enterprise">
 			<view>
-				<view class="enterprise_title" v-if="objectInfo.cargoOwner">所属企业</view>
-				<view class="enterprise_title" v-if="!objectInfo.cargoOwner">个人货主,暂未代理企业</view>
-				<view class="enterprise_name" v-if="objectInfo.cargoOwner">{{objectInfo.cargoOwner}}</view>
+				<view class="enterprise_title" v-if="companyList.length>0">所属企业:</view>
+				<view class="enterprise_title" v-else>个人货主,暂未代理企业</view>
+				<view v-for='item in companyList'>
+					{{item.company?item.company:item.companyName}}
+				</view>
+			<!-- 	<view class="enterprise_name" v-if="companyList.length>0">{{objectInfo.cargoOwner}}</view> -->
 			</view>
 		</view>
 		<!-- 评价信息 -->
@@ -62,16 +65,16 @@
 						<view class="gray fontsize-24">累计发运{{dataObj.countFa}}次</view>
 					</view>
 				</view>
-				<view class="right">
+				<view v-if='dataObj.haoPing>20' class="right">
 					<view>{{dataObj.haoPingLv}}%</view>
 					<view class="gray fontsize-24">好评率</view>
 				</view>
 			</view>
 				<view class="flex flex-space-between">
-					<view :class="btnData == 1 ? 'btn-active':'btn'" @click="btnChange(1)">全部({{totalPL}})</view>
-					<view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">最新</view>
-					<view :class="btnData == 3 ? 'btn-active':'btn'" @click="btnChange(3)">好评({{dataObj.haoPing}})</view>
-					<view :class="btnData == 4 ? 'btn-active':'btn'" @click="btnChange(4)">差评({{dataObj.chaPing}})</view>
+					<view :class="btnData == '' ? 'btn-active':'btn'" @click="btnChange('')">全部({{totalPL}})</view>
+					<!-- <view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">最新</view> -->
+					<view :class="btnData == 1 ? 'btn-active':'btn'" @click="btnChange(1)">好评({{dataObj.haoPing}})</view>
+					<view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">差评({{dataObj.chaPing}})</view>
 				</view>
 				<view class="evaluate_css" v-for="(item,index) in list">
 					<view class="flex">
@@ -94,8 +97,8 @@
 								<view class="">
 									{{item.driverContent}}
 								</view>
-								<view>
-									<u--image v-for="(item,index) in item.imgList" :src="item" width='170rpx'
+								<view style='flex-wrap: wrap;' class='flex'>
+									<u--image style='margin:7rpx;border:1px solid #ccc;' v-for="(item,index) in item.imgList" :src="item" width='170rpx'
 										height='170rpx'>
 									</u--image>
 								</view>
@@ -135,8 +138,11 @@
 				],
 				id: "",
 				objectInfo: {},
+				haoType:'',
+				companyList:[],
+				commonId:'',
 				indexBtn: 1,
-				btnData: 1,
+				btnData: '',
 				totalPL:'0'
 			}
 		},
@@ -148,6 +154,7 @@
 		},
 		onLoad(options) {
 			that = this
+			this.commonId=options.commonId
 			this.objectInfo = options
 			console.log(options)
 
@@ -162,17 +169,52 @@
 				this.show = false
 			},
 			upCallback(page) {
+				console.log(this.commonId,11111111)
+				this.$request.baseRequest('get', '/cargoOwnerCompInfo/cargoOwnerList', {
+						commonId: this.commonId
+					}).then(res => {
+						console.log(res)
+						// 可用企业货主
+						this.companyList = []
+						// 自己法人
+						// let _self = res.data.companyInfoList
+						let _self = res.data.hyCompanyInfoList
+						//代理货主
+						// let _dlhz = res.data.cargoOwnerCompInfoList
+						let _dlhz = res.data.hyCargoOwnerCompInfoList
+						if (!_dlhz) _dlhz = []
+						if (!_self) _self = []
+						if (_self.length > 0) {
+							for (let i = 0; i < _self.length; i++) {
+								if (_self[i].status == '已认证') {
+									this.companyList.push(_self[i])
+								}
+							}
+						}
+						if (_dlhz.length > 0) {
+							for (let i = 0; i < _dlhz.length; i++) {
+								if (_dlhz[i].status == '已认证') {
+									this.companyList.push(_dlhz[i])
+								}
+							}
+						}
+						console.log(this.companyList)
+						this.$forceUpdate()
+					})
+					.catch(res => {});
 				that.$request.baseRequest('get', '/evaluateInfo/selectEvaluateInfo', {
 						evaluatoredId: this.objectInfo.commonId,
 						flag: 2,
-						haoType:'',
-						searchType:'',
+						haoType:this.haoType,
+						searchType:2,
 						pageSize: page.size,
 						currentPage: page.num
 					}).then(res => {
 						if (page.num == 1) that.list = [];
 						that.list = that.list.concat(res.data.records); //追加新数据
-						that.totalPL = res.data.total
+						if(this.haoType==''){
+							that.totalPL = res.data.total
+						}
 						for (let i = 0; i < that.list.length; i++) {
 							if (that.list[i].driverUrl) {
 								that.list[i].imgList = that.list[i].driverUrl.split(',')
@@ -226,8 +268,10 @@
 				this.show = false
 			},
 			btnChange(num) {
+				this.haoType=num
 				this.btnData = num
 				this.getList()
+				this.upCallback({size:10,num:1})
 			}
 		}
 	}

+ 70 - 0
pages/goodSource/fk.vue

@@ -8,6 +8,13 @@
 			</view>
 		</view>
 		<u-line class="line"></u-line>
+		<view class="row1 flex flex-space-between">
+			<view>关联订单(选填)</view>
+			<view style='align-items: center;' class='flex'>
+				<view @click='selectorder'>{{dataDetails.orderNo?dataDetails.orderNo:'选择订单'}}></view>
+			</view>
+		</view>
+		<u-line class="line"></u-line>
 		<view class="row2">
 			<view class="title">投诉信息</view>
 			<u--textarea v-model="value1" placeholder="输入要反馈的内容,10-300字" count maxlength='300'></u--textarea>
@@ -15,6 +22,9 @@
 				name="1" multiple :maxCount="9"></u-upload>
 		</view>
 		<view class="row3" @click="submit">提交</view>
+		<u-picker :show="isShow" ref="uPicker"  :columns="orderList" keyName="orderNo" @confirm="confirmorder"
+			:closeOnClickOverlay='true' @close='isShow=false' @cancel='isShow=false'>
+		</u-picker>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
@@ -23,6 +33,7 @@
 	import {
 		mapState
 	} from 'vuex';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	export default {
 		data() {
@@ -31,20 +42,76 @@
 				value1: '',
 				fileList1: [],
 				dataDetails: {},
+				orderList:[],
+				isShow:false,
+				type:0
 			};
 		},
 		onLoad(options) {
+			this.get_camera_permission()
 			this.dataDetails = JSON.parse(options.val)
+			this.type=options.type
+			console.log(this.dataDetails)
 			this.imgList = []
 		},
+		onShow(){
+			uni.showLoading({
+				title: '加载中'
+			})
+			var commonId=''
+			if(this.type==1){
+				commonId=this.dataDetails.cargoCommonId
+			}else{
+				commonId=this.dataDetails.commonId
+			}
+			this.$request.baseRequest('get', '/orderInfo/getAssociatedOrder',{
+				cargoCommonId: commonId,
+				commonId:this.userInfo.id
+			}).then(res => {
+				let that = this
+				uni.hideLoading()
+				this.orderList=[res.data]
+				// console.log(this.orderList)
+			})
+			.catch(res => {
+				uni.$u.toast(res.message);
+			});
+		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
 		methods: {
+			confirmorder(e){
+				console.log(e)
+				this.dataDetails.orderId=e.value[0].id
+				this.dataDetails.orderNo=e.value[0].orderNo
+				this.isShow=false
+			},
+			selectorder(){
+				this.isShow=true
+			},
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			submit() {
 				uni.showLoading({
 					title: '加载中'
 				})
+				console.log()
 				this.$request.baseRequest('post', '/feedbackReport/api/addInfo', {
 						initiator:this.firstAuthentication.driverName,
 						initiatorNumber:this.firstAuthentication.driverPhone,
@@ -52,12 +119,15 @@
 						passive: this.dataDetails.cargoOwnerName,
 						passiveNumber: this.dataDetails.cargoOwnerPhone,
 						passiveCommonId:this.dataDetails.commonId,
+						orderId:this.dataDetails.orderId,
+						orderNo:this.dataDetails.orderNo,
 						content: this.value1,
 						url: this.imgList.toString(),
 						flag: 1,
 						objectFlag:2
 					}).then(res => {
 						let that = this
+						this.type=0
 						uni.hideLoading()
 						this.$refs.uToast.show({
 							type: 'success',

+ 486 - 209
pages/goodSource/index.vue

@@ -1,6 +1,7 @@
 <!-- 货源 -->
 <template>
 	<view class="content">
+<!-- 		<fh-no-network></fh-no-network> -->
 		<view class="banner">
 			<image class="banner-img" src="@/static/images/goodSource/banner@2x.png" mode='widthFix'></image>
 			<view class="head flex s-row paddingr35">
@@ -62,7 +63,6 @@
 							</view>
 						</view>
 						<view class="right gray">
-							<!-- {{good.createDate}} -->
 							{{$helper.changeTime(good.updateDate)}}
 						</view>
 						<view class="flex flex-space-between yf-style">
@@ -79,7 +79,7 @@
 									<view v-if="carWeight(good)">{{carWeight(good)}}</view>
 								</view>
 								<view class="flex row">
-									<view class="row-tips">{{good.taskDescription}}</view>
+									<view class="row-tips" v-if="good.taskDescription">{{good.taskDescription}}</view>
 								</view>
 							</view>
 							<view class="right flex h-color">
@@ -122,6 +122,7 @@
 </template>
 <script>
 	var that
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import {
 		mapState
@@ -186,31 +187,37 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
+		watch:{
+			// startPlace(){
+			// 	console.log(this.startPlace)
+   //              this.upCallback({page});
+   //          },
+		},
+		onLoad() {
+			this.checkOpenGPSServiceByAndroidIOS()
+		},
 		onShow() {
-			//获取上一次点击起装卸地
-			if (uni.getStorageSync('fPlaceObj')) {
-				this.startPlace = uni.getStorageSync('fPlaceObj');
-			} else {
-				// #ifdef APP-PLUS
-				var that=this
-				// this.$nextTick(function(){
-					this.getLngLat();
-				// })
-				
-				// #endif
-				if(!this.startPlace.selected){
-					this.startPlace.selected = ''
+			
+			var that= this
+			setTimeout(()=>{
+				// var photol=await permision.checkSystemEnableLocation()
+				if(uni.getStorageSync('confirm_location')){
+					that.get_localtion_permission()
 				}
-			}
-			if (uni.getStorageSync('sPlaceObj')) {
-				this.endPlace = uni.getStorageSync('sPlaceObj');
-			} else {
-				this.endPlace.selected = '全国'
-			}
+				//获取上一次点击起装卸地
+				if (uni.getStorageSync('fPlaceObj')) {
+					that.startPlace = uni.getStorageSync('fPlaceObj');
+				}
+				if (uni.getStorageSync('sPlaceObj')) {
+					that.endPlace = uni.getStorageSync('sPlaceObj');
+				}
+				that.upCallback({size:10,num:1})
+			},1500)
+			
 			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
 				reCommonId: this.userInfo.id,
 			}).then(res3 => {
-				if (res3.data) {
+				if (res3.data||res3.data==0) {
 					let name = 'myTip';
 					let value = res3.data
 					if (value == 0) {
@@ -233,25 +240,25 @@
 			// 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
+		// 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)
@@ -273,9 +280,164 @@
 
 		},
 		methods: {
+			async get_localtion_permission() {
+				var photol=await permision.checkSystemEnableLocation()
+				if(photol == true){
+					uni.removeStorageSync('confirm_location')
+					uni.showToast({
+									title: '只有文字弹窗',
+									icon: 'none',    //如果要纯文本,不要icon,将值设为'none'
+									duration: 2000    //持续时间为 2秒
+								})  
+					this.getLngLat()
+				}else{
+					if(uni.getStorageSync('confirm_location')){
+						uni.removeStorageSync('confirm_location')
+				}
+					uni.setStorageSync('fPlaceObj',{
+						fchoosearea:'全部',
+						fchoosecity:'市辖区',
+						fchooseprovince:'北京',
+						selected:'东城'
+					})
+					uni.setStorageSync('sPlaceObj',{
+						schoosearea:'请选择区',
+						schoosecity:'请选择市',
+						schooseprovince:'全国',
+						selected:'全国'
+					})
+					uni.setStorageSync('longitudeAndLatitude','116.3972,39.9096')
+				}
+			},
+			async getLngLat(){
+				await uni.getLocation({
+					type: 'gcj02',
+					geocode: true,
+					success: res => {
+						if (res.latitude) {
+							if(res.address.city){
+								if(res.address.city.indexOf('市')!=-1){
+									res.address.city=res.address.city.substring(0,res.address.city.length-1)
+								}
+							}
+							if(res.address.province){
+								if(res.address.province.indexOf('省')!=-1){
+									res.address.province=res.address.province.substring(0,res.address.province.length-1)
+								}
+							}
+							uni.setStorageSync('fPlaceObj',{
+								fchoosearea:'全部',
+								fchoosecity:res.address.city,
+								fchooseprovince:res.address.province,
+								selected:res.address.city
+							})
+							uni.setStorageSync('sPlaceObj',{
+								schoosearea:'请选择区',
+								schoosecity:'请选择市',
+								schooseprovince:'全国',
+								selected:'全国'
+							})
+							uni.setStorageSync('longitudeAndLatitude',res.longitude+','+res.latitude)
+				}
+				}
+				})
+			},
+			checkOpenGPSServiceByAndroidIOS() {
+			    let system = uni.getSystemInfoSync(); // 获取系统信息
+			    // console.log(system);
+			    if (system.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);
+			        if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
+			            uni.showModal({
+			                title: '提示',
+			                content: '请打开定位服务功能',
+			                // showCancel: false, // 不显示取消按钮
+			                success(res) {
+								if(res.confirm){
+									uni.setStorageSync('confirm_location',1)
+									if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
+										
+										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);
+										main.startActivity(intent); // 打开系统设置GPS服务页面
+									} else {
+										uni.setStorageSync('fPlaceObj',{
+											fchoosearea:'全部',
+											fchoosecity:'市辖区',
+											fchooseprovince:'北京',
+											selected:'东城'
+										})
+										uni.setStorageSync('sPlaceObj',{
+											schoosearea:'请选择区',
+											schoosecity:'请选择市',
+											schooseprovince:'全国',
+											selected:'全国'
+										})
+										uni.setStorageSync('longitudeAndLatitude','116.3972,39.9096')
+									}
+								}else{
+									uni.setStorageSync('fPlaceObj',{
+										fchoosearea:'全部',
+										fchoosecity:'市辖区',
+										fchooseprovince:'北京',
+										selected:'东城'
+									})
+									uni.setStorageSync('sPlaceObj',{
+										schoosearea:'请选择区',
+										schoosecity:'请选择市',
+										schooseprovince:'全国',
+										selected:'全国'
+									})
+									uni.setStorageSync('longitudeAndLatitude','116.3972,39.9096')
+								}
+			                }
+			            });
+			        }else{
+						this.getLngLat()
+					}
+			    } else if (system.platform === 'ios') {
+			        // console.log("苹果");
+			        var cllocationManger = plus.ios.import("CLLocationManager");
+			        var enable = cllocationManger.locationServicesEnabled();
+			        var status = cllocationManger.authorizationStatus();
+			        plus.ios.deleteObject(cllocationManger);
+			        if (enable && status != 2) {
+						this.getLngLat()
+			            console.log("手机系统的定位已经打开");
+			        } else {
+			            console.log("手机系统的定位没有打开");
+			            uni.showModal({
+			                title: '提示',
+			                content: '请前往设置-隐私-定位服务打开定位服务功能',
+			                // showCancel: false, // 不显示取消按钮
+			                success(res) {
+								if(res.confirm){
+									var UIApplication = plus.ios.import("UIApplication");
+									var application2 = UIApplication.sharedApplication();
+									var NSURL2 = plus.ios.import("NSURL");
+									// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
+									// var setting2 = NSURL2.URLWithString("App-Prefs:root=LOCATION_SERVICES");
+									// var setting2 = NSURL2.URLWithString("app-settings");
+									var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION");
+									// var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION_SERVICES");
+									application2.openURL(setting2);
+									plus.ios.deleteObject(setting2);
+									plus.ios.deleteObject(NSURL2);
+									plus.ios.deleteObject(application2);
+									this.getLngLat()
+								}
+			                }
+			            });
+			        }
+			    }
+			},
 			cargoOwner(_obj){
 				// uni.$u.route('/pages/order/evaluateList');
-				console.log("查看---------------",_obj)
+				// console.log("查看---------------",_obj)
 				uni.$u.route('/pages/goodSource/cargoOwnerSee',_obj)
 			},
 			mescrollInit(mescroll) {
@@ -283,32 +445,38 @@
 			},
 			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 => {
+				var that=this
+				this.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+					driverPhone: this.userInfo.phone,
+				}).then(res2 => {
+					let _obj = {
+						driverCommonId: res2.data.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: res2.data.driverName,
+						driverPhone: res2.data.driverPhone,
+						cargoOwnerPhone: item.cargoOwnerPhone,
+						id:item.id,
+						billingMethod:item.billingMethod,
+						freightAdvance:item.freightAdvance,
+						goodsType:item.goodsType,
+						goodsTypeKey:item.goodsTypeKey
+					}
+					that.$request.baseRequest('post', '/publishTaskInfo/api/addOrder', _obj).then(res => {
 						if (res.code == 200) {
-							this.$refs.uToast.show({
+							that.$refs.uToast.show({
 								type: 'success',
 								message: "抢单成功!",
 								complete() {
@@ -318,7 +486,7 @@
 								}
 							})
 						} else {
-							this.$refs.uToast.show({
+							that.$refs.uToast.show({
 								type: 'error',
 								message: res.message,
 							})
@@ -327,6 +495,8 @@
 					.catch(res => {
 						uni.$u.toast(res.message);
 					});
+				
+				});
 				this.isShowAlert = false
 			},
 			cancelClick() {
@@ -346,16 +516,16 @@
 			carType(good) {
 				let _val = '';
 				if (good.carModel == 1) {
-					_val = '不限'
+					_val = ''
 				} else {
 					if (good.carModel.includes(2)) {
-						_val += '高栏/'
+						_val += '高栏 '
 					}
 					if (good.carModel.includes(3)) {
-						_val += '集装箱/'
+						_val += '集装箱 '
 					}
 					if (good.carModel.includes(4)) {
-						_val += '自卸车'
+						_val += '自卸车 '
 					}
 				}
 				return _val
@@ -404,84 +574,154 @@
 			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.startPlace.selected=res.address.city
-							// 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()
+			// getLngLat() {
+			// 	var that=this
+			// 	// uni.showLoading({
+			// 	// 	title: '获取定位信息'
+			// 	// })
+				
+			// 	uni.getLocation({
+			// 		type: 'gcj02',
+			// 		geocode: true,
+			// 		success: res => {
+			// 			if (res.latitude) {
+			// 				console.log(res)
+			// 				if(res.address.city){
+			// 					if(res.address.city.indexOf('市')!=-1){
+			// 						res.address.city=res.address.city.substring(0,res.address.city.length-1)
+			// 					}
+			// 				}
+			// 				if(res.address.province){
+			// 					if(res.address.province.indexOf('省')!=-1){
+			// 						res.address.province=res.address.province.substring(0,res.address.province.length-1)
+			// 					}
+			// 				}
+			// 				uni.setStorageSync('fPlaceObj',{
+			// 					fchoosearea:'全部',
+			// 					fchoosecity:res.address.city,
+			// 					fchooseprovince:res.address.province,
+			// 					selected:res.address.city
+			// 				})
+			// 				uni.setStorageSync('sPlaceObj',{
+			// 					schoosearea:'请选择区',
+			// 					schoosecity:'请选择市',
+			// 					schooseprovince:'全国',
+			// 					selected:'全国'
+			// 				})
+			// 				let _pickerSelect;
+			// 				if (that.pickerSelect == '运费先付') {
+			// 					_pickerSelect = 1
+			// 				} else {
+			// 					_pickerSelect = 0
+			// 				}
+			// 				that.startPlace.selected=res.address.city
+			// 				that.startPlace.fchoosecity=res.address.city
+			// 				let _data = {
+			// 					searchKeyWord: this.tabIndex + 1,
+			// 					searchType: _pickerSelect,
+			// 					pageSize: 10,
+			// 					currentPage: 1,
+			// 					loadingPlaceCity: that.startPlace.fchoosecity,
+			// 					// unLoadingPlaceCity: this.endPlace.schoosecity
 							
-						}
-					}
-				});
-			},
+			// 				}
+			// 				that.$forceUpdate()
+			// 				// that.$set(that.startPlace,'selected',res.address.city)
+			// 				// that.lng = res.longitude;
+			// 				// that.lat = res.latitude;
+			// 				that.$request.baseRequest('get', '/publishTaskInfo/selectGoodsSource', _data).then(res => {
+			// 						if (res.code == 200) {
+			// 							console.log(res.data.records)
+			// 							uni.hideLoading()
+			// 							that.mescroll.endBySize(res.data.records.length, res.data.total);
+			// 							if(res.data.records){
+			// 								that.goods = res.data.records
+			// 								for (let i = 0; i < that.goods.length; i++) {
+			// 									if (that.goods[i].peripheralInfo == 1) {
+			// 										that.isFirstIndex = i
+			// 										return
+			// 									}
+			// 								}
+			// 							}else{
+			// 								that.goods=[]
+			// 							}
+										
+			// 						}
+			// 						uni.hideLoading()
+			// 					})
+			// 					.catch(res => {
+			// 						uni.$u.toast(res.message);
+			// 						that.mescroll.endErr();
+			// 					});
+			// 			} 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()
+							
+			// 			}
+			// 		}
+			// 	});
+			// },
 			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: "请先完成司机认证!",
-					})
-				}
-
+				var that=this
+				that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+					driverPhone: this.userInfo.phone,
+				}).then(res2 => {
+					// console.log('跳转',1111111)
+					uni.setStorageSync('firstAuthentication', res2.data)
+					that.firstAuthentication=uni.getStorageSync('firstAuthentication')
+					// console.log(that.firstAuthentication)
+					//司机是否认证身份
+					// 保留uni.getStorageSync('firstAuthentication'),thisfirstAuthentication有缓存问题
+					if (uni.getStorageSync('firstAuthentication').authenticationStatus == '已认证') {
+						uni.$u.route('/pages/goodSource/shippingDetails', {
+							id: id,
+						});
+					} else if (uni.getStorageSync('firstAuthentication').authenticationStatus == '已过期') {
+						that.$refs.uToast.show({
+							type: 'error',
+							message: "证件已过期,请上传新证件!",
+						})
+					} else {
+						that.$refs.uToast.show({
+							type: 'error',
+							message: "请先完成司机认证!",
+						})
+					}
+				})
 			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
+				var that =this
 				let _pickerSelect;
 				if (this.pickerSelect == '运费先付') {
 					_pickerSelect = 1
@@ -501,75 +741,111 @@
 					// unLoadingPlaceCity: this.endPlace.schoosecity
 
 				}
+				console.log(uni.getStorageSync('longitudeAndLatitude'))
 				// if (this.tabIndex == 2) {
-					if(!this.startPlace.selected){
-						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
+					if(uni.getStorageSync('longitudeAndLatitude')){
+						this.lng=uni.getStorageSync('longitudeAndLatitude').split(',')[0]
+						this.lat=uni.getStorageSync('longitudeAndLatitude').split(',')[1]
 					}
-
-				} 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
+						_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
+								if(this.startPlace.fchoosecity=='市辖区'){
+									_data.loadingPlaceCity = this.startPlace.fchooseprovince
+								}else{
+									_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
 						}
-						uni.hideLoading()
-					})
-					.catch(res => {
-						uni.$u.toast(res.message);
-						this.mescroll.endErr();
-					});
+						if (uni.getStorageSync('sPlaceObj')) {
+							if (this.endPlace.schoosearea && this.endPlace.schoosearea == '全部' && this.endPlace.schoosearea !=
+								'请选择区') {
+									if(this.endPlace.schoosecity=='市辖区'){
+										_data.unLoadingPlaceCity = this.endPlace.schooseprovince
+									}else{
+										_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: '加载中'
+						})
+						console.log(_data)
+						this.$request.baseRequest('get', '/publishTaskInfo/selectGoodsSource', _data).then(res => {
+								if (res.code == 200) {
+									uni.hideLoading()
+									if (page.num == 1) {
+										this.goods = [];
+										// this.otherGoods = []
+									};
+									if(res.data.records){
+										for(var i=0;i<res.data.records.length;i++){
+											if(res.data.records[i].cargoDistance){
+												if(res.data.records[i].cargoDistance>10){
+													res.data.records[i].cargoDistance=res.data.records[i].cargoDistance.toFixed(0)
+												}else{
+													res.data.records[i].cargoDistance=res.data.records[i].cargoDistance.toFixed(1)
+												}	
+											}
+											if(res.data.records[i].distance){
+												if(res.data.records[i].distance>10){
+													res.data.records[i].distance=res.data.records[i].distance.toFixed(0)
+												}else{
+													res.data.records[i].distance=res.data.records[i].distance.toFixed(1)
+												}
+												
+											}
+										}
+									}
+									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(res.data.records){
+										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
+											}
+										}
+									}else{
+										that.goods=[]
+									}
+									
+								}
+							})
+							.catch(res => {
+								uni.$u.toast(res.message);
+								this.mescroll.endErr();
+							});
 			},
 			clickTab(val) {
 				this.tabIndex = val.index
@@ -582,7 +858,7 @@
 				if (this.endPlace.selected == '全国') {
 					this.$refs.uToast.show({
 						type: 'error',
-						message: "卸车地为全国不允许切换!",
+						message: "装车地不能为全国!",
 					})
 					return
 				}
@@ -777,6 +1053,7 @@
 
 	.other-goods {
 		// background: red;
+		color:#999999;
 		margin: 40rpx 0;
 		display: flex;
 		justify-content: center;

+ 68 - 0
pages/goodSource/jb.vue

@@ -8,6 +8,13 @@
 			</view>
 		</view>
 		<u-line class="line"></u-line>
+		<view class="row1 flex flex-space-between">
+			<view>关联订单(选填)</view>
+			<view style='align-items: center;' class='flex'>
+				<view @click='selectorder'>{{dataDetails.orderNo?dataDetails.orderNo:'选择订单'}}></view>
+			</view>
+		</view>
+		<u-line class="line"></u-line>
 		<view class="row2">
 			<view class="title">举报信息</view>
 			<u--textarea v-model="value1" placeholder="输入要举报的内容,10-300字" count maxlength='300'></u--textarea>
@@ -15,6 +22,9 @@
 				name="1" multiple :maxCount="9"></u-upload>
 		</view>
 		<view class="row3" @click="submit">提交</view>
+		<u-picker :show="isShow" ref="uPicker"  :columns="orderList" keyName="orderNo" @confirm="confirmorder"
+			:closeOnClickOverlay='true' @close='isShow=false' @cancel='isShow=false'>
+		</u-picker>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
@@ -23,6 +33,7 @@
 	import {
 		mapState
 	} from 'vuex';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	export default {
 		data() {
@@ -31,17 +42,71 @@
 				value1: '',
 				fileList1: [],
 				dataDetails: {},
+				orderList:[],
+				isShow:false,
+				type:0
 			};
 		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
 		onLoad(options) {
+			this.get_camera_permission()
 			this.dataDetails = JSON.parse(options.val)
+			this.type=options.type
 			console.log(this.dataDetails)
 			this.imgList = []
 		},
+		onShow(){
+			uni.showLoading({
+				title: '加载中'
+			})
+			var commonId=''
+			if(this.type==1){
+				commonId=this.dataDetails.cargoCommonId
+			}else{
+				commonId=this.dataDetails.commonId
+			}
+			this.$request.baseRequest('get', '/orderInfo/getAssociatedOrder',{
+				cargoCommonId: commonId,
+				commonId:this.userInfo.id
+			}).then(res => {
+				let that = this
+				uni.hideLoading()
+				this.orderList=[res.data]
+				// console.log(this.orderList)
+			})
+			.catch(res => {
+				uni.$u.toast(res.message);
+			});
+		},
 		methods: {
+			confirmorder(e){
+				console.log(e)
+				this.dataDetails.orderId=e.value[0].id
+				this.dataDetails.orderNo=e.value[0].orderNo
+				this.isShow=false
+			},
+			selectorder(){
+				this.isShow=true
+			},
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			submit() {
 				uni.showLoading({
 					title: '加载中'
@@ -53,12 +118,15 @@
 						passive: this.dataDetails.cargoOwnerName,
 						passiveNumber: this.dataDetails.cargoOwnerPhone,
 						passiveCommonId:this.dataDetails.commonId,
+						orderId:this.dataDetails.orderId,
+						orderNo:this.dataDetails.orderNo,
 						content: this.value1,
 						url: this.imgList.toString(),
 						flag: 2,
 						objectFlag:2
 					}).then(res => {
 						let that = this
+						this.type=0
 						uni.hideLoading()
 						this.$refs.uToast.show({
 							type: 'success',

+ 6 - 2
pages/goodSource/map.vue

@@ -16,7 +16,7 @@
 			}
 		},
 		created() {
-			this.getLngLat();
+			// this.getLngLat();
 		},
 		methods: {
 			back(){
@@ -25,7 +25,11 @@
 				})
 			},
 			srcHandler() {
-				return `/hybrid/html/map.html?lat=${this.lat}`
+				// console.log(uni.getStorageSync('sendaddress'),uni.getStorageSync('unsendaddress'))
+				var sendaddress=uni.getStorageSync('sendaddress').sendLatitude+','+uni.getStorageSync('sendaddress').sendLongitude
+				var unsendaddress=uni.getStorageSync('unsendaddress').unsendLatitude+','+uni.getStorageSync('unsendaddress').unsendLongitude
+				// console.log(this.lat,)
+				return `/hybrid/html/map.html?lat=${sendaddress}&unsendaddress=${unsendaddress}&distance=${uni.getStorageSync('distance')}`
 			},
 			getLngLat() {
 				uni.getLocation({

+ 235 - 107
pages/goodSource/selectCity.vue

@@ -56,7 +56,7 @@
 				<view class="container" v-if="(type==0?fstatus:sstatus)==0">
 					<view class="content-item" :class="index ==(type==0?isfprovince:issprovince) ?'active':''"
 						@click="selectProvince(item, index,(type==0?fstatus:sstatus))"
-						v-for="(item,index) in (type==0?fprovincelist:sprovincelist)" :key="index">
+						v-for="(item,index) in (type==0?fprovincelist:sprovincelist)" v-show='type==1||type==0&&item.label!="全国"' :key="index">
 						{{item.label}}
 					</view>
 				</view>
@@ -120,6 +120,8 @@
 				type: 0,
 				count: 0,
 				ftitle: '',
+				ftitleList:[],
+				stitleList:[],
 				stitle: '',
 				selectList: [],
 			}
@@ -146,10 +148,65 @@
 			} else {
 				this.historyScityList = []
 			}
-
-
 			//赋值地区
 		},
+		mounted() {
+			if (uni.getStorageSync('fPlaceObj')) {
+				this.fchooseprovince=uni.getStorageSync('fPlaceObj').fchooseprovince
+				this.fchoosecity=uni.getStorageSync('fPlaceObj').fchoosecity
+				this.fchoosearea=uni.getStorageSync('fPlaceObj').fchoosearea
+				for (var i = 0; i < this.fprovincelist.length; i++) {
+					if(this.fprovincelist[i].label==this.fchooseprovince){
+						this.fprovincelist[i].checked=true
+						this.fcitylist = this.fprovincelist[i].child
+						for (var q = 0; q < this.fcitylist.length; q++) {
+							if(this.fcitylist[q].label==this.fchoosecity){
+								this.fcitylist[q].checked=true
+								this.farealist = this.fcitylist[q].child
+								for (var area = 0; area < this.farealist.length; area++) {
+									if(this.farealist[area].label==this.fchoosearea){
+										this.farealist[area].checked=true
+									}
+								}
+							}
+						}
+					}
+				}
+				this.fstatus=2
+			}
+			if (uni.getStorageSync('sPlaceObj')) {
+				// sprovincelist
+				// console.log(this.sprovincelist)
+				this.schooseprovince=uni.getStorageSync('sPlaceObj').schooseprovince
+				this.schoosecity=uni.getStorageSync('sPlaceObj').schoosecity
+				this.schoosearea=uni.getStorageSync('sPlaceObj').schoosearea
+				
+				if(this.schooseprovince=='全国'){
+					this.sstatus=0
+					this.$set(this.sprovincelist[0],'checked',true)
+					this.issprovince=0
+				}else{
+					for (var i = 0; i < this.sprovincelist.length; i++) {
+						if(this.sprovincelist[i].label==this.schooseprovince){
+							this.sprovincelist[i].checked=true
+							this.scitylist = this.sprovincelist[i].child
+							for (var q = 0; q < this.scitylist.length; q++) {
+								if(this.scitylist[q].label==this.schoosecity){
+									this.scitylist[q].checked=true
+									this.sarealist = this.scitylist[q].child
+									for (var area = 0; area < this.sarealist.length; area++) {
+										if(this.sarealist[area].label==this.schoosearea){
+											this.sarealist[area].checked=true
+										}
+									}
+								}
+							}
+						}
+					}
+					this.sstatus=2
+				}
+			}
+		},
 		methods: {
 			historyClick(type,val){
 				console.log(type)
@@ -224,18 +281,28 @@
 				}
 			},
 			confirmBtn() {
+				
 				//设置地区 0发货地 1收货地
-				if (this.type == 0) {
 					if (this.fchooseprovince == '选择' ||(this.fchoosearea == '请选择区'&&this.fchoosecity!='全部')|| (this.fchoosecity == '请选择市' && this.fchooseprovince != '全国')) {
+							this.$refs.uToast.show({
+								type: 'error',
+								message: "请选择发货地区域!",
+							})
+					return
+					}
+					
+					//收货地
+					if (this.schooseprovince == '选择' ||(this.schoosearea == '请选择区'&&this.schoosecity!='全部'&& this.schooseprovince != '全国')|| (this.schoosecity == '请选择市' && this.schooseprovince != '全国')) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "请选择区域!",
+							message: "请选择收货地区域!",
 						})
 						return
 					}
-					console.log("省", this.fchooseprovince)
-					console.log("市", this.fchoosecity)
-					console.log("区", this.fchoosearea)
+					// }
+					// console.log("省", this.fchooseprovince)
+					// console.log("市", this.fchoosecity)
+					// console.log("区", this.fchoosearea)
 					let _obj = {
 						fchooseprovince: this.fchooseprovince,
 						fchoosecity: this.fchoosecity,
@@ -272,17 +339,18 @@
 					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)
+						console.log(this.fchooseprovince,this.fchoosecity,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,
@@ -292,21 +360,12 @@
 						});
 					}
 					console.log(this.historyFcityList)
-					uni.switchTab({
-						url: '/pages/goodSource/index'
-					});
-				} else {
-					//收货地
-					if (this.schooseprovince == '选择' ||(this.schoosearea == '请选择区'&&this.schoosecity!='全部')|| (this.schoosecity == '请选择市' && this.schooseprovince != '全国')) {
-						this.$refs.uToast.show({
-							type: 'error',
-							message: "请选择区域!",
-						})
-					}
-					console.log(this.schooseprovince)
-					console.log(this.schoosecity)
-					console.log(this.schoosearea)
-					let _obj = {
+					// uni.switchTab({
+					// 	url: '/pages/goodSource/index'
+					// });
+				// } else {
+					
+					let _obj1 = {
 						schooseprovince: this.schooseprovince,
 						schoosecity: this.schoosecity,
 						schoosearea: this.schoosearea,
@@ -314,44 +373,44 @@
 					}
 					//选中全国
 					if (this.schoosecity == '请选择市' && this.schooseprovince == '全国') {
-						_obj.selected = this.schooseprovince
-						this.historyScityList.unshift(_obj)
-						let _newList = this.makeHistoryList(_obj)
+						_obj1.selected = this.schooseprovince
+						this.historyScityList.unshift(_obj1)
+						let _newList = this.makeHistoryList(_obj1)
 						uni.setStorageSync('sPlaceList', _newList);
 					}
 					//选择省
 					if (this.schoosearea == '请选择区' && this.schoosecity == '全部') {
-						_obj.selected = this.schooseprovince
-						this.historyScityList.unshift(_obj)
-						let _newList = this.makeHistoryList(_obj)
+						_obj1.selected = this.schooseprovince
+						this.historyScityList.unshift(_obj1)
+						let _newList = this.makeHistoryList(_obj1)
 
 						uni.setStorageSync('sPlaceList', _newList);
 					}
 					//选择市
 					if (this.schoosearea == '全部') {
 						if(this.schoosecity=='市辖区'){
-							_obj.selected = this.schooseprovince
+							_obj1.selected = this.schooseprovince
 						}else{
-							_obj.selected = this.schoosecity
+							_obj1.selected = this.schoosecity
 						}
 						
-						this.historyScityList.unshift(_obj)
-						let _newList = this.makeHistoryList(_obj)
+						this.historyScityList.unshift(_obj1)
+						let _newList = this.makeHistoryList(_obj1)
 						uni.setStorageSync('sPlaceList', _newList);
 					}
-					uni.setStorageSync('sPlaceObj', _obj);
+					uni.setStorageSync('sPlaceObj', _obj1);
 					//选择区
 					if (this.schoosearea != '请选择区' && this.schoosearea != '全部') {
 						let _list = this.schoosearea.split(',')
 						let _newList
 						for (let i = 0; i < _list.length; i++) {
 
-							let _deepObj = uni.$u.deepClone(_obj)
+							let _deepObj = uni.$u.deepClone(_obj1)
 							_deepObj.selected = _list[i]
 							this.historyScityList.unshift(_deepObj)
 							_newList = this.makeHistoryList(_deepObj)
 						}
-						console.log(_newList)
+						// console.log(_newList)
 						uni.setStorageSync('sPlaceList', this.historyScityList);
 						uni.setStorageSync('sPlaceObj', {
 							schooseprovince: this.schooseprovince,
@@ -361,10 +420,16 @@
 						});
 					}
 					console.log(this.historyScityList)
+					this.schooseprovince='选择'
+					this.schoosecity='请选择市'
+					this.schoosearea='请选择区'
+					this.fchooseprovince='选择'
+					this.fchoosecity='请选择市'
+					this.fchoosearea='请选择区'
+					uni.removeStorageSync('longitudeAndLatitude')
 					uni.switchTab({
 						url: '/pages/goodSource/index'
 					});
-				}
 			},
 			//返回上一级
 			backLevel() {
@@ -380,11 +445,13 @@
 						this.fchoosearea = ''
 						this.ftitle = ''
 						this.isfcity = null
+						this.ftitleList=[]
 					} else {
 						this.schoosecity = '请选择市'
 						this.schoosearea = ''
 						this.stitle = ''
 						this.isscity = null
+						this.stitleList=[]
 					}
 				} else if ((this.type == 0 ? this.fstatus : this.sstatus) == 0) {
 					if (this.type == 0) {
@@ -420,24 +487,29 @@
 						this.fchooseprovince = '选择'
 						this.fchoosecity = '请选择市'
 						this.fchoosearea = '请选择区'
+						this.ftitleList=[]
 					} else {
 						this.schooseprovince = '选择'
 						this.schoosecity = '请选择市'
 						this.schoosearea = '请选择区'
+						this.stitleList=[]
 					}
 
 				} else if (status == 1) {
 					if (this.type == 0) {
 						this.fchoosecity = '请选择市'
 						this.fchoosearea = '请选择区'
+						this.ftitleList=[]
 					} else {
 						this.schoosecity = '请选择市'
 						this.schoosearea = '请选择区'
+						this.stitleList=[]
 					}
 				}
 			},
 			// 选择省
 			selectProvince(item, i, statusIndex) {
+				console.log(this.type)
 				this.count = 0;
 				if (this.type == 0) {
 					if (i == 0) {
@@ -529,6 +601,7 @@
 								this.farealist[i].checked = false
 							}
 						}
+						this.ftitleList=[]
 						this.fchoosearea = '全部'
 						this.$forceUpdate()
 						return
@@ -540,82 +613,137 @@
 								this.sarealist[i].checked = false
 							}
 						}
+						this.stitleList=[]
 						this.schoosearea = '全部'
 						this.$forceUpdate()
 						return
 					}
 				}
-
-				if (this.count < 3) {
-					item.checked = !item.checked
-					if (item.checked && this.count < 3) {
-						this.count++;
-					} else if (!item.checked && this.count < 3) {
-						this.count--;
-					}
-				} else {
-					if (item.checked) {
-						item.checked = !item.checked
-						this.count--;
-					} else {
-						this.$refs.uToast.show({
-							type: 'error',
-							message: "最多选择3个地区",
-						})
-					}
-				}
-				this.$forceUpdate()
-				//设置面包屑 0发货地 1收货地
 				if (this.type == 0) {
-					if (item.checked && !this.fchoosearea.includes(item.label)) {
-						if (this.ftitle) {
-							this.ftitle += ',' + item.label
-						} else {
-							this.ftitle += item.label
+					this.farealist[0].checked = false
+					if (this.ftitleList.length < 3) {
+						item.checked = !item.checked
+						if (item.checked ) {
+							if(this.ftitleList.indexOf(item.label)==-1){
+								this.ftitleList.push(item.label)
+							}
+						} else if (!item.checked) {
+							for (var i = 0; i < this.ftitleList.length; i++) {
+								console.log(this.ftitleList[i])
+								if(this.ftitleList[i]==item.label){
+									this.ftitleList.splice(i,1)
+								}
+							}
 						}
-						this.fchoosearea = this.ftitle
-						console.log(this.fchoosearea)
 					} else {
-						if (this.ftitle.includes(',' + item.label)) {
-							this.ftitle = this.ftitle.replace(',' + item.label, '')
-							this.fchoosearea = this.fchoosearea.replace(',' + item.label, '')
-						} else {
-							let _val = this.ftitle.split(',')
-							let _len = _val.length;
-							if (_len == 1) {
-								this.ftitle = this.ftitle.replace(item.label, '')
-								this.fchoosearea = '请选择区'
-							} else if (_len > 1) {
-								this.ftitle = this.ftitle.replace(item.label + ',', '')
-								this.fchoosearea = this.fchoosearea.replace(item.label + ',', '')
+						if (item.checked) {
+							item.checked = !item.checked
+							for (var i = 0; i < this.ftitleList.length; i++) {
+								if(this.ftitleList[i]==item.label){
+									this.ftitleList.splice(i,1)
+								}
 							}
+						} else {
+							this.$refs.uToast.show({
+								type: 'error',
+								message: "最多选择3个地区",
+							})
 						}
 					}
-				} else {
-					if (item.checked && !this.schoosearea.includes(item.label)) {
-						if (this.stitle) {
-							this.stitle += ',' + item.label
-						} else {
-							this.stitle += item.label
+					this.ftitle=this.ftitleList.toString()
+					this.fchoosearea=this.ftitleList.toString()
+				}else{
+					this.sarealist[0].checked = false
+					if (this.stitleList.length < 3) {
+						item.checked = !item.checked
+						if (item.checked ) {
+							if(this.stitleList.indexOf(item.label)==-1){
+								this.stitleList.push(item.label)
+							}
+						} else if (!item.checked) {
+							for (var i = 0; i < this.stitleList.length; i++) {
+								console.log(this.stitleList[i])
+								if(this.stitleList[i]==item.label){
+									this.stitleList.splice(i,1)
+								}
+							}
 						}
-						this.schoosearea = this.stitle
 					} else {
-						if (this.stitle.includes(',' + item.label)) {
-							this.stitle = this.stitle.replace(',' + item.label, '')
-							this.schoosearea = this.schoosearea.replace(',' + item.label, '')
-						} else {
-							let _val = this.stitle.split(',')
-							let _len = _val.length;
-							if (_len == 1) {
-								this.stitle = this.stitle.replace(item.label, '')
-								this.schoosearea = '请选择区'
-							} else if (_len > 1) {
-								this.stitle = this.stitle.replace(item.label + ',', '')
-								this.schoosearea = this.schoosearea.replace(item.label + ',', '')
+						if (item.checked) {
+							item.checked = !item.checked
+							for (var i = 0; i < this.stitleList.length; i++) {
+								if(this.stitleList[i]==item.label){
+									this.stitleList.splice(i,1)
+								}
 							}
+						} else {
+							this.$refs.uToast.show({
+								type: 'error',
+								message: "最多选择3个地区",
+							})
 						}
 					}
+					this.stitle=this.stitleList.toString()
+					this.schoosearea=this.stitleList.toString()
 				}
+				console.log(this.ftitleList)
+				this.$forceUpdate()
+				//设置面包屑 0发货地 1收货地
+				// if (this.type == 0) {
+				// 	this.farealist[0].checked = false
+				// 	// if(this.ftitleList.indexOf(item.label)==-1){
+				// 	// 	this.ftitleList.push(item.label)
+				// 	// }
+				// 	if (item.checked && !this.fchoosearea.includes(item.label)) {
+				// 		if (this.ftitle) {
+				// 			this.ftitle += ',' + item.label
+							
+				// 		} else {
+				// 			this.ftitle += item.label
+				// 		}
+				// 		this.fchoosearea = this.ftitle
+				// 		console.log(this.fchoosearea)
+				// 	} else {
+				// 		if (this.ftitle.includes(',' + item.label)) {
+				// 			this.ftitle = this.ftitle.replace(',' + item.label, '')
+				// 			this.fchoosearea = this.fchoosearea.replace(',' + item.label, '')
+				// 		} else {
+				// 			let _val = this.ftitle.split(',')
+				// 			let _len = _val.length;
+				// 			if (_len == 1) {
+				// 				this.ftitle = this.ftitle.replace(item.label, '')
+				// 				this.fchoosearea = '请选择区'
+				// 			} else if (_len > 1) {
+				// 				this.ftitle = this.ftitle.replace(item.label + ',', '')
+				// 				this.fchoosearea = this.fchoosearea.replace(item.label + ',', '')
+				// 			}
+				// 		}
+				// 	}
+				// } else {
+				// 	if (item.checked && !this.schoosearea.includes(item.label)) {
+				// 		if (this.stitle) {
+				// 			this.stitle += ',' + item.label
+				// 		} else {
+				// 			this.stitle += item.label
+				// 		}
+				// 		this.schoosearea = this.stitle
+				// 	} else {
+				// 		if (this.stitle.includes(',' + item.label)) {
+				// 			this.stitle = this.stitle.replace(',' + item.label, '')
+				// 			this.schoosearea = this.schoosearea.replace(',' + item.label, '')
+				// 		} else {
+				// 			let _val = this.stitle.split(',')
+				// 			let _len = _val.length;
+				// 			if (_len == 1) {
+				// 				this.stitle = this.stitle.replace(item.label, '')
+				// 				this.schoosearea = '请选择区'
+				// 			} else if (_len > 1) {
+				// 				this.stitle = this.stitle.replace(item.label + ',', '')
+				// 				this.schoosearea = this.schoosearea.replace(item.label + ',', '')
+				// 			}
+				// 		}
+				// 	}
+				// }
 			},
 			changeCity(type) {
 				if (type == 0) {

+ 21 - 3
pages/goodSource/shippingDetails.vue

@@ -14,7 +14,7 @@
 					<view class="left flex">
 						<u--image :src="detailData.cargoOwnerPortrait?detailData.cargoOwnerPortrait:'../../static/images/mine/tx.png'" width='122rpx' height='122rpx' shape="circle">
 						</u--image>
-						<view class="fontsize-46 ml20">{{detailData.cargoOwnerName}}</view>
+						<view class="fontsize-46 ml20">{{detailData.cargoOwnerCall}}</view>
 					</view>
 					<view class="right">
 						<view class="flex">
@@ -90,13 +90,18 @@
 						</view>
 						<view class="in-row flex">
 							<view class="text">装车</view>
-							<view class="time">{{detailData.loadingDateStart}}~{{detailData.loadingDateEnd}}</view>
+							<view class="time" v-if='detailData.loadingDateStart=="随时"&&detailData.loadingDateEnd=="随时"'>{{detailData.loadingDateStart}}</view>
+							<view class="time" v-else>{{detailData.loadingDateStart}}~{{detailData.loadingDateEnd}}</view>
 						</view>
 					</view>
 				</view>
 				<view class="flex align-center">
 					<view class="left">车型</view>
-					<view class="right">{{carLength}} | {{carType}} | {{carWeight}}</view>
+					<view v-if='carLength!=""&&carType!="不限"&&carWeight!=""' class="right">
+						{{carLength}} | 
+						<text v-if='carType!="不限"'> {{carType}} </text>
+						| {{carWeight}}</view>
+						<view class="right" v-else>空</view>
 				</view>
 				<view class="flex mt20">
 					<view class="left">描述</view>
@@ -155,6 +160,7 @@
 				} else if (this.detailData.carLength) {
 					length = "小于" + this.detailData.carLength + '米'
 				}
+				console.log(length)
 				return length
 			},
 			carType() {
@@ -173,6 +179,7 @@
 						_val += '自卸车'
 					}
 				}
+				console.log(_val)
 				return _val
 			},
 			carWeight() {
@@ -186,6 +193,7 @@
 				} else if (this.detailData.loadWeight) {
 					weight = "小于" + this.detailData.loadWeight + '吨'
 				}
+				console.log(weight)
 				return weight
 			},
 		},
@@ -217,6 +225,15 @@
 					});
 			},
 			toMap() {
+				uni.setStorageSync('sendaddress',{
+					sendLatitude:this.detailData.sendLatitude,
+					sendLongitude:this.detailData.sendLongitude,
+					})
+				uni.setStorageSync('unsendaddress',{
+					unsendLatitude:this.detailData.unsendLatitude,
+					unsendLongitude:this.detailData.unsendLongitude,
+					})
+				uni.setStorageSync('distance',this.detailData.distance,)
 				uni.$u.route('/pages/goodSource/map', {
 					id: 1,
 				});
@@ -240,6 +257,7 @@
 				let _obj = {
 					driverCommonId: this.firstAuthentication.commonId,
 					commonId: item.commonId,
+					id:item.id,
 					cargoOwnerName: item.cargoOwnerName,
 					cargoOwner: item.cargoOwner,
 					sendPrivate: item.sendPrivate,

+ 66 - 17
pages/mine/driverCertification.vue

@@ -237,7 +237,7 @@
 				<view class="flex row noborder">
 					<view class="left-text">收款人</view>
 					<view class="flex">
-						<u--input placeholder="输入收款人姓名" inputAlign='left' border="none" v-model="item.payeeName">
+						<u--input disabled placeholder="输入收款人姓名" inputAlign='left' border="none" v-model="item.payeeName">
 						</u--input>
 					</view>
 				</view>
@@ -270,6 +270,7 @@
 
 <script>
 	import keyboard from "@/components/master-keyboard/master-keyboard.vue";
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import upload from '@/components/upload.vue';
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	var _this
@@ -389,6 +390,7 @@
 		},
 		onLoad() {
 			_this = this;
+			this.get_camera_permission()
 			console.log(this.userInfo)
 			//获取截止日期List数据
 			this.validityPeriod = this.$helper.makeValidityPeriod(0)
@@ -401,6 +403,23 @@
 			...mapState(['hasLogin', 'userInfo']),
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			delCard(type) {
 				switch (type) {
 					// 人车合影
@@ -644,6 +663,35 @@
 				if (e.value[0] == '长期') {
 					this.dataDetails.cardValidityDate = e.value[0]
 				} else {
+					if (!e.value[1] || !e.value[2]) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "日期格式错误,请重新选择!",
+						})
+						return
+					}
+					var date=new Date()
+					if(e.value[0]<date.getFullYear()){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
 					this.dataDetails.cardValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 				}
 
@@ -686,6 +734,7 @@
 			},
 			// 上传图片
 			imgTypeSelect() {
+				var _this=this
 				// console.log(val)
 					uni.chooseImage({
 						count: 1,
@@ -706,17 +755,22 @@
 														personImg: result,
 														flag:1
 													}).then(res => {
-													_this.dataDetails.numberCard = res.data.recPersonNo
-													if (res.data.recPerson) {
-														_this.dataDetails.driverName = res.data.recPerson
-														_this.dataDetails.driverCall = res.data.recPerson.substring(0,1)
-														for (let i = 0; i < _this.dataDetails
-															.hyDriverPayeeInfoList.length; i++
-															) { //收款人需与司机本人一致
-															_this.dataDetails.hyDriverPayeeInfoList[i]
-																.payeeName = res.data.recPerson
+														if(res.data){
+															_this.dataDetails.numberCard = res.data.recPersonNo
+															if (res.data.recPerson) {
+																_this.dataDetails.driverName = res.data.recPerson
+																_this.dataDetails.driverCall = res.data.recPerson.substring(0,1)
+																for (let i = 0; i < _this.dataDetails
+																	.hyDriverPayeeInfoList.length; i++
+																	) { //收款人需与司机本人一致
+																	_this.dataDetails.hyDriverPayeeInfoList[i]
+																		.payeeName = res.data.recPerson
+																}
+																console.log()
+															}
+															_this.dataDetails.driverBirthday=res.data.recPersonBrithday
 														}
-													}
+													
 
 												})
 												.catch(res => {
@@ -748,10 +802,7 @@
 													'/driverInfo/bankShibie', {
 														bankImg: result,
 													}).then(res => {
-													console.log(res)
-													_this.dataDetails.hyDriverPayeeInfoList[_this
-															.index]
-														.payeeAddressUrl = result
+													_this.dataDetails.hyDriverPayeeInfoList[_this.index].payeeAddressUrl = result
 													if (res.data.bankNo) {
 														_this.dataDetails.hyDriverPayeeInfoList[_this
 															.index].bankCard = res.data.bankNo
@@ -760,12 +811,10 @@
 														_this.dataDetails.hyDriverPayeeInfoList[_this
 															.index].bankDeposit = res.data.bankName
 													}
-
 													// 开户支行LIst
 													if (res.data.bankNameZhihang) {
 														_this.bankType[_this.index].push(res.data
 															.bankNameZhihang)
-
 													}
 													_this.$forceUpdate()
 												})

+ 175 - 43
pages/mine/driverCertificationNext.vue

@@ -2,11 +2,11 @@
 	<view class="content">
 		<view class="top-head"></view>
 		<view class="container">
-			<!-- <u-radio-group v-model="radiovalue" iconPlacement="row" class='radio-group'>
-				<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" :key="index"
+			<u-radio-group v-model="radiovalue" iconPlacement="row" class='radio-group'>
+				<u-radio :customStyle="{marginBottom: '8px',marginRight:'4px'}" v-for="(item, index) in radiolist" :key="index"
 					:label="item.name" :name="item.name" @change="radioChange">
 				</u-radio>
-			</u-radio-group> -->
+			</u-radio-group>
 			<view class="level1-title">证件信息</view>
 			<view class="content1">
 				<view class="title">上传驾驶证主页</view>
@@ -27,9 +27,9 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传驾驶证副页</view>
 				</view>
-				<view v-if="dataDetails.driverLicenseBackPage" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.driverLicenseBackPage" @click.stop="uploadImg(2)"
 					class="preview-card-img picture">
-					<view @click.stop="delCard(1)">
+					<view @click.stop="delCard(2)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 						</image>
 					</view>
@@ -37,8 +37,16 @@
 				</view>
 				<view class="flex row flex-space-between">
 					<view class="left-text">驾驶证有效期</view>
-					<view class="" @click="selectValidityPeriod(0)">
+					<!-- <view class="" @click="selectValidityPeriod(0)">
 						{{dataDetails.driverLicenseValidityDate?dataDetails.driverLicenseValidityDate:'选择有效截止日期>'}}
+					</view> -->
+					<view style='font-size:12px;' class="" @click="selectValidityPeriod(0)">
+						{{dataDetails.driverLicenseValidityStartDate?dataDetails.driverLicenseValidityStartDate:'起始时间'}}
+					</view>
+					<view>~</view>
+					<view style='font-size:12px;' class="" @click="selectValidityPeriod(9)">
+						
+						{{dataDetails.driverLicenseValidityDate?dataDetails.driverLicenseValidityDate:'结束时间'}}
 					</view>
 				</view>
 				<view class="flex row noborder">
@@ -141,9 +149,9 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传从业资格证</view>
 				</view>
-				<view v-if="dataDetails.qualificationCertificate" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.qualificationCertificate" @click.stop="uploadImg(7)"
 					class="preview-card-img picture">
-					<view @click.stop="delCard(1)">
+					<view @click.stop="delCard(7)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 						</image>
 					</view>
@@ -234,7 +242,7 @@
 					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/screctAgreement.html"
 					class="path" hover-class="navigator-hover">《隐私政策》</navigator>
 			</view>
-			<u-button type="primary" @click="submit">提交</u-button>
+			<u-button type="primary" @click="btnBClick">提交</u-button>
 			<u-toast ref="uToast"></u-toast>
 			<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 				@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true"
@@ -253,6 +261,7 @@
 
 <script>
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	var _this;
 	export default {
 		components: {},
@@ -284,11 +293,32 @@
 		onLoad(options) {
 			_this = this;
 			console.log(options)
-			this.dataDetails = JSON.parse(options.data)
-			this.dataDetails.driverType = 1
+			this.get_camera_permission()
+			if(options.data){
+				this.dataDetails = JSON.parse(options.data)
+				this.dataDetails.driverType = 1
+			}
 			this.validityPeriod = this.$helper.makeValidityPeriod()
+			console.log(this.validityPeriod)
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			delCard(type) {
 			switch (type) {
 				case 1:
@@ -330,32 +360,115 @@
 			validate(data) {},
 			confirmValidityPeriod(e) {
 				console.log('confirm', e)
-				switch (this.ValidityPeriodType) {
-					case 0:
-						this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 1:
-						this.dataDetails.drivingLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 2:
-						this.dataDetails.trailerLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 3:
-						this.dataDetails.qualificationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
-							.value[2]
-						break
-					case 4:
-						this.dataDetails.operationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[
-							2]
-						break
-					case 5:
-						this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
-							.value[2]
-						break
+				if(e.value[0]=='长期'){
+					switch (this.ValidityPeriodType) {
+						case 0:
+							this.dataDetails.driverLicenseValidityStartDate = e.value[0]
+							break
+						case 1:
+							this.dataDetails.drivingLicenseValidityDate = e.value[0] 
+							break
+						case 2:
+							this.dataDetails.trailerLicenseValidityDate = e.value[0]
+							break
+						case 3:
+							this.dataDetails.qualificationCertificateValidityDate = e.value[0] 
+							break
+						case 4:
+							this.dataDetails.operationCertificateValidityDate = e.value[0] 
+							break
+						case 5:
+							this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] 
+							break
+						case 9:
+							this.dataDetails.driverLicenseValidityDate = e.value[0]
+							break
+					}
+				}else{
+					if(e.value[0]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "年份不能为空!",
+						})
+						return
+					}else if(e.value[1]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "月份不能为空!",
+						})
+						return
+					}else if(e.value[2]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "日期不能为空!",
+						})
+						return
+					}
+					var date=new Date()
+					var text=''
+					switch (this.ValidityPeriodType) {
+						case 3:
+							text='从业资格证已过期!'
+							break
+						case 9:
+							text='驾驶证已过期!'
+							break
+					}
+					if(this.ValidityPeriodType==3||this.ValidityPeriodType==9){
+						if(e.value[0]<date.getFullYear()){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+						if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+						if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+					}
+					switch (this.ValidityPeriodType) {
+						case 0:
+							this.dataDetails.driverLicenseValidityStartDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 1:
+							this.dataDetails.drivingLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 2:
+							this.dataDetails.trailerLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 3:
+							this.dataDetails.qualificationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+								.value[2]
+							break
+						case 4:
+							this.dataDetails.operationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[
+								2]
+							break
+						case 5:
+							this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+								.value[2]
+							break
+						case 9:
+							this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+									.value[2]
+								break
+					}
 				}
 				this.isShowValidity = false
 			},
 			selectValidityPeriod(type) {
+				
 				this.ValidityPeriodType = type
 				this.isShowValidity = true
 			},
@@ -368,12 +481,12 @@
 			},
 			// 上传图片
 			imgTypeSelect(val) {
-				console.log(val)
+				// console.log(val)
 				console.log(this.uploadType)
-				if (val.name == '相册') {
+				// if (val.name == '相册') {
 					uni.chooseImage({
 						count: 1,
-						sourceType: this.$helper.chooseImage.sourceType,
+						// sourceType: this.$helper.chooseImage.sourceType,
 						success: function(res) {
 							console.log(JSON.stringify(res.tempFilePaths));
 							uploadImage("images",res.tempFilePaths[0], 'appData/',
@@ -422,12 +535,12 @@
 													'/driverInfo/api/qualificationLicenseShibie', {
 														image: result
 													}).then(res => {
-													if (res.data.qualificationCertificate) {
+													if (res.data&&res.data.qualificationCertificate) {
 														_this.dataDetails.qualificationCertificateValidityDate = res.data.qualificationCertificate
 														// _this.dataDetails.driverLicenseValidityDate =
 														// 	res.data.driverEndDate
 													}
-													if(res.data.qualificationCertificateNum){
+													if(res.data&&res.data.qualificationCertificateNum){
 														_this.dataDetails.qualificationCertificateNumber = res.data.qualificationCertificateNum
 													}
 													_this.$forceUpdate()
@@ -449,13 +562,14 @@
 						}
 					});
 
-				} else {
+				// } else {
 
-				}
+				// }
 			},
 			uploadImg(type) {
 				this.uploadType = type
-				this.isShowimgType = true
+				this.imgTypeSelect()
+				// this.isShowimgType = true
 			},
 			validate() {
 				// true 为校验不通过
@@ -583,6 +697,13 @@
 					})
 					return true
 				}
+				if (this.dataDetails.qualificationCertificateNumber.length!=19) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "从业资格证号输入错误!",
+					})
+					return true
+				}
 				// if (uni.$u.test.isEmpty(this.dataDetails.operationCertificate)) {
 				// 	this.$refs.uToast.show({
 				// 		type: 'error',
@@ -636,7 +757,12 @@
 				}
 				return false
 			},
+			btnBClick() {
+							// 此处用法为在js中调用,需要写uni.$u.throttle()
+				uni.$u.throttle(this.submit(), 500)
+			},
 			submit() {
+	
 				// 校验
 				if (this.validate()) return
 				// if(this.dataDetails.driverSex=='男'){
@@ -651,8 +777,13 @@
 					})
 					return
 				}
+				uni.showLoading({
+					mask: true,
+					title: '加载中'
+				})
 				this.$request.baseRequest('post', '/driverInfo/api/addInfo', this.dataDetails).then(res => {
 						if(res.code==200){
+							uni.hideLoading()
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "提交成功,待平台审核!",
@@ -664,11 +795,12 @@
 							})
 							// uni.$u.route('/pages/mine/index');
 						}else{
+							uni.hideLoading()
 							uni.$u.toast(res.message);
 						}
-
 					})
 					.catch(res => {
+						uni.hideLoading()
 						uni.$u.toast(res.message);
 					});
 			},
@@ -732,7 +864,7 @@
 	.radio-group {
 		display: flex;
 		align-items: center;
-		justify-content: space-between;
+		
 	}
 
 	.level1-title {

+ 64 - 22
pages/mine/editDriverCertification.vue

@@ -92,6 +92,7 @@
 
 <script>
 	import upload from '@/components/upload.vue';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	var _this
 	import {
@@ -162,6 +163,7 @@
 		onLoad() {
 			_this = this;
 			console.log(this.userInfo)
+			this.get_camera_permission()
 			//获取截止日期List数据
 			this.validityPeriod = this.$helper.makeValidityPeriod(0)
 			// this.dataDetails.driverPhone = this.userInfo.phone
@@ -173,6 +175,23 @@
 			...mapState(['hasLogin', 'userInfo']),
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			changeHandler(e) {
 				const {
 					columnIndex,
@@ -274,6 +293,28 @@
 						})
 						return
 					}
+					var date=new Date()
+					if(e.value[0]<date.getFullYear()){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "身份证已过期!",
+						})
+						return
+					}
 					this.dataDetails.cardValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 				}
 
@@ -309,18 +350,19 @@
 			},
 			uploadImg(type, index) {
 				this.uploadType = type
-				this.isShowimgType = true
+				// this.isShowimgType = true
 				this.index = index
+				this.imgTypeSelect()
 
 			},
 			// 上传图片
-			imgTypeSelect(val) {
-				console.log(val)
+			imgTypeSelect() {
+				// console.log(val)
 				console.log(this.uploadType)
-				if (val.name == '相册') {
+				// if (val.name == '相册') {
 					uni.chooseImage({
 						count: 1,
-						sourceType: this.$helper.chooseImage.sourceType,
+						// sourceType: this.$helper.chooseImage.sourceType,
 						success: function(res) {
 							console.log(JSON.stringify(res.tempFilePaths));
 							uploadImage('image',res.tempFilePaths[0], 'appData/',
@@ -369,23 +411,23 @@
 						}
 					});
 
-				} else {
-					switch (this.uploadType) {
-						case 0:
-							break
-						case 1:
-							uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=idcardface');
-							console.log('身份正面')
-							break
-						case 2:
-							uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=badge');
-							console.log('身份反面')
-							break
-						case 3:
-							break
-						case 4:
-					}
-				}
+				// } else {
+				// 	switch (this.uploadType) {
+				// 		case 0:
+				// 			break
+				// 		case 1:
+				// 			uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=idcardface');
+				// 			console.log('身份正面')
+				// 			break
+				// 		case 2:
+				// 			uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=badge');
+				// 			console.log('身份反面')
+				// 			break
+				// 		case 3:
+				// 			break
+				// 		case 4:
+				// 	}
+				// }
 
 			},
 			next(val) {

+ 181 - 40
pages/mine/editDriverCertificationNext.vue

@@ -3,7 +3,7 @@
 		<view class="top-head"></view>
 		<view class="container">
 			<u-radio-group v-model="radiovalue" iconPlacement="row" class='radio-group'>
-				<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist" :key="index"
+				<u-radio :customStyle="{marginBottom: '8px',marginRight:'4px'}" v-for="(item, index) in radiolist" :key="index"
 					:label="item.name" :name="item.name" @change="radioChange">
 				</u-radio>
 			</u-radio-group>
@@ -35,10 +35,18 @@
 					</view>
 					<image class="" :src="dataDetails.driverLicenseBackPage" mode="aspectFit"></image>
 				</view>
-				<view class="flex row">
+				<view class="flex row flex-space-between">
 					<view class="left-text">驾驶证有效期</view>
-					<view class="" @click="selectValidityPeriod(0)">
+					<!-- <view class="" @click="selectValidityPeriod(0)">
 						{{dataDetails.driverLicenseValidityDate?dataDetails.driverLicenseValidityDate:'选择有效截止日期>'}}
+					</view> -->
+					<view style='font-size:14px;' class="" @click="selectValidityPeriod(0)">
+						{{dataDetails.driverLicenseValidityStartDate?dataDetails.driverLicenseValidityStartDate:'起始时间'}}
+					</view>
+					<view>~</view>
+					<view style='font-size:14px;' class="" @click="selectValidityPeriod(9)">
+						
+						{{dataDetails.driverLicenseValidityDate?dataDetails.driverLicenseValidityDate:'结束时间'}}
 					</view>
 				</view>
 				<view class="flex row noborder">
@@ -237,13 +245,13 @@
 					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/screctAgreement.html"
 					class="path" hover-class="navigator-hover">《隐私政策》</navigator>
 			</view>
-			<u-button class="btn-color" @click="submit">提交</u-button>
+			<u-button class="btn-color" @click="btnBClick">提交</u-button>
 			<u-toast ref="uToast"></u-toast>
 			<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 				@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true"
 				@close="isShowimgType=false">
 			</u-action-sheet>
-			<u-picker :show="isShowValidity" ref="uPicker" :columns="validityPeriod" @confirm="confirmValidityPeriod"
+			<u-picker :show="isShowValidity" ref="uPicker" :columns="ValidityPeriodType==9?validityPeriod1:validityPeriod" @confirm="confirmValidityPeriod"
 				:closeOnClickOverlay='true' @close='isShowValidity=false' @cancel='isShowValidity=false'>
 			</u-picker>
 			<u-picker :show="isShowDrive" ref="uPicker" :columns="driveList" @confirm="confirmDriveType"
@@ -256,6 +264,7 @@
 
 <script>
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	var _this;
 	export default {
 		components: {},
@@ -287,15 +296,34 @@
 		},
 		onLoad(options) {
 			_this = this;
+			this.get_camera_permission()
 			this.dataDetails = JSON.parse(options.data)
 			if (this.dataDetails.driverType == 1) {
 				this.radiovalue = '挂车司机'
 			} else {
 				this.radiovalue = '非挂车司机'
 			}
-			this.validityPeriod = this.$helper.makeValidityPeriod()
+			this.validityPeriod = this.$helper.makeValidityPeriod('kong',1980)
+			this.validityPeriod1 = this.$helper.makeValidityPeriod(0,1980)
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			delCard(type) {
 				switch (type) {
 					case 1:
@@ -337,28 +365,110 @@
 			validate(data) {},
 			confirmValidityPeriod(e) {
 				console.log('confirm', e)
-				switch (this.ValidityPeriodType) {
-					case 0:
-						this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 1:
-						this.dataDetails.drivingLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 2:
-						this.dataDetails.trailerLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
-						break
-					case 3:
-						this.dataDetails.qualificationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
-							.value[2]
-						break
-					case 4:
-						this.dataDetails.operationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[
-							2]
-						break
-					case 5:
-						this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
-							.value[2]
-						break
+				if(e.value[0]=='长期'){
+					switch (this.ValidityPeriodType) {
+						case 0:
+							this.dataDetails.driverLicenseValidityStartDate = e.value[0]
+							break
+						case 1:
+							this.dataDetails.drivingLicenseValidityDate = e.value[0] 
+							break
+						case 2:
+							this.dataDetails.trailerLicenseValidityDate = e.value[0]
+							break
+						case 3:
+							this.dataDetails.qualificationCertificateValidityDate = e.value[0] 
+							break
+						case 4:
+							this.dataDetails.operationCertificateValidityDate = e.value[0] 
+							break
+						case 5:
+							this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] 
+							break
+						case 9:
+							this.dataDetails.driverLicenseValidityDate = e.value[0]
+							break
+					}
+				}else{
+					if(e.value[0]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "年份不能为空!",
+						})
+						return
+					}else if(e.value[1]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "月份不能为空!",
+						})
+						return
+					}else if(e.value[2]==''){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "日期不能为空!",
+						})
+						return
+					}
+					var date=new Date()
+					var text=''
+					switch (this.ValidityPeriodType) {
+						case 3:
+							text='从业资格证已过期!'
+							break
+						case 9:
+							text='驾驶证已过期!'
+							break
+					}
+					if(this.ValidityPeriodType==3||this.ValidityPeriodType==9){
+						if(e.value[0]<date.getFullYear()){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+						if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+						if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+							this.$refs.uToast.show({
+								type: 'error',
+								message: text,
+							})
+							return
+						}
+					}
+					switch (this.ValidityPeriodType) {
+						case 0:
+							this.dataDetails.driverLicenseValidityStartDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 1:
+							this.dataDetails.drivingLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 2:
+							this.dataDetails.trailerLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+							break
+						case 3:
+							this.dataDetails.qualificationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+								.value[2]
+							break
+						case 4:
+							this.dataDetails.operationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[
+								2]
+							break
+						case 5:
+							this.dataDetails.trailerOperationCertificateValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+								.value[2]
+							break
+						case 9:
+							this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e
+									.value[2]
+								break
+					}
 				}
 				this.isShowValidity = false
 			},
@@ -374,11 +484,11 @@
 				this.isShowDrive = false
 			},
 			// 上传图片
-			imgTypeSelect(val) {
-				if (val.name == '相册') {
+			imgTypeSelect() {
+				// if (val.name == '相册') {
 					uni.chooseImage({
 						count: 1,
-						sourceType: this.$helper.chooseImage.sourceType,
+						// sourceType: this.$helper.chooseImage.sourceType,
 						success: function(res) {
 							console.log(JSON.stringify(res.tempFilePaths));
 							uploadImage('image', res.tempFilePaths[0], 'appData/',
@@ -428,12 +538,10 @@
 													'/driverInfo/api/qualificationLicenseShibie', {
 														image: result
 													}).then(res => {
-													if (res.data.qualificationCertificate) {
+													if (res.data&&res.data.qualificationCertificate) {
 														_this.dataDetails.qualificationCertificateValidityDate = res.data.qualificationCertificate
-														// _this.dataDetails.driverLicenseValidityDate =
-														// 	res.data.driverEndDate
 													}
-													if(res.data.qualificationCertificateNum){
+													if(res.data&&res.data.qualificationCertificateNum){
 														_this.dataDetails.qualificationCertificateNumber = res.data.qualificationCertificateNum
 													}
 													_this.$forceUpdate()
@@ -454,14 +562,15 @@
 						}
 					});
 
-				} else {
+				// } else {
 
-				}
+				// }
 
 			},
 			uploadImg(type) {
 				this.uploadType = type
-				this.isShowimgType = true
+				// this.isShowimgType = true
+				this.imgTypeSelect()
 			},
 			validate() {
 				// true 为校验不通过
@@ -479,10 +588,17 @@
 					})
 					return true
 				}
+				if (uni.$u.test.isEmpty(this.dataDetails.driverLicenseValidityStartDate)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "驾驶证起始有效期不能为空!",
+					})
+					return true
+				}
 				if (uni.$u.test.isEmpty(this.dataDetails.driverLicenseValidityDate)) {
 					this.$refs.uToast.show({
 						type: 'error',
-						message: "驾驶证有效期不能为空!",
+						message: "驾驶证结束有效期不能为空!",
 					})
 					return true
 				}
@@ -529,6 +645,20 @@
 					})
 					return true
 				}
+				if (uni.$u.test.isEmpty(this.dataDetails.qualificationCertificateNumber)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "从业资格证号不能为空!",
+					})
+					return true
+				}
+				if (this.dataDetails.qualificationCertificateNumber.length!=19) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "从业资格证号输入错误!",
+					})
+					return true
+				}
 				// if (uni.$u.test.isEmpty(this.dataDetails.operationCertificate)) {
 				// 	this.$refs.uToast.show({
 				// 		type: 'error',
@@ -618,6 +748,10 @@
 				delete this.dataDetails.updateDate
 
 			},
+			btnBClick() {
+							// 此处用法为在js中调用,需要写uni.$u.throttle()
+				uni.$u.throttle(this.submit(), 500)
+			},
 			submit() {
 				if (!this.consentStatus) {
 					uni.showToast({
@@ -630,8 +764,13 @@
 				// 校验
 				if (this.validate()) return
 				this.delSubmitObj()
+				uni.showLoading({
+					mask: true,
+					title: '加载中'
+				})
 				this.$request.baseRequest('post', '/driverInfo/api/editInfo', this.dataDetails).then(res => {
 						if (res.code == 200) {
+							uni.hideLoading()
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "提交成功,待平台审核!",
@@ -642,10 +781,12 @@
 								}
 							})
 						} else {
+							uni.hideLoading()
 							uni.$u.toast(res.message);
 						}
 					})
 					.catch(res => {
+						uni.hideLoading()
 						uni.$u.toast(res.message);
 					});
 			},
@@ -710,7 +851,7 @@
 	.radio-group {
 		display: flex;
 		align-items: center;
-		justify-content: space-between;
+		// justify-content: space-between;
 	}
 
 	.level1-title {

+ 18 - 18
pages/mine/evaluate.vue

@@ -4,10 +4,12 @@
 			<view class="content-list" v-for="(item,index) in list" :key='index'>
 				<view class="top flex flex-space-between">
 					<view class="left flex">
-						<view>
-							{{item.orderNumber}}
+						<view  class="flex" style='align-items: center;'>
+							<image style='width:60rpx;height:60rpx;margin-right: 10px;border-radius:50%;'
+							 :src="item.ownerPortrait" mode=""></image>
+							{{item.ownerAnonymous=='1'?'匿名评价':item.ownerName}}
 						</view>
-						<u-icon name="arrow-right" color="#ccc" size="18"></u-icon>
+						<!-- <u-icon name="arrow-right" color="#ccc" size="18"></u-icon> -->
 					</view>
 					<view class="right gray999">
 						{{item.createDate.split(' ')[0]}}
@@ -15,23 +17,25 @@
 				</view>
 				<view class="flex align-center name-row">
 					<view class="sj-row hz-name">
-						{{item.ownerAnonymous=='1'?'匿名评价':item.ownerName}}:
+						打分:
 					</view>
 					<view class="xx">
-						<start :count="count" v-model="item.count" size="35" activeColor="#ffaa00" :size="18"
-							:allowHalf='true' :readonly='true'>
+						<start :value="item.satisfaction" :disabled="true" :is_score='true' :size="36" >
 						</start>
 					</view>
 				</view>
 				<view class="gray999 xy-row">
 					<view class='item'>
-						货主信用:{{item.ownerCredit}}星
+						信用:{{item.driverCredit}}星
 					</view>
 					<view class='item'>
-						运费支付:{{item.freightPayment}}星
+						效率:{{item.tranEfficiency}}星
 					</view>
 					<view class='item'>
-						综合满意度:{{item.comprehensiveSatisfaction}}星
+						安全:{{item.tranSafety}}星
+					</view>
+					<view class='item'>
+						服务:{{item.serviceQuality}}星
 					</view>
 				</view>
 				<!-- 
@@ -46,16 +50,11 @@
 				<view class="pl-style">
 					{{item.ownerContent}}
 				</view>
-				<view class="color2979ff flex">
-					<view @click="clickZK">展开</view>
-					<u-icon name="arrow-down" color="#2979ff" size="18" v-if="isOpen"></u-icon>
-					<u-icon name="arrow-up" color="#2979ff" size="18" v-else></u-icon>
-				</view>
-				<view v-if="isOpen" class="img-content">
+				<view class="img-content">
 					<u--image :showLoading="true" :src="item1" width="80px" height="80px" class="img"
 						v-for="(item1,index) in item.imgList"></u--image>
 				</view>
-				<u-line class="line"></u-line>
+				<u-line v-if='index!=list.length-1' class="line"></u-line>
 				<view class="gray999">
 					{{item.ownerAnonymous==1?"匿名评价":''}}
 				</view>
@@ -128,6 +127,7 @@
 						if (page.num == 1) that.list = [];
 						that.list = that.list.concat(res.data.records); //追加新数据
 						for (let i = 0; i < that.list.length; i++) {
+							that.$set(that.list[i],'isOpen',false)
 							if( that.list[i].ownerUrl){
 								that.list[i].imgList = that.list[i].ownerUrl.split(',')
 							}
@@ -143,8 +143,8 @@
 						uni.$u.toast(res.message);
 					});
 			},
-			clickZK() {
-				this.isOpen = !this.isOpen
+			clickZK(item) {
+				item.isOpen = !item.isOpen
 			},
 			getList() {
 

+ 30 - 0
pages/mine/fankui.vue

@@ -0,0 +1,30 @@
+<template>
+	<view>
+		<suggest @submit="submit"></suggest>
+	</view>
+</template>
+
+<script>
+	import suggest from "@/components/bert-suggest/suggest.vue"
+	export default {
+	    components: { suggest },
+	    methods: {
+	        submit(v) {
+				uni.showModal({
+					title: '提示',
+					content: "感谢您提供反馈意见,我们将立即联系您",
+					showCancel: false,
+					confirmText: '确定',
+					success: () => {
+						uni.navigateBack()
+					}
+				})
+	            console.log(v)
+	        }
+	    }
+	}
+</script>
+
+<style>
+
+</style>

+ 13 - 8
pages/mine/index.vue

@@ -4,16 +4,16 @@
 		<view class="top-height"></view>
 		<view class="head">
 			<view class="row1">
-				<u--image class="flex-end" :showLoading="true" src="../../static/images/mine/saoma.png" width="30px"
-					height="30px"></u--image>
+			<!-- 	<u--image class="flex-end" :showLoading="true" src="../../static/images/mine/saoma.png" width="30px"
+					height="30px"></u--image> -->
 			</view>
 			<view class="row2 flex align-center">
 				<u--image class="flex-end" :showLoading="true" :src="headUrl" width="60px" height="60px" shape='circle'>
 				</u--image>
 				<view class="right-text">
-					<view @click="toLogin" class="name">{{hasLogin? userName : '立即登录' }} 
+					<!-- <view @click="toLogin" class="name">{{hasLogin? userName : '立即登录' }} -->
 					<!-- {{hasLogin?driverSex:""}} -->
-					<!-- <view @click="toLogin" class="name">{{hasLogin? userName : '立即登录' }} {{hasLogin?driverSex:""}} -->
+					<view @click="toLogin" class="name">{{hasLogin? userName : '立即登录' }} {{hasLogin?driverSex:""}}
 					</view>
 					<view @click="toLogin" class="phone" v-if="hasLogin">{{starUserphone}}</view>
 				</view>
@@ -87,7 +87,7 @@
 			</view>
 			<view class="flex flex-space-between" @click="goDetailPage('/pages/mine/helpDescription')">
 				<view class="flex align-center">
-					<image class="img" src="@/static/images/mine/icon-help@2x.png" mode='widthFix'>
+					<image class="img" src="@/static/images/mine/icon-help@2x.png" mode='widthFix' style="top: 6rpx;">
 					</image>
 					<view>帮助说明</view>
 				</view>
@@ -160,7 +160,7 @@
 			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
 				reCommonId: this.userInfo.id,
 			}).then(res3 => {
-				if (res3.data) {
+				if (res3.data||res3.data==0) {
 					let name = 'myTip';
 					let value = res3.data
 					if (value == 0) {
@@ -236,9 +236,13 @@
 								this.statusVal = '身份认证审核中'
 							} else if (this.firstAuthentication.authenticationStatus == '未通过') {
 								this.statusVal = '身份认证未通过'
+							}  else if (this.firstAuthentication.authenticationStatus == '已驳回') {
+								this.statusVal = '已驳回'
 							} else if (this.firstAuthentication.authenticationStatus == '已过期') {
 								this.statusVal = '证件已过期'
-							} else {
+							}  else if (this.firstAuthentication.authenticationStatus == '未认证') {
+								this.statusVal = '未认证'
+							}else {
 								this.statusVal = '已认证'
 							}
 						} else {
@@ -286,7 +290,7 @@
 				if (!this.hasLogin) {
 					this.isShowAlert = true;
 				} else {
-					if (type == 1 && this.statusVal == '已认证' || type == 1 &&this.statusVal == '证件已过期' || type == 1 &&this.statusVal == '身份认证未通过') {
+					if (type == 1 && this.statusVal == '已认证' || type == 1 &&this.statusVal == '证件已过期' || type == 1 &&this.statusVal == '身份认证未通过'|| type == 1 &&this.statusVal == '已驳回') {
 						src = '/pages/mine/editDriverCertification'
 					}
 					if ((type == 2 || type == 3) && this.isFirstSH) {
@@ -416,6 +420,7 @@
 			margin-right: 10rpx;
 			width: 40rpx;
 			height: 40rpx;
+			top: 2rpx;
 		}
 
 		.flex-space-between {

+ 93 - 2
pages/mine/manageBankCards/addBankCard.vue

@@ -70,6 +70,7 @@
 <script>
 	import upload from '@/components/upload.vue';
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	var _this;
 	import {
 		mapState
@@ -102,9 +103,27 @@
 		},
 		onLoad() {
 			_this = this;
+			this.get_camera_permission()
 			this.dataDetails.driverId = this.userInfo.driverId?this.userInfo.driverId:uni.getStorageSync("firstAuthentication").id
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			delCard() {
 				_this.dataDetails.payeeAddressUrl = ''
 				_this.$forceUpdate()
@@ -229,6 +248,72 @@
 				// 	uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=bank');
 				// }
 			},
+			validate() {
+				// true 为校验不通过
+				// if (uni.$u.test.isEmpty(this.dataDetails.payeeAddressUrl)) {
+				// 	this.$refs.uToast.show({
+				// 		type: 'error',
+				// 		message: "请上传银行卡卡号页!",
+				// 	})
+				// 	return true
+				// }
+				if (uni.$u.test.isEmpty(this.dataDetails.bankCard)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "银行卡卡号不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.rangeLength(this.dataDetails.bankCard,[16,20])) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "银行卡号输入错误!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.bankDeposit)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "开户行不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.rangeLength(this.dataDetails.bankDeposit,[4,25])) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "开户行输入错误!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.bankDepositBranch)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "开户支行不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.rangeLength(this.dataDetails.bankDepositBranch,[4,25])) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "开户支行输入错误!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.cardholderName)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "持卡人姓名不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.cardholderIdNumber)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "持卡人身份证号不能为空!",
+					})
+					return true
+				}
+			},
 			//身份证正面
 			getImgUrl1(src) {
 				// console.log(src)
@@ -261,6 +346,7 @@
 				// })
 			},
 			submit() {
+				var that = this
 				// // 获取银行卡颜色
 				// let _obj = {
 				// 	"input":this.dataDetails.payeeAddressUrl
@@ -278,6 +364,7 @@
 				// 	.catch(res => {
 				// 		uni.$u.toast(res.message);
 				// 	});
+				if (that.validate()) return
 				if(this.dataDetails.payeeName != uni.getStorageSync("firstAuthentication").driverName){
 					this.$refs.uToast.show({
 						type: 'error',
@@ -303,7 +390,10 @@
 												this.$refs.uToast.show({
 													...params
 												})
-												uni.$u.route('/pages/mine/manageBankCards/index');
+												uni.navigateBack({
+													delta: 1
+												});
+												// uni.$u.route('/pages/mine/manageBankCards/index');
 								
 											} else {
 												uni.$u.toast(res.message);
@@ -332,6 +422,7 @@
 	.content {
 		padding: 20rpx;
 		padding-bottom: 50rpx;
+		height:100vh;
 	}
 
 	.content3 {
@@ -419,7 +510,7 @@
 		background: #2772FB;
 		color: white;
 		text-align: center;
-		margin-left: 5%;
+		margin: 2%;
 		padding: 30rpx 0;
 		border-radius: 50rpx;
 	}

+ 19 - 0
pages/mine/manageBankCards/editBankCard.vue

@@ -60,6 +60,7 @@
 <script>
 	import upload from '@/components/upload.vue';
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	var _this;
 	export default {
 		components: {},
@@ -76,8 +77,26 @@
 		},
 		onLoad() {
 			_this = this;
+			this.get_camera_permission()
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			manualInput() {
 				if (this.isShowManualInput) {
 					if (uni.$u.test.isEmpty(this.bankType[this.index])) {

+ 2 - 1
pages/mine/manageBankCards/index.vue

@@ -8,7 +8,8 @@
 
 			<view @click="addBankCard" class="add-bankcard flex">
 				<view class="car-text">添加银行卡</view>
-				<u-icon class="icon" name="plus-circle-fill" color="#2979ff" size="24"></u-icon>
+				<image style='width:18px;height:18px;' src="../../../static/images/mine/addcar.png" mode=""></image>
+				<!-- <u-icon class="icon" name="plus-circle-fill" color="#2979ff" size="24"></u-icon> -->
 			</view>
 
 		</view>

+ 290 - 128
pages/mine/manageVehicles/addVehicle.vue

@@ -1,6 +1,6 @@
 <!-- 管理车辆 -->
 <template>
-	<view class="content">
+	<view @click='hidden' class="content">
 		<view class="flex s-row container">
 			<view class="flex row">
 				<view class="left-text">车型</view>
@@ -14,8 +14,8 @@
 				<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 				<view class="text">上传道路运输证</view>
 			</view>
-			<view v-if="dataDetails.operationCertificate" @click.stop="uploadImg(1)" class="preview-card-img picture">
-				<view @click.stop="delCard(1)">
+			<view v-if="dataDetails.operationCertificate" @click.stop="uploadImg(8)" class="preview-card-img picture">
+				<view @click.stop="delCard(8)">
 					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 					</image>
 				</view>
@@ -39,9 +39,9 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车道路运输证</view>
 				</view>
-				<view v-if="dataDetails.trailerOperationCertificate" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerOperationCertificate" @click.stop="uploadImg(9)"
 					class="preview-card-img picture">
-					<view @click.stop="delCard(2)">
+					<view @click.stop="delCard(9)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 						</image>
 					</view>
@@ -68,7 +68,7 @@
 				<view class="text" v-if="sign == '挂车'">上传牵引车行驶证主页</view>
 				<view class="text" v-else>上传行驶证主页</view>
 			</view>
-			<view v-if="dataDetails.drivingLicenseHomePage" @click.stop="uploadImg(1)" class="preview-card-img picture">
+			<view v-if="dataDetails.drivingLicenseHomePage" @click.stop="uploadImg(3)" class="preview-card-img picture">
 				<view @click.stop="delCard(3)">
 					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 					</image>
@@ -82,7 +82,7 @@
 				<view class="text" v-if="sign == '挂车'">上传牵引车行驶证副页</view>
 				<view class="text" v-else>上传行驶证副页</view>
 			</view>
-			<view v-if="dataDetails.drivingLicenseBackPage" @click.stop="uploadImg(1)" class="preview-card-img picture">
+			<view v-if="dataDetails.drivingLicenseBackPage" @click.stop="uploadImg(4)" class="preview-card-img picture">
 				<view @click.stop="delCard(4)">
 					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 					</image>
@@ -127,8 +127,8 @@
 			</view>
 			<view class="flex row noborder">
 				<view class="left-text">车辆能源类型</view>
-				<view class="" @click="driveType">
-					{{dataDetails.energyType?dataDetails.energyType:'选择车辆能源类型>'}}
+				<view style='text-align:right;width:50%;' class="" @click="driveType">
+					{{dataDetails.energyType?dataDetails.energyType:'选择车辆能源类型>'}}>
 				</view>
 			</view>
 
@@ -139,7 +139,7 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车行驶证主页</view>
 				</view>
-				<view v-if="dataDetails.trailerLicenseHomePage" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerLicenseHomePage" @click.stop="uploadImg(5)"
 					class="preview-card-img picture">
 					<view @click.stop="delCard(5)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
@@ -154,7 +154,7 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车行驶证副页</view>
 				</view>
-				<view v-if="dataDetails.trailerLicenseBackPage" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerLicenseBackPage" @click.stop="uploadImg(6)"
 					class="preview-card-img picture">
 					<view @click.stop="delCard(6)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
@@ -163,7 +163,7 @@
 					<image class="" :src="dataDetails.trailerLicenseBackPage" mode="aspectFit"></image>
 				</view>
 			</view>
-			<view class="flex row" v-if="sign == '挂车'">
+			<view class="flex row flex-space-between" v-if="sign == '挂车'">
 				<view class="left-text">挂车行驶证档案编号</view>
 				<u--input placeholder="输入挂车行驶证档案编号" inputAlign='right' border="none"
 					v-model="dataDetails.trailerLicenseNumber">
@@ -215,38 +215,46 @@
 						:disabled="true" placeholder="输入车牌号" name="input"></input>
 				</view>
 			</view>
-			<view class="flex row">
+			<view class="flex row flex-space-between">
 				<view class="left-text">车牌颜色</view>
-				<view class="color" @click="selectNoColor">{{dataDetails.carNumberColour}}</view>
-				<view>></view>
-				<u-picker :show="carColor" :columns="colorColumns" :closeOnClickOverlay='true' @close='colorClose'
-					@cancel='colorClose' @confirm='confirmColor' @change="changeCarModel"></u-picker>
+				<view class='flex'>
+					<view class="color" @click="selectNoColor">{{dataDetails.carNumberColour}}</view>
+					<view>></view>	
+				</view>
 			</view>
 
 			<view class="flex row">
 				<view class="left-text">车辆所属车主</view>
-				<u--input placeholder="输入车主姓名" inputAlign='left' border="none" v-model="dataDetails.owner">
+				<input style='text-align:right;' placeholder="输入车主姓名" v-model="dataDetails.owner" type="text">
+				<!-- <u--input inputAlign='left' border="none"> -->
 				</u--input>
 			</view>
 			<view class="flex row" v-if="sign == '非挂车'">
 				<view class="left-text">总质量(千克)</view>
-				<u--input placeholder="输入总质量" inputAlign='left' border="none" v-model="dataDetails.carTotalWeight">
+				<u--input type='number' placeholder="输入总质量" inputAlign='right' border="none" v-model="dataDetails.carTotalWeight">
+				</u--input>
+			</view>
+			<view class="flex row" v-if="sign == '非挂车'">
+				<view class="left-text">核定载质量(千克)</view>
+				<u--input placeholder="输入核定载质量" inputAlign='left' border="none" v-model="dataDetails.carApprovedWeight">
 				</u--input>
 			</view>
 			<view class="flex row" v-if="sign == '挂车'">
 				<view class="left-text">整备质量(千克)</view>
-				<u--input placeholder="输入整备质量" inputAlign='left' border="none" v-model="dataDetails.servicingWeight">
+				<u--input type='number' placeholder="输入整备质量" inputAlign='right' border="none" v-model="dataDetails.servicingWeight">
 				</u--input>
 			</view>
 			<view class="flex row noborder" v-if="sign == '挂车'">
-				<view class="left-text">牵引车外廓尺寸(毫米)</view>
+				<view style='width:390rpx;' class="left-text">牵引车外廓尺寸(毫米)</view>
 			</view>
 			<view class="flex row noborder" v-if="sign == '非挂车'">
 				<view class="left-text">外廓尺寸(毫米)</view>
 			</view>
 			<view class="flex row noborder input-ckg">
 				<view class="input-positon">
-					<u--input class="input" placeholder="长" inputAlign='left' border="none"
+					<!-- <input type='number' class="input" placeholder="长"  border="none"
+						v-model="dataDetails.carLong"> -->
+					<u--input type='number' class="input" placeholder="长" inputAlign='left' border="none"
 						v-model="dataDetails.carLong">
 					</u--input>
 					<view class="position-right">
@@ -255,7 +263,9 @@
 				</view>
 				<view class="star">*</view>
 				<view class="input-positon">
-					<u--input placeholder="宽" inputAlign='left' border="none" v-model="dataDetails.carWidth">
+					<!-- <input type='number' class="input" placeholder="宽" border="none"
+						v-model="dataDetails.carWidth"> -->
+					<u--input type='number' placeholder="宽" inputAlign='left' border="none" v-model="dataDetails.carWidth">
 					</u--input>
 					<view class="position-right">
 						mm
@@ -263,7 +273,9 @@
 				</view>
 				<view class="star">*</view>
 				<view class="input-positon">
-					<u--input placeholder="高" inputAlign='left' border="none" v-model="dataDetails.carHeight">
+			<!-- 		<input type='number' class="input"  placeholder="高" border="none"
+						 v-model="dataDetails.carHeight"> -->
+					<u--input type='number' placeholder="高" inputAlign='left' border="none" v-model="dataDetails.carHeight">
 					</u--input>
 					<view class="position-right">
 						mm
@@ -284,34 +296,35 @@
 					<view class="left left-text">挂车车牌号</view>
 					<view class="right flex">
 						<input class="car-uumber" v-model='dataDetails.guaCarNumber'
-							@click.stop="handleShowKeyboard1(index)" :disabled="true" placeholder="输入挂车牌号"
+							@click.stop="handleShowKeyboard1(index)" :disabled="true" placeholder-class= "phsy" placeholder="输入挂车牌号"
 							name="input"></input>
+							挂
 					</view>
 				</view>
 
 				<view class="flex row">
 					<view class="left-text">车辆所属车主</view>
-					<u--input placeholder="输入车主姓名" inputAlign='left' border="none" v-model="dataDetails.guaOwner">
+					<u--input placeholder="输入车主姓名" inputAlign='right' border="none" v-model="dataDetails.guaOwner">
 					</u--input>
 				</view>
 				<view class="flex row">
 					<view class="left-text">整备质量(千克)</view>
-					<u--input placeholder="输入整备质量" inputAlign='left' border="none"
+					<u--input type='number' placeholder="输入整备质量" inputAlign='right' border="none"
 						v-model="dataDetails.guaServicingWeight">
 					</u--input>
 				</view>
 				<view class="flex row">
 					<view class="left-text">核定载质量(千克)</view>
-					<u--input placeholder="输入核定载质量" inputAlign='left' border="none"
+					<u--input type='number' placeholder="输入核定载质量" inputAlign='right' border="none"
 						v-model="dataDetails.guaCarApprovedWeight">
 					</u--input>
 				</view>
 				<view class="flex row noborder">
-					<view class="left-text">挂车外廓尺寸(毫米)</view>
+					<view style='width:390rpx;' class="left-text">挂车外廓尺寸(毫米)</view>
 				</view>
 				<view class="flex row noborder input-ckg">
 					<view class="input-positon">
-						<u--input class="input" placeholder="长" inputAlign='left' border="none"
+						<u--input type='number' class="input" placeholder="长" inputAlign='left' border="none"
 							v-model="dataDetails.guaCarLong">
 						</u--input>
 						<view class="position-right">
@@ -320,7 +333,7 @@
 					</view>
 					<view class="star">*</view>
 					<view class="input-positon">
-						<u--input placeholder="宽" inputAlign='left' border="none" v-model="dataDetails.guaCarWidth">
+						<u--input type='number' placeholder="宽" inputAlign='left' border="none" v-model="dataDetails.guaCarWidth">
 						</u--input>
 						<view class="position-right">
 							mm
@@ -328,7 +341,7 @@
 					</view>
 					<view class="star">*</view>
 					<view class="input-positon">
-						<u--input placeholder="高" inputAlign='left' border="none" v-model="dataDetails.guaCarHeight">
+						<u--input type='number' placeholder="高" inputAlign='left' border="none" v-model="dataDetails.guaCarHeight">
 						</u--input>
 						<view class="position-right">
 							mm
@@ -340,21 +353,23 @@
 					<u-upload class="uview-upload" :fileList="fileList2" @afterRead="afterRead1($event,'2')"
 						@delete="deletePic" name="2" multiple :maxCount="1"></u-upload>
 				</view>
-				<!-- <view class="" @click="asd">
-					测试
-				</view> -->
 			</view>
 			<!-- <view class="level1-title">证件信息</view> -->
 		</view>
-		<view class="submit-btn" @click="submit">提交</view>
+		<view class='submit-btn-wrap'>
+			<view class="submit-btn" @click="submit">提交</view>
+		</view>
+		
 		<master-keyboard ref="keyboard" keyboardtype="car" :show="keyShow" :randomNumber="true" :newCar="false"
 			:defaultValue="carNumber" @keyboardClick="handleClick"></master-keyboard>
-		<master-keyboard ref="keyboard1" keyboardtype="car" :show="keyShow1" :randomNumber="true" :newCar="false"
+		<master-keyboard ref="keyboard1" :guastatus='true' keyboardtype="car" :show="keyShow1" :randomNumber="true" :newCar="false"
 			:defaultValue="carNumber1" @keyboardClick="handleClick1"></master-keyboard>
 		<u-toast ref="uToast"></u-toast>
 		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
 		</u-action-sheet>
+		<u-picker :show="carColor" :columns="colorColumns" :closeOnClickOverlay='true' @close='colorClose'
+			@cancel='colorClose' @confirm='confirmColor' ></u-picker>
 		<u-picker :show="isShowValidity" ref="uPicker" :columns="validityPeriod" @confirm="confirmValidityPeriod"
 			:closeOnClickOverlay='true' @close='isShowValidity=false' @cancel='isShowValidity=false'>
 		</u-picker>
@@ -366,6 +381,7 @@
 
 <script>
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import keyboard from "@/components/master-keyboard/master-keyboard.vue";
 	var _this;
 	import {
@@ -388,6 +404,7 @@
 					useNature: "营业特种车",
 					guaUseNature: "营运挂车",
 					energyType:"汽油",
+					owner:''
 					// carTotalWeight: '',
 					// carApprovedWeight: '',
 					// carLong: '',
@@ -428,13 +445,26 @@
 		onLoad(options) {
 			_this = this;
 			this.dataDetails.commonId = this.userInfo.id
+			this.get_camera_permission()
 			this.validityPeriod = this.$helper.makeValidityPeriod()
 		},
 		methods: {
-			asd() {
-				this.$request.baseRequest('get', '/orderInfo/selectRouterPath').then(res => {
-					if (res.code == '200') {}
-				})
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
 			},
 			driveType(){
 				this.isShowCarType = true
@@ -443,6 +473,9 @@
 				this.dataDetails.energyType = e.value[0]
 				this.isShowCarType = false
 			},
+			hidden(){
+				this.$refs.keyboard.open(false)
+			},
 			//挂车牌号弹出键盘
 			handleShowKeyboard1(index) {
 				if (this.dataDetails.guaCarNumber == '') {
@@ -526,6 +559,8 @@
 													if (res.data) {
 														_this.dataDetails.carNumber = res.data
 															.carNum //车牌号
+														_this.dataDetails.vehicleType = res.data.vehicleType
+														_this.dataDetails.carCode =res.data.carCode
 														_this.dataDetails.owner = res.data
 															.owner //车辆所有人
 														_this.$forceUpdate()
@@ -603,20 +638,20 @@
 														image: result,
 														flag: 1
 													}).then(res => {
-													if (res.data.issuingAuthority) { //行驶证发证机关
-														_this.dataDetails.guaLssuingAuthority = res
-															.data.issuingAuthority
-													}
-													if (res.data.licenseRegistrationDate) { //行驶证注册日期
-														_this.dataDetails
-															.trailerLicenseRegistrationDate = res.data
-															.licenseRegistrationDate
-													}
-													if (res.data.licenseIssueDate) { //行驶证发证日期
-														_this.dataDetails.trailerLicenseIssueDate = res
-															.data.licenseIssueDate
-													}
 													if (res.data) {
+														if (res.data.issuingAuthority) { //行驶证发证机关
+															_this.dataDetails.guaLssuingAuthority = res
+																.data.issuingAuthority
+														}
+														if (res.data.licenseRegistrationDate) { //行驶证注册日期
+															_this.dataDetails
+																.trailerLicenseRegistrationDate = res.data
+																.licenseRegistrationDate
+														}
+														if (res.data.licenseIssueDate) { //行驶证发证日期
+															_this.dataDetails.trailerLicenseIssueDate = res
+																.data.licenseIssueDate
+														}
 														_this.dataDetails.guaCarNumber = res.data
 															.carNum //车牌号
 														_this.dataDetails.guaOwner = res.data
@@ -723,6 +758,64 @@
 			},
 			confirmValidityPeriod(e) {
 				console.log('confirm', e)
+				if(e.value[0]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "年份不能为空!",
+					})
+					return
+				}else if(e.value[1]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "月份不能为空!",
+					})
+					return
+				}else if(e.value[2]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "日期不能为空!",
+					})
+					return
+				}
+				var date=new Date()
+				var text=''
+				switch (this.ValidityPeriodType) {
+					case 4:
+						text='道路运输证已过期!'
+						break
+					case 5:
+						text='挂车道路运输证已过期!'
+						break
+					case 1:
+						text='行驶证已过期!'
+						break
+					case 2:
+						text='挂车行驶证已过期!'
+						break
+				}
+				if(this.ValidityPeriodType==1||this.ValidityPeriodType==2||this.ValidityPeriodType==4||this.ValidityPeriodType==5){
+					if(e.value[0]<date.getFullYear()){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+				}
 				switch (this.ValidityPeriodType) {
 					case 0:
 						this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
@@ -925,55 +1018,24 @@
 				});
 			},
 			validate() {
-				// true 为校验不通过
-				if (uni.$u.test.isEmpty(this.dataDetails.carNumber)) {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "车牌号不能为空!",
-					})
-					return true
-				}
-				if (uni.$u.test.isEmpty(this.dataDetails.carTotalWeight) && this.sign == '非挂车') {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "总质量不能为空!",
-					})
-					return true
-				}
-				
-				if (uni.$u.test.isEmpty(this.dataDetails.servicingWeight) && this.sign == '挂车') {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "整备质量不能为空!",
-					})
-					return true
-				}
-				if (uni.$u.test.isEmpty(this.dataDetails.owner)) {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "车辆所属车主不能为空!",
-					})
-					return true
-				}
-				if (uni.$u.test.isEmpty(this.dataDetails.carLong) && uni.$u.test.isEmpty(this.dataDetails.caWidth) && uni
-					.$u.test.isEmpty(this.dataDetails.carHeight)) {
+				if (uni.$u.test.isEmpty(this.dataDetails.operationCertificate)) {
 					this.$refs.uToast.show({
 						type: 'error',
-						message: "外廓尺寸不能为空!",
+						message: "道路运输证不能为空!",
 					})
 					return true
 				}
-				if (uni.$u.test.isEmpty(this.dataDetails.operationCertificate)) {
+				if (uni.$u.test.isEmpty(this.dataDetails.operationCertificateNumber)) {
 					this.$refs.uToast.show({
 						type: 'error',
-						message: "道路运输证不能为空!",
+						message: "道路运输证号不能为空!",
 					})
 					return true
 				}
-				if (uni.$u.test.isEmpty(this.dataDetails.operationCertificateNumber)) {
+				if (this.dataDetails.operationCertificateNumber.length!=12) {
 					this.$refs.uToast.show({
 						type: 'error',
-						message: "道路运输证号不能为空!",
+						message: "道路运输证号输入错误!",
 					})
 					return true
 				}
@@ -1063,7 +1125,6 @@
 					})
 					return true
 				}
-
 				if (this.sign == '挂车') {
 					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseHomePage)) {
 						this.$refs.uToast.show({
@@ -1086,78 +1147,156 @@
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.guaCarNumber)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseRegistrationDate)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车车牌号不能为空!",
+							message: "挂车行驶证注册日期不能为空!",
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.guaOwner)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseIssueDate)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "车辆所属车主不能为空!",
+							message: "挂车行驶证发证日期不能为空!!",
 						})
 						return true
-					}    
-					if (uni.$u.test.isEmpty(this.dataDetails.guaServicingWeight)) {
+					}
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseValidityDate)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车整备质量不能为空!",
+							message: "挂车行驶证有效期不能为空!",
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.guaCarApprovedWeight)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.guaLssuingAuthority)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车核定载质量不能为空!",
+							message: "挂车行驶证发证机关不能为空!",
 						})
 						return true
-					} 
-					if (uni.$u.test.isEmpty(this.dataDetails.guaCarLong) || uni.$u.test.isEmpty(this.dataDetails.guaCarWidth) || uni.$u.test.isEmpty(this.dataDetails.guaCarHeight)) {
+					}
+				}
+				
+				// true 为校验不通过
+				if (uni.$u.test.isEmpty(this.dataDetails.carNumber)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "车牌号不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.owner)) {
+					console.log(this.dataDetails.owner)
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "车辆所属车主不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.carTotalWeight) && this.sign == '非挂车') {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "总质量不能为空!",
+					})
+					return true
+				}
+				if (uni.$u.test.isEmpty(this.dataDetails.carApprovedWeight) && this.sign == '非挂车') {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "核定载质量不能为空!",
+					})
+					return true
+				}
+				
+				if (uni.$u.test.isEmpty(this.dataDetails.servicingWeight) && this.sign == '挂车') {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "整备质量不能为空!",
+					})
+					return true
+				}
+				
+				if (uni.$u.test.isEmpty(this.dataDetails.carLong) || uni.$u.test.isEmpty(this.dataDetails.carWidth) || uni
+					.$u.test.isEmpty(this.dataDetails.carHeight)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "外廓尺寸不能为空!",
+					})
+					return true
+				}
+				
+				
+				
+				
+				if (this.sign == '挂车') {
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseHomePage)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车外廓尺寸不能为空!",
+							message: "挂车行驶证主页不能为空!",
 						})
 						return true
 					}
-					// if (this.dataDetails.fileList2.length == 0) {
-					// 	this.$refs.uToast.show({
-					// 		type: 'error',
-					// 		message: "人和挂车合影不能为空!",
-					// 	})
-					// 	return true
-					// }
-					
-					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseRegistrationDate)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseBackPage)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车行驶证注册日期不能为空!",
+							message: "挂车行驶证副页不能为空!",
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseIssueDate)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseNumber)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车行驶证发证日期不能为空!!",
+							message: "挂车行驶证档案编号不能为空!",
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.trailerLicenseValidityDate)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.guaCarNumber)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车行驶证有效期不能为空!",
+							message: "挂车车牌号不能为空!",
 						})
 						return true
 					}
-					if (uni.$u.test.isEmpty(this.dataDetails.guaLssuingAuthority)) {
+					if (uni.$u.test.isEmpty(this.dataDetails.guaOwner)) {
 						this.$refs.uToast.show({
 							type: 'error',
-							message: "挂车行驶证发证机关不能为空!",
+							message: "车辆所属车主不能为空!",
+						})
+						return true
+					}    
+					if (uni.$u.test.isEmpty(this.dataDetails.guaServicingWeight)) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "挂车整备质量不能为空!",
 						})
 						return true
 					}
+					if (uni.$u.test.isEmpty(this.dataDetails.guaCarApprovedWeight)) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "挂车核定载质量不能为空!",
+						})
+						return true
+					} 
+					if (uni.$u.test.isEmpty(this.dataDetails.guaCarLong) || uni.$u.test.isEmpty(this.dataDetails.guaCarWidth) || uni.$u.test.isEmpty(this.dataDetails.guaCarHeight)) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "挂车外廓尺寸不能为空!",
+						})
+						return true
+					}
+					// if (this.dataDetails.fileList2.length == 0) {
+					// 	this.$refs.uToast.show({
+					// 		type: 'error',
+					// 		message: "人和挂车合影不能为空!",
+					// 	})
+					// 	return true
+					// }
+					
+					
 				}
+
+				
 				return false
 			},
 			submit() {
@@ -1170,16 +1309,19 @@
 				if(this.dataDetails.carCategory == "非挂车"){
 					delete this.dataDetails.guaUseNature
 				}
+				if(this.dataDetails.carCategory == "挂车"){
+					this.dataDetails.guaCarNumber=this.dataDetails.guaCarNumber+'挂'
+				}
 				this.$request.baseRequest('post', '/driverCarInfo/api/addInfo', this.dataDetails).then(res => {
 						if (res.code == '200') {
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "提交成功!",
 								complete() {
-									// uni.navigateBack({
-									// 	delta: 1
-									// });
-									uni.$u.route('/pages/mine/manageVehicles/index');
+									uni.navigateBack({
+										delta: 1
+									});
+									// uni.$u.route('/pages/mine/manageVehicles/index');
 								}
 							})
 							// this.$refs.uToast.show({
@@ -1187,12 +1329,15 @@
 							// })
 							// uni.$u.route('/pages/mine/manageVehicles/index');
 
-						} else {
+						} else if (res.code == '400'){
+							uni.$u.toast('您输入的内容有问题,请检查后重新提交');
+						}else{
 							uni.$u.toast(res.message);
 						}
 
 					})
 					.catch(res => {
+						console.log(res)
 						uni.$u.toast(res.message);
 					});
 
@@ -1362,15 +1507,22 @@
 		align-items: center;
 		color: #6A7282;
 	}
-
-	.submit-btn {
+	.submit-btn-wrap{
+		
 		position: fixed;
+		z-index:1000;
+		bottom:0;left:0;
+		width:100%;
+		padding:40rpx 0;
+		background:#fff;
+	}
+	.submit-btn {
 		bottom: 40rpx;
 		width: 90%;
 		background: #2772FB;
 		color: white;
 		text-align: center;
-		margin-left: 5%;
+		margin:0 auto;
 		padding: 30rpx 0;
 		border-radius: 50rpx;
 	}
@@ -1383,4 +1535,14 @@
 		height: 80rpx;
 		z-index: 9;
 	}
+	/deep/.uni-input-input:disabled{
+		background:transparent;
+	}
+	.phsy {
+			// font-size: 20px !important;
+			color: #999 !important
+		}
+	.car-uumber{
+		text-align:right;
+	}
 </style>

+ 169 - 44
pages/mine/manageVehicles/editVehicle.vue

@@ -1,6 +1,6 @@
 <!-- 管理车辆 -->
 <template>
-	<view class="content">
+	<view @click='hidden' class="content">
 		<view class="flex s-row container">
 			<view class="flex row">
 				<view class="left-text">车型</view>
@@ -14,8 +14,8 @@
 				<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 				<view class="text">上传道路运输证</view>
 			</view>
-			<view v-if="dataDetails.operationCertificate" @click.stop="uploadImg(1)" class="preview-card-img picture">
-				<view @click.stop="delCard(1)">
+			<view v-if="dataDetails.operationCertificate" @click.stop="uploadImg(8)" class="preview-card-img picture">
+				<view @click.stop="delCard(8)">
 					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 					</image>
 				</view>
@@ -39,9 +39,9 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车道路运输证</view>
 				</view>
-				<view v-if="dataDetails.trailerOperationCertificate" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerOperationCertificate" @click.stop="uploadImg(9)"
 					class="preview-card-img picture">
-					<view @click.stop="delCard(2)">
+					<view @click.stop="delCard(9)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 						</image>
 					</view>
@@ -82,7 +82,7 @@
 				<view class="text" v-if="sign == '挂车'">上传牵引车行驶证副页</view>
 				<view class="text" v-else>上传行驶证副页</view>
 			</view>
-			<view v-if="dataDetails.drivingLicenseBackPage" @click.stop="uploadImg(1)" class="preview-card-img picture">
+			<view v-if="dataDetails.drivingLicenseBackPage" @click.stop="uploadImg(4)" class="preview-card-img picture">
 				<view @click.stop="delCard(4)">
 					<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 					</image>
@@ -125,7 +125,7 @@
 				<u--input placeholder="输入发证机关" inputAlign='right' border="none" maxlength="25" v-model="dataDetails.lssuingAuthority">
 				</u--input>
 			</view>
-			<view class="flex row noborder">
+			<view class="flex row noborder flex-space-between">
 				<view class="left-text">车辆能源类型</view>
 				<view class="" @click="driveType">
 					{{dataDetails.energyType?dataDetails.energyType:'选择车辆能源类型>'}}
@@ -139,7 +139,7 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车行驶证主页</view>
 				</view>
-				<view v-if="dataDetails.trailerLicenseHomePage" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerLicenseHomePage" @click.stop="uploadImg(5)"
 					class="preview-card-img picture">
 					<view @click.stop="delCard(5)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
@@ -154,7 +154,7 @@
 					<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 					<view class="text">上传挂车行驶证副页</view>
 				</view>
-				<view v-if="dataDetails.trailerLicenseBackPage" @click.stop="uploadImg(1)"
+				<view v-if="dataDetails.trailerLicenseBackPage" @click.stop="uploadImg(6)"
 					class="preview-card-img picture">
 					<view @click.stop="delCard(6)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
@@ -215,31 +215,38 @@
 						:disabled="true" placeholder="输入车牌号" name="input"></input>
 				</view>
 			</view>
-			<view class="flex row">
+			<view class="flex row flex-space-between">
 				<view class="left-text">车牌颜色</view>
-				<view class="color" @click="selectNoColor">{{dataDetails.carNumberColour}}</view>
-				<view>></view>
-				<u-picker :show="carColor" :columns="colorColumns" :closeOnClickOverlay='true' @close='colorClose'
-					@cancel='colorClose' @confirm='confirmColor' @change="changeCarModel"></u-picker>
+				<view class='flex'>
+					<view class="color" @click="selectNoColor">{{dataDetails.carNumberColour}}</view>
+					<view>></view>
+				</view>
+				
+				
 			</view>
 
 			<view class="flex row">
 				<view class="left-text">车辆所属车主</view>
-				<u--input placeholder="输入车主姓名" inputAlign='left' border="none" v-model="dataDetails.owner">
+				<u--input placeholder="输入车主姓名" inputAlign='right' border="none" v-model="dataDetails.owner">
 				</u--input>
 			</view>
 			<view class="flex row" v-if="sign == '非挂车'">
 				<view class="left-text">总质量(千克)</view>
-				<u--input placeholder="输入总质量" inputAlign='left' border="none" v-model="dataDetails.carTotalWeight">
+				<u--input placeholder="输入总质量" inputAlign='right' border="none" v-model="dataDetails.carTotalWeight">
+				</u--input>
+			</view>
+			<view class="flex row" v-if="sign == '非挂车'">
+				<view class="left-text">核定载质量(千克)</view>
+				<u--input placeholder="输入核定载质量" inputAlign='left' border="none" v-model="dataDetails.carApprovedWeight">
 				</u--input>
 			</view>
 			<view class="flex row" v-if="sign == '挂车'">
 				<view class="left-text">整备质量(千克)</view>
-				<u--input placeholder="输入整备质量" inputAlign='left' border="none" v-model="dataDetails.servicingWeight">
+				<u--input placeholder="输入整备质量" inputAlign='right' border="none" v-model="dataDetails.servicingWeight">
 				</u--input>
 			</view>
 			<view class="flex row noborder" v-if="sign == '挂车'">
-				<view class="left-text">牵引车外廓尺寸(毫米)</view>
+				<view style='width:390rpx;' class="left-text">牵引车外廓尺寸(毫米)</view>
 			</view>
 			<view class="flex row noborder" v-if="sign == '非挂车'">
 				<view class="left-text">外廓尺寸(毫米)</view>
@@ -285,31 +292,32 @@
 				<view class="flex row">
 					<view class="left left-text">挂车车牌号</view>
 					<view class="right flex">
-						<input class="car-uumber" v-model='dataDetails.guaCarNumber'
+						<input class="car-uumber" maxlength="6" v-model='dataDetails.guaCarNumber'
 							@click.stop="handleShowKeyboard1(index)" :disabled="true" placeholder="输入挂车牌号"
 							name="input"></input>
+							挂
 					</view>
 				</view>
 
 				<view class="flex row">
 					<view class="left-text">车辆所属车主</view>
-					<u--input placeholder="输入车主姓名" inputAlign='left' border="none" v-model="dataDetails.guaOwner">
+					<u--input placeholder="输入车主姓名" inputAlign='right' border="none" v-model="dataDetails.guaOwner">
 					</u--input>
 				</view>
 				<view class="flex row">
 					<view class="left-text">整备质量(千克)</view>
-					<u--input placeholder="输入总质量" inputAlign='left' border="none"
+					<u--input placeholder="输入总质量" inputAlign='right' border="none"
 						v-model="dataDetails.guaServicingWeight">
 					</u--input>
 				</view>
 				<view class="flex row">
 					<view class="left-text">核定载质量(千克)</view>
-					<u--input placeholder="输入核定载质量" inputAlign='left' border="none"
+					<u--input placeholder="输入核定载质量" inputAlign='right' border="none"
 						v-model="dataDetails.guaCarApprovedWeight">
 					</u--input>
 				</view>
 				<view class="flex row noborder">
-					<view class="left-text">挂车外廓尺寸(毫米)</view>
+					<view style='width:390rpx;' class="left-text">挂车外廓尺寸(毫米)</view>
 				</view>
 				<view class="flex row noborder input-ckg">
 					<view class="input-positon">
@@ -345,15 +353,19 @@
 			</view>
 			<!-- <view class="level1-title">证件信息</view> -->
 		</view>
-		<view class="submit-btn" @click="submit">提交</view>
+		<view class='submit-btn-wrap'>
+			<view class="submit-btn" @click="submit">提交</view>
+		</view>
 		<master-keyboard ref="keyboard" keyboardtype="car" :show="keyShow" :randomNumber="true" :newCar="false"
 			:defaultValue="carNumber" @keyboardClick="handleClick"></master-keyboard>
-		<master-keyboard ref="keyboard1" keyboardtype="car" :show="keyShow1" :randomNumber="true" :newCar="false"
+		<master-keyboard ref="keyboard1" :guastatus='true' keyboardtype="car" :show="keyShow1" :randomNumber="true" :newCar="false"
 			:defaultValue="carNumber1" @keyboardClick="handleClick1"></master-keyboard>
 		<u-toast ref="uToast"></u-toast>
 		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 			@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="isShowimgType=false">
 		</u-action-sheet>
+		<u-picker :show="carColor" :columns="colorColumns" :closeOnClickOverlay='true' @close='colorClose'
+			@cancel='colorClose' @confirm='confirmColor' ></u-picker>
 		<u-picker :show="isShowValidity" ref="uPicker" :columns="validityPeriod" @confirm="confirmValidityPeriod"
 			:closeOnClickOverlay='true' @close='isShowValidity=false' @cancel='isShowValidity=false'>
 		</u-picker>
@@ -364,6 +376,7 @@
 </template>
 
 <script>
+	import permision from "@/js_sdk/wa-permission/permission.js";
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	import keyboard from "@/components/master-keyboard/master-keyboard.vue";
 	var _this;
@@ -426,6 +439,9 @@
 		onLoad(options) {
 			_this = this;
 			console.log(options)
+			if(options.guaCarNumber){
+				options.guaCarNumber=options.guaCarNumber.substring(0,6);
+			}
 			this.dataDetails = options
 			this.sign = options.carCategory
 			// if (this.dataDetails.carType.indexOf("挂车") != -1) {
@@ -439,12 +455,33 @@
 			this.fileList2 = [{
 				url: options.guaAddressUrl
 			}]
+			this.get_camera_permission()
 			this.validityPeriod = this.$helper.makeValidityPeriod()
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			driveType() {
 				this.isShowCarType = true
 			},
+			hidden(){
+				this.$refs.keyboard.open(false)
+			},
 			confirmCarType(e) {
 				this.dataDetails.energyType = e.value[0]
 				this.isShowCarType = false
@@ -612,20 +649,20 @@
 														image: result,
 														flag: 1
 													}).then(res => {
-													if (res.data.issuingAuthority) { //行驶证发证机关
-														_this.dataDetails.guaLssuingAuthority = res
-															.data.issuingAuthority
-													}
-													if (res.data.licenseRegistrationDate) { //行驶证注册日期
-														_this.dataDetails
-															.trailerLicenseRegistrationDate = res.data
-															.licenseRegistrationDate
-													}
-													if (res.data.licenseIssueDate) { //行驶证发证日期
-														_this.dataDetails.trailerLicenseIssueDate = res
-															.data.licenseIssueDate
-													}
 													if (res.data) {
+														if (res.data.issuingAuthority) { //行驶证发证机关
+															_this.dataDetails.guaLssuingAuthority = res
+																.data.issuingAuthority
+														}
+														if (res.data.licenseRegistrationDate) { //行驶证注册日期
+															_this.dataDetails
+																.trailerLicenseRegistrationDate = res.data
+																.licenseRegistrationDate
+														}
+														if (res.data.licenseIssueDate) { //行驶证发证日期
+															_this.dataDetails.trailerLicenseIssueDate = res
+																.data.licenseIssueDate
+														}
 														_this.dataDetails.guaCarNumber = res.data
 															.carNum //车牌号
 														_this.dataDetails.guaOwner = res.data
@@ -735,6 +772,64 @@
 			},
 			confirmValidityPeriod(e) {
 				console.log('confirm', e)
+				if(e.value[0]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "年份不能为空!",
+					})
+					return
+				}else if(e.value[1]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "月份不能为空!",
+					})
+					return
+				}else if(e.value[2]==''){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "日期不能为空!",
+					})
+					return
+				}
+				var date=new Date()
+				var text=''
+				switch (this.ValidityPeriodType) {
+					case 4:
+						text='道路运输证已过期!'
+						break
+					case 5:
+						text='挂车道路运输证已过期!'
+						break
+					case 1:
+						text='行驶证已过期!'
+						break
+					case 2:
+						text='挂车行驶证已过期!'
+						break
+				}
+				if(this.ValidityPeriodType==1||this.ValidityPeriodType==2||this.ValidityPeriodType==4||this.ValidityPeriodType==5){
+					if(e.value[0]<date.getFullYear()){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+					if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
+						this.$refs.uToast.show({
+							type: 'error',
+							message: text,
+						})
+						return
+					}
+				}
 				switch (this.ValidityPeriodType) {
 					case 0:
 						this.dataDetails.driverLicenseValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
@@ -947,6 +1042,13 @@
 					})
 					return true
 				}
+				if (uni.$u.test.isEmpty(this.dataDetails.carApprovedWeight) && this.sign == '非挂车') {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "核定载质量不能为空!",
+					})
+					return true
+				}
 				
 				if (uni.$u.test.isEmpty(this.dataDetails.servicingWeight) && this.sign == '挂车') {
 					this.$refs.uToast.show({
@@ -984,6 +1086,13 @@
 					})
 					return true
 				}
+				if (this.dataDetails.operationCertificateNumber.length!=12) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "道路运输证号输入错误!",
+					})
+					return true
+				}
 				if (uni.$u.test.isEmpty(this.dataDetails.operationCertificateValidityDate)) {
 					this.$refs.uToast.show({
 						type: 'error',
@@ -1169,16 +1278,19 @@
 			},
 			submit() {
 					if (this.validate()) return
+					if(this.dataDetails.carCategory == "挂车"){
+						this.dataDetails.guaCarNumber=this.dataDetails.guaCarNumber+'挂'
+					}
 				this.$request.baseRequest('post', '/driverCarInfo/api/editInfo', this.dataDetails).then(res => {
 						if (res.code == '200') {
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "提交成功!",
 								complete() {
-									// uni.navigateBack({
-									// 	delta: 1
-									// });
-									uni.$u.route('/pages/mine/manageVehicles/index');
+									uni.navigateBack({
+										delta: 1
+									});
+									// uni.$u.route('/pages/mine/manageVehicles/index');
 								}
 							})
 							// this.$refs.uToast.show({
@@ -1362,14 +1474,21 @@
 		color: #6A7282;
 	}
 
-	.submit-btn {
+	.submit-btn-wrap{
 		position: fixed;
+		bottom:0;left:0;
+		width:100%;
+		padding:40rpx 0;
+		background:#fff;
+		z-index:1000;
+	}
+	.submit-btn {
 		bottom: 40rpx;
 		width: 90%;
 		background: #2772FB;
 		color: white;
 		text-align: center;
-		margin-left: 5%;
+		margin:0 auto;
 		padding: 30rpx 0;
 		border-radius: 50rpx;
 	}
@@ -1382,4 +1501,10 @@
 		height: 80rpx;
 		z-index: 9;
 	}
+	/deep/.uni-input-input:disabled{
+		background:#fff;
+	}
+	.car-uumber{
+		text-align:right;
+	}
 </style>

+ 26 - 6
pages/mine/manageVehicles/index.vue

@@ -1,6 +1,8 @@
 <!-- 管理车辆 -->
 <template>
 	<view class="content">
+		<u-navbar title="管理车辆" :placeholder='true' @leftClick="leftClick">
+			</u-navbar>
 		<view class="top-title flex flex-space-between">
 			<view class="left flex">
 				<view class="text1">我的机动车</view>
@@ -9,13 +11,14 @@
 
 			<view @click="addCar" class="add-car flex">
 				<view class="car-text">添加车辆</view>
-				<u-icon class="icon" name="plus-circle-fill" color="#2979ff" size="24"></u-icon>
+				<image style='width:18px;height:18px;' src="../../../static/images/mine/addcar.png" mode=""></image>
+			<!-- 	<u-icon class="icon" name="plus-circle-fill" color="#2979ff" size="24"></u-icon> -->
 			</view>
 
 		</view>
 		<view class="car-list" v-for="(item,index) in carList" :key="index">
 			<view class="left-img">
-				<image style="width: 100%;height:100%; background-color: #eeeeee;border-radius:10rpx;" mode="widthFix"
+				<image style="width: 125rpx;height:125rpx;box-shadow: 1px 1px 10px #ccc; background-color: #eeeeee;border-radius:10rpx;" mode="aspectFill"
 					:src="item.addressUrl"></image>
 			</view>
 			<view class="car-list-item">
@@ -23,9 +26,8 @@
 					{{item.carNumber}}
 				</view>
 				<view class="row2">
-					<u-icon name="edit-pen" size="26" style="margin-right: 20rpx;" @click="edit(item)"
-						v-if="item.status!='审核中'"></u-icon>
-					<u-icon name="trash" size="26" @click="del(item,index)"></u-icon>
+					<image v-if="item.status!='审核中'" style='width:15px;height:15px;margin-right: 20rpx;' @click="edit(item)" src="../../../static/images/mine/edit.png" mode=""></image>
+					<image style='width:16px;height:16px;' @click="del(item,index)" src="../../../static/images/mine/sanchu.png" mode=""></image>
 				</view>
 				<view class="row3">
 					<view class="text">车辆状态:</view>
@@ -35,6 +37,12 @@
 					</u-tag>
 					<u-tag v-if="item.status=='审核中'" :text="item.status" type="warning" plain plainFill size="mini">
 					</u-tag>
+					<u-tag v-if="item.status=='已过期'" :text="item.status" type="error" plain plainFill size="mini">
+					</u-tag>
+					<u-tag v-if="item.status=='已注销'" :text="item.status" type="error" plain plainFill size="mini">
+					</u-tag>
+					<!-- <u-tag v-if="item.drivingOverdueFlag=='1'||item.trailerOverdueFlag=='1'||item.operationOverdueFlag=='1'||item.trailerOperationOverdueFlag=='1'" text="已过期" type="error" plain plainFill size="mini">
+					</u-tag> -->
 				</view>
 			</view>
 		</view>
@@ -62,6 +70,15 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication']),
 		},
+		onPullDownRefresh () {
+		console.log('触发了下拉刷新')
+		var that=this
+			setTimeout(()=>{
+				that.init()
+						//手动关闭刷新
+			uni.stopPullDownRefresh()
+		},2000)
+		},
 		onLoad(options) {
 			console.log(this.firstAuthentication.id)
 			_this = this;
@@ -72,6 +89,9 @@
 			console.log(options)
 		},
 		methods: {
+			leftClick(){
+				uni.switchTab({url:'/pages/mine/index'});
+			},
 			confirmClick() {
 				this.isShowAlert = false
 				this.$request.baseRequest('post', '/driverCarInfo/api/deleteDriverCar', {
@@ -167,7 +187,7 @@
 		font-weight: 700;
 		font-size: 26rpx;
 		align-items: center;
-		padding: 4rpx 10rpx 4rpx 20rpx;
+		padding: 5rpx 10rpx 5rpx 20rpx;
 		border-radius: 30rpx;
 
 	}

+ 65 - 7
pages/mine/often/addRoute.vue

@@ -100,10 +100,22 @@
 					this.routeData.sendCity = ""
 					this.routeData.sendArea = ""
 				}else if(address.area == '全市'){
-					this.title1 = address.province  + address.city
+					if(address.province=='北京'||address.province=='天津'||address.province=='上海'||address.province=='重庆'||address.province=='台湾'){
+						this.title1 = address.province
+						this.routeData.sendCity =  ''
+					}else{
+						this.title1 = address.province  + address.city
+					}
+					// this.title1 = address.province  + address.city
 					this.routeData.sendArea = ""
 				}else{
-					this.title1 = address.province  + address.city + address.area;
+					if(address.province=='北京'||address.province=='天津'||address.province=='上海'||address.province=='重庆'||address.province=='台湾'){
+						this.title1 = address.province+ address.area;
+						this.routeData.sendCity =  ''
+					}else{
+						this.title1 = address.province  + address.city + address.area;
+					}
+					
 				}
 				
 			},
@@ -117,13 +129,24 @@
 					this.routeData.unloadCity = ""
 					this.routeData.unloadArea = ""
 				}else if(address.area == '全市'){
-					this.title2 = address.province  + address.city
+					if(address.province=='北京'||address.province=='天津'||address.province=='上海'||address.province=='重庆'||address.province=='台湾'){
+						this.title2 = address.province
+						this.routeData.unloadCity =''
+					}else{
+						this.title2 = address.province  + address.city
+					}
 					this.routeData.unloadArea = ""
 				}else{
 					if(address.province == '全国'){
 						this.title2 = address.province
 					}else{
-						this.title2 = address.province  + address.city + address.area;
+						if(address.province=='北京'||address.province=='天津'||address.province=='上海'||address.province=='重庆'||address.province=='台湾'){
+							this.title2 = address.province+ address.area;
+							this.routeData.unloadCity = ""
+						}else{
+							this.title2 = address.province  + address.city + address.area;
+						}
+						
 					}
 					
 				}
@@ -184,10 +207,27 @@
 					}).then(res => {
 						if (res.code == 200) {
 							this.routeData = res.data
-							this.title1 = this.routeData.sendProvince + this.routeData.sendCity + this.routeData
+							if(this.routeData.sendProvince=='北京'&&this.routeData.sendArea==''
+							||this.routeData.sendProvince=='天津'&&this.routeData.sendArea==''
+							||this.routeData.sendProvince=='上海'&&this.routeData.sendArea==''
+							||this.routeData.sendProvince=='重庆'&&this.routeData.sendArea==''
+							||this.routeData.sendProvince=='台湾'&&this.routeData.sendArea==''){
+								this.title1 = this.routeData.sendProvince 
+
+							}else{
+								this.title1 = this.routeData.sendProvince + this.routeData.sendCity + this.routeData
 								.sendArea
-							this.title2 = this.routeData.unloadProvince + this.routeData.unloadCity + this.routeData
+							}
+							if(this.routeData.unloadProvince=='北京'&&this.routeData.unloadArea==''
+							||this.routeData.unloadProvince=='天津'&&this.routeData.unloadArea==''
+							||this.routeData.unloadProvince=='上海'&&this.routeData.unloadArea==''
+							||this.routeData.unloadProvince=='重庆'&&this.routeData.unloadArea==''
+							||this.routeData.unloadProvince=='台湾'&&this.routeData.unloadArea==''){
+								this.title2 = this.routeData.unloadProvince
+							}else{
+								this.title2 = this.routeData.unloadProvince + this.routeData.unloadCity + this.routeData
 								.unloadArea
+							}
 						}
 					})
 					.catch(res => {
@@ -195,6 +235,20 @@
 					});
 			},
 			submit() {
+				if(!this.title1){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "请选择发货城市",
+					})
+					return
+				}
+				if(!this.title2){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "请选择卸货城市",
+					})
+					return
+				}
 				this.routeData.commonId = uni.getStorageSync("userInfo").id
 				let name = this.driverData.driverCall.slice(0, 1)
 				this.routeData.driverNickname = name + "师傅"
@@ -221,7 +275,10 @@
 									type: 'success',
 									message: "提交成功!",
 									complete() {
-										uni.$u.route("pages/mine/often/oftenRoute")
+										uni.navigateBack({
+											delta: 1
+										});
+										// uni.$u.route("pages/mine/often/oftenRoute")
 									}
 								})
 							}
@@ -260,6 +317,7 @@
 		// width: 100%;
 		padding: 30rpx;
 		background: #F2F4F7;
+		height:100vh;
 	}
 	.route_site{
 		background: #FFFFFF;

+ 88 - 37
pages/mine/often/oftenRoute.vue

@@ -1,5 +1,6 @@
 <template>
 	<view class="center">
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
 		<view class="route">
 			<view v-for="(item,index) in routeData" class="route_css">
 				<view class="route_site flex">
@@ -19,52 +20,101 @@
 				<view class="flex btns">
 					<view class="btn_css" @click="addRoute(item)">修改</view>
 					<view class="btn_css" @click="del(item.id)">删除</view>
-					<view  @click="showChane(item)">
-						<!-- <img src="../../static/images/exhibit.png" alt=""> -->
-						<image src="../../../static/images/riders/exhibit.png" mode="" v-if="item.displayFlag == 1"
-						style="width: 40rpx;height: 40rpx;margin:14rpx 0 0 20rpx;"></image>
-						<image src="../../../static/images/riders/hide.png" mode="" v-else
-						style="width: 40rpx;height: 40rpx;margin:14rpx 0 0 20rpx;"></image>
-					</view>
+					<view class="btn_css" @click="showChane(item)">{{item.displayFlag == 1?"显示中":"已隐藏"}}</view>
 				</view>
 			</view>
-			<u-loadmore :status="status"  :nomore-text="nomoreText" />
+			<!-- <u-loadmore :status="status" :nomore-text="nomoreText" /> -->
 		</view>
+		</mescroll-body>
 		<u-toast ref="uToast"></u-toast>
 		<view class="bottom_add">
 			<view class="add_btn" @click="addRoute(1)">添加常用路线</view>
 			<span class="tips">最多可创建50条</span>
 		</view>
+		<u-modal :show="tipsShow" :title="tipsText" :closeOnClickOverlay='true' :showCancelButton='true'
+			confirmColor='#2772FB' @confirm="delSubmit" @close="cancelClick" @cancel="cancelClick"></u-modal>
 	</view>
-
 </template>
 
 <script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
+		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
 				routeData: [],
 				status: 'loadmore',
-				 nomoreText: '实在没有了'
+				nomoreText: '实在没有了~',
+				tipsShow: false,
+				tipsText: "",
+				delId: "",
+				mescroll:{}
 			}
 		},
 		onShow() {},
-		onLoad() {
-			this.getList()
-		},
+		onLoad() {},
 		onNavigationBarButtonTap(e) {
 			this.addRoute(1)
 		},
 		methods: {
-			del(ids) {
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			downCallback() {
+				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
+				// 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )     
+				this.mescroll.resetUpScroll()
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+				console.log(page)
+				// 此处可以继续请求其他接口
+				// if (page.num == 1) {
+				// 	this.routeData = []
+				// 	// 请求其他接口...
+				// }
+				// 如果希望先请求其他接口,再触发upCallback,可参考以下写法
+				// if(!this.isInitxx){
+				// 	apiGetxx().then(res=>{
+				// 		this.isInitxx = true
+				// 		this.mescroll.resetUpScroll() // 重新触发upCallback
+				// 	}).catch(()=>{
+				// 		this.mescroll.endErr()
+				// 	})
+				// 	return // 此处return,先获取xx
+				// }
+			
+				//联网加载数据
+				this.status = 'loading';
+				this.$request.baseRequest('get', '/commonRoute/select', {
+						commonId: uni.getStorageSync("firstAuthentication").commonId,
+						pageSize: page.size,
+						currentPage: page.num
+					}).then(res => {
+						if (res.code == 200) {
+							if (page.num == 1) {
+								this.routeData = []
+							}
+							this.routeData = this.routeData.concat(res.data.records); //追加新数据
+							this.$forceUpdate()
+							this.mescroll.endBySize(res.data.records.length, res.data.total);
+							console.log(this.routeData)
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			delSubmit() {
 				this.$request.baseRequest('post', '/commonRoute/api/delete', {
-						id: ids
+						id: this.delId
 					}).then(res => {
 						if (res.code == 200) {
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "删除成功!",
 							})
+							this.tipsShow = false
 							this.getList()
 						}
 					})
@@ -72,6 +122,14 @@
 						uni.$u.toast(res.message);
 					});
 			},
+			del(ids) {
+				this.tipsText = "确定删除改常用路线?"
+				this.tipsShow = true
+				this.delId = ids
+			},
+			cancelClick() {
+				this.tipsShow = false
+			},
 			getList() {
 				this.status = 'loading';
 				this.$request.baseRequest('get', '/commonRoute/select', {
@@ -81,9 +139,9 @@
 					}).then(res => {
 						if (res.code == 200) {
 							this.routeData = res.data.records
-							if(res.data.total == 0){
+							if (res.data.total == 0) {
 								this.status = 'nomore'
-							}else{
+							} else {
 								this.status = 'loadmore'
 							}
 						}
@@ -92,26 +150,23 @@
 						uni.$u.toast(res.message);
 					});
 			},
-			showChane(item){
-				console.log(item)
-				if(item.displayFlag == 1){
+			showChane(item) {
+				if (item.displayFlag == 1) {
 					item.displayFlag = 2
-				}else{
+				} else {
 					item.displayFlag = 1
-				} 
+				}
 				this.$request.baseRequest('post', '/commonRoute/api/edit', item).then(res => {
 						if (res.code == 200) {
-							if(item.displayFlag == 1){
+							if (item.displayFlag == 1) {
 								this.$refs.uToast.show({
 									type: 'success',
 									message: "路线展示中!",
-									
 								})
-							}else{
+							} else {
 								this.$refs.uToast.show({
 									type: 'success',
 									message: "路线已隐藏!",
-									
 								})
 							}
 						}
@@ -131,7 +186,6 @@
 						id: item.id
 					})
 				}
-
 			},
 		}
 	}
@@ -146,7 +200,7 @@
 	}
 
 	.route {
-
+		// margin-bottom: 40rpx;
 		.route_css {
 			background: #FFFFFF;
 			margin-bottom: 40rpx;
@@ -158,15 +212,11 @@
 				height: 120rpx;
 
 				.site_text {
-					// width: 180rpx;
 					max-width: 200rpx;
 					overflow: hidden;
-					// height: 60rpx;
 					text-overflow: ellipsis;
 					white-space: nowrap;
 					font-size: 32rpx;
-					// font-weight: 500;
-					// margin: 0 20rpx;
 				}
 			}
 
@@ -174,7 +224,6 @@
 				width: 60rpx;
 				height: 20rpx;
 				margin: 0 23rpx;
-
 			}
 
 			.dot {
@@ -218,10 +267,11 @@
 		bottom: 0;
 		width: 100%;
 		height: 160rpx;
-		padding-top: 30rpx ;
+		padding-top: 30rpx;
 		background: #FFFFFF;
 		text-align: center;
-		.add_btn{
+
+		.add_btn {
 			width: 90%;
 			height: 70rpx;
 			line-height: 70rpx;
@@ -233,11 +283,12 @@
 			// height: 60rpx;
 			margin: 0 auto;
 		}
-		.tips{
+
+		.tips {
 			text-align: center;
 			color: #ABABAB;
 			font-size: 24rpx;
 		}
-		
+
 	}
 </style>

+ 7 - 5
pages/mine/set.vue

@@ -19,7 +19,7 @@
 				</view>
 				<view style='align-items: center;' class="flex" @click="editName">
 					<view class="username">
-						{{firstAuthentication.authenticationStatus=='已认证'?firstAuthentication.driverName:'未认证'}}
+						{{firstAuthentication.authenticationStatus=='已认证'?firstAuthentication.driverName:firstAuthentication.authenticationStatus=='已过期'?'已过期':'未认证'}}
 					</view>
 					<!-- <image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image> -->
 				</view>
@@ -47,13 +47,13 @@
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
 			</view>
-			<u-line color="#EEEEEE" class="line"></u-line>
+			<!-- <u-line color="#EEEEEE" class="line"></u-line>
 			<view class='flex flex-space-between' @click='clearStorage'>
 				<view>
 					<text>清除缓存</text>
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
-			</view>
+			</view> -->
 		</view>
 		<view class='exitloginwrap'>
 			<button @click='logout()' class='exitlogin'>退出登录</button>
@@ -89,10 +89,11 @@
 			}
 		},
 		computed: {
-			...mapState(['hasLogin', 'userInfo','firstAuthentication'])
+			...mapState(['hasLogin', 'userInfo'])
 		},
 		onShow() {
 			this.getList()
+			this.firstAuthentication=uni.getStorageSync("firstAuthentication")
 		},
 		onLoad() {
 			_this = this
@@ -171,7 +172,7 @@
 			},
 			fankui() {
 				uni.navigateTo({
-					url: `/pages/mine/settings/feedback`
+					url: `/pages/mine/fankui`
 				})
 			},
 			logout() {
@@ -232,6 +233,7 @@ color: #333333;
 	.picture {
 		width: 35px;
 		height: 35px;
+		border-radius: 18px;
 	}
 
 	.arrow {

+ 37 - 45
pages/mine/settings/editAvatar.vue

@@ -4,7 +4,6 @@
 			<image class="xj-image" v-if="!deptListurl.avatarUrl" src="@/static/images/common/tianjiazhaopian@2x.png">
 			</image>
 			<image  :src="deptListurl.avatarUrl" v-if="deptListurl.avatarUrl" style="width: 100%;height: 100%;"></image>
-
 		</view>
 		<view @click="submit" class="submit">提交</view>
 		<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
@@ -40,25 +39,21 @@
 		},
 		methods: {
 			upload() {
-				this.isShowimgType = true
+				this.imgTypeSelect()
 			},
 			imgTypeSelect(val) {
-				console.log(val)
-				if (val.name == '相册') {
+				// if (val.name == '相册') {
 					uni.chooseImage({
 						count: 1,
-						sourceType: that.$helper.chooseImage.sourceType,
+						// sourceType: that.$helper.chooseImage.sourceType,
 						success: function(res) {
-							console.log(JSON.stringify(res.tempFilePaths));
 							uploadImage('image',res.tempFilePaths[0], 'appData/',
 								result => {
 									// 上传成功
-									console.log('图片地址', result)
 									that.$request.baseRequest('get', '/BDAccessToken/getAuth', {
 											apiKey: 'yNWLRW6unoUxo2KXiCZxOxGS',
 											secretKey: 'E8hqzKWdFdTGnFnpAwZ7ixtL89SN3deR'
 										}).then(res => {
-											console.log(res)
 											that.$request.baseRequest('post',
 													'/commonUser/getUserDefinedBean', {
 														accessToken: res.data,
@@ -73,51 +68,48 @@
 										.catch(res => {
 											uni.$u.toast(res.message);
 										});
-
-
-
 								}
 							)
 						}
 					});
 
-				} else {
-					uni.chooseImage({
-						count: 1,
-						sourceType: ['camera'],
-						success: function(res) {
-							console.log(JSON.stringify(res.tempFilePaths));
-							uploadImage(res.tempFilePaths[0], 'appData/',
-								result => {
-									// 上传成功
-									console.log('图片地址', result)
-									that.$request.baseRequest('get', '/BDAccessToken/getAuth', {
-											apiKey: 'yNWLRW6unoUxo2KXiCZxOxGS',
-											secretKey: 'E8hqzKWdFdTGnFnpAwZ7ixtL89SN3deR'
-										}).then(res => {
-											console.log(res)
-											that.$request.baseRequest('post',
-													'/commonUser/getUserDefinedBean', {
-														accessToken: res.data,
-														imagePath: result
-													}).then(res1 => {
-													that.deptListurl.avatarUrl = result
-												})
-												.catch(res => {
-													uni.$u.toast(res.message);
-												});
-										})
-										.catch(res => {
-											uni.$u.toast(res.message);
-										});
+				// } else {
+				// 	uni.chooseImage({
+				// 		count: 1,
+				// 		sourceType: ['camera'],
+				// 		success: function(res) {
+				// 			console.log(JSON.stringify(res.tempFilePaths));
+				// 			uploadImage(res.tempFilePaths[0], 'appData/',
+				// 				result => {
+				// 					// 上传成功
+				// 					console.log('图片地址', result)
+				// 					that.$request.baseRequest('get', '/BDAccessToken/getAuth', {
+				// 							apiKey: 'yNWLRW6unoUxo2KXiCZxOxGS',
+				// 							secretKey: 'E8hqzKWdFdTGnFnpAwZ7ixtL89SN3deR'
+				// 						}).then(res => {
+				// 							console.log(res)
+				// 							that.$request.baseRequest('post',
+				// 									'/commonUser/getUserDefinedBean', {
+				// 										accessToken: res.data,
+				// 										imagePath: result
+				// 									}).then(res1 => {
+				// 									that.deptListurl.avatarUrl = result
+				// 								})
+				// 								.catch(res => {
+				// 									uni.$u.toast(res.message);
+				// 								});
+				// 						})
+				// 						.catch(res => {
+				// 							uni.$u.toast(res.message);
+				// 						});
 					
 					
 					
-								}
-							)
-						}
-					});
-				}
+				// 				}
+				// 			)
+				// 		}
+				// 	});
+				// }
 
 			},
 			submit() {

+ 8 - 2
pages/mine/settings/editPassword.vue

@@ -143,11 +143,18 @@
 			},
 			reset(){
 				var that = this
+				if (this.password.length < 6) {
+					uni.showToast({
+						title: '密码请输入6-16字符格式',
+						icon: 'none',
+						duration: 2000
+					})
+					return
+				}
 				uni.showLoading({
 					title: '重置密码中'
 				})
 				this.$request.baseRequest('post','/commonUser/resetPassword',{phone:this.phone,password:this.password,verifyCode:this.verifyCode,identification:1}).then(res => {
-				    console.log("重置密码",res)
 					// 获得数据
 					if(res.code==200){
 						if(this.isPhone){//判断是否是在个人首页进来的(若是退出重进)
@@ -186,7 +193,6 @@
 					uni.hideLoading()
 				})
 				.catch(res => {
-					console.log("重置密码",res)
 				    uni.showToast({
 				    	title: "系统异常,请联系管理员",
 				    	icon:'none',

+ 78 - 72
pages/news/index.vue

@@ -1,39 +1,39 @@
 <template>
 	<!-- <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
 		style="background-color: #F5F6FA;"> -->
-		<view>
+	<view>
 		<u-navbar title="消息中心" leftIconSize='0' :bgColor="bgColor" :placeholder='true' leftIconColor="#fff"
 			titleStyle='color:#fff' rightText='全部已读' @rightClick="rightClick">
 		</u-navbar>
 		<view class="top-bgc"></view>
-		        <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
-		            style="background-color: #F5F6FA;">
-		<view class="content">
-			<view class="info-item flex" v-for="(item,index) in news" :key="index" @click="read(item)">
-				<view class="left">
-					<image src="@/static/images/news/cy.png" class="img" v-if="item.newsType=='承运通知'">
-					</image>
-					<image src="@/static/images/news/xt.png" class="img" v-else>
-					</image>
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
+			style="background-color: #F5F6FA;">
+			<view class="content">
+				<view class="info-item flex" v-for="(item,index) in news" :key="index" @click="read(item)">
+					<view class="left">
+						<image src="@/static/images/news/cy.png" class="img" v-if="item.newsType=='承运通知'">
+						</image>
+						<image src="@/static/images/news/xt.png" class="img" v-else>
+						</image>
 
-				</view>
-				<view class="right">
-					<view class="row1 flex flex-space-between">
-						<view class="title">
-							{{item.newsType}}
-						</view>
-						<view class="time">
-							{{item.createDate}}
-						</view>
 					</view>
-					<view class="row2 flex flex-space-between align-center">
-						<view class="text point1">
-							{{item.newsContent}}
+					<view class="right">
+						<view class="row1 flex flex-space-between">
+							<view class="title">
+								{{item.newsType}}
+							</view>
+							<view class="time">
+								{{item.createDate}}
+							</view>
+						</view>
+						<view class="row2 flex flex-space-between align-center">
+							<view class="text point1">
+								{{item.newsContent}}
+							</view>
+							<view class="red-point" v-if="item.newsFlag==0"></view>
 						</view>
-						<view class="red-point" v-if="item.newsFlag==0"></view>
 					</view>
-				</view>
-				<!-- 	<view class="flex flex-space-between">
+					<!-- 	<view class="flex flex-space-between">
 					<view class="left">
 						<view>系统消息</view>
 						<u-badge :isDot="true" bgColor='red' :absolute='true' :offset='badgeOffset'></u-badge>
@@ -45,12 +45,12 @@
 				<view class="flex flex-space-between">
 					您的驾驶证即将到期,请尽快到“我的-身份认证”中更新,逾期将影响运费支付。
 				</view> -->
-				<u-modal :show="isShowAlert" :title="alertTitle" :closeOnClickOverlay='true'
-					:showCancelButton='showCancelButton' confirmColor='#2772FB' @confirm="confirmClick"
-					@close="cancelClick" @cancel="cancelClick"></u-modal>
+					<u-modal :show="isShowAlert" :title="alertTitle" :closeOnClickOverlay='true'
+						:showCancelButton='showCancelButton' confirmColor='#2772FB' @confirm="confirmClick"
+						@close="cancelClick" @cancel="cancelClick"></u-modal>
+				</view>
 			</view>
-		</view>
-	</mescroll-body>
+		</mescroll-body>
 	</view>
 </template>
 
@@ -64,7 +64,7 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
-					confirmText: '确定',
+				confirmText: '确定',
 				showCancelButton: true,
 				isShowAlert: false,
 				alertTitle: '',
@@ -76,41 +76,42 @@
 				mescroll: null
 			}
 		},
-		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
+		// 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() {
 			this.newsNumber()
 			this.upCallback({
-				size:10,
-				num:1
+				size: 10,
+				num: 1
 			})
 		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
 		methods: {
-			newsNumber(){
+			newsNumber() {
+				let that = this
 				that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
 					reCommonId: this.userInfo.id,
 				}).then(res3 => {
-					if (res3.data) {
+					if (res3.data || res3.data == 0) {
 						let name = 'myTip';
 						let value = res3.data
 						if (value == 0) {
@@ -157,7 +158,7 @@
 						uni.removeTabBarBadge({
 							index: 2
 						})
-						this.newsNumber()//消息气泡
+						this.newsNumber() //消息气泡
 
 					})
 					.catch(res => {
@@ -165,9 +166,7 @@
 					});
 			},
 			read(val) {
-				if(val.newsType == '系统消息'){
-					uni.$u.route("/pages/news/newsSee?_obj="+JSON.stringify(val))
-				}
+				uni.$u.route("/pages/news/newsSee?_obj=" + JSON.stringify(val))
 				uni.showLoading({
 					title: '加载中',
 					mask: true
@@ -178,13 +177,15 @@
 						this.mescroll.resetUpScroll()
 						this.look()
 						uni.hideLoading()
-						this.newsNumber()//查询消息气泡
+						this.newsNumber() //查询消息气泡
 					})
 					.catch(res => {
+						
 						uni.$u.toast(res.message);
 					});
 			},
 			look() {
+				let that = this
 				that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
 					reCommonId: this.userInfo.id,
 				}).then(res3 => {
@@ -219,16 +220,16 @@
 				this.mescroll = mescroll;
 			},
 			downCallback() {
-			                // 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
-			                // 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )     
-			                this.mescroll.resetUpScroll()
-			            },
+				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
+				// 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )     
+				this.mescroll.resetUpScroll()
+			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
 				console.log(page)
 				// 此处可以继续请求其他接口
-				if(page.num == 1){
-					this.news=[]
+				if (page.num == 1) {
+					this.news = []
 					// 请求其他接口...
 				}
 
@@ -249,7 +250,11 @@
 						pageSize: page.size,
 						currentPage: page.num,
 					}).then(res => {
+						if (page.num == 1) {
+							this.news = []
+						}
 						this.news = this.news.concat(res.data.records); //追加新数据
+						this.$forceUpdate()
 						this.mescroll.endBySize(res.data.records.length, res.data.total);
 					})
 					.catch(res => {
@@ -265,14 +270,15 @@
 		font-size: 26rpx;
 		color: #FFFFFF;
 	}
+
 	/deep/.point1 {
-	    text-overflow: ellipsis;
-	    overflow: hidden;
-	    /* white-space: nowrap; */
-	    display: -webkit-box;
-	    -webkit-line-clamp: 3;
-	    -webkit-box-orient: vertical;
-	    text-overflow: ellipsis;
+		text-overflow: ellipsis;
+		overflow: hidden;
+		/* white-space: nowrap; */
+		display: -webkit-box;
+		-webkit-line-clamp: 3;
+		-webkit-box-orient: vertical;
+		text-overflow: ellipsis;
 	}
 
 	.top-bgc {
@@ -342,4 +348,4 @@
 			}
 		}
 	}
-</style>
+</style>

+ 1 - 1
pages/news/newsSee.vue

@@ -32,7 +32,7 @@
 <style lang="scss">
 	.center{
 		padding:30rpx;
-		height: 100%;
+		height: calc(100vh - 11.2vh);
 		background: #F5F6FA ;
 		.news_info{
 			background: #FFFFFF;

+ 64 - 41
pages/order/addEvaluation.vue

@@ -7,7 +7,7 @@
 					<!-- <view>{{objData.goodsName}}</view> -->
 				</view>
 				<view class="flex align-center">
-					<image :src="objData.cargoOwnerPortrait" mode="widthFix" class="tx-img"></image>
+					<image :src="objData.cargoOwnerPortrait" mode="" class="tx-img"></image>
 					<view>{{objData.cargoOwner}}</view>
 				</view>
 			</view>
@@ -16,8 +16,7 @@
 					@click="clickStar(index)">
 					<view class="flex" style="margin: 10rpx 0;">
 						<view class="ziti">{{item.name}}</view>
-						<start :count="item.count" style="" size="35" activeIcon="heart-fill" inactiveIcon="heart"
-							activeColor="#ffaa00" v-model="item.value1" @change="getVal" :size="22">
+						<start :value="item.value1" style="" size="35" @change="getVal" :size="36">
 						</start>
 					</view>
 
@@ -55,6 +54,7 @@
 		mapState
 	} from 'vuex';
 	import start from '../../common/components/uni-rate.vue'
+	import permision from "@/js_sdk/wa-permission/permission.js"
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	export default {
 		components: {
@@ -80,19 +80,19 @@
 				rate: [{
 						name: "货主信用",
 						count: "5",
-						value1: '0',
+						value1: '5',
 						level: '非常好'
 					},
 					{
 						name: "运费支付",
 						count: "5",
-						value1: '0',
+						value1: '5',
 						level: '非常好'
 					},
 					{
 						name: "综合满意度",
 						count: "5",
-						value1: '0',
+						value1: '5',
 						level: '非常满意'
 					}
 				],
@@ -109,48 +109,71 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
+		
 		onNavigationBarButtonTap() {
-			let _data = {
-				evaluatoredId: this.objData.cargoCommonId,
-				evaluatorId: this.objData.commonId,
-				ownerName: this.objData.cargoOwner,
-				driverName: this.checkboxValue1 ? this.objData.driverName : '',
-				driverPortrait: this.checkboxValue1 ? this.userInfo.avatarUrl : '',
-				orderId: this.objData.id,
-				orderNumber: this.objData.orderNo,
-				ownerCredit: this.rate[0].value1,
-				freightPayment: this.rate[1].value1,
-				comprehensiveSatisfaction: this.rate[2].value1,
-				driverContent: this.value3,
-				driverUrl: this.imageList.toString(),
-				driverAnonymous: this.checkboxValue1.length != 0 ? 1 : 0
-
-			}
-			that.$request.baseRequest('post', '/evaluateInfo/api/addEvaluateInfo', _data).then(res => {
-				if (res.code == 200) {
-					this.$refs.uToast.show({
-						type: 'success',
-						message: "评价成功",
-						complete() {
-							uni.navigateBack({
-								delta:1
-							})
-						}
-					})
-				} else {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "评价失败",
-					})
-				}
-			})
+			console.log(12112)
+			uni.$u.debounce(this.submit, 500)
 		},
 		onLoad(options) {
 			that = this
+			this.get_camera_permission()
 			this.objData = JSON.parse(options.val)
 			console.log(this.objData)
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
+			submit(){
+				let _data = {
+					evaluatoredId: this.objData.cargoCommonId,
+					evaluatorId: this.objData.commonId,
+					ownerName: this.objData.cargoOwner,
+					driverName: this.checkboxValue1 ? this.objData.driverName : '',
+					driverPortrait: this.checkboxValue1 ? this.userInfo.avatarUrl : '',
+					orderId: this.objData.id,
+					orderNumber: this.objData.orderNo,
+					ownerCredit: this.rate[0].value1,
+					freightPayment: this.rate[1].value1,
+					comprehensiveSatisfaction: this.rate[2].value1,
+					driverContent: this.value3,
+					driverUrl: this.imageList.toString(),
+					driverAnonymous: this.checkboxValue1.length != 0 ? 1 : 0
+				
+				}
+				that.$request.baseRequest('post', '/evaluateInfo/api/addEvaluateInfo', _data).then(res => {
+					if (res.code == 200) {
+						this.$refs.uToast.show({
+							type: 'success',
+							message: "评价成功",
+							complete() {
+								uni.navigateBack({
+									delta:1
+								})
+							}
+						})
+					} else {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "评价失败",
+						})
+					}
+				})
+			},
 			clickStar(index) {
 				console.log(index)
 				this.selectStar = index
@@ -283,6 +306,6 @@
 	.tx-img {
 		width: 40rpx;
 		height: 40rpx;
-		// border-radius: 20rpx;
+		border-radius: 20rpx;
 	}
 </style>

+ 2 - 1
pages/order/bankCard.vue

@@ -140,7 +140,8 @@
 			},
 			init() {
 				this.$request.baseRequest('post', '/driverPayeeInfo/selectDriverPayee', {
-						driverId: this.userInfo.driverId,
+						// driverId: this.userInfo.driverId,
+						commonId: this.userInfo.id,
 					}).then(res => {
 						if (res.code == '200') {
 							this.bankList = res.data

+ 426 - 0
pages/order/cargoOwnerSee.vue

@@ -0,0 +1,426 @@
+<template>
+	<view class="center">
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
+			class="mescroll">
+		<view class="center_top">
+			<view class="flex">
+				<u--image
+					:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+					width='170rpx' height='170rpx' shape="circle">
+				</u--image>
+				<view class="name">{{objectInfo.cargoOwnerName}}</view>
+				<image src="../../static/qy@2x.png" mode="widthFix" class="title_css" v-show="objectInfo.cargoOwner=='企业货主'">
+				</image>
+				<view class="feedback_css"></view>
+			</view>
+		</view>
+		<view class="pf-row flex">
+			<view class="flex">
+				<view class="text">评分</view>
+				<view class="number">{{dataObj.zong}}</view>
+			</view>
+			<view class="flex">
+				<view class="text">发运次数</view>
+				<view class="number">{{dataObj.countFa}}</view>
+			</view>
+			<!-- <view class="flex">
+				<view class="text">好评率</view>
+				<view class="number">{{dataObj.haoPingLv}}</view>
+			</view> -->
+			<view class="flex">
+				<view class="text">评价</view>
+				<view class="number">{{totalPL}}</view>
+			</view>
+		</view>
+
+		<u-line></u-line>
+		<view class="flex">
+			<view class="switchbtn" @click="switchsubmit(1)" :class="indexBtn == 1 ? 'switchbtn1':''">货主信息</view>
+			<view class="switchbtn" @click="switchsubmit(2)" :class="indexBtn == 2 ? 'switchbtn1':''">评价</view>
+		</view>
+		<!-- 货主信息 -->
+		<view v-if="indexBtn == 1" class="enterprise">
+			<view>
+				<view class="enterprise_title" v-if="companyList.length>0">所属企业:</view>
+				<view class="enterprise_title" v-else>个人货主,暂未代理企业</view>
+				<view v-for='item in companyList'>
+					{{item.company?item.company:item.companyName}}
+				</view>
+			<!-- 	<view class="enterprise_name" v-if="companyList.length>0">{{objectInfo.cargoOwner}}</view> -->
+			</view>
+		</view>
+		<!-- 评价信息 -->
+		<view v-if="indexBtn == 2" class="pl-style">
+			<view class="pf flex-space-between flex">
+				<view class="left flex align-center" style="margin-right: 20rpx;">
+					<view class="pf-number">
+						{{dataObj.zong}}
+					</view>
+					<view>
+						<view>
+							<start count="5" v-model="dataObj.zong" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true'
+								:readonly='true'>
+							</start>
+						</view>
+						<view class="gray fontsize-24">累计发运{{dataObj.countFa}}次</view>
+					</view>
+				</view>
+				<view v-if='dataObj.haoPing>20' class="right">
+					<view>{{dataObj.haoPingLv}}%</view>
+					<view class="gray fontsize-24">好评率</view>
+				</view>
+			</view>
+				<view class="flex flex-space-between">
+					<view :class="btnData == '' ? 'btn-active':'btn'" @click="btnChange('')">全部({{totalPL}})</view>
+					<!-- <view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">最新</view> -->
+					<view :class="btnData == 1 ? 'btn-active':'btn'" @click="btnChange(1)">好评({{dataObj.haoPing}})</view>
+					<view :class="btnData == 2 ? 'btn-active':'btn'" @click="btnChange(2)">差评({{dataObj.chaPing}})</view>
+				</view>
+				<view class="evaluate_css" v-for="(item,index) in list">
+					<view class="flex">
+						<view class="row1 flex">
+							<u--image
+								:src="objectInfo.cargoOwnerPortrait?objectInfo.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+								width='70rpx' height='70rpx' shape="circle">
+							</u--image>
+							<view class="right">
+								<view class="evaluate_name">{{item.driverName}}</view>
+								<view class="evaluate_date m-top10">{{objectInfo.createDate.split(' ')[0]}}</view>
+								<view class="flex m-top10">
+									<view class="branch_css ">{{item.count}}</view>
+									<view class="">
+										<start count="5" v-model="item.count" size="35" activeColor="#ffaa00" :size="18"
+											:allowHalf='true' :readonly='true'>
+										</start>
+									</view>
+								</view>
+								<view class="">
+									{{item.driverContent}}
+								</view>
+								<view style='flex-wrap: wrap;' class='flex'>
+									<u--image style='margin:7rpx;border:1px solid #ccc;' v-for="(item,index) in item.imgList" :src="item" width='170rpx'
+										height='170rpx'>
+									</u--image>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+		</view>
+		<u-picker :show="show" :columns="columns" :closeOnClickOverlay='true' @close='selectTypeClose'
+			@cancel='selectTypeClose' @confirm='confirmBtn'></u-picker>
+		<u-toast ref="uToast"></u-toast>
+		
+		</mescroll-body>
+	</view>
+</template>
+
+<script>
+	var that
+	import start from '../../common/components/uni-rate.vue'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		mixins: [MescrollMixin], // 使用mixin
+		components: {
+			start
+		},
+		data() {
+			return {
+				zhpf: '5',
+				list: [],
+				dataObj: {},
+				show: false,
+				columns: [
+					['投诉', '举报']
+				],
+				id: "",
+				objectInfo: {},
+				haoType:'',
+				companyList:[],
+				commonId:'',
+				indexBtn: 1,
+				btnData: '',
+				totalPL:'0'
+			}
+		},
+		computed: {
+			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
+		},
+		onShow() {
+
+		},
+		onLoad(options) {
+			that = this
+			this.commonId=options.cargoCommonId
+			this.objectInfo = options
+			this.objectInfo.orderId=this.objectInfo.id
+			console.log(options)
+
+			this.getList()
+		},
+		onNavigationBarButtonTap(e) {
+			console.log("success")
+			this.show = true
+		},
+		methods: {
+			selectTypeClose() {
+				this.show = false
+			},
+			upCallback(page) {
+				console.log(this.commonId,11111111)
+				this.$request.baseRequest('get', '/cargoOwnerCompInfo/cargoOwnerList', {
+						commonId: this.commonId
+					}).then(res => {
+						console.log(res)
+						// 可用企业货主
+						this.companyList = []
+						// 自己法人
+						// let _self = res.data.companyInfoList
+						let _self = res.data.hyCompanyInfoList
+						//代理货主
+						// let _dlhz = res.data.cargoOwnerCompInfoList
+						let _dlhz = res.data.hyCargoOwnerCompInfoList
+						if (!_dlhz) _dlhz = []
+						if (!_self) _self = []
+						if (_self.length > 0) {
+							for (let i = 0; i < _self.length; i++) {
+								if (_self[i].status == '已认证') {
+									this.companyList.push(_self[i])
+								}
+							}
+						}
+						if (_dlhz.length > 0) {
+							for (let i = 0; i < _dlhz.length; i++) {
+								if (_dlhz[i].status == '已认证') {
+									this.companyList.push(_dlhz[i])
+								}
+							}
+						}
+						console.log(this.companyList)
+						this.$forceUpdate()
+					})
+					.catch(res => {});
+				that.$request.baseRequest('get', '/evaluateInfo/selectEvaluateInfo', {
+						evaluatoredId: this.objectInfo.cargoCommonId,
+						flag: 2,
+						haoType:this.haoType,
+						searchType:2,
+						pageSize: page.size,
+						currentPage: page.num
+					}).then(res => {
+						if (page.num == 1) that.list = [];
+						that.list = that.list.concat(res.data.records); //追加新数据
+						if(this.haoType==''){
+							that.totalPL = res.data.total
+						}
+						for (let i = 0; i < that.list.length; i++) {
+							if (that.list[i].driverUrl) {
+								that.list[i].imgList = that.list[i].driverUrl.split(',')
+							}
+
+							that.list[i].count = (Number(that.list[i].ownerCredit) + Number(that.list[i]
+								.tranEfficiency) + Number(that.list[i].freightPayment) + Number(that.list[i]
+								.serviceQuality) + Number(that.list[i].comprehensiveSatisfaction)) / 15 * 5
+						}
+						that.mescroll.endBySize(res.data.records.length, res.data.total);
+						uni.hideLoading()
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			getList() {
+				this.$request.baseRequest('get', '/orderInfo/selectHaoPing', {
+						commonId: this.objectInfo.cargoCommonId,
+						evaluateFlag: 2
+					}).then(res => {
+						if (res.code == 200) {
+							this.dataObj = res.data
+
+						} else {
+							this.$refs.uToast.show({
+								type: 'error',
+								message: res.message,
+							})
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+			},
+			switchsubmit(num) {
+				this.indexBtn = num
+				this.getList()
+			},
+			confirmBtn(e) {
+				console.log(e.value)
+				if (e.value == '投诉') {
+					uni.$u.route('/pages/goodSource/fk', {
+						val: JSON.stringify(this.objectInfo),
+						type:1
+					});
+				} else {
+					uni.$u.route('/pages/goodSource/jb', {
+						val: JSON.stringify(this.objectInfo),
+						type:1
+					});
+				}
+				this.show = false
+			},
+			btnChange(num) {
+				this.haoType=num
+				this.btnData = num
+				this.getList()
+				this.upCallback({size:10,num:1})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.center {
+		padding: 40rpx;
+	}
+
+	.center_top {
+		.name {
+			margin: 40rpx;
+			font-size: 48rpx;
+			font-weight: 600;
+		}
+
+		.title_css {
+			width: 50rpx;
+			height: 50rpx;
+			border-radius: 10rpx;
+			text-align: center;
+			line-height: 50rpx;
+			margin-top: 44rpx;
+		}
+
+		.feedback_css {
+			margin-top: 44rpx;
+			margin-left: 50px;
+		}
+	}
+
+	.switchbtn {
+		margin-right: 40rpx;
+		margin-top: 20rpx;
+		font-weight: 600;
+	}
+
+	.switchbtn1 {
+		color: #2772FB;
+		position: relative;
+	}
+
+	.switchbtn1:before {
+		width: 20px;
+		height: 3px;
+		content: '';
+		position: absolute;
+		bottom: -7px;
+		background: #2772FB;
+		left: 0;
+		right: 0;
+		margin: 0 auto;
+	}
+
+	.enterprise {
+		margin-top: 30rpx;
+
+		.enterprise_title {
+			font-weight: 700;
+			margin-top: 80rpx;
+		}
+
+		.enterprise_name {
+			margin-top: 10rpx;
+		}
+
+		.recordInfo {
+			margin-top: 20rpx;
+			font-weight: 600;
+		}
+	}
+
+	.evaluate_css {
+		margin-top: 30rpx;
+		display: flex;
+		width: 100%;
+		padding-bottom: 40rpx;
+		border-bottom: 1px solid #E6E6E6;
+
+		.evaluate_name {}
+
+		.branch_css {
+			// margin: 0;
+			margin-right: 20rpx;
+		}
+
+		.evaluate_date {}
+
+		.row1 {
+			.right {
+				display: flex;
+				flex-direction: column;
+				margin-left: 40rpx;
+			}
+		}
+	}
+
+	.pf-row {
+		margin: 20rpx 0;
+
+		.text {
+			color: #999;
+			margin-right: 20rpx;
+		}
+
+		.number {
+			color: #2772FB;
+		}
+
+		.flex {
+			margin-right: 20rpx;
+		}
+	}
+
+	.pl-style {
+		margin-top: 40rpx;
+	}
+
+	.btn-active {
+		background-color: #2772FB;
+		color: white;
+		border-radius: 50rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 10rpx 20rpx;
+	}
+
+	.btn {
+		background: #F8F9FB;
+		color: #363636;
+		border-radius: 50rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		padding: 10rpx 20rpx;
+	}
+
+	.pf-number {
+		color: #363636;
+		font-size: 60rpx;
+		margin-right: 30rpx;
+	}
+
+	.pf {
+		margin-bottom: 20rpx;
+	}
+</style>

+ 56 - 23
pages/order/confirmLoading.vue

@@ -77,7 +77,7 @@
 			<view class='s-flex'>
 				<view class="" style="margin:20rpx 0;">上传装车照片</view>
 				<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
-					name="1" multiple :maxCount="3"></u-upload>
+					name="1" multiple='true' :maxCount="3"></u-upload>
 			</view>
 			<!-- 			<view class='s-flex'>
 				<view class="">上传装车磅单</view>
@@ -134,15 +134,14 @@
 			}
 		},
 		onLoad(options) {
-			that = this
-			// #ifdef APP-PLUS
-			this.getLngLat();
-			// #endif
-			console.log(options)
 			this.id = JSON.parse(decodeURIComponent(options.obj)).id
 			this.detailData.hyCarrierInfo.id = JSON.parse(decodeURIComponent(options.obj)).carrierId
 			this.cyId = JSON.parse(decodeURIComponent(options.obj)).carrierId
 			this.getInfo()
+			
+			console.log(options)
+			
+			
 			// this.detailData = JSON.parse(options.obj) ;
 			// console.log(this.detailData)
 			// CYHT20220317000001
@@ -169,8 +168,13 @@
 			// ]
 			// a(){},
 			toSignContract() {
-				uni.$u.route('/pages/order/signContract', {
-					obj: JSON.stringify(this.detailData),
+				console.log(this.detailData)
+				this.$request.baseRequest('get', '/orderInfo/getOrderInfo', {
+					id: this.id,
+				}).then(res => {
+					uni.$u.route('/pages/order/signContract', {
+						obj: JSON.stringify(res.data),
+					});
 				});
 			},
 			selectDate() {
@@ -186,10 +190,24 @@
 				}).then(res => {
 					if (res.code == 200) {
 						this.detailData = res.data
+						// #ifdef APP-PLUS
+						this.getLngLat();
+						// #endif
 						this.$request.baseRequest('get', '/carrierInfo/getHyCarrierInfo', {
 							orderId: this.detailData.id,
 						}).then(res => {
 							if (res.data) {
+								if(res.data.loadingImg){
+									var data=res.data.loadingImg.split(',')
+									this.imgList=res.data.loadingImg.split(',')
+									for (var i = 0; i < data.length; i++) {
+										if(data[i]!=''){
+											this.fileList1.push({url:data[i]})
+										}
+									}
+									
+								}
+								console.log(this.fileList1)
 								this.detailData.carNo = res.data.carNo
 								this.detailData.loadingDate = res.data.loadingDate
 								this.detailData.weight = res.data.loadingWeight
@@ -244,6 +262,7 @@
 				this.detailData.hyCarrierInfo.carNo = e.value //键盘输入值
 			},
 			getLngLat() {
+				var that=this
 				uni.showLoading({
 					title: '获取定位中',
 					mask: true
@@ -273,17 +292,26 @@
 				// 		});
 				// 	}
 				// );
+				console.log(111111)
+				// console.log(that.detailData,111111)
 				uni.getLocation({
 					type: 'gcj02',
 					geocode: true,
 					success: res => {
 						if (res.latitude) {
+							
 							that.detailData.hyCarrierInfo.longitudeLatitude=res.longitude+','+res.latitude
 							that.detailData.hyCarrierInfo.loadingAreaLongitude = res.longitude;
 							that.detailData.hyCarrierInfo.loadingAreaLatitude = res.latitude;
 							that.detailData.hyCarrierInfo.sendCity = that.$helper.filterUrban(res.address.city)
 							that.localtion.city = that.$helper.filterUrban(res.address.city)
+							that.$set(that.detailData,'loadingArea',that.$helper.filterUrban(res.address.district))
+							that.$set(that.detailData,'loadingCity',that.$helper.filterUrban(res.address.city))
 							that.localtion.sendArea = that.$helper.filterUrban(res.address.district)
+							// .loadingCity = that.$helper.filterUrban(res.address.city)
+							that.detailData.loadingLongitude = res.longitude;
+							that.detailData.loadingLatitude = res.latitude;
+							console.log(res,that.detailData,22222)
 							that.$forceUpdate()
 							uni.hideLoading()
 						} else {
@@ -399,6 +427,7 @@
 					}
 					this.alertTitle = '确定提交装车信息?'
 				}
+				if (this.validate()) return
 				this.isShowAlert = true
 				this.detailData.statusFlag = type
 				// this.$refs.uToast.show({
@@ -447,17 +476,18 @@
 				// 	})
 				// 	return true
 				// }
-				// if (uni.$u.test.isEmpty(this.detailData.carrierInfo.loadingImg)) {
-				// 	this.$refs.uToast.show({
-				// 		type: 'error',
-				// 		message: "装车照片不能为空!",
-				// 	})
-				// 	return true
-				// }
+			
+				if(this.imgList.length == 0){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "装车照片不能为空!",
+					})
+					return true
+				}
 			},
 			confirmClick() {
+				var that=this
 				this.isShowAlert = false
-				if (this.validate()) return
 				//1暂存
 				if (this.detailData.statusFlag == 1) {
 					delete this.detailData.hyCarrierInfo.loadingAreaLongitude;
@@ -465,7 +495,6 @@
 					delete this.detailData.hyCarrierInfo.sendCity;
 					delete this.detailData.hyCarrierInfo.sendArea;
 				}
-				console.log(this.detailData)
 				uni.showLoading({
 					title: '加载中'
 				})
@@ -482,15 +511,19 @@
 				if (m < 10) {
 					m = "0" + m
 				}
-				if(this.detailData.hyCarrierInfo.loadingDate){
-					this.detailData.hyCarrierInfo.loadingDate = this.detailData.hyCarrierInfo.loadingDate.split(" ")[0] + " " + h + ":" + f + ":" + m
+				var data={
+					loadingImg:this.imgList.toString(),
+					statusFlag:this.detailData.statusFlag,
+					loadingDate:this.detailData.hyCarrierInfo.loadingDate.split(" ")[0] + " " + h + ":" + f + ":" + m,
+					loadingArea:this.detailData.loadingArea,
+					loadingCity:this.detailData.loadingCity,
+					loadingLongitude:this.detailData.loadingLongitude,
+					loadingLatitude:this.detailData.loadingLatitude,
+					id:this.detailData.hyCarrierInfo.id
 				}
 				
-				this.detailData.hyCarrierInfo.statusFlag = this.detailData.statusFlag
-				// this.detailData.hyCarrierInfo.id = this.cyId
-				this.detailData.hyCarrierInfo.loadingImg = this.imgList.toString()
 				console.log("查看id--------",this.detailData.hyCarrierInfo.id)
-				this.$request.baseRequest('post', '/carrierInfo/loadingAdd', this.detailData.hyCarrierInfo).then(res => {
+				this.$request.baseRequest('post', '/carrierInfo/loadingAdd', data).then(res => {
 						if (res.code == 200) {
 							uni.hideLoading()
 							let _title = ''

+ 122 - 36
pages/order/confirmUnloading.vue

@@ -53,11 +53,14 @@
 					{{detailData.carrierInfo.unloadingDate?detailData.carrierInfo.unloadingDate:'选择卸车日期'}}
 				</view>
 			</view>
-			<view class='row-between'>
+			<!-- <view class='row-between'>
 				<view class="row-left-text">合计运费(元)</view>
-				<input class="totalFreight-input" placeholder="输入合计运费" v-model="detailData.totalFreight"
+				<view style='position:relative;'>
+					<input :style="{color:this.detailData.freight!=detailData.totalFreight?'red':'#000'}" class="totalFreight-input" placeholder="输入合计运费" v-model="detailData.totalFreight"
 					type="number" />
-			</view>
+					<image @click='eliminate' class='close' v-if='detailData.totalFreight.length>0' src="../../static/images/order/guanbi.png" mode=""></image>
+				</view>
+			</view> -->
 			<view class='row-between'>
 				<view class="row-left-text">定位</view>
 				<view class="flex align-center">
@@ -71,6 +74,11 @@
 				<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
 					name="1" multiple :maxCount="3"></u-upload>
 			</view>
+			<view class='s-flex'>
+				<view class="row-left-text" style="margin:20rpx 0;">上传回单照片(磅单)</view>
+				<u-upload class="uview-upload" :fileList="fileList2" @afterRead="afterRead1($event)" @delete="deletePic1"
+					name="2" multiple :maxCount="3"></u-upload>
+			</view>
 		</view>
 		<view class="bottom-btn">
 			<view class="store" @click="submit(1)">暂存</view>
@@ -94,12 +102,15 @@
 			return {
 				imgList: [],
 				fileList1: [],
+				fileList2:[],
 				isShowValidity: false,
 				validityPeriod: [],
 				sourceType: ['camera'],
+				imgList1:[],
 				detailData: {
 					addressUrl: '',
-					hyCarrierInfo:{}
+					hyCarrierInfo:{},
+					totalFreight:''
 				},
 				action: this.$helper.ossUploadUrl,
 				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
@@ -113,6 +124,23 @@
 		onLoad(options) {
 			this.detailData = JSON.parse(options.obj)
 			console.log(this.detailData)
+			this.fileList1=[]
+			if(this.detailData.hyCarrierInfo.unloadingImg){
+				this.imgList=this.detailData.hyCarrierInfo.unloadingImg.split(',')
+				var data=this.detailData.hyCarrierInfo.unloadingImg.split(',')
+				for (var i = 0; i < data.length; i++) {
+					if(data[i]!=''){
+						this.fileList1.push({url:data[i]})
+					}
+				}
+			}
+			if(this.detailData.hyCarrierInfo.totalFreight){
+				this.$set(this.detailData,'totalFreight',String(this.detailData.hyCarrierInfo.totalFreight))
+				// this.detailData.totalFreight=String(this.detailData.hyCarrierInfo.totalFreight)
+			}else{
+				this.$set(this.detailData,'totalFreight',String(this.detailData.freight))
+				// this.detailData.totalFreight=String(this.detailData.freight)
+			}
 			this.detailData.carrierInfo = {
 				// unloadingDate: '',
 				// estimatedFreight: '',
@@ -122,6 +150,8 @@
 				// unloadArea: '',
 				// unloadingImg: '',
 				// totalFreight: '',
+				unloadingImg:this.detailData.hyCarrierInfo.unloadingImg,
+				receiptImg:this.detailData.hyCarrierInfo.receiptImg,
 				id: this.detailData.carrierId,
 			}
 			this.validityPeriod = this.$helper.makeValidityPeriod()
@@ -131,8 +161,11 @@
 			this.getNowTime()
 		},
 		methods: {
-			deletePic(){
-				
+			deletePic(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
+			},
+			deletePic1(event) {
+				this[`fileList${event.name}`].splice(event.index, 1)
 			},
 			getNowTime() {
 				let now = new Date();
@@ -146,6 +179,13 @@
 				this.detailData.carrierInfo.unloadingDate = defaultDate
 				// this.$forceUpdate()
 			},
+			eliminate(){
+				console.log(11111)
+				this.$set(this.detailData,'totalFreight','')
+				// t.totalFreight=''
+				console.log(this.detailData.totalFreight)
+				console.log(this.detailData.totalFreight.length)
+			},
 			selectUnloadingDate() {
 				this.isShowValidity = true
 			},
@@ -172,8 +212,6 @@
 				// 			this.$forceUpdate()
 			
 				// 		}
-			
-			
 				// 		this.$helper.fUN_AmapLocation.stop({}, result => {
 				// 				uni.hideLoading()
 				// 			console.log('====fUN_AmapLocation定位stop====', JSON.stringify(result));
@@ -187,7 +225,6 @@
 						if (res.latitude) {
 							// that.detailData.hyCarrierInfo.loadingAreaLongitude = res.longitude;
 							// that.detailData.hyCarrierInfo.loadingAreaLatitude = res.latitude;
-							
 							that.detailData.carrierInfo.unloadingAreaLongitude = res.longitude;
 							that.detailData.carrierInfo.unloadingAreaLatitude = res.latitude;
 							console.log("1234567890")
@@ -195,6 +232,10 @@
 							that.detailData.carrierInfo.unloadArea = that.$helper.filterUrban(res.address.district)
 							that.localtion.city = that.$helper.filterUrban(res.address.city)
 							that.localtion.sendArea = that.$helper.filterUrban(res.address.district)
+							that.detailData.carrierInfo.unloadingCity = that.$helper.filterUrban(res.address.city)
+							that.detailData.carrierInfo.unloadingArea = that.$helper.filterUrban(res.address.district)
+							that.detailData.carrierInfo.unloadingLongitude = res.longitude;
+							that.detailData.carrierInfo.unloadingLatitude = res.latitude;
 							that.$forceUpdate()
 							uni.hideLoading()
 						} else {
@@ -293,6 +334,29 @@
 					fileListLen++
 				}
 			},
+			// 新增图片
+			async afterRead1(event) {
+				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
+				let lists = [].concat(event.file)
+				let fileListLen = this[`fileList${event.name}`].length
+				lists.map((item) => {
+					this[`fileList${event.name}`].push({
+						...item,
+						status: 'uploading',
+						message: '上传中'
+					})
+				})
+				for (let i = 0; i < lists.length; i++) {
+					const result = await this.uploadFilePromise1(lists[i].url)
+					let item = this[`fileList${event.name}`][fileListLen]
+					this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
+						status: 'success',
+						message: '',
+						url: result
+					}))
+					fileListLen++
+				}
+			},
 			uploadFilePromise(url) {
 				uploadImage('image', url, 'appData/',
 					result => {
@@ -303,6 +367,16 @@
 					}
 				)
 			},
+			uploadFilePromise1(url) {
+				uploadImage('image', url, 'appData/',
+					result => {
+						// 上传成功回调函数
+						console.log('图片地址', result)
+						this.imgList1.push(result)
+			
+					}
+				)
+			},
 			onProgress(e) {
 				console.log(e)
 			},
@@ -313,18 +387,18 @@
 				} else {
 					this.alertContent = '确定提交卸车信息?'
 				}
-				if(!this.detailData.totalFreight){
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "请输入合计运费!",
-					})
-					return
-				}
+				// if(!this.detailData.totalFreight){
+				// 	this.$refs.uToast.show({
+				// 		type: 'error',
+				// 		message: "请输入合计运费!",
+				// 	})
+				// 	return
+				// }
 				this.isShowAlert = true
 				this.detailData.statusFlag = type
 			},
 			confirmClick() {
-				
+				var that=this
 				if (this.detailData.statusFlag == 1) {
 					delete this.detailData.carrierInfo.unloadingAreaLongitude;
 					delete this.detailData.carrierInfo.unloadingAreaLatitude;
@@ -333,6 +407,7 @@
 				}
 				this.detailData.carrierInfo.statusFlag = this.detailData.statusFlag
 				this.detailData.carrierInfo.unloadingImg = this.imgList.toString()
+				this.detailData.carrierInfo.receiptImg = this.imgList1.toString()
 				// if (!this.detailData.carrierInfo.totalFreight) {
 				// 	uni.showToast({
 				// 		title: '运费不能为空!',
@@ -341,19 +416,20 @@
 				// 	});
 				// 	return
 				// }
-				if (
-					this.detailData.carrierInfo.totalFreight < 0 || this.detailData.carrierInfo.totalFreight > 100000 || (
-						String(this.detailData.carrierInfo.totalFreight).indexOf('.') != -1 && String(this.detailData
-							.carrierInfo.totalFreight).length - (String(this.detailData.carrierInfo.totalFreight).indexOf(
-							'.') + 1) > 2)
-				) {
-					uni.showToast({
-						title: '运费输入错误!',
-						duration: 2000,
-						icon: "none",
-					});
-					return
-				}
+				// if (
+				// 	this.detailData.carrierInfo.totalFreight < 0 || this.detailData.carrierInfo.totalFreight > 100000 || (
+				// 		String(this.detailData.carrierInfo.totalFreight).indexOf('.') != -1 && String(this.detailData
+				// 			.carrierInfo.totalFreight).length - (String(this.detailData.carrierInfo.totalFreight).indexOf(
+				// 			'.') + 1) > 2)
+				// ) {
+				// 	uni.showToast({
+				// 		title: '运费输入错误!',
+				// 		duration: 2000,
+				// 		icon: "none",
+				// 	});
+				// 	return
+				// }
+				
 				if (!this.detailData.carrierInfo.unloadingImg) {
 					uni.showToast({
 						title: '卸车照片不能为空!',
@@ -379,10 +455,10 @@
 				if (m < 10) {
 					m = "0" + m
 				}
-				if(this.detailData.carrierInfo.unloadingDate){//卸车时间   去当前时间的时分秒
+				if(this.detailData.carrierInfo.unloadingDate){//卸车时间 去当前时间的时分秒
 					this.detailData.carrierInfo.unloadingDate= this.detailData.carrierInfo.unloadingDate.split(" ")[0] + " " + h + ":" + f + ":" + m
 				}
-				this.detailData.carrierInfo.totalFreight = this.detailData.totalFreight
+				// this.detailData.carrierInfo.totalFreight = this.detailData.totalFreight
 				this.detailData.carrierInfo.carNo = this.detailData.carNumber
 				this.$request.baseRequest('post', '/carrierInfo/unLoadingAdd', this.detailData.carrierInfo).then(res => {
 						if (res.code == 200) {
@@ -398,12 +474,14 @@
 								message: _title,
 								complete() {
 									uni.hideLoading()
-									that.$helper.fUN_AmapLocation.stop({}, result => {
-            console.log('====fUN_AmapLocation定位stop====', JSON.stringify(result));
-        });
 									uni.switchTab({
 										url: '/pages/order/index'
 									})
+									if(that.$helper.fUN_AmapLocation){
+										that.$helper.fUN_AmapLocation.stop({}, result => {
+											console.log('====fUN_AmapLocation定位stop====', JSON.stringify(result));
+										});
+									}
 								}
 							})
 						}
@@ -449,7 +527,7 @@
 	.bottom-btn {
 		display: flex;
 		justify-content: space-around;
-		margin-bottom: 50rpx;
+		// margin-bottom: 50rpx;
 		background: #FFFFFF;
 		padding: 40rpx 0;
 	}
@@ -489,5 +567,13 @@
 
 	.totalFreight-input {
 		text-align: right;
+		padding-right:18px;
+	}
+	.close{
+		position:absolute;
+		right:0;
+		width:15px;height:15px;
+		top:50%;
+		transform: translateY(-50%);
 	}
 </style>

+ 125 - 29
pages/order/index.vue

@@ -6,7 +6,8 @@
 			<view class="fixed">
 				<view class='title flex flex-center'>
 					<view>订单</view>
-					<u-icon class="search" name="search" color="" size="28" @click="search"></u-icon>
+					<image class="search" style='width:18px;height:18px;' src="../../static/images/search_icon.png" @click="search" mode=""></image>
+					<!-- <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="{
@@ -14,11 +15,12 @@
 									fontWeight: 'bold',
 									transform: 'scale(1.05)'
 								}"></u-tabs>
-					<view class="right-btn" @click="showMenu=true">
+					<view class="right-btn flex align-center" @click="showMenu=true">
 						<view class="">
 							全部类型
 						</view>
-						<u-icon name="arrow-down-fill" color="#333333" size="12"></u-icon>
+						<image style='width:8px;height:8px;' :src="!showMenu?'../../static/images/order/xiala.png':'../../static/images/order/shangla.png'" mode=""></image>
+						<!-- <u-icon :name="!showMenu?'arrow-down-fill':'arrow-up-fill'" color="#333333" size="12"></u-icon> -->
 					</view>
 				</view>
 			</view>
@@ -31,7 +33,6 @@
 						</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"
@@ -110,6 +111,7 @@
 								<!-- {{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>
@@ -118,8 +120,10 @@
 							</view> -->
 						</view>
 						<view class="row5 flex flex-end">
-							<view class="stop active" @click.stop="stop(good)"
+							<view class="stop active" @click.stop="toggle(good)"
 								v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'">终止</view>
+							<!-- <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> -->
@@ -135,6 +139,8 @@
 								确认卸车</view>
 							<view class="start normal" @click.stop="closed(good)" v-if="good.orderStatus=='结算中'">完结
 							</view>
+							<view class="start normal" @click.stop="toDetail(good.id)" 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>
@@ -166,17 +172,46 @@
 		<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'>
+			
+			<view style="margin: 0 auto;">
+				<u-radio-group v-model="radiovalue1" placement="" v-if='isShowTerminationReason' >
 				<u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist1" :key="index"
-					:label="item.name" :name="item.name" @change="radioChange">
+					:label="item.name" :name="item.name" @change="radioChange" >
 				</u-radio>
 			</u-radio-group>
+			</view>
+			
 			<u--textarea class="row" v-model="value2" placeholder="终止原因描述" count maxlength='50'
 				v-if='isShowTerminationReason'>
 			</u--textarea>
 		</u-modal>
-
+					<!-- 普通弹窗 -->
+			<u-popup :show="show" mode="bottom" @close="close" @open="open">
+				<view class="">
+					<view >
+						<image style='width:12px;height:12px;' @click='closepopup' class='close'  src="../../static/images/order/guanbi@3x.png" mode=""></image>
+						<!-- <u-icon @click="closepopup" class='close' name="close" size="20"></u-icon> -->
+					</view>
+					
+					<view style='fon-size:34rpx;margin-bottom:20px;text-align:center;font-weight: 600;'>确认终止订单</view>
+					<view style="margin: 0 auto;">
+			           	<u-radio-group iconPlacement="right" v-model="radiovalue1" placement="" v-if='isShowTerminationReason' >
+			           	<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>
+			           </view>
+					   <view style='border-top:10px solid #F2F4F7;position:absolute;left:0;height:0;width:100%;'></view>
+			           <view style='padding:40rpx 0 30rpx;'>终止原因描述</view>
+			           <u--textarea class="row" v-model="value2" placeholder="终止原因描述" count maxlength='50'
+			           	v-if='isShowTerminationReason'>
+			           </u--textarea>
+					   <view class='termination' :class="{'active':value2.length>0}" @click='confirmClick'>终止</view>
+				</view>
+			           
+			</u-popup>
 		<u-toast ref="uToast"></u-toast>
+		<view class="modal-black" v-show="showMenu" @click="closeMenu"></view>
 	</view>
 </template>
 
@@ -189,13 +224,19 @@
 	import {
 		apiGoods
 	} from "@/api/mock.js"
+	import uniPopup from '@/components/uni-popup/uni-popup.vue'
 	export default {
+		components:{
+			uniPopup
+		},
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
 				confirmText: '确定',
 				showCancelButton: true,
 				showMenu: false,
+				show:false,
+				type:'bottom',
 				searchStyle: {
 					background: "#317AFE",
 					color: 'white',
@@ -282,30 +323,31 @@
 			// 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
-
-		},
+		// 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() {
+			var that=this
 			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
 				reCommonId: this.userInfo.id,
 			}).then(res3 => {
-				if (res3.data) {
+				if (res3.data||res3.data==0) {
 					let name = 'myTip';
 					let value = res3.data
 					if (value == 0) {
@@ -330,6 +372,7 @@
 				num: 1
 			})
 		},
+		
 		onPageScroll(res) {
 			this.scrollTop = res.scrollTop
 			console.log("页面滚动了", res.scrollTop)
@@ -351,6 +394,32 @@
 
 		},
 		methods: {
+			closepopup(){
+				this.show=false
+			},
+			toggle(item){
+				this.id = item.id
+				if (item.orderStatusKey == 1) {
+						this.isShowTerminationReason = false
+					} else {
+						this.isShowTerminationReason = true
+					}
+				if(item.orderStatus=='未装车'){
+					
+					
+					this.show = true
+				}else{
+					this.isShowAlert=true
+				}
+				
+			},
+			open() {
+			          // console.log('open');
+			},
+			close() {
+				this.show = false
+			          // console.log('close');
+			},
 			addevaluation(good) {
 				uni.$u.route('/pages/order/addEvaluation', {
 					val: JSON.stringify(good)
@@ -432,6 +501,7 @@
 					return
 				}
 				// #endif
+				var that =this
 				if (this.alertTitle == '确定删除全部历史记录?') {
 					uni.removeStorageSync('useSearchList');
 					this.useSearchList = [];
@@ -468,6 +538,7 @@
 									type: 'success',
 									message: "终止订单成功",
 									complete() {
+										
 										that.mescroll.resetUpScroll()
 									}
 								})
@@ -476,6 +547,7 @@
 							} else {
 								uni.$u.toast("终止订单失败!");
 							}
+							this.show=false
 							this.isShowAlert = false
 
 						})
@@ -489,6 +561,7 @@
 				this.isShowAlert = false
 			},
 			getSearch(e) {
+				console.log(e)
 				if(!e){
 					this.$refs.uToast.show({
 						type: 'error',
@@ -598,7 +671,10 @@
 		z-index: 999;
 		width: 100%;
 	}
-
+	/deep/.u-popup__content{
+		border-radius: 10px;
+		// padding:20px;
+	}
 	.fixed {
 		.title {
 			background: white;
@@ -897,4 +973,24 @@
 		padding: 20rpx;
 		border-radius: 20rpx;
 	}
+	/deep/.u-radio{
+		margin:40rpx 0;
+	}
+	.close{
+		position:absolute;
+		right:20px;
+		top:26px;
+	}
+	.termination{
+		background:#F1F3F6;
+		color:#C5CAD4;
+		padding:10px;
+		border-radius:30px;
+		text-align: center;
+		margin-top:30rpx;
+	}
+	.termination.active{
+		background: #2772FB;
+		color: white;
+	}
 </style>

+ 231 - 54
pages/order/orderDetails.vue

@@ -4,9 +4,11 @@
 		<view class="fixed1"></view>
 		<view class="fixed">
 			<view class='title flex flex-center'>
-				<u-icon class="back" name="arrow-left" color="" size="20" @click="back"></u-icon>
+				<image class="back"  src="../../static/images/return.png" @click="back" mode="" style="width: 40rpx; height: 40rpx;"></image>
+<!-- 				<u-icon class="back" name="arrow-left" color="" size="20" ></u-icon> -->
 				<view class="nav-title">订单</view>
-				<u-icon class="search" name="server-fill" color="" size="28" @click="$helper.contactCustomerService()"></u-icon>
+				<image class="search" style='width:18px;height:18px;' src="../../static/images/kefu.png" @click="$helper.contactCustomerService()" mode=""></image>
+				<!-- <u-icon class="search" name="server-fill" color="" size="28" @click="$helper.contactCustomerService"></u-icon> -->
 			</view>
 		</view>
 		<view class="content1">
@@ -23,11 +25,13 @@
 				<!-- <u-button class="btn" text="确认装车" @click="confirmLoading"></u-button> -->
 				<u-button class="btn" text="修改装车信息"  @click="confirmLoading" v-if="dataObj.orderStatus=='货主驳回装车信息'||dataObj.orderStatus=='平台驳回装车信息'"></u-button>
 				<u-button class="btn" text="确认卸车" @click="confirmUnLoading" v-if="dataObj.orderStatus=='运输中'"></u-button>
+				<u-button class="btn" text="确认运费" @click="checkfreight(1)" v-if="dataObj.orderStatus=='待确认运费'"></u-button>
+				<u-button class="btn" text="驳回运费" @click="checkfreight(2)" v-if="dataObj.orderStatus=='待确认运费'"></u-button>
 				<u-button class="btn" text="修改卸车信息" @click="confirmUnLoading" v-if="dataObj.orderStatus=='货主驳回卸车信息'||dataObj.orderStatus=='平台驳回卸车信息'"></u-button>
 				<u-button class="btn" text="完结" @click="closed" v-if="dataObj.orderStatus=='结算中'"></u-button>
 			</view>
 			<view class="item3 flex flex-space-between align-center">
-				<view class="left flex align-center">
+				<view @click.stop="cargoOwner(dataObj)" class="left flex align-center">
 					<u--image :showLoading="true" :src="dataObj.cargoOwnerPortrait" width="44px" height="44px" @click="" shape='circle'>
 					</u--image>
 					<view class="name">{{dataObj.cargoOwner}}</view>
@@ -38,7 +42,8 @@
 				</view>
 				<view class="right flex s-row align-center phone">
 					<view class="bgc">
-						<u-icon class="phone" name="phone-fill" color="#2772FB" size="20" @click="$helper.contactCustomerService(dataObj.cargoOwnerPhone)"></u-icon>
+						<image class="phone" style='width:24px;height:24px;' src="../../static/images/dianhua.png" @click="$helper.contactCustomerService(dataObj.cargoOwnerPhone)" mode=""></image>
+						<!-- <u-icon class="phone" name="phone-fill" color="#2772FB" size="20" @click="$helper.contactCustomerService(dataObj.cargoOwnerPhone)"></u-icon> -->
 					</view>
 
 					<view class="hz-name">联系货主</view>
@@ -113,6 +118,17 @@
 				<view class=" gray">距离</view>
 				<view class="">约{{dataObj.distance}}公里</view>
 			</view>
+			<view v-if='dataObj.publishTaskInfo' class='row-between'>
+				<view class=" gray">收货联系人</view>
+				<view class="flex flex-center">{{dataObj.publishTaskInfo.sender?dataObj.publishTaskInfo.sender:''}}
+				<image style='width:12px;height:12px;margin-left:5px;' v-if='dataObj.publishTaskInfo.senderPhone' class="phone" @click="$helper.contactCustomerService(dataObj.publishTaskInfo.senderPhone)" src="../../static/images/order/dianhua.png" mode=""></image>
+				</view>
+			</view> 
+			<view v-if='dataObj.publishTaskInfo' class='row-between'>
+				<view class=" gray">发货联系人</view>
+				<view class="flex flex-center">{{dataObj.publishTaskInfo.receiver?dataObj.publishTaskInfo.receiver:''}}
+				<image style='width:12px;height:12px;margin-left:5px;' v-if='dataObj.publishTaskInfo.receiverPhone' class="phone" @click="$helper.contactCustomerService(dataObj.publishTaskInfo.receiverPhone)" src="../../static/images/order/dianhua.png" mode=""></image>
+			</view>
 		<!-- 	<view class='row-between'>
 				<view class=" gray">运费</view>
 				<view class="">{{dataObj.freight}}{{dataObj.illingMethod==0?'元/吨':'元/车'}}</view>
@@ -139,7 +155,7 @@
 			<view class='row-between'>
 				<view class=" gray">装车照片</view>
 				<view class="flex">
-					<u--image :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in zcPhoneList"></u--image>
+					<u--image @click='ylImg(zcPhoneList)' :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in zcPhoneList"></u--image>
 				</view>
 			</view>
 			<view v-if='dataObj.orderStatus!="待货主确认"&&dataObj.orderStatus!="未装车"&&dataObj.orderStatus!="待货主确认装车"&&dataObj.orderStatus!="货主驳回装车信息"&&dataObj.orderStatus!="待平台确认装车"&&dataObj.orderStatus!="平台驳回装车信息"&&dataObj.orderStatus!="运输中"&&dataObj.orderStatus!="已终止"'>
@@ -154,7 +170,13 @@
 				<view class='row-between'>
 					<view class=" gray">卸车照片</view>
 					<view class="flex">
-						<u--image :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in xcPhoneList"></u--image>
+						<u--image @click='ylImg(xcPhoneList)' :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in xcPhoneList"></u--image>
+					</view>
+				</view>
+				<view class='row-between'>
+					<view class=" gray">回单照片</view>
+					<view class="flex">
+						<u--image @click='ylImg(hdPhoneList)' :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in hdPhoneList"></u--image>
 					</view>
 				</view>
 			</view>
@@ -180,7 +202,7 @@
 			</view>
 		</view>
 		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :confirmText='confirmText'
-			:closeOnClickOverlay='true' :showCancelButton='true' @confirm="confirmClick" @close="cancelClick"
+			:closeOnClickOverlay='true' :showCancelButton='showCancelButton' @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"
@@ -191,16 +213,49 @@
 				v-if='isShowTerminationReason'>
 			</u--textarea>
 		</u-modal>
+		<u-popup :show="show" mode="bottom" @close="close" @open="open">
+			<view class="">
+				<view>
+					<image style='width:12px;height:12px;' @click='closepopup' class='close'  src="../../static/images/order/guanbi@3x.png" mode=""></image>
+					<!-- <u-icon @click="closepopup" class='close' name="close" size="20"></u-icon> -->
+				</view>
+				
+				<view style='fon-size:34rpx;margin-bottom:20px;text-align:center;font-weight: 600;'>确认终止订单</view>
+				<view style="margin: 0 auto;">
+		           	<u-radio-group iconPlacement="right" v-model="radiovalue1" placement="" v-if='isShowTerminationReason' >
+		           	<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>
+		           </view>
+				   <view style='border-top:10px solid #F2F4F7;position:absolute;left:0;height:0;width:100%;'></view>
+		           <view style='padding:40rpx 0 30rpx;'>终止原因描述</view>
+		           <u--textarea class="row" v-model="value2" placeholder="终止原因描述" count maxlength='50'
+		           	v-if='isShowTerminationReason'>
+		           </u--textarea>
+				   <view class='termination' :class="{'active':value2.length>0}" @click='confirmClick'>终止</view>
+			</view>
+		           
+		</u-popup>
+		<u-modal :show="moneyShow" title="提示" :content='freightContent' showCancelButton @confirm="moneyClick" @close="moneyclose"
+			@cancel="moneyclose"></u-modal>
 		<u-toast ref="uToast"></u-toast>
 	</view>
+	</view>
 </template>
 
 <script>
+	import uniPopup from '@/components/uni-popup/uni-popup.vue'
 	export default {
+		components:{
+			uniPopup
+		},
 		data() {
 			return {
 				zcPhoneList:[],
 				xcPhoneList:[],
+				hdPhoneList:[],
+				show:false,
 				carrierInfo:{},
 				freightInfo:{},
 				cyinfoStatus: '未装车',
@@ -209,6 +264,7 @@
 				status1:false,
 				status2:false,
 				id: '',
+				showCancelButton:true,
 				value2: '',
 				radiolist1: [{
 						name: '已与货主协商',
@@ -231,6 +287,9 @@
 				alertTitle: '确定终止订单?',
 				alertContent: "",
 				isShowAlert: false,
+				moneyShow:false,
+				freightContent:"",
+				tips:""
 			}
 
 		},
@@ -241,6 +300,63 @@
 			this.getList()
 		},
 		methods: {
+			open() {
+			          // console.log('open');
+			},
+			close() {
+				this.show = false
+			          // console.log('close');
+			},
+			cargoOwner(_obj){
+				// uni.$u.route('/pages/order/evaluateList');
+				// console.log("查看---------------",_obj)
+				uni.$u.route('/pages/order/cargoOwnerSee',_obj)
+			},
+			moneyclose(){
+				this.moneyShow=false
+			},
+			moneyClick(){
+				this.$request.baseRequest('post', '/orderInfo/api/confirmFreight', {
+						id: this.dataObj.id,
+						 typeFlag:2,
+						 examineFlag:this.tips
+					}).then(res => {
+						if (res.code == 200) {
+							this.$refs.uToast.show({
+								type: 'success',
+								message: this.tips == 1?"确认成功":"驳回成功",
+							})
+							this.moneyShow=false
+							this.getList()
+						}
+					})
+			},
+			checkfreight(num){
+				this.tips = num
+				if(num == 1){
+					this.freightContent = "合计应付运费 "+ this.dataObj.hyCarrierInfo.totalFreight + " 元,确定无误?"
+				}else{
+					this.freightContent = "确认驳回运费信息?"
+				}
+				this.moneyShow=true
+			},
+			ylImg(src) {
+				uni.previewImage({
+					urls: src,
+					longPressActions: {
+						itemList: ['发送给朋友', '保存图片', '收藏'],
+						success: function(data) {
+							console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
+						},
+						fail: function(err) {
+							console.log(err.errMsg);
+						}
+					}
+				});
+			},
+			closepopup(){
+				this.show=false
+			},
 			lookContract(){
 				uni.downloadFile({
 				  url: this.dataObj.driverContractUrl,
@@ -292,7 +408,6 @@
 				// this.lookAlert = true
 				uni.$u.route('/pages/order/signContract',{obj:encodeURIComponent(JSON.stringify(this.dataObj))} 
 				);
-				
 			},
 			// 完结
 			closed() {
@@ -320,53 +435,79 @@
 					});
 			},
 			confirmLoading() {
-				uni.$u.route('/pages/order/confirmLoading', {
-					obj: JSON.stringify({id:this.id,carrierId:this.dataObj.hyCarrierInfo.id}),
-				});
+				var that = this
+				this.$request.baseRequest('get', '/driverCarInfo/selectDriverCar', {
+						commonId: uni.getStorageSync('userInfo').id,
+						searchType:2
+					}).then(res => {
+						if (res.code == '200') {
+							if(res.data&&res.data.length>0){
+								uni.$u.route('/pages/order/confirmLoading', {
+									obj: JSON.stringify({id:that.id,carrierId:that.dataObj.hyCarrierInfo.id}),
+								});
+							}else{
+								that.alertTitle = '尚未添加车辆!'
+								that.showCancelButton = false
+								that.confirmText = '立即添加'
+								that.isShowAlert = true
+							}
+						} else {
+							uni.$u.toast(res.message);
+						}
+					})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
+				
 				// uni.$u.route('/pages/order/confirmLoading', {id:this.id});
 			},
 			confirmUnLoading() {
-				let item = this.dataDetails
-				uni.$u.route('/pages/order/confirmUnloading', item);
+				let item = this.dataObj
+				uni.$u.route('/pages/order/confirmUnloading', {obj:JSON.stringify(item)});
 			},
 			confirmClick() {
-				let  that = this
-				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,
-						terminator:1
-					}).then(res => {
-						this.isShowAlert = false
-						// this.mescroll.resetUpScroll()
+				if(this.alertTitle == '尚未添加车辆!'){
+					uni.$u.route('/pages/mine/manageVehicles/index');
+				}else{
+					let  that = this
+					if (this.radiovalue1 == '其他' && !this.value2) {
 						this.$refs.uToast.show({
-							type: 'success',
-							message: "提交成功!",
-							complete() {
-								that.getList()
-							}
+							type: 'error',
+							message: "请填写终止原因描述!",
 						})
-					})
-					.catch(res => {
-						uni.$u.toast(res.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,
+							terminator:1
+						}).then(res => {
+							this.show=false
+							this.isShowAlert = false
+							// this.mescroll.resetUpScroll()
+							this.$refs.uToast.show({
+								type: 'success',
+								message: "提交成功!",
+								complete() {
+									that.getList()
+								}
+							})
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
+				}
 			},
 			cancelClick() {
 				this.isShowAlert = false
@@ -374,13 +515,19 @@
 			stop() {
 				let item = this.dataObj
 				// 货主接单
+				this.id = item.id
 				if (item.orderStatusKey == 1) {
-					this.isShowTerminationReason = false
-				} else {
-					this.isShowTerminationReason = true
+						this.isShowTerminationReason = false
+					} else {
+						this.isShowTerminationReason = true
+					}
+				if(item.orderStatus=='未装车'){
+					
+					
+					this.show = true
+				}else{
+					this.isShowAlert=true
 				}
-				this.id = item.id
-				this.isShowAlert = true
 			},
 			toPhone(){
 				uni.makePhoneCall({
@@ -401,7 +548,12 @@
 							if(this.carrierInfo.loadingImg&&this.carrierInfo.loadingImg.length>0){
 								this.zcPhoneList = this.carrierInfo.loadingImg.split(',')
 							}
-							
+							if(this.carrierInfo.unloadingImg&&this.carrierInfo.unloadingImg.length>0){
+								this.xcPhoneList = this.carrierInfo.unloadingImg.split(',')
+							}
+							if(this.carrierInfo.receiptImg&&this.carrierInfo.receiptImg.length>0){
+								this.hdPhoneList = this.carrierInfo.receiptImg.split(',')
+							}
 							// if(res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="已终止"){
 							// 	this.status1 = true
 							// }
@@ -452,6 +604,7 @@
 			.back {
 				position: absolute;
 				left: 20rpx;
+				width:18px;height:18px;
 
 			}
 		}
@@ -608,4 +761,28 @@
 	/deep/.u-modal__content {
 		flex-direction: column;
 	}
+	/deep/.u-popup__content{
+		border-radius: 10px;
+		// padding:20px;
+	}
+	/deep/.u-radio{
+		margin:40rpx 0;
+	}
+	.close{
+		position:absolute;
+		right:20px;
+		top:26px;
+	}
+	.termination{
+		background:#F1F3F6;
+		color:#C5CAD4;
+		padding:10px;
+		border-radius:30px;
+		text-align: center;
+		margin-top:30rpx;
+	}
+	.termination.active{
+		background: #2772FB;
+		color: white;
+	}
 </style>

+ 100 - 31
pages/order/signContract.vue

@@ -49,14 +49,14 @@
 				完善信息
 			</view>
 			<view class='row-between'>
-				<view class="gray">运费</view>
+				<view class="gray">运费(元/车)</view>
 				<!-- <view class="">{{dataDetails.freight}}{{dataDetails.illingMethod==0?'元/吨':'元/车'}}</view> -->
 				<!-- 				<view class="flex"><input type="text" placeholder="请输入运费" v-model="dataDetails.freight"
 						class="text-align-right yf-input">{{dataDetails.freight}}元/车</view> -->
 				<view class="flex">
 					<u--input placeholder="请输入运费" border="none" type="number" v-model="dataDetails.freight"
-						inputAlign='right' clearable></u--input>
-					<!-- <span>元/车</span> -->
+						inputAlign='right' clearable @input="preMoney"></u--input>
+					<!-- <span> 元/车</span> -->
 				</view>
 			</view>
 			<view class='row-between'>
@@ -79,7 +79,7 @@
 				</view>
 			</view>
 			<view class='row-between'>
-				<view class="gray">装车净重</view>
+				<view class="gray">装车净重(吨)</view>
 				<view class="flex">
 					<u--input placeholder="请输入装车净重" border="none" v-model="dataDetails.weight" inputAlign='right'
 						clearable></u--input>
@@ -88,7 +88,7 @@
 			<view class='row-between'>
 				<view class="gray">运输开始日期</view>
 				<view class="">
-					<view @click="dateShow">{{dataDetails.startDates?dataDetails.startDates:'请选择运输开始日期'}}
+					<view @click="dateShow">{{dataDetails.tranStartDate?dataDetails.tranStartDate:'请选择运输开始日期'}}
 					</view>
 
 					<u-calendar :show="startShow" mode="single" @confirm="startDate" @close="startShow= false">
@@ -100,7 +100,7 @@
 				<view class="">
 					<!-- 	<u--input placeholder="请输入内容" border="none" v-model="dataDetails.value" inputAlign='right'
 						clearable></u--input> -->
-					<view class="" @click="endShow = true">{{dataDetails.endDates?dataDetails.endDates:'请选择运输截止日期'}}
+					<view class="" @click="endShow = true">{{dataDetails.tranEndDate?dataDetails.tranEndDate:'请选择运输截止日期'}}
 					</view>
 					<u-calendar :show="endShow" mode="single" @confirm="endDate" @close="endShow= false"></u-calendar>
 				</view>
@@ -122,19 +122,17 @@
 			<view class='row-between'>
 				<view class="gray">装车后预付款</view>
 				<view class="">
-					
-					
-					<u--input placeholder="请输入装车后预付款" v-if="dataDetails.freightAdvance == 1" border="none"
-						v-model="dataDetails.loadingAdvancePayment" inputAlign='right' clearable disabled></u--input>
-					<u--input placeholder="请输入装车后预付款" v-else border="none" v-model="dataDetails.loadingAdvancePayment"
+					<u--input placeholder="自动获取,不可编辑" v-if="dataDetails.freightAdvance == 1" border="none"
+						v-model="dataDetails.advanceCharge" inputAlign='right' clearable disabled></u--input>
+					<u--input placeholder="请输入装车后预付款" v-else border="none" v-model="dataDetails.advanceCharge"
 						inputAlign='right' clearable></u--input>
 				</view>
 			</view>
 			<view class='row-between'>
-				<view class="gray">收款账户</view>
-				<view class="" @click="collection">
+				<view style='width:200px;' class="gray">收款账户</view>
+				<view style='word-wrap:break-word;word-break:normal;' class="" @click="collection">
 					{{dataDetails.bankDeposit?dataDetails.bankDeposit:"请选择收款账户"}}
-					{{dataDetails.bankCard?dataDetails.bankCard.substring(dataDetails.bankCard.length - 4):""}}
+					(尾号{{dataDetails.bankCard?dataDetails.bankCard.substring(dataDetails.bankCard.length - 4):""}})
 				</view>
 			</view>
 
@@ -205,7 +203,7 @@
 				lineSize: 5, // 笔记倍数
 				value: true,
 				dataDetails: {
-					carrierInfo: {},
+					carrierInfo: {carNo:'',loadingAdvancePayment:''},
 					serviceCharge:'50'
 				},
 				radiolist1: [{
@@ -220,6 +218,7 @@
 				startShow: false,
 				endShow: false,
 				contractCheck:false,//判断合同是否提交
+				proportion:"",//垫付比例
 
 
 			};
@@ -247,13 +246,50 @@
 				
 				})
 			}
+			this.$request.baseRequest('get', '/commonUser/getSignatureAddress', {
+				phone: this.userInfo.phone,
+				identification:1
+			}).then(res => {
+				if(res.data){
+					if(res.data.signImg){
+						// 获取远程图片,canvas无法直接绘制远程图片
+						uni.getImageInfo({
+							src:res.data.signImg,
+							success(res){
+								var ctx=uni.createCanvasContext('handWriting')
+								ctx.drawImage(res.path,0,0,330,244)
+								ctx.save()
+								ctx.draw()
+							}
+						})
+					}
+				}
+			})
+			
+			console.log(this.dataDetails)
+			this.$set(this.dataDetails.carrierInfo,'carNo',this.dataDetails.carNumber)
+			this.preMoney()
+			// this.$set(this.dataDetails,'advanceCharge',this.dataDetails.advanceCharge)
+			// this.$set(this.dataDetails.carrierInfo,'carNo',this.dataDetails.carNo)
+			console.log(this.dataDetails)
 		},
 		onLoad(options) {
+			
 			this.carList = []
 			that = this
 			// this.dataDetails = JSON.parse(options.obj)
-			this.dataDetails = JSON.parse(decodeURIComponent(options.obj))
+			
+			this.dataDetails = JSON.parse(options.obj)
+			// console.log(this.dataDetails.carNo,this.dataDetails.carrierInfo)
 			// this.dataDetails.advanceFreightService = '平台垫付运费'
+			this.dataDetails = JSON.parse(decodeURIComponent(options.obj))
+			if(this.dataDetails.hyCarrierInfo){
+				this.dataDetails.weight=this.dataDetails.hyCarrierInfo.loadingWeight
+			}
+			if(this.dataDetails.freightAdvance == 1){
+				this.proportion = this.dataDetails.driverAdvancePayment >= this.dataDetails.ownerAdvancePayment ? this.dataDetails.ownerAdvancePayment:this.dataDetails.driverAdvancePayment
+			}
+			// console.log(this.dataDetails)
 			this.dataDetails.carrierInfo = {}
 			this.ctx = uni.createCanvasContext("handWriting");
 			this.$nextTick(() => {
@@ -269,8 +305,8 @@
 				title: '加载中'
 			})
 			this.$request.baseRequest('get', '/driverCarInfo/selectDriverCar', {
-					driverId: that.userInfo.driverId,
-					// driverId:this.firstAuthentication.id
+					// driverId: that.userInfo.driverId,
+					commonId:this.userInfo.id
 				}).then(res => {
 					if (res.code == '200') {
 						uni.hideLoading()
@@ -287,13 +323,17 @@
 					} else {
 						uni.$u.toast(res.message);
 					}
-
 				})
 				.catch(res => {
 					uni.$u.toast(res.message);
 				});
 		},
 		methods: {
+			preMoney(){
+				if(this.dataDetails.freightAdvance == 1){
+					this.dataDetails.advanceCharge = this.dataDetails.freight * this.proportion
+				}
+			},
 			collection() {
 				uni.$u.route('/pages/order/bankCard');
 			},
@@ -301,7 +341,6 @@
 				this.dataDetails.carrierInfo.carNo = e.value[0]
 				for (let i = 0; i < this.carlistCopy.length; i++) {
 					if (e.value[0] == this.carlistCopy[i].carNumber) {
-
 						this.dataDetails.trailerNumber = this.carlistCopy[i].guaCarNumber
 					}
 				}
@@ -313,6 +352,7 @@
 			carClick() {
 				this.showCarList = true
 			},
+			
 			//车牌号弹出键盘
 			handleShowKeyboard() {
 				if (!this.dataDetails.carrierInfo.carNo) {
@@ -347,10 +387,10 @@
 			},
 			startDate(e) {
 				this.startShow = false
-				this.dataDetails.startDates = e[0]
+				this.dataDetails.tranStartDate = e[0]
 			},
 			endDate(e) {
-				this.dataDetails.endDates = e[0]
+				this.dataDetails.tranEndDate = e[0]
 				this.endShow = false
 			},
 			submit(num) {
@@ -363,9 +403,26 @@
 					_obj.submitFlag = 2
 					}
 					if (!that.isScaleStart) {
+						if(!this.userInfo.signImg){
+							that.$refs.uToast.show({
+								type: 'error',
+								message: "手写签名不能为空!",
+							})
+							return
+						}
+					
+				}
+				if (uni.$u.test.isEmpty(that.dataDetails.carrierInfo.carNo)) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "车牌号不能为空!",
+					})
+					return
+				}
+				if (uni.$u.test.isEmpty(that.dataDetails.weight)) {
 					that.$refs.uToast.show({
 						type: 'error',
-						message: "手写签名不能为空!",
+						message: "装车净重不能为空!",
 					})
 					return
 				}
@@ -376,14 +433,14 @@
 					})
 					return
 				}
-				if (uni.$u.test.isEmpty(that.dataDetails.startDates)) {
+				if (uni.$u.test.isEmpty(that.dataDetails.tranStartDate)) {
 					that.$refs.uToast.show({
 						type: 'error',
 						message: "运输起始日期不能为空!",
 					})
 					return
 				}
-				if (uni.$u.test.isEmpty(that.dataDetails.endDates)) {
+				if (uni.$u.test.isEmpty(that.dataDetails.tranEndDate)) {
 					that.$refs.uToast.show({
 						type: 'error',
 						message: "运输截止日期不能为空!",
@@ -404,19 +461,25 @@
 					})
 					return
 				}
-				if (uni.$u.test.isEmpty(that.dataDetails.loadingAdvancePayment)) {
+				console.log(that.dataDetails.advanceCharge)
+				if (uni.$u.test.isEmpty(that.dataDetails.advanceCharge)&&that.dataDetails.advanceCharge!=0) {
 					that.$refs.uToast.show({
 						type: 'error',
 						message: "装车后预付款不能为空!",
 					})
 					return
 				}
-				
-				
+				if (uni.$u.test.isEmpty(that.dataDetails.bankDeposit)) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "收款账号不能为空!",
+					})
+					return
+				}
 				
 				_obj.trailerNumber = that.dataDetails.trailerNumber
-				_obj.startDates = that.dataDetails.startDates
-				_obj.endDates = that.dataDetails.endDates
+				_obj.tranStartDate = that.dataDetails.tranStartDate
+				_obj.tranEndDate = that.dataDetails.tranEndDate
 
 				_obj.contactPersonName = that.dataDetails.driverName
 				_obj.contactPersonPhone = that.dataDetails.driverPhone
@@ -425,7 +488,7 @@
 				_obj.id = that.dataDetails.id
 				_obj.carNumber = that.dataDetails.carrierInfo.carNo
 				_obj.weight = that.dataDetails.weight
-				_obj.loadingAdvancePayment = that.dataDetails.loadingAdvancePayment
+				_obj.advanceCharge = that.dataDetails.advanceCharge
 				_obj.typeFlag = 2
 				uni.canvasToTempFilePath({
 					canvasId: 'handWriting',
@@ -476,6 +539,9 @@
 													}
 												})
 												}
+											}else{
+												uni.$u.toast(res.message);
+												uni.hideLoading()
 											}
 										})
 									.catch(res => {
@@ -847,4 +913,7 @@
 		top: 120rpx;
 		left: 10rpx;
 	} */
+	// /deep/.uni-input-input:disabled {
+	//    background:#fff;
+	// }
 </style>

+ 12 - 9
pages/public/code.vue

@@ -113,6 +113,16 @@
 			submit(e) {
 				if (e.detail.value.length == 6) {
 					var that = this
+					that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+						driverPhone: this.phone,
+					}).then(res2 => {
+						if (res.data.authenticationStatus == '已禁用') {
+							that.$refs.uToast.show({
+								type: 'error',
+								message: "账号审核中!"
+							})
+							return
+						}
 					uni.showLoading({
 						title: '登录中',
 						mask: true
@@ -148,14 +158,6 @@
 										}
 									}
 								})
-								that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
-									driverPhone: this.phone,
-								}).then(res2 => {
-									if (res.data.statusFlag == '已禁用') {
-										this.isShowAlert = true
-										uni.hideLoading()
-										return
-									}
 									uni.setStorageSync('pcuserInfo', res.data)
 									uni.setStorageSync('userInfo', res.data)
 									uni.setStorageSync('firstAuthentication', res2.data)
@@ -177,7 +179,7 @@
 										url: '/pages/goodSource/index'
 									});
 									uni.hideLoading()
-								})
+								
 
 							} else {
 								uni.hideLoading()
@@ -195,6 +197,7 @@
 								duration: 2000
 							})
 						});
+					})
 				}
 			}
 

+ 26 - 14
pages/public/login.vue

@@ -22,10 +22,10 @@
 				<view style='position:relative;'>
 					<input placeholder-style="color:#AFB3BF" class='password' v-model='password' v-if="isShowPassword=='password'" placeholder="请输入密码" type="password">
 					<input placeholder-style="color:#AFB3BF" class='password' v-model='password' v-else type="text" placeholder="请输入密码">
-					<u-icon name="eye-fill" color="rgb(192, 196, 204)" size="24" @click="passWordStatus(1)"
-							v-if="isShowPassword=='password'"></u-icon>
-					<u-icon name="eye-off" color="rgb(192, 196, 204)" size="24" @click="passWordStatus(2)" v-else>
-						</u-icon>
+					<!-- <u-icon name="eye-off" color="rgb(192, 196, 204)" size="24" @click="passWordStatus(2)" v-else>
+						</u-icon> -->
+						<image class='yanjingicon' style='width:22px;height:22px;' @click="passWordStatus(1)" v-if="isShowPassword=='password'" src="../../static/xianshi.png" mode=""></image>
+						<image class='yanjingicon' style='width:22px;height:22px;' @click="passWordStatus(2)" v-else src="../../static/yioncang.png" mode=""></image>
 				</view>
 			</view>
 			<button :class='phone!=""&&password!=""?"active":""' @click='passlogin'
@@ -37,6 +37,7 @@
 				<view @click='gocode' style='flex:1;text-align:center;' class="Regular">验证码登录</view>
 			</view>
 		</view>
+		<u-toast ref="uToast"></u-toast>
 		 <u-modal :show="isShowAlert" :title="alertTitle" :closeOnClickOverlay='true' confirmText='退出登录' :showCancelButton='true' confirmColor='#2772FB'  @confirm="confirmClick" @close="cancelClick" @cancel="cancelClick"></u-modal>
 	</view>
 	</view>
@@ -136,7 +137,6 @@
 				this.isShowAlert = false
 			},
 			confirmClick(){
-				
 				if (uni.getSystemInfoSync().platform == 'ios'){
 				    plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
 				} else if (uni.getSystemInfoSync().platform == 'android'){
@@ -145,14 +145,24 @@
 			},
 			passlogin(e) {
 				var that = this
+				that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+					driverPhone: this.phone,
+				}).then(res => {
+					if (res.data.authenticationStatus == '已禁用') {
+						that.$refs.uToast.show({
+							type: 'error',
+							message: "账号审核中!"
+						})
+						
+					} else {
 				uni.showLoading({
 					title: '登录中',
 					mask: true
 				})
 				console.log("clinetId", this.clientId)
 				that.$request.baseRequest('get', '/commonUser/login', {
-						phone: this.phone,
-						password: this.password,
+						phone: that.phone,
+						password: that.password,
 						loginFlag: 2,
 						identification: 1
 					}).then(res => {
@@ -160,7 +170,7 @@
 							console.log("userInfo", res.data)
 							uni.setStorageSync('userInfo', res.data)
 							that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
-								reCommonId: this.userInfo.id,
+								reCommonId: that.userInfo.id,
 							}).then(res3 => {
 								if (res3.data) {
 									let name = 'myTip';
@@ -201,19 +211,19 @@
 												city: res.city,
 												area: res.district
 											}
-											this.$helper.gjList.push(_data)
-											uni.setStorageSync('mapGJ', this.$helper.gjList);
+											that.$helper.gjList.push(_data)
+											uni.setStorageSync('mapGJ', that.$helper.gjList);
 											// console.log('this.$helper.gjList')
 											// console.log(this.$helper.gjList)
-											console.log("条数", uni.getStorageSync('mapGJ').length)
+											// console.log("条数", uni.getStorageSync('mapGJ').length)
 											if (uni.getStorageSync('mapGJ').length > 100) {
 												console.log(JSON.stringify(uni.getStorageSync('mapGJ')) )
-												this.$request.baseRequest('post', '/hyOrderTravelPath/api/addInfo',  {
+												that.$request.baseRequest('post', '/hyOrderTravelPath/api/addInfo',  {
 															orderId:"cdae6ec34c2349768c490a9fefa03fb3",
 															longitudeLatitude:JSON.stringify(uni.getStorageSync('mapGJ'))   
 													}).then(res => {
 														uni.removeStorageSync('mapGJ');
-														this.$helper.gjList = []
+														that.$helper.gjList = []
 													})
 													.catch(res => {
 														uni.$u.toast(res.message);
@@ -270,6 +280,8 @@
 					.catch(res => {
 						uni.$u.toast(res.message);
 					});
+					}
+			})
 			},
 			gocode() {
 				uni.navigateTo({
@@ -309,7 +321,7 @@
 	page {
 		background: #fff;
 	}
-	.u-icon{
+	.yanjingicon{
 		position:absolute;
 		right:0;
 		top:50%;

+ 14 - 2
pages/public/loginOther.vue

@@ -112,9 +112,21 @@
 				})
 			},
 			gocode() {
+				var that = this
 				if (this.phone.length == 11 && /^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.phone)) {
-					uni.navigateTo({
-						url: '/pages/public/code?phone=' + this.phone
+					that.$request.baseRequest('get', '/cargoOwnerInfo/firstAuthentication', {
+						phone: this.phone,
+					}).then(res => {
+						if (res.data.authenticationStatus == '已禁用') {
+							that.$refs.uToast.show({
+								type: 'error',
+								message: "账号审核中!"
+							})
+						} else {
+							uni.navigateTo({
+								url: '/pages/public/code?phone=' + this.phone
+							})
+						}
 					})
 				} else if (this.phone.length == 0) {
 					uni.showToast({

+ 4 - 5
pages/public/register.vue

@@ -37,9 +37,9 @@
 				class='verificationCode'>注册</button>
 			<view
 				style='color:#6A6A6A;margin-top:10px;font-size:30rpx;display:flex;justify-content:center;align-items: center;'>
-				<u--image @click='consent'
+				<u--image style='margin-right:3px;position:relative;top:1rpx;' @click='consent'
 					:src="consentStatus==true?'../../static/images/mine/duihao@2x.png':'../../static/images/mine/wxz.png'"
-					width="17px" height="17px" style="margin:0 10rpx"></u--image>
+					width="17px" height="17px"></u--image>
 				已阅读并同意
 				<navigator
 					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/userAgreement.html"
@@ -188,7 +188,6 @@
 							}
 						})
 						.catch(res => {
-							console.log(res.data.message)
 							uni.showToast({
 								title: res.data.message,
 								icon: 'none',
@@ -214,7 +213,7 @@
 					})
 					return
 				}
-				if (this.verifyCode.length > 6) {
+				if (this.verifyCode.length != 6) {
 					uni.showToast({
 						title: '验证码错误',
 						icon: 'none',
@@ -224,7 +223,7 @@
 				}
 				if (this.password.length < 6) {
 					uni.showToast({
-						title: '请输入正确的密码格式',
+						title: '密码请输入6-16字符格式',
 						icon: 'none',
 						duration: 2000
 					})

+ 19 - 0
pages/riders/addFleet.vue

@@ -55,6 +55,7 @@
 <script>
 	// import Linkage from '@/components/gaojianghua-linkage/linkage.vue'
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js";
 	import itmisterAddressPicker from '@/components/itmister-address-picker/itmister-address-picker.nvue'
 	export default {
 		components: {
@@ -79,6 +80,7 @@
 		},
 		onLoad(options) {
 			this.id = options.id
+			this.get_camera_permission()
 			if (this.id) { //修改
 				uni.setNavigationBarTitle({
 					title: '设置'
@@ -90,6 +92,23 @@
 			this.submit()
 		},
 		methods: {
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			selectAddress() {
 				this.$refs.addressElone.show();
 			},

+ 18 - 15
pages/riders/fleetSee.vue

@@ -4,9 +4,9 @@
 		<view class="fleet_info">
 			<view class="fleet_top_css">
 				<view class="">
-					<u-avatar :src="fleetInfo.coverUrl" size="75" class="fleetInfo_img"  mode="circle"></u-avatar>
+					<u-avatar :src="fleetInfo.coverUrl" size="75" class="fleetInfo_img" mode="circle"></u-avatar>
 				</view>
-				<view class="fleetInfo_top_right"> 
+				<view class="fleetInfo_top_right">
 					<view class="fleetInfo_name">{{fleetInfo.fleetName}}
 						<!-- type 1队长 2队员 -->
 						<image v-if="type == 1" src="../../static/images/riders/shezhi.png" mode=""
@@ -16,7 +16,7 @@
 					<view class="fleetInfo_address">{{fleetInfo.province}}{{fleetInfo.city}}{{fleetInfo.area}}</view>
 				</view>
 				<view class="notice_title">公告</view>
-				<view class="flex notice_center" >
+				<view class="flex notice_center">
 					<view class="notice_text">{{fleetInfo.notice?fleetInfo.notice:"暂无公告"}}</view>
 					<image src="../../static/images/myimg/gengduo1.png" mode="" @click="noticeSee"
 						style="width: 18rpx;height: 24rpx;margin:10rpx 0 0 20rpx;"></image>
@@ -25,7 +25,7 @@
 				<view class="introduce_info" @click="seeInfo">
 					{{fleetInfo.fleetProfile}}
 				</view>
-				<u-popup :show="seeInfoShow" @close="seeInfoClose" @open="seeInfo" round="20" >
+				<u-popup :show="seeInfoShow" @close="seeInfoClose" @open="seeInfo" round="20">
 					<view class="popUp">
 						<view class="fleet_introduce_css">车队简介</view>
 						<text>{{fleetInfo.fleetProfile}}</text>
@@ -42,7 +42,7 @@
 					</view>
 				</view>
 				<view class="flex member_avatar">
-					<!-- <view v-for="(item,index) in 4" class="member_item" :key="index"
+					<view v-for="(item,index) in 4" class="member_item" :key="index"
 						v-if="fleetInfo.fleetMemberInfoList[index]">
 						<u-avatar
 							:src="fleetInfo.fleetMemberInfoList[index].driverPortrait"
@@ -50,7 +50,7 @@
 						<view class="member_name">
 							{{fleetInfo.fleetMemberInfoList[index].driverNickname}}
 						</view>
-					</view> -->
+					</view>
 					<view class="del" @click="setUp('/pages/riders/setMember',1)" v-if="type == 1">
 						<view class="del_img">—</view>
 						<view class="member_name">删除</view>
@@ -97,7 +97,7 @@
 		</chunLei-popups> -->
 		<u-toast ref="uToast"></u-toast>
 		<u-modal :show="quitShow" :title="alertTitle" :closeOnClickOverlay='true' :showCancelButton='true'
-			confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick" @cancel="cancelClick" ></u-modal>
+			confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick" @cancel="cancelClick"></u-modal>
 	</view>
 </template>
 
@@ -109,11 +109,13 @@
 				type: "",
 				id: "",
 				fleetId: "",
-				fleetInfo: {},
+				fleetInfo: {
+					fleetMemberInfoList:[],
+				},
 				quitShow: false,
 				alertTitle: "",
-				seeInfoShow:false,
-				four:4
+				seeInfoShow: false,
+				four: 4
 			}
 		},
 		onShow() {
@@ -130,7 +132,7 @@
 			seeInfo() {
 				this.seeInfoShow = true
 			},
-			seeInfoClose(){
+			seeInfoClose() {
 				this.seeInfoShow = false
 			},
 			cancelClick() {
@@ -185,10 +187,9 @@
 					this.alertTitle = "确定退出车队?"
 				}
 				this.quitShow = true
-
 			},
 			noticeSee() {
-				if(!this.fleetInfo.notice){
+				if (!this.fleetInfo.notice) {
 					this.$refs.uToast.show({
 						type: 'error',
 						message: "暂无公告!",
@@ -326,9 +327,11 @@
 				-webkit-line-clamp: 3;
 				/** 显示的行数 **/
 			}
-			.popUp{
+
+			.popUp {
 				padding: 60rpx 30rpx;
-				.fleet_introduce_css{
+
+				.fleet_introduce_css {
 					text-align: center;
 					margin-bottom: 40rpx;
 					font-size: 36rpx;

+ 192 - 53
pages/riders/index.vue

@@ -12,7 +12,7 @@
 					height="35px" @click="myPage"></u--image>
 			</view>
 		</view>
-		<view class="driver" v-show="indexbtn == 1">
+		<view class="driver" v-if="indexbtn == 1">
 			<view class="flex screen">
 				<view @click="selectAddress(1)" class="screen_item">
 					<view class="screen_sign sign1">装</view>
@@ -28,47 +28,50 @@
 				<itmister-address-picker-other ref="addressEltwo" :wholeCountry="true"
 					@confirmChange="confirmChangeTwo"></itmister-address-picker-other>
 			</view>
-			<view class="route" >
-				<view v-for="(item,index) in routeData">
-					<view class="flex route_item">
-						<view style="width: 20%;">
-							<u-avatar :src="item.driverPortrait" size="60"></u-avatar>
-						</view>
-						<view style="width: 80%;">
-							<view class="flex">
-								<view class="driver_name">
-									{{item.driverNickname}}
-								</view>
-								<view class="driver_invite">
-									<view class="route_invite" style="margin-left: 30px;" @click="invitation(item)">
-										<image src="../../static/images/riders/yaoqing.png" mode=""
-											style="width: 26rpx;height: 26rpx;margin-rigth:10rpx;"></image>邀请
+			<view class="route">
+				<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
+					<view v-for="(item,index) in routeData">
+						<view class="flex route_item">
+							<view style="width: 20%;">
+								<u-avatar :src="item.driverPortrait" size="60"></u-avatar>
+							</view>
+							<view style="width: 80%;">
+								<view class="flex">
+									<view class="driver_name">
+										{{item.driverNickname}}
 									</view>
+									<view class="driver_invite">
+										<view class="route_invite" style="margin-left: 30px;" @click="invitation(item)">
+											<image src="../../static/images/riders/yaoqing.png" mode=""
+												style="width: 26rpx;height: 26rpx;margin-rigth:10rpx;"></image>邀请
+										</view>
+									</view>
+									<u-picker :show="fleetShow" :columns="columns" @cancel="fleetClose"
+										@confirm="invitationCheng">
+									</u-picker>
+								</view>
+								<view class="address" v-for="(items,index) in item.startAdress">
+									<span class="spots spot1"></span>
+									{{item.startAdress[index]}}
+									<!-- {{item.sendCity ? item.sendCity: item.sendProvince }}{{item.sendArea}} -->
+									<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'>
+									</image>
+									<span class="spots spot2"></span>
+									{{item.endAdress[index]}}
+									<!-- {{item.unloadCity ? item.unloadCity: item.unloadProvince }}{{item.unloadArea}} -->
 								</view>
-								<u-picker :show="fleetShow" :columns="columns" @cancel="fleetClose"
-									@confirm="invitationCheng">
-								</u-picker>
-							</view>
-							<view class="address" v-for="(items,index) in item.startAdress">
-								<span class="spots spot1"></span>
-								{{item.startAdress[index]}}
-								<!-- {{item.sendCity ? item.sendCity: item.sendProvince }}{{item.sendArea}} -->
-								<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'></image>
-								<span class="spots spot2"></span>
-								{{item.endAdress[index]}}
-								<!-- {{item.unloadCity ? item.unloadCity: item.unloadProvince }}{{item.unloadArea}} -->
 							</view>
 						</view>
 					</view>
-				</view>
-				<u-loadmore :status="status"  :nomore-text="nomoreText" />
+					<!-- <u-loadmore :status="status" :nomore-text="nomoreText" /> -->
+				</mescroll-body>
 			</view>
-			
+
 			<!-- <view v-if="routeData.length == 0" style="background: #FFFFFF;text-align: center;padding-top: 20rpx;">
 				暂无数据
 			</view> -->
 		</view>
-		<view class="riders" v-show="indexbtn == 2">
+		<view class="riders" v-if="indexbtn == 2">
 			<view class="flex riders_top">
 				<view @click="selectChange" class="riders_city">{{city ? city : province}}</view>
 				<itmister-address-picker ref="addressElthree" :showCheck="false" @confirmChange="confirmChangethree">
@@ -77,6 +80,7 @@
 					maxlength="15"></u-search>
 			</view>
 			<view class="fleet">
+				<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
 				<view v-for="(item,index) in formData" class="flex">
 					<view class="fleet_item">
 						<view class="flex">
@@ -114,7 +118,8 @@
 						</view>
 					</view>
 				</view>
-				<u-loadmore :status="status"  :nomore-text="nomoreText"  />
+				<!-- <u-loadmore :status="status" :nomore-text="nomoreText" /> -->
+					</mescroll-body>
 			</view>
 
 			<!-- <view v-if="formData.length == 0" style="background: #FFFFFF;text-align: center;">
@@ -129,9 +134,11 @@
 </template>
 
 <script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import itmisterAddressPicker from '@/components/itmister-address-picker/itmister-address-picker.nvue'
 	import itmisterAddressPickerOther from '@/components/itmister-address-picker/itmister-address-picker-other.nvue'
 	export default {
+		mixins: [MescrollMixin], // 使用mixin
 		components: {
 			itmisterAddressPicker,
 			itmisterAddressPickerOther
@@ -175,7 +182,8 @@
 					paddingTop: "0",
 				},
 				status: 'loadmore',
-				 nomoreText: '实在没有了'
+				nomoreText: '实在没有了',
+				mescroll:{}
 			}
 		},
 		created() {},
@@ -203,12 +211,119 @@
 			}
 			this.commonId = uni.getStorageSync("firstAuthentication").commonId
 			this.checking()
-			this.getList()
+			// this.getList()
 		},
 		onLoad() {},
 		methods: {
-			lookfleet(item){
-				uni.$u.route("/pages/riders/fleetSee?fleetId="+item.id)
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			downCallback() {
+				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
+				// 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )     
+				this.mescroll.resetUpScroll()
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+				console.log(page)
+				// 此处可以继续请求其他接口
+				if (page.num == 1) {
+					this.routeData = []
+					this.formData = []
+					// 请求其他接口...
+				}
+				// 如果希望先请求其他接口,再触发upCallback,可参考以下写法
+				// if(!this.isInitxx){
+				// 	apiGetxx().then(res=>{
+				// 		this.isInitxx = true
+				// 		this.mescroll.resetUpScroll() // 重新触发upCallback
+				// 	}).catch(()=>{
+				// 		this.mescroll.endErr()
+				// 	})
+				// 	return // 此处return,先获取xx
+				// }
+
+				//联网加载数据
+				this.status = 'loading';
+				if (this.indexbtn == 1) {
+					// if(this.sendInfo.sendProvince == "北京"||this.sendInfo.sendProvince == "重庆"||this.sendInfo.sendProvince == "天津"||this.sendInfo.sendProvince == "上海"){
+					// 	this.sendInfo.sendCity = this.sendInfo.sendProvince
+					// 	this.sendInfo.sendProvince = ""
+					// }
+					if (this.unloadInfo.unloadProvince == "全国") {
+						this.unloadInfo.unloadProvince = ""
+					}
+					this.$request.baseRequest('get', '/commonRoute/driverList', {
+							pageSize: page.size,
+							currentPage: page.num,
+							sendProvince: this.sendInfo.sendProvince,
+							sendCity: this.sendInfo.sendCity,
+							sendArea: this.sendInfo.sendArea,
+							unloadProvince: this.unloadInfo.unloadProvince,
+							unloadCity: this.unloadInfo.unloadCity,
+							unloadArea: this.unloadInfo.unloadArea
+						}).then(res => {
+							if (res.code == 200) {
+								if (page.num == 1) {
+									this.routeData = []
+									this.formData = []
+								}
+								this.routeData = this.routeData.concat(res.data.records); //追加新数据
+								
+								for (let i = 0; i < this.routeData.length; i++) {
+									if (this.routeData[i].startAdress) {
+										this.routeData[i].startAdress = this.routeData[i].startAdress.split(",")
+									}
+									if (this.routeData[i].endAdress) {
+										this.routeData[i].endAdress = this.routeData[i].endAdress.split(",")
+									}
+								}
+								this.$forceUpdate()
+								this.mescroll.endBySize(res.data.records.length, res.data.total);
+							}
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
+				} else {
+					let that = this
+					this.$request.baseRequest('get', '/fleetInfo/selectFleetInfo', {
+							commonId: this.commonId,
+							province: this.province, //省
+							city: this.city, //市
+							searchKeyWord: this.searchKeyWord,
+							pageSize: page.size,
+							currentPage: page.num,
+						}).then(res => {
+							if (page.num == 1) {
+								this.routeData = []
+								this.formData = []
+							}
+							this.formData = this.formData.concat(res.data.records); //追加新数据
+						
+							for (let i = 0; i < that.formData.length; i++) {
+								that.formData[i].textShow = false
+								if (that.formData[i].fleetUrl) {
+									that.formData[i].img = []
+									let imgList = that.formData[i].fleetUrl.split(",")
+									for (let j = 0; j < imgList.length; j++) {
+										that.formData[i].img.push({
+											url: imgList[j]
+										})
+									}
+								}
+							}
+							this.$forceUpdate()
+							this.mescroll.endBySize(res.data.records.length, res.data.total);
+
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
+				}
+			},
+			lookfleet(item) {
+				uni.$u.route("/pages/riders/fleetSee?fleetId=" + item.id)
 			},
 			checking() {
 				this.statusVal = uni.getStorageSync("firstAuthentication").authenticationStatus
@@ -338,14 +453,23 @@
 					return
 				}
 				this.sendInfo.sendProvince = address.province ? address.province : ''
-				this.sendInfo.sendCity = address.city ? address.city : ''
+				if(address.city=='天津'||address.city=='北京'||address.city=='上海'||address.city=='重庆'||address.city=='台湾'){
+					this.sendInfo.sendCity=''
+				}else{
+					this.sendInfo.sendCity = address.city ? address.city : ''
+				}
+				
 				this.sendInfo.sendArea = address.area ? address.area : ''
 				if (address.city == '全省') {
 					this.title1 = address.province
 					this.sendInfo.sendCity = ""
 					this.sendInfo.sendArea = ""
 				} else if (address.area == '全市') {
-					this.title1 = address.province + address.city
+					if(address.city=='天津'||address.city=='北京'||address.city=='上海'||address.city=='重庆'||address.city=='台湾'){
+						this.title1 = address.province
+					}else{
+						this.title1 = address.province + address.city
+					}
 					this.sendInfo.sendArea = ""
 				} else {
 					this.title1 = address.province + address.city + address.area;
@@ -355,22 +479,31 @@
 			},
 			confirmChangeTwo(address) {
 				this.unloadInfo.unloadProvince = address.province ? address.province : ''
-				this.unloadInfo.unloadCity = address.city ? address.city : ''
+				if(address.city=='天津'||address.city=='北京'||address.city=='上海'||address.city=='重庆'||address.city=='台湾'){
+					this.unloadInfo.unloadCity=''
+				}else{
+					this.unloadInfo.unloadCity = address.city ? address.city : ''
+				}
+				// this.unloadCity.unloadCity = address.city ? address.city : ''
 				this.unloadInfo.unloadArea = address.area ? address.area : ''
-			
+
 				if (address.city == '全省') {
 					this.title2 = address.province
 					this.unloadInfo.unloadCity = ""
 					this.unloadInfo.unloadArea = ""
 				} else if (address.area == '全市') {
-					this.title2 = address.province + address.city
+					if(address.city=='天津'||address.city=='北京'||address.city=='上海'||address.city=='重庆'||address.city=='台湾'){
+						this.title2 = address.province
+					}else{
+						this.title2 = address.province + address.city
+					}
 					this.unloadInfo.unloadArea = ""
 				} else {
-					if(address.province == '全国'){
+					if (address.province == '全国') {
 						this.title2 = address.province
-					}else{
+					} else {
 						this.title2 = address.province + address.city + address.area;
-						}
+					}
 				}
 				uni.setStorageSync("unloadInfo", this.unloadInfo)
 				this.getList()
@@ -430,6 +563,13 @@
 			getList() {
 				this.status = 'loading';
 				if (this.indexbtn == 1) {
+					// if(this.sendInfo.sendProvince == "北京"||this.sendInfo.sendProvince == "重庆"||this.sendInfo.sendProvince == "天津"||this.sendInfo.sendProvince == "上海"){
+					// 	this.sendInfo.sendCity = this.sendInfo.sendProvince
+					// 	this.sendInfo.sendProvince = ""
+					// }
+					if (this.unloadInfo.unloadProvince == "全国") {
+						this.unloadInfo.unloadProvince = ""
+					}
 					this.$request.baseRequest('get', '/commonRoute/driverList', {
 							pageSize: 10,
 							currentPage: 1,
@@ -450,12 +590,12 @@
 										this.routeData[i].endAdress = this.routeData[i].endAdress.split(",")
 									}
 								}
-								if(res.data.total == 0){
+								if (res.data.total == 0) {
 									this.status = 'nomore'
-								}else{
+								} else {
 									this.status = 'loadmore'
 								}
-								
+
 							}
 						})
 						.catch(res => {
@@ -484,9 +624,9 @@
 									}
 								}
 							}
-							if(res.data.total == 0){
+							if (res.data.total == 0) {
 								this.status = 'nomore'
-							}else{
+							} else {
 								this.status = 'loadmore'
 							}
 						})
@@ -505,7 +645,7 @@
 				this.show = false
 			},
 			replace() {
-				if (this.unloadInfo.unloadProvince == "全国") {
+				if (this.title2 == "全国") {
 					uni.$u.toast("发货地不可以是全国")
 					return
 				}
@@ -539,8 +679,7 @@
 			justify-content: flex-end;
 
 			.flex-end {
-				margin-top: 50rpx;
-				margin-right: 30rpx;
+				margin: 60rpx 30rpx 0 0;
 			}
 
 			.center_top {

+ 6 - 1
pages/riders/notice.vue

@@ -53,7 +53,12 @@
 					return
 				}
 				this.fleetInfo.flag = 1
-				this.$request.baseRequest('post', '/fleetInfo/api/editFleetInfo', this.fleetInfo).then(res => {
+				var data={
+					flag : 1,
+					notice:this.fleetInfo.notice,
+					id:this.fleetInfo.id
+				}
+				this.$request.baseRequest('post', '/fleetInfo/api/editFleetInfo', data).then(res => {
 						if (res.code == 200) {
 							this.$refs.uToast.show({
 								type: 'success',

+ 19 - 0
pages/riders/report.vue

@@ -25,6 +25,7 @@
 
 <script>
 	import uploadImage from '@/components/ossutil/uploadFile.js';
+	import permision from "@/js_sdk/wa-permission/permission.js";
 	export default{
 		data(){
 			return{
@@ -41,9 +42,27 @@
 		onShow(){},
 		onLoad(options){
 			this.fleetId = options.id
+			this.get_camera_permission()
 			this.getList()
 		},
 		methods:{
+			async get_camera_permission() {
+				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
+				if(photol == false){
+					uni.showModal({
+						title: '提示',
+						content: '您已经关闭相册权限,去设置',
+						success: function (res) {
+							if (res.confirm) {
+								permision.gotoAppPermissionSetting()
+									            // plus.runtime.openURL("app-settings:");
+							} else if (res.cancel) {
+								console.log('用户点击取消');
+							}
+						}
+					});	
+				}
+			},
 			submit(){
 				if (!this.reportInfo.content) {
 					this.$refs.uToast.show({

BIN
static/fh-no-network/no-network.png


BIN
static/images/dianhua.png


BIN
static/images/kefu.png


BIN
static/images/mine/addcar.png


BIN
static/images/mine/content.png


BIN
static/images/mine/edit.png


BIN
static/images/mine/sanchu.png


BIN
static/images/order/dianhua.png


BIN
static/images/order/guanbi.png


BIN
static/images/order/guanbi@3x.png


BIN
static/images/order/shangla.png


BIN
static/images/order/xiala.png


BIN
static/images/return.png


BIN
static/images/search_icon.png


BIN
static/xianshi.png


BIN
static/yioncang.png


+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-diy/beibei/mescroll-uni-option.js

@@ -27,7 +27,7 @@ const GlobalOption = {
 		zh: {
 			up: {
 				textLoading: '加载中 ...', // 加载中的提示文本
-				textNoMore: '-- 没有更多了~ --', // 没有更多数据的提示文本
+				textNoMore: ' 没有更多了~ ', // 没有更多数据的提示文本
 				empty: {
 					tip: '~ 暂无相关数据 ~' // 空提示
 				}

+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-uni-option.js

@@ -35,7 +35,7 @@ const GlobalOption = {
 			},
 			up: {
 				textLoading: '加载中 ...', // 加载中的提示文本
-				textNoMore: '-- 没有更多了~ --', // 没有更多数据的提示文本
+				textNoMore: ' 没有更多了~ ', // 没有更多数据的提示文本
 				empty: {
 					tip: '~ 空空如也 ~' // 空提示
 				}

+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js

@@ -35,7 +35,7 @@ const GlobalOption = {
 			},
 			up: {
 				textLoading: '加载中 ...', // 加载中的提示文本
-				textNoMore: '-- 没有更多了~ --', // 没有更多数据的提示文本
+				textNoMore: ' 没有更多了~ ', // 没有更多数据的提示文本
 				empty: {
 					tip: '~ 空空如也 ~' // 空提示
 				}

+ 83 - 42
util/request.js

@@ -1,13 +1,13 @@
 import * as config from '@/config'
 let baseUrl = config.def().baseUrlNew
 // 定义基础请求路径(后端服务器地址)
-const baseRequest = (method, url, data,header) => {
+const baseRequest = (method, url, data, header) => {
 	var contentheader = 'application/json'
 	if (header) {
 		contentheader = header
 	}
 	let baseDefaultOpts = {
-		url: baseUrl+url,
+		url: baseUrl + url,
 		// 请求接口地址
 		data: data,
 		// 传入请求参数
@@ -16,38 +16,79 @@ const baseRequest = (method, url, data,header) => {
 		header: {
 			'content-type': contentheader //'application/x-www-form-urlencoded; charset=UTF-8',
 		}
-		}
-		let promise = new Promise(function(resolve, reject) {
-			uni.request(baseDefaultOpts).then(
-				(res) => {
-					// console.log(JSON.stringify(res[1].data))
-						resolve(res[1].data)
-					// if(res[1].data.code == '200' || res[1].data.code == 200){
-					// 	// 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值(以项目实际情况为准)
-					// 	resolve(res[1].data)
-					// }
-					// if(res[1].data.code == '105' || res[1].data.code == 105){
-					// 	// 后端返回状态码为105则为未登录状态(以项目实际情况为准)
-					// 	uni.showToast({
-					// 		icon:'none',
-					// 	    title: '尚未登录',
-					// 	    duration: 2000 
-					// 	}); 
-					// 	// 尚未登录的逻辑处理
-					// 	return false
-					// }
-				}
-			).catch(
-				(response) => {
-					reject(response)
-				}
-			)
+	}
+	let promise = new Promise(function(resolve, reject) {
+		uni.getNetworkType({}).then((res) => {
+			console.log(res)
+			if (res[1].networkType === "none") {
+				uni.showToast({
+					icon: 'none',
+					title: '网络异常,请检查网络状况',
+					duration: 2000
+				});
+			} else {
+				uni.request(baseDefaultOpts).then(
+					(res) => {
+						// console.log(JSON.stringify(res[1].data))
+						// if(res[1].data.code == '200' || res[1].data.code == 200){
+						// 	// 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值(以项目实际情况为准)
+						// 	resolve(res[1].data)
+						// }else{
+						// 	uni.showToast({
+						// 		icon:'none',
+						// 	    title: res[1].data.message,
+						// 	    duration: 2000 
+						// 	}); 
+						// }
+						if (res[1]) {
+							if (res[1].data.code == '200' || res[1].data.code == 200) {
+								resolve(res[1].data)
+							}else{
+								resolve(res[1].data)
+								// uni.$u.toast(res[1].data.message);
+								// uni.showToast({
+								// 		icon:'none',
+								// 	    title: res[1].data.message,
+								// 	    duration: 2000 
+								// 	}); 
+							}
+						} else {
+							reject(response)
+							// uni.showToast({
+							// 	icon: 'none',
+							// 	title: '网络异常,请检查网络状况',
+							// 	duration: 2000
+							// });
+						}
+						// // 登录失败
+						// if(res[1].data.code == '11006' || res[1].data.code == 11006){
+						// 	reject(res[1].data)
+						// }
+						// if(res[1].data.code == '105' || res[1].data.code == 105){
+						// 	// 后端返回状态码为105则为未登录状态(以项目实际情况为准)
+						// 	uni.showToast({
+						// 		icon:'none',
+						// 	    title: '尚未登录',
+						// 	    duration: 2000 
+						// 	}); 
+						// 	// 尚未登录的逻辑处理
+						// 	return false
+						// }
+					}
+				).catch(
+					(response) => {
+						reject(response)
+					}
+				)
+			}
+
 		})
-		return promise	
+	})
+	return promise
 };
 
 //带Token请求
-const TokenRequest = (method, url, data,header) => {
+const TokenRequest = (method, url, data, header) => {
 	var contentheader = 'application/json'
 	if (header) {
 		contentheader = header
@@ -61,29 +102,29 @@ const TokenRequest = (method, url, data,header) => {
 	});
 	//此token是登录成功后后台返回保存在storage中的
 	let DefaultOpts = {
-		url: baseUrl+url,
+		url: baseUrl + url,
 		data: data,
 		method: method,
-	header: {
-		'content-type': contentheader ,
-		'Token': ac_token,
-	}
+		header: {
+			'content-type': contentheader,
+			'Token': ac_token,
+		}
 	}
 	let promise = new Promise(function(resolve, reject) {
 		uni.request(DefaultOpts).then(
 			(res) => {
 				console.log(JSON.stringify(res[1].data))
-				if(res[1].data.code == '200' || res[1].data.code == 200){
+				if (res[1].data.code == '200' || res[1].data.code == 200) {
 					// 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值(以项目实际情况为准)
 					resolve(res[1].data)
 				}
-				if(res[1].data.code == '105' || res[1].data.code == 105){
+				if (res[1].data.code == '105' || res[1].data.code == 105) {
 					// 后端返回状态码为105则为未登录状态(以项目实际情况为准)
 					uni.showToast({
-						icon:'none',
-					    title: '尚未登录',
-					    duration: 2000 
-					}); 
+						icon: 'none',
+						title: '尚未登录',
+						duration: 2000
+					});
 					// 尚未登录的逻辑处理
 					return false
 				}
@@ -100,4 +141,4 @@ export default {
 	baseUrl,
 	baseRequest,
 	TokenRequest
-}
+}

+ 1 - 1
websocket_sdk.js

@@ -149,7 +149,7 @@ export default class Websocket {
                         //     }
                         // })
 						uni.showToast({
-							title: "网络错误 请重新打开网络",
+							title: "网络错误,请检查网络状况",
 							icon: 'none'
 						})
                     }