Jelajahi Sumber

Merge branch 'master' of http://47.100.3.209:3000/gongdecai/wangluohuoyun-huozhuapp

# Conflicts:
#	pages/mine/company/addcompany.vue
zhongtianhaoyuan 2 tahun lalu
induk
melakukan
0e7bacac27
44 mengubah file dengan 1569 tambahan dan 671 penghapusan
  1. 84 314
      common/components/uni-rate.vue
  2. 45 0
      components/uni-popup/keypress.js
  3. 22 0
      components/uni-popup/message.js
  4. 50 0
      components/uni-popup/popup.js
  5. 16 0
      components/uni-popup/share.js
  6. 321 0
      components/uni-popup/uni-popup.vue
  7. 15 7
      pages/carSource/driverSee.vue
  8. 24 4
      pages/carSource/index.vue
  9. 42 0
      pages/mine/cargoowner/addEnerprise.vue
  10. 41 0
      pages/mine/cargoowner/editEnerprise.vue
  11. 22 0
      pages/mine/cargoowner/editpersonalinformation.vue
  12. 297 192
      pages/mine/company/addcompany.vue
  13. 3 1
      pages/mine/company/companyvideo.nvue
  14. 58 6
      pages/mine/company/editcompany.vue
  15. 17 1
      pages/mine/company/index.vue
  16. 3 1
      pages/mine/driverEvaluation.vue
  17. 4 3
      pages/mine/evaluate.vue
  18. 37 16
      pages/mine/index.vue
  19. 21 0
      pages/mine/manageBankCards/addBankCard.vue
  20. 2 3
      pages/order/addEvaluation.vue
  21. 12 5
      pages/order/driverDetail.vue
  22. 15 1
      pages/order/fk.vue
  23. 116 40
      pages/order/index.vue
  24. 15 1
      pages/order/jb.vue
  25. 23 9
      pages/order/map.nvue
  26. 132 9
      pages/order/orderDetails.vue
  27. 3 0
      pages/release/addAddress.vue
  28. 3 1
      pages/release/editRelease.vue
  29. 8 4
      pages/release/lookRelease.vue
  30. 38 1
      pages/release/release.vue
  31. 4 2
      pages/release/selectAddress.vue
  32. TEMPAT SAMPAH
      static/images/carSource/dianhua.png
  33. TEMPAT SAMPAH
      static/images/dianhua.png
  34. TEMPAT SAMPAH
      static/images/kefu.png
  35. TEMPAT SAMPAH
      static/images/order/guanbi@3x.png
  36. TEMPAT SAMPAH
      static/images/order/pingjia.png
  37. TEMPAT SAMPAH
      static/images/order/quanbuyewu.png
  38. TEMPAT SAMPAH
      static/images/order/right.png
  39. TEMPAT SAMPAH
      static/images/order/sousuo.png
  40. TEMPAT SAMPAH
      static/images/return.png
  41. TEMPAT SAMPAH
      static/images/xingxing.png
  42. TEMPAT SAMPAH
      static/images/xingxing_check.png
  43. TEMPAT SAMPAH
      static/mine/right.png
  44. 76 50
      util/request.js

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

@@ -1,361 +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>
-	// #ifdef APP-NVUE
-	const dom = uni.requireNativePlugin('dom');
-	// #endif
-	/**
-	 * 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: "#ffca3e"
+			attitude:{
+				type: Array,
+				default:function(){
+					return ['非常不满意,各方面都很差', '不满意,比较差', '一般,还需改善', '比较满意,仍可改善', '非常满意,无可挑剔']
+				}
 			},
-			disabledColor: {
-				// 星星禁用状态颜色
-				type: String,
-				default: "#c0c0c0"
+			is_attitude:{
+				type: [Boolean, String],
+				default: false
 			},
 			size: {
 				// 星星的大小
 				type: [Number, String],
-				default: 24
+				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>

+ 45 - 0
components/uni-popup/keypress.js

@@ -0,0 +1,45 @@
+// #ifdef H5
+export default {
+  name: 'Keypress',
+  props: {
+    disable: {
+      type: Boolean,
+      default: false
+    }
+  },
+  mounted () {
+    const keyNames = {
+      esc: ['Esc', 'Escape'],
+      tab: 'Tab',
+      enter: 'Enter',
+      space: [' ', 'Spacebar'],
+      up: ['Up', 'ArrowUp'],
+      left: ['Left', 'ArrowLeft'],
+      right: ['Right', 'ArrowRight'],
+      down: ['Down', 'ArrowDown'],
+      delete: ['Backspace', 'Delete', 'Del']
+    }
+    const listener = ($event) => {
+      if (this.disable) {
+        return
+      }
+      const keyName = Object.keys(keyNames).find(key => {
+        const keyName = $event.key
+        const value = keyNames[key]
+        return value === keyName || (Array.isArray(value) && value.includes(keyName))
+      })
+      if (keyName) {
+        // 避免和其他按键事件冲突
+        setTimeout(() => {
+          this.$emit(keyName, {})
+        }, 0)
+      }
+    }
+    document.addEventListener('keyup', listener)
+    this.$once('hook:beforeDestroy', () => {
+      document.removeEventListener('keyup', listener)
+    })
+  },
+	render: () => {}
+}
+// #endif

+ 22 - 0
components/uni-popup/message.js

@@ -0,0 +1,22 @@
+export default {
+	created() {
+		if (this.type === 'message') {
+			// 不显示遮罩
+			this.maskShow = false 
+			// 获取子组件对象
+			this.childrenMsg = null
+		}
+	},
+	methods: {
+		customOpen() {
+			if (this.childrenMsg) {
+				this.childrenMsg.open()
+			}
+		},
+		customClose() {
+			if (this.childrenMsg) {
+				this.childrenMsg.close()
+			}
+		}
+	}
+}

+ 50 - 0
components/uni-popup/popup.js

@@ -0,0 +1,50 @@
+import message from './message.js';
+// 定义 type 类型:弹出类型:top/bottom/center
+const config = {
+	// 顶部弹出
+	top: 'top',
+	// 底部弹出
+	bottom: 'bottom',
+	// 居中弹出
+	center: 'center',
+	// 消息提示
+	message: 'top',
+	// 对话框
+	dialog: 'center',
+	// 分享
+	share: 'bottom',
+}
+
+export default {
+	data() {
+		return {
+			config: config,
+			popupWidth: 0,
+			popupHeight: 0
+		}
+	},
+	mixins: [message],
+	computed: {
+		isDesktop() {
+			return this.popupWidth >= 500 && this.popupHeight >= 500
+		}
+	},
+	mounted() {
+		const fixSize = () => {
+			const {
+				windowWidth,
+				windowHeight,
+				windowTop
+			} = uni.getSystemInfoSync()
+			this.popupWidth = windowWidth
+			this.popupHeight = windowHeight + windowTop
+		}
+		fixSize()
+		// #ifdef H5
+		window.addEventListener('resize', fixSize)
+		this.$once('hook:beforeDestroy', () => {
+			window.removeEventListener('resize', fixSize)
+		})
+		// #endif
+	},
+}

+ 16 - 0
components/uni-popup/share.js

@@ -0,0 +1,16 @@
+export default {
+	created() {
+		if (this.type === 'share') {
+			// 关闭点击
+			this.mkclick = false
+		}
+	},
+	methods: {
+		customOpen() {
+			console.log('share 打开了');
+		},
+		customClose() {
+			console.log('share 关闭了');
+		}
+	}
+}

+ 321 - 0
components/uni-popup/uni-popup.vue

@@ -0,0 +1,321 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" :class="[popupstyle, isDesktop ? 'fixforpc-z-index' : '']"
+	 @touchmove.stop.prevent="clear">
+		<uni-transition v-if="maskShow" class="uni-mask--hook" :mode-class="['fade']" :styles="maskClass" :duration="duration"
+		 :show="showTrans" @click="onTap" />
+		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</uni-transition>
+		<!-- #ifdef H5 -->
+		<keypress v-if="maskShow" @esc="onTap" />
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	import popup from './popup.js'
+	// #ifdef H5
+	import keypress from './keypress.js'
+	// #endif
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * 	@value message 消息提示
+	 * 	@value dialog 对话框
+	 * 	@value share 底部分享示例
+	 * @property {Boolean} animation = [ture|false] 是否开启动画
+	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 */
+
+	export default {
+		name: 'uniPopup',
+		components: {
+			// #ifdef H5
+			keypress
+			// #endif
+		},
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			// message: 消息提示 ; dialog : 对话框
+			type: {
+				type: String,
+				default: 'center'
+			},
+			// maskClick
+			maskClick: {
+				type: Boolean,
+				default: true
+			}
+		},
+		provide() {
+			return {
+				popup: this
+			}
+		},
+		mixins: [popup],
+		watch: {
+			/**
+			 * 监听type类型
+			 */
+			type: {
+				handler: function(newVal) {
+					this[this.config[newVal]]()
+				},
+				immediate: true
+			},
+			isDesktop: {
+				handler: function(newVal) {
+					this[this.config[this.type]]()
+				},
+				immediate: true
+			},
+			/**
+			 * 监听遮罩是否可点击
+			 * @param {Object} val
+			 */
+			maskClick: {
+				handler: function(val) {
+					this.mkclick = val
+				},
+				immediate: true
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				maskClass: {
+					'position': 'fixed',
+					'bottom': 0,
+					'top': 0,
+					'left': 0,
+					'right': 0,
+					'backgroundColor': 'rgba(0, 0, 0, 0.4)'
+				},
+				transClass: {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				},
+				maskShow: true,
+				mkclick: true,
+				popupstyle: this.isDesktop ? 'fixforpc-top' : 'top'
+			}
+		},
+		created() {
+			this.mkclick = this.maskClick
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+		},
+		methods: {
+			clear(e) {
+				// TODO nvue 取消冒泡
+				e.stopPropagation()
+			},
+			open() {
+				this.showPopup = true
+				this.$nextTick(() => {
+					new Promise(resolve => {
+						clearTimeout(this.timer)
+						this.timer = setTimeout(() => {
+							this.showTrans = true
+							// fixed by mehaotian 兼容 app 端
+							this.$nextTick(() => {
+								resolve();
+							})
+						}, 50);
+					}).then(res => {
+						// 自定义打开事件
+						clearTimeout(this.msgtimer)
+						this.msgtimer = setTimeout(() => {
+							this.customOpen && this.customOpen()
+						}, 100)
+						this.$emit('change', {
+							show: true,
+							type: this.type
+						})
+					})
+				})
+			},
+			close(type) {
+				this.showTrans = false
+				this.$nextTick(() => {
+					this.$emit('change', {
+						show: false,
+						type: this.type
+					})
+					clearTimeout(this.timer)
+					// 自定义关闭事件
+					this.customOpen && this.customClose()
+					this.timer = setTimeout(() => {
+						this.showPopup = false
+					}, 300)
+				})
+			},
+			onTap() {
+				if (!this.mkclick) return
+				this.close()
+			},
+			/**
+			 * 顶部弹出样式处理
+			 */
+			top() {
+				this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top'
+				this.ani = ['slide-top']
+				this.transClass = {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+				}
+			},
+			/**
+			 * 底部弹出样式处理
+			 */
+			bottom() {
+				this.popupstyle = 'bottom'
+				this.ani = ['slide-bottom']
+				this.transClass = {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+					'bottom': 0
+				}
+			},
+			/**
+			 * 中间弹出样式处理
+			 */
+			center() {
+				this.popupstyle = 'center'
+				this.ani = ['zoom-out', 'fade']
+				this.transClass = {
+					'position': 'fixed',
+					/* #ifndef APP-NVUE */
+					'display': 'flex',
+					'flexDirection': 'column',
+					/* #endif */
+					'bottom': 0,
+					'left': 0,
+					'right': 0,
+					'top': 0,
+					'justifyContent': 'center',
+					'alignItems': 'center'
+				}
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup {
+		position: fixed;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.fixforpc-z-index {
+		/* #ifndef APP-NVUE */
+		z-index: 999;
+		/* #endif */
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		opacity: 0;
+	}
+
+	.mask-ani {
+		transition-property: opacity;
+		transition-duration: 0.2s;
+	}
+
+	.uni-top-mask {
+		opacity: 1;
+	}
+
+	.uni-bottom-mask {
+		opacity: 1;
+	}
+
+	.uni-center-mask {
+		opacity: 1;
+	}
+
+	.uni-popup__wrapper {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: absolute;
+	}
+
+	.top {
+		/* #ifdef H5 */
+		top: var(--window-top);
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+	}
+
+	.fixforpc-top {
+		top: 0;
+	}
+
+	.bottom {
+		bottom: 0;
+	}
+
+	.uni-popup__wrapper-box {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: relative;
+		/* iphonex 等安全区设置,底部安全区适配 */
+		/* #ifndef APP-NVUE */
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+		/* #endif */
+	}
+
+	.content-ani {
+		// transition: transform 0.3s;
+		transition-property: transform, opacity;
+		transition-duration: 0.2s;
+	}
+
+
+	.uni-top-content {
+		transform: translateY(0);
+	}
+
+	.uni-bottom-content {
+		transform: translateY(0);
+	}
+
+	.uni-center-content {
+		transform: scale(1);
+		opacity: 1;
+	}
+</style>

+ 15 - 7
pages/carSource/driverSee.vue

@@ -10,8 +10,9 @@
 				</view>
 
 				<view class="right flex s-row align-center phone">
-					<view class="bgc flex flex-space-between">
-						<u-icon class="phone" name="phone-fill" color="#2772FB" size="20" @click="toPhone"></u-icon>
+					<view class="bgc flex flex-space-between flex-center">
+						<image class='phone-icon' src="@/static/images/carSource/dianhua.png" mode=""></image>
+						<!-- <u-icon class="phone" name="phone-fill" color="#2772FB" size="20" @click="toPhone"></u-icon> -->
 						<view class="hz-name">联系司机</view>
 					</view>
 				</view>
@@ -28,7 +29,7 @@
 			</view>
 			<view v-if='total>=20' class="flex item">
 				<view class="pf-name">好评率</view>
-				<view class="pf-number">{{driverList.favorableRate?driverList.favorableRate:0}}</view>
+				<view class="pf-number">{{driverList.favorableRate?driverList.favorableRate:0}}%</view>
 			</view>
 		</view>
 		<view class="row3 flex">
@@ -59,8 +60,8 @@
 						<view class="gray fontsize-24">累计发运{{total}}次</view>
 					</view>
 				</view>
-				<view class="right">
-					<view>98%</view>
+				<view v-if='total>=20' class="right">
+					<view>{{driverList.favorableRate?driverList.favorableRate:0}}</view>
 					<view class="gray fontsize-24">好评率</view>
 				</view>
 			</view>
@@ -109,10 +110,12 @@
 		<view class="row5">
 			<view class='carMessage' v-if="tabIndex==1&&index==1">
 				<view class='carMessage-item' v-for='(item,index) in hyDriverCarInfoList' :style="{'border-radius':(index!=hyDriverCarInfoList.length-1?'#ccc':'transparent')}">
-					<view v-if='item.carCategory=="挂车"'>{{item.guaCarNumber}}</view>
+					<!-- <view v-if='item.carCategory=="挂车"'>{{item.guaCarNumber}}</view>
 					<view v-else>{{item.carNumber}}</view>
 					<view v-if='item.carCategory=="挂车"' class="flex align-center">{{item.carType}} | 车长{{item.guaCarLong}}米 | 载重{{item.guaCarApprovedWeight}}吨</view>
-					<view v-else class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view>
+					<view v-else class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view> -->
+					<view>{{item.carNumber}}</view>
+					<view class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view>
 				</view>
 				
 			</view>
@@ -486,4 +489,9 @@
 	.pf {
 		margin-bottom: 20rpx;
 	}
+	.phone-icon{
+		width:12px;
+		height:12px;
+		margin-right:3px;
+	}
 </style>

+ 24 - 4
pages/carSource/index.vue

@@ -345,14 +345,24 @@
 					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.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;
@@ -362,14 +372,24 @@
 			},
 			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.sendInfo.unloadCity = ''
+				}else{
+					this.sendInfo.unloadCity = address.city ? address.city : ''
+				}
+				// this.unloadInfo.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.title2 = address.province + address.city
 					this.unloadInfo.unloadArea = ""
 				} else {
 					if (address.province == '全国') {

+ 42 - 0
pages/mine/cargoowner/addEnerprise.vue

@@ -148,6 +148,7 @@
 		onShow() {
 			if (uni.getStorageSync('currectcompany')) {
 				this.dataDetails.company = uni.getStorageSync('currectcompany').companyName
+				this.dataDetails.compId = uni.getStorageSync('currectcompany').id
 				this.dataDetails.advanceFreightService = uni.getStorageSync('currectcompany').advanceFreightService
 				var name = '',
 					legalPersonNamelength = uni.getStorageSync('currectcompany').legalPersonName.length
@@ -289,6 +290,47 @@
 				if (e.value[0] == '长期') {
 					this.dataDetails.authorizationDeadline = e.value[0]
 				} 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()
+					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.authorizationDeadline = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 				}
 

+ 41 - 0
pages/mine/cargoowner/editEnerprise.vue

@@ -281,6 +281,47 @@
 				if (e.value[0] == '长期') {
 					this.dataDetails.authorizationDeadline = e.value[0]
 				} 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()
+					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.authorizationDeadline = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 				}
 

+ 22 - 0
pages/mine/cargoowner/editpersonalinformation.vue

@@ -304,6 +304,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]
 				}
 

+ 297 - 192
pages/mine/company/addcompany.vue

@@ -32,8 +32,7 @@
 			</view>
 			<view class="flex row">
 				<view class="left-text">营业期限截止日期</view>
-				<view style='font-size:14px;width:50%;' class='flex flex-space-between'
-					@click="selectData(0)">
+				<view style='font-size:14px;width:50%;' class='flex flex-space-between' @click="selectData(0)">
 					<view :style="{'color':dataDetails.businessTermDate ? '#000':'#C6CBD5'}">
 						{{dataDetails.businessTermDate?dataDetails.businessTermDate:'选择期限截止日期'}}
 					</view>
@@ -44,8 +43,8 @@
 			</view>
 			<view class="flex row noborder">
 				<view class="left-text">统一社会信用代码</view>
-				<u--input placeholder="请输入统一社会信用代码" inputAlign='left' border="none"
-					v-model="dataDetails.unifiedSocialCreditCode">
+				<u--input @blur='codeBlur' placeholder="请输入统一社会信用代码" inputAlign='left' border="none"
+					v-model="dataDetails.unifiedSocialCreditCode" maxlength='18'>
 				</u--input>
 			</view>
 
@@ -53,16 +52,16 @@
 		<view class='wrap'>
 			<view class="flex border-bottom mt20 align-center">
 				<view class="left">企业名称</view>
-				<view class="flex right" >
-					<u--input placeholder="输入企业名称" @input='companyNamechange' inputAlign='left' border="none" v-model="dataDetails.companyName"
-						@blur='companyNameBlur'>
+				<view class="flex right">
+					<u--input placeholder="输入企业名称" @input='companyNamechange' inputAlign='left' border="none"
+						v-model="dataDetails.companyName" @blur='companyNameBlur'>
 					</u--input>
 				</view>
 			</view>
 			<view class="flex border-bottom mt20 align-center">
 				<view class="left">法定代表人姓名</view>
 				<view class="flex right">
-					<u--input placeholder="输入法定代表人姓名" inputAlign='left' border="none"
+					<u--input disabled placeholder="输入法定代表人姓名" inputAlign='left' border="none"
 						v-model="dataDetails.legalPersonName">
 					</u--input>
 				</view>
@@ -88,8 +87,7 @@
 				<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 				<view class="text">上传身份证人像面</view>
 			</view>
-			<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(2)"
-				class="preview-card-img picture">
+			<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(2)" class="preview-card-img picture">
 				<image class="" :src="dataDetails.cardAddressUrl" mode="aspectFit" style=""></image>
 			</view>
 			<view class="title">上传身份证国徽面</view>
@@ -97,8 +95,7 @@
 				<image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
 				<view class="text">上传身份证国徽面</view>
 			</view>
-			<view v-if="dataDetails.cardBackAddressUrl" @click.stop="uploadImg(3)"
-				class="preview-card-img picture">
+			<view v-if="dataDetails.cardBackAddressUrl" @click.stop="uploadImg(3)" class="preview-card-img picture">
 				<image class="" :src="dataDetails.cardBackAddressUrl" mode="aspectFit" style=""></image>
 			</view>
 			<view class="flex border-bottom mt20 align-center">
@@ -109,62 +106,63 @@
 					</u--input>
 				</view>
 			</view>
-		<view class="flex border-bottom mt20 align-center">
-			<view class="left-text" >身份证有效期</view>
-			<view  class='flex right'
-				@click="selectData(1)">
-				<span :style="{'color':dataDetails.cardValidityDate ? '#000':'#C6CBD5'}">
-					{{dataDetails.cardValidityDate?dataDetails.cardValidityDate:'选择身份证有效期'}}
-				</span>
-				<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
-				<view>
+			<view class="flex border-bottom mt20 align-center">
+				<view class="left-text">身份证有效期</view>
+				<view class='flex right' @click="selectData(1)">
+					<span :style="{'color':dataDetails.cardValidityDate ? '#000':'#C6CBD5'}">
+						{{dataDetails.cardValidityDate?dataDetails.cardValidityDate:'选择身份证有效期'}}
+					</span>
+					<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+					<view>
+					</view>
 				</view>
 			</view>
-		</view>
-		<view class="flex row border-bottom mt20">
-			<view class="left-text">对公账户</view>
-			<view class="flex  right">
-				<u--input disabled placeholder="户名与企业名称一致" inputAlign='left' border="none" v-model="dataDetails.corporateAccount">
-				</u--input>
-			</view>
-		</view>
-		<view class="flex row border-bottom mt20">
-			<view class="left-text">卡号</view>
-			<view class="flex right">
-				<u--input placeholder="输入银行卡号码" inputAlign='left' border="none" v-model="dataDetails.bankCard">
-				</u--input>
-				<view class="" @click="uploadImg(5)">
-				<image src="../../../static/images/xiangji-2.png" mode="" style="width: 40rpx ;height: 40rpx;margin-top: 10rpx;"></image>
-			</view>
+			<view class="flex row border-bottom mt20">
+				<view class="left-text">对公账户</view>
+				<view class="flex  right">
+					<u--input disabled placeholder="户名与企业名称一致" inputAlign='left' border="none"
+						v-model="dataDetails.corporateAccount">
+					</u--input>
+				</view>
 			</view>
-			
-		</view>
-		<view class="flex row border-bottom mt20">
-			<view class="left-text">开户行</view>
-			<view class="flex right">
-			<u--input placeholder="输入开户行" inputAlign='left' border="none" v-model="dataDetails.bankDeposit">
-			</u--input>
+			<view class="flex row border-bottom mt20">
+				<view class="left-text">卡号</view>
+				<view class="flex right">
+					<u--input placeholder="输入银行卡号码" inputAlign='left' border="none" v-model="dataDetails.bankCard">
+					</u--input>
+					<view class="" @click="uploadImg(5)">
+						<image src="../../../static/images/xiangji-2.png" mode=""
+							style="width: 40rpx ;height: 40rpx;margin-top: 10rpx;"></image>
+					</view>
+				</view>
+
 			</view>
-		</view>
-		<view class="flex row border-bottom mt20">
-			<view class="left-text khzh-styel">开户支行</view>
-			<view class="flex align-center flex-space-between right" v-if="isShowManualInput">
-				<u--input class="select-bankzh point" placeholder="输入开户支行" inputAlign='left' border="none"
-					v-model="dataDetails.bankDepositBranch">
-				</u--input>
-				<view @click="manualInput" class="type">选择支行</view>
+			<view class="flex row border-bottom mt20">
+				<view class="left-text">开户行</view>
+				<view class="flex right">
+					<u--input placeholder="输入开户行" inputAlign='left' border="none" v-model="dataDetails.bankDeposit">
+					</u--input>
+				</view>
 			</view>
-			<view class="flex align-center flex-space-between right" v-if="!isShowManualInput">
-				<!-- 	<u--input  @click="selectZhbank" placeholder="选择开户支行" inputAlign='left' border="none" disabled>
+			<view class="flex row border-bottom mt20">
+				<view class="left-text khzh-styel">开户支行</view>
+				<view class="flex align-center flex-space-between right" v-if="isShowManualInput">
+					<u--input class="select-bankzh point" placeholder="输入开户支行" inputAlign='left' border="none"
+						v-model="dataDetails.bankDepositBranch">
+					</u--input>
+					<view @click="manualInput" class="type">选择支行</view>
+				</view>
+				<view class="flex align-center flex-space-between right" v-if="!isShowManualInput">
+					<!-- 	<u--input  @click="selectZhbank" placeholder="选择开户支行" inputAlign='left' border="none" disabled>
 				</u--input> -->
-				<view class="select-bankzh" @click="selectZhbank">
-					{{dataDetails.bankDepositBranch?dataDetails.bankDepositBranch:'选择开户支行'}}
+					<view class="select-bankzh" @click="selectZhbank">
+						{{dataDetails.bankDepositBranch?dataDetails.bankDepositBranch:'选择开户支行'}}
+					</view>
+					<view @click="manualInput" class="type">手动输入</view>
 				</view>
-				<view @click="manualInput" class="type">手动输入</view>
+
 			</view>
-		
-		</view>
-		<!-- 	<view class="flex row noborder">
+			<!-- 	<view class="flex row noborder">
 					<view class="left-text">身份证截止日期</view>
 					<view class="" @click="selectData(1)">
 						{{dataDetails.cardValidityDate?dataDetails.cardValidityDate:'选择身份证截止日期>'}}
@@ -182,7 +180,8 @@
 			<view class="flex row noborder mt20 flex-space-between">
 				<view class="left-text">视频验证(点击按钮播放视频)</view>
 				<view>
-					<u-button color='#2772FB' type="primary" @click="goDetailPage('/pages/mine/company/companyvideo')" size="mini">重新上传
+					<u-button color='#2772FB' type="primary" @click="goDetailPage('/pages/mine/company/companyvideo')"
+						size="mini">重新上传
 					</u-button>
 				</view>
 			</view>
@@ -295,8 +294,8 @@
 				ValidityPeriodType: '',
 				isShowManualInput: false,
 				value: false,
-				isShowBank:false,
-				columns:[],
+				isShowBank: false,
+				columns: [],
 				radioCustomStyle: {
 					margin: '0 0 0 20rpx'
 				},
@@ -325,9 +324,9 @@
 					landOwnership: '自有',
 					videoAddressUrl: null,
 					legalPersonName: '',
-					corporateAccount:''
+					corporateAccount: ''
 				},
-				dataType:""
+				dataType: ""
 			}
 		},
 		onShow() {
@@ -360,20 +359,20 @@
 		},
 		methods: {
 			async get_camera_permission() {
-				var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
-				if(photol == false){
+				var photol = await permision.requestAndroidPermission("android.permission.CAMERA")
+				if (photol == false) {
 					uni.showModal({
 						title: '提示',
 						content: '您已经关闭相机权限,去设置',
-						success: function (res) {
+						success: function(res) {
 							if (res.confirm) {
 								permision.gotoAppPermissionSetting()
-									            // plus.runtime.openURL("app-settings:");
+								// plus.runtime.openURL("app-settings:");
 							} else if (res.cancel) {
 								console.log('用户点击取消');
 							}
 						}
-					});	
+					});
 				}
 			},
 			selectData(num) {
@@ -392,7 +391,7 @@
 					})
 					return true
 				}
-			
+
 				this.isShowBank = true
 			},
 			manualInput() {
@@ -404,16 +403,16 @@
 						})
 						return true
 					}
-					if (this.columns.length==0) {
+					if (this.columns.length == 0) {
 						this.$refs.uToast.show({
 							type: 'error',
 							message: "请选择手动输入!",
 						})
 						return true
 					}
-					
+
 					this.isShowBank = true
-			
+
 				} else {
 					this.isShowBank = false
 				}
@@ -430,11 +429,52 @@
 				// this.isShowimgType = true
 			},
 			confirmValidityPeriod(e) {
+				if(e.value[0]==''&&e.value[0] != '长期'){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "年份不能为空!",
+					})
+					return
+				}else if(e.value[1]==''&&e.value[0] != '长期'){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "月份不能为空!",
+					})
+					return
+				}else if(e.value[2]==''&&e.value[0] != '长期'){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "日期不能为空!",
+					})
+					return
+				}
 				switch (this.dataType) {
 					case 0:
 						if (e.value[0] == '长期') {
 							this.dataDetails.businessTermDate = e.value[0]
 						} else {
+							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.businessTermDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 						}
 						break
@@ -442,6 +482,28 @@
 						if (e.value[0] == '长期') {
 							this.dataDetails.cardValidityDate = e.value[0]
 						} else {
+							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]
 						}
 						break
@@ -485,17 +547,18 @@
 			// 		})
 			// 	});
 			// },
-			companyNamechange(e){
+			companyNamechange(e) {
 				console.log(e)
-				this.dataDetails.corporateAccount=e
+				this.dataDetails.corporateAccount = e
 			},
 			companyNameBlur() {
-				
-				
+
+
 				this.$request.baseRequest('get', '/companyInfo/repeatCompanyInfo', {
 						commonId: this.userInfo.id,
 						companyName: this.dataDetails.companyName
 					}).then(res => {
+						console.log(res)
 						if (res.code == 200) {
 							// that.dataDetails.legalPersonName = res.data.name
 						} else {
@@ -507,6 +570,34 @@
 						}
 					})
 					.catch(res => {
+						console.log(res)
+						uni.hideLoading()
+						uni.showToast({
+							title: res.message,
+							icon: 'none',
+							duration: 2000
+						})
+					});
+			},
+			codeBlur(){
+
+
+				this.$request.baseRequest('get', '/companyInfo/checkCreditCode', {
+						unifiedSocialCreditCode: this.dataDetails.unifiedSocialCreditCode
+					}).then(res => {
+						console.log(res)
+						if (res.code == 200) {
+							// that.dataDetails.legalPersonName = res.data.name
+						} else {
+							uni.showToast({
+								title: res.message,
+								icon: 'none',
+								duration: 2000
+							})
+						}
+					})
+					.catch(res => {
+						console.log(res)
 						uni.hideLoading()
 						uni.showToast({
 							title: res.message,
@@ -588,7 +679,7 @@
 				// 	})
 				// 	return true
 				// }
-				if (this.dataDetails.cardNumber.length!=18) {
+				if (this.dataDetails.cardNumber.length != 18) {
 					this.$refs.uToast.show({
 						type: 'error',
 						message: "身份证号输入错误!",
@@ -616,6 +707,13 @@
 					})
 					return true
 				}
+				if (uni.$u.test.rangeLength(this.dataDetails.unifiedSocialCreditCode, [0, 18])) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "统一社会信用代码输出错误!",
+					})
+					return true
+				}
 				//先注释掉
 				// if (this.dataDetails.advanceFreightService == 1 && uni.$u.test.isEmpty(this.dataDetails
 				// 		.propertyAddressUrl)) {
@@ -725,122 +823,123 @@
 			imgTypeSelect(val) {
 				var _this = this
 				// if (val.name == '相册') {
-					uni.chooseImage({
-						count: 1,
-						// sourceType: ,
-						success: function(res) {
-							console.log(_this.uploadType);
-						
-							uploadImage('image', res.tempFilePaths[0], 'appData/',
-								result => {
-									console.log(result,"查看")
-									// 上传成功回调函数
-									switch (_this.uploadType) {
-										
-										// 身份正面
-										case 1:
-											_this.dataDetails.businessLicenseAddressUrl = result
-											// 识别
-											_this.$request.baseRequest('get',
-													'/cargoOwnerInfo/api/licenseShibie', {
-														licenseImg: result,
-													}).then(res => {
-													if (res.code == '200') {
-														if(res.data){
-															if (res.data.validPeriod == '29991231') {
-																_this.dataDetails.businessTermDate = '长期'
-															}
-															_this.dataDetails.unifiedSocialCreditCode = res
-																.data.regNum
-															_this.dataDetails.legalPersonName = res.data
-																.licensePerson
-															_this.dataDetails.companyName = res.data
-																.licenseName
-															_this.dataDetails.corporateAccount=_this.dataDetails.companyName
-															console.log(res)
-															_this.$forceUpdate()
+				uni.chooseImage({
+					count: 1,
+					// sourceType: ,
+					success: function(res) {
+						console.log(_this.uploadType);
+
+						uploadImage('image', res.tempFilePaths[0], 'appData/',
+							result => {
+								// 上传成功回调函数
+								switch (_this.uploadType) {
+
+									// 身份正面
+									case 1:
+										_this.dataDetails.businessLicenseAddressUrl = result
+										// 识别
+										_this.$request.baseRequest('get',
+												'/cargoOwnerInfo/api/licenseShibie', {
+													licenseImg: result,
+												}).then(res => {
+												if (res.code == '200') {
+													if (res.data) {
+														if (res.data.validPeriod == '29991231') {
+															_this.dataDetails.businessTermDate = '长期'
 														}
+														_this.dataDetails.unifiedSocialCreditCode = res
+															.data.regNum
+														_this.dataDetails.legalPersonName = res.data
+															.licensePerson
+														_this.dataDetails.companyName = res.data
+															.licenseName
+														_this.dataDetails.corporateAccount = _this
+															.dataDetails.companyName
+														console.log(res)
+														_this.$forceUpdate()
 													}
+												}
+
+											})
+											.catch(res => {
+												console.log(res)
+												uni.$u.toast(res.message);
+											});
+										console.log(_this.dataDetails.businessLicenseAddressUrl)
+										break
+										// 身份反面
+									case 2:
+										_this.dataDetails.cardAddressUrl = result
+										// 识别
+										_this.$request.baseRequest('get',
+												'/driverInfo/personShibie', {
+													personImg: result,
+													flag: 1
+												}).then(res => {
+												_this.dataDetails.cardNumber = res.data.recPersonNo
+												_this.$forceUpdate()
+											})
+											.catch(res => {
+												uni.$u.toast(res.message);
+											});
 
-												})
-												.catch(res => {
-													console.log(res)
-													uni.$u.toast(res.message);
-												});
-											console.log(_this.dataDetails.businessLicenseAddressUrl)
-											break
-											// 身份反面
-										case 2:
-											_this.dataDetails.cardAddressUrl = result
-											// 识别
-											_this.$request.baseRequest('get',
-													'/driverInfo/personShibie', {
-														personImg: result,
-														flag:1
-													}).then(res => {
-													_this.dataDetails.cardNumber = res.data.recPersonNo
-													_this.$forceUpdate()
-												})
-												.catch(res => {
-													uni.$u.toast(res.message);
-												});
-											
-											break
-										case 3:
+										break
+									case 3:
 										_this.dataDetails.cardBackAddressUrl = result
-											// 识别
-											_this.$request.baseRequest('get',
-													'/driverInfo/personShibie', {
-														personImg: result,
-														flag:2
-													}).then(res => {
-														if(res.data.idCardValidity){
-															let date = res.data.idCardValidity.split("-")[1]
-														    _this.dataDetails.cardValidityDate = date.replace('.', '-').replace('.', '-')
-														}
-													_this.$forceUpdate()
-												})
-												.catch(res => {
-													uni.$u.toast(res.message);
-												});
+										// 识别
+										_this.$request.baseRequest('get',
+												'/driverInfo/personShibie', {
+													personImg: result,
+													flag: 2
+												}).then(res => {
+												if (res.data.idCardValidity) {
+													let date = res.data.idCardValidity.split("-")[1]
+													_this.dataDetails.cardValidityDate = date.replace(
+														'.', '-').replace('.', '-')
+												}
 												_this.$forceUpdate()
-											break;
-											case 4:
-											   _this.dataDetails.propertyAddressUrl = result
-											break;
-											case 5:
-											  _this.$request.baseRequest('get',
-											  		'/driverInfo/bankShibie', {
-											  			bankImg: result,
-											  		}).then(res => {
-											  		console.log(res)
-											  		_this.dataDetails.payeeAddressUrl = result
-											  		if (res.data.bankNo) {
-											  			_this.dataDetails.bankCard = res.data.bankNo
-											  		}
-											  		if (res.data.bankName) {
-											  			_this.dataDetails.bankDeposit = res.data.bankName
-											  		}
-											  
-											  		// 开户支行LIst
-											  		if (res.data.bankNameZhihang) {
-											  			_this.columns.push(res.data
-											  				.bankNameZhihang)
-											  
-											  		}else{
-														_this.columns=[]
-													}
-											  		_this.$forceUpdate()
-											  	})
-											  	.catch(res => {
-											  		uni.$u.toast(res.message);
-											  	});
-											break;
-									}
+											})
+											.catch(res => {
+												uni.$u.toast(res.message);
+											});
+										_this.$forceUpdate()
+										break;
+									case 4:
+										_this.dataDetails.propertyAddressUrl = result
+										break;
+									case 5:
+										_this.$request.baseRequest('get',
+												'/driverInfo/bankShibie', {
+													bankImg: result,
+												}).then(res => {
+												console.log(res)
+												_this.dataDetails.payeeAddressUrl = result
+												if (res.data.bankNo) {
+													_this.dataDetails.bankCard = res.data.bankNo
+												}
+												if (res.data.bankName) {
+													_this.dataDetails.bankDeposit = res.data.bankName
+												}
+
+												// 开户支行LIst
+												if (res.data.bankNameZhihang) {
+													_this.columns.push(res.data
+														.bankNameZhihang)
+
+												} else {
+													_this.columns = []
+												}
+												_this.$forceUpdate()
+											})
+											.catch(res => {
+												uni.$u.toast(res.message);
+											});
+										break;
 								}
-							)
-						}
-					});
+							}
+						)
+					}
+				});
 				// } else {
 				// 	uni.chooseImage({
 				// 		count: 1,
@@ -908,7 +1007,7 @@
 				this.ValidityPeriodType = type
 				this.imgTypeSelect()
 			},
-			
+
 			changeHandler(e) {
 				const {
 					columnIndex,
@@ -946,6 +1045,7 @@
 	/deep/uni-image.uploadimage-small {
 		width: 100% !important;
 	}
+
 	.title {
 		color: #333333;
 		margin: 20rpx 0;
@@ -966,6 +1066,7 @@
 			width: 50%;
 			font-size: 28rpx;
 		}
+
 		.left-text {
 			// background: red;
 			width: 50%;
@@ -999,14 +1100,17 @@
 		align-items: center;
 		color: #6A7282;
 	}
+
 	.picture1 {
 		background: url(../../../static/images/mine/zm.png);
 		background-size: 100% 100%;
 	}
+
 	.picture2 {
 		background: url(../../../static/images/mine/gh.png);
 		background-size: 100% 100%;
 	}
+
 	.type {
 		background: #2772FB;
 		border-radius: 10rpx;
@@ -1056,7 +1160,7 @@
 				margin-top: 20rpx;
 			}
 		}
-		
+
 		.picture7 {
 			background: url(../../../static/mine/cy.png);
 			background-size: 100% 100%;
@@ -1067,7 +1171,7 @@
 			height: 100rpx;
 		}
 
-		
+
 	}
 
 	.content2,
@@ -1147,6 +1251,7 @@
 	}
 
 	.myVideo {}
+
 	// /deep/.u-input:disabled{
 	// 	background:transparent !important;
 	// }

+ 3 - 1
pages/mine/company/companyvideo.nvue

@@ -199,7 +199,9 @@
 						console.log("startVideoCapture: " + JSON.stringify(res))
 						if (res.status == "start") {
 							console.log("开始录像")
-							this.isAlreadyRecord = true
+							setTimeout(()=>{
+								this.isAlreadyRecord = true
+							},1000)
 						} else if (res.status == "end") {
 							console.log("结束录像")
 							uni.showLoading({

+ 58 - 6
pages/mine/company/editcompany.vue

@@ -35,7 +35,7 @@
 			<view class="flex row noborder">
 				<view class="left-text">统一社会信用代码</view>
 				<u--input placeholder="请输入统一社会信用代码" inputAlign='left' border="none"
-					v-model="dataDetails.unifiedSocialCreditCode">
+					v-model="dataDetails.unifiedSocialCreditCode" maxlength='18'>
 				</u--input>
 			</view>
 
@@ -135,13 +135,13 @@
 			</view>
 			<view class="flex row border-bottom mt20">
 				<view class="left khzh-styel">开户支行</view>
-				<view class="flex align-center" v-if="isShowManualInput">
+				<view class="flex align-center flex-space-between right" v-if="isShowManualInput">
 					<u--input class="select-bankzh point" placeholder="输入开户支行" inputAlign='left' border="none"
 						v-model="dataDetails.bankDepositBranch">
 					</u--input>
 					<view @click="manualInput" class="type">选择支行</view>
 				</view>
-				<view class="flex align-center" v-if="!isShowManualInput">
+				<view class="flex align-center flex-space-between right" v-if="!isShowManualInput">
 					<!-- 	<u--input  @click="selectZhbank" placeholder="选择开户支行" inputAlign='left' border="none" disabled>
 					</u--input> -->
 					<view class="select-bankzh" @click="selectZhbank">
@@ -174,7 +174,8 @@
 			<view class="flex row noborder mt20 flex-space-between">
 				<view class="left-text">视频验证(点击按钮播放视频)</view>
 				<view>
-					<u-button color='#2772FB' type="primary" @click="goDetailPage('/pages/mine/company/companyvideo')" size="mini">重新上传
+					<u-button color='#2772FB' type="primary" @click="goDetailPage('/pages/mine/company/companyvideo')"
+						size="mini">重新上传
 					</u-button>
 				</view>
 			</view>
@@ -301,7 +302,7 @@
 					},
 
 				],
-				isShowManualInput:false,
+				isShowManualInput: false,
 				isShowcardValidity: false,
 				uploadType: '',
 				index: '',
@@ -373,7 +374,7 @@
 						return true
 					}
 					this.isShowBank = true
-			
+
 				} else {
 					this.isShowBank = false
 				}
@@ -409,6 +410,28 @@
 						if (e.value[0] == '长期') {
 							this.dataDetails.businessTermDate = e.value[0]
 						} else {
+							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.businessTermDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 						}
 						break
@@ -416,6 +439,28 @@
 						if (e.value[0] == '长期') {
 							this.dataDetails.cardValidityDate = e.value[0]
 						} else {
+							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]
 						}
 						break
@@ -560,6 +605,13 @@
 					})
 					return true
 				}
+				if (uni.$u.test.rangeLength(this.dataDetails.unifiedSocialCreditCode, [17, 17])) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "统一社会信用代码输出错误!",
+					})
+					return true
+				}
 				//先注释掉
 				// if (this.dataDetails.advanceFreightService == 1 && uni.$u.test.isEmpty(this.dataDetails
 				// 		.propertyAddressUrl)) {

+ 17 - 1
pages/mine/company/index.vue

@@ -62,7 +62,23 @@
 				uni.$u.route("/pages/mine/myAccount/index?id=" + item.id + "&companyId=" + item.id)
 			},
 			goDetailPage(src) {
-				uni.$u.route(src);
+				var that=this
+				if(src=='/pages/mine/company/addcompany'){
+					this.$request.baseRequest('get', '/cargoOwnerInfo/firstAuthentication', {
+						phone: this.userInfo.phone,
+					}).then(res => {
+						if (res.data.authenticationStatus == '已认证') {
+							uni.$u.route(src);
+						}else{
+							that.$refs.uToast.show({
+								type: 'error',
+								message: "请先完成个人认证"
+							})
+						}
+					})
+				}else{
+					uni.$u.route(src);
+				}
 			},
 			edit(item) {
 				this.goDetailPage('/pages/mine/company/editcompany?id=' + item.id)

+ 3 - 1
pages/mine/driverEvaluation.vue

@@ -18,7 +18,9 @@
 					{{item.orderInfo.driverName}}:
 				</view>
 				<view class="xx">
-					<start :count="count" v-model="item.count" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true' :readonly='true'>
+				<!-- 	<start :count="count" v-model="item.count" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true' :readonly='true'>
+					</start> -->
+					<start :value="item.count" :disabled="true" :is_score='true' :size="36" >
 					</start>
 				</view>
 			</view>

+ 4 - 3
pages/mine/evaluate.vue

@@ -18,7 +18,7 @@
 					货主信用:
 				</view>
 				<view class="xx">
-					<start :count="count" v-model="item.ownerCredit" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true'>
+					<start :value="item.ownerCredit" :disabled="true" :is_score='true' :size="36" >
 					</start>
 				</view>
 			</view>
@@ -27,7 +27,7 @@
 					运费支付:
 				</view>
 				<view class="xx">
-					<start :count="count" v-model="item.freightPayment" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true'>
+					<start :value="item.freightPayment" :disabled="true" :is_score='true' :size="36" >
 					</start>
 				</view>
 			</view>
@@ -36,7 +36,7 @@
 					综合满意度:
 				</view>
 				<view class="xx">
-					<start :count="count" v-model="item.comprehensiveSatisfaction" size="35" activeColor="#ffaa00" :size="18" :allowHalf='true'>
+					<start :score="score1" :value="item.comprehensiveSatisfaction" :disabled="true" :is_score='true' :size="36">
 					</start>
 				</view>
 			</view>
@@ -101,6 +101,7 @@
 				// isOpen: false,
 				count: '5',
 				value: '3',
+				score1:['极不满意','不满意','尚可','满意','非常满意'],
 				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
 				rate: [{
 						name: "司机信用",

+ 37 - 16
pages/mine/index.vue

@@ -35,12 +35,12 @@
 
 			<view class='flex operate flex-space-around'>
 				<view style='font-size:14px;' class='flex items-center' @click="toMyRelease">
-					<u--image style='margin-right:8px;position:relative;top:3px;' :showLoading="true" src="../../static/mine/wodefabu.png"
-						width="42px" height="42px"></u--image>我的发布
+					<u--image style='margin-right:8px;position:relative;top:3px;' :showLoading="true"
+						src="../../static/mine/wodefabu.png" width="42px" height="42px"></u--image>我的发布
 				</view>
 				<view style='font-size:14px;' class='flex items-center' @click="goDetailPage('/pages/mine/evaluate')">
-					<u--image style='margin-right:8px;position:relative;top:3px;' :showLoading="true" src="../../static/mine/pingjia.png"
-						width="42px" height="42px"></u--image>
+					<u--image style='margin-right:8px;position:relative;top:3px;' :showLoading="true"
+						src="../../static/mine/pingjia.png" width="42px" height="42px"></u--image>
 					司机评价
 				</view>
 			</view>
@@ -52,7 +52,8 @@
 							width="20px" height="20px"></u--image>我的账户
 					</view>
 					<view>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 				<view class="flex flex-space-between content1-item" @click="goDetailPage('/pages/mine/company/index')">
@@ -61,7 +62,8 @@
 							width="20px" height="20px"></u--image>我的公司
 					</view>
 					<view class='flex'>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 				<view class="flex flex-space-between content1-item"
@@ -71,7 +73,8 @@
 							width="20px" height="20px"></u--image>我的银行卡
 					</view>
 					<view>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 				<view class="flex flex-space-between content1-item"
@@ -81,7 +84,8 @@
 							width="20px" height="20px"></u--image>货主认证
 					</view>
 					<view class='flex'>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 				<view class="flex flex-space-between content1-item"
@@ -91,7 +95,8 @@
 							width="20px" height="20px"></u--image>代理货主
 					</view>
 					<view>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 				<view class="flex flex-space-between content1-item"
@@ -101,7 +106,8 @@
 							src="../../static/mine/bangzhushuoming.png" width="20px" height="20px"></u--image>帮助说明
 					</view>
 					<view>
-						<u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon>
+						<image class='right' src="@/static/mine/right.png" mode=""></image>
+						<!-- <u-icon name="arrow-right" color="#7E7E7E" size="10"></u-icon> -->
 					</view>
 				</view>
 
@@ -142,7 +148,7 @@
 		data() {
 			return {
 				confirmText: '',
-				CargoOwner:{},
+				CargoOwner: {},
 				showCancelButton: true,
 				isShowAlert: false,
 				alertTitle: '',
@@ -164,8 +170,9 @@
 					}).then(res => {
 						uni.hideLoading()
 						if (res.data) {
-							this.CargoOwner=res.data
-							if (res.data.authenticationStatus == '审核中' || res.data.authenticationStatus == '已驳回'||res.data.authenticationStatus == '未认证') {
+							this.CargoOwner = res.data
+							if (res.data.authenticationStatus == '审核中' || res.data.authenticationStatus == '已驳回' || res
+								.data.authenticationStatus == '未认证') {
 								this.status = false
 							} else {
 								this.status = true
@@ -270,10 +277,21 @@
 				this.isShowAlert = false
 			},
 			toMyRelease() {
-				uni.$u.route('/pages/release/record');
+				if (!this.hasLogin || !this.userInfo || this.userName == "立即登录") {
+					uni.$u.route('/pages/public/login');
+				} else {uni.$u.route('/pages/release/record');}
+				
 			},
 			goDetailPage(src) {
-				uni.$u.route(src);
+				if (!this.hasLogin || !this.userInfo || this.userName == "立即登录") {
+					if(src!='/pages/mine/helpDescription'){
+						uni.$u.route('/pages/public/login');
+					}else{
+						uni.$u.route(src);
+					}
+					
+				} else {uni.$u.route(src);}
+				
 			},
 			toLogin() {
 				console.log("userInfo", this.userInfo)
@@ -302,7 +320,7 @@
 		background: url('~@/static/mine/bg@3x.png');
 		background-size: 100% 100%;
 		margin: 0 auto;
-		height: calc(100vh - 0px);
+		height: calc(100vh - 85px);
 
 		.container_content {
 			padding: 18px;
@@ -394,4 +412,7 @@
 	.items-center {
 		align-items: center;
 	}
+	.right{
+		width:10px;height:10px;
+	}
 </style>

+ 21 - 0
pages/mine/manageBankCards/addBankCard.vue

@@ -245,6 +245,13 @@
 					})
 					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',
@@ -252,6 +259,13 @@
 					})
 					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',
@@ -259,6 +273,13 @@
 					})
 					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',

+ 2 - 3
pages/order/addEvaluation.vue

@@ -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>
 
@@ -177,7 +176,7 @@
 				})
 			},
 			clickStar(index) {
-				console.log(index)
+				console.log(index,this.starIndex)
 				this.selectStar = index
 				if (index == 0 || index == 1 || index == 2 || index == 3) {
 					if (this.starIndex == '1') {

+ 12 - 5
pages/order/driverDetail.vue

@@ -59,7 +59,7 @@
 						<view class="gray fontsize-24">累计发运{{total}}次</view>
 					</view>
 				</view>
-				<view class="right">
+				<view v-if='total>=20' class="right">
 					<view>{{driverList.favorableRate?driverList.favorableRate:0}}%</view>
 					<view class="gray fontsize-24">好评率</view>
 				</view>
@@ -108,11 +108,16 @@
 		</view>
 		<view class="row5">
 			<view class='carMessage' v-if="tabIndex==1&&index==1">
-				<view class='carMessage-item' v-for='(item,index) in hyDriverCarInfoList' :style="{'border-radius':(index!=hyDriverCarInfoList.length-1?'#ccc':'transparent')}">
-					<view v-if='item.carCategory=="挂车"'>{{item.guaCarNumber}}</view>
+				<view  v-for='(item,index) in hyDriverCarInfoList' :style="{'border-radius':(index!=hyDriverCarInfoList.length-1?'#ccc':'transparent')}">
+					<view v-if='item.status=="已通过"' class='carMessage-item'>
+						<view>{{item.carNumber}}</view>
+					<view class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view>
+					</view>
+					
+					<!-- <view v-if='item.carCategory=="挂车"'>{{item.guaCarNumber}}</view>
 					<view v-else>{{item.carNumber}}</view>
 					<view v-if='item.carCategory=="挂车"' class="flex align-center">{{item.carType}} | 车长{{item.guaCarLong}}米 | 载重{{item.guaCarApprovedWeight}}吨</view>
-					<view v-else class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view>
+					<view v-else class="flex align-center">{{item.carType}} | 车长{{item.carLong}}米 | 载重{{item.carApprovedWeight}}吨</view> -->
 				</view>
 				
 			</view>
@@ -241,8 +246,10 @@
 								res.data.hyDriverCarInfoList[i].guaCarLong=res.data.hyDriverCarInfoList[i].guaCarLong/1000
 								res.data.hyDriverCarInfoList[i].carNumber = res.data.hyDriverCarInfoList[i].carNumber.replace(res.data.hyDriverCarInfoList[i].carNumber.substring(2, 6),
 									"****")
-								res.data.hyDriverCarInfoList[i].guaCarNumber = res.data.hyDriverCarInfoList[i].guaCarNumber.replace(res.data.hyDriverCarInfoList[i].guaCarNumber.substring(2, 6),
+								if(res.data.hyDriverCarInfoList[i].guaCarNumber){
+									res.data.hyDriverCarInfoList[i].guaCarNumber = res.data.hyDriverCarInfoList[i].guaCarNumber.replace(res.data.hyDriverCarInfoList[i].guaCarNumber.substring(2, 6),
 								"****")
+								}
 							}
 							that.hyDriverCarInfoList=res.data.hyDriverCarInfoList
 						}

+ 15 - 1
pages/order/fk.vue

@@ -10,7 +10,7 @@
 		<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>
+			<u--textarea v-model="value1" placeholder="输入要反馈的内容10-300字" count maxlength='300'></u--textarea>
 			<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
 				name="1" multiple :maxCount="9"></u-upload>
 		</view>
@@ -43,6 +43,20 @@
 		},
 		methods: {
 			submit() {
+				if (!this.value1) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "投诉信息不能为空!",
+					})
+					return
+				}
+				if (this.value1.length<10||this.value1.length>300) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "投诉信息输入错误!",
+					})
+					return
+				}
 				uni.showLoading({
 					title: '加载中'
 				})

+ 116 - 40
pages/order/index.vue

@@ -17,7 +17,8 @@
 			
 				<view class="fixed1"></view>
 			<view class="fix-content">
-				<u-search placeholder="搜索订单" v-model="searchKeyWord" bgColor='white' :actionStyle='searchStyle'
+				<u-search placeholder="搜索订单" 
+				v-model="searchKeyWord" bgColor='white' :actionStyle='searchStyle'
 					@custom="getSearch" @search="getSearch" :clearabled="true"></u-search>
 				<view class="tab-content">
 					<u-tabs :list="tabList" @click="clickTab" lineColor='transparent' :current='tabIndex'
@@ -30,7 +31,8 @@
 										'border-radius':'40rpx'
 									}" class="tabs"></u-tabs>
 					<view class="right-btn" @click="showMenu=true">
-						<u-icon name="grid-fill" color="white" size="28"></u-icon>
+						<!-- <u-icon name="grid-fill" color="white" size="28"></u-icon> -->
+						<image class="quanbu" src="@/static/images/order/quanbuyewu.png"></image>
 						<view class="">
 							全部
 						</view>
@@ -53,11 +55,13 @@
 		<mescroll-body ref="mescrollRef" :up="upOption" @init="mescrollInit" @down="downCallback" @up="upCallback" class="mescroll">
 	<view class="evaluatePage flex flex-space-between" v-show="tabIndex == 10"  @click="evaluationRecord">
 		<view class="left flex flex-space-between">
-			<u-icon size="20" name="edit-pen"></u-icon>
+			<!-- <u-icon size="20" name="edit-pen"></u-icon> -->
+			<image class="pingjia" src="@/static/images/order/pingjia.png"></image>
 			<view style="margin-left: 20prx;">我的评价</view> 
 		</view>
 		<view class="right">
-				<u-icon size="20" name="arrow-right"></u-icon>
+			<image style='width:12px;height:12px;' src="@/static/images/order/right.png"></image>
+				<!-- <u-icon size="20" name="arrow-right"></u-icon> -->
 		</view>
 		</view>
 			<view :id="'good'+good.id" class="good-list" v-for="good in goods" :key="good.id"
@@ -184,19 +188,30 @@
 		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :confirmText='confirmText'
 			:closeOnClickOverlay='true' :showCancelButton='showCancelButton' @confirm="confirmClick"
 			@close="cancelClick" @cancel="cancelClick" class="modal">
-			<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">
-				</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="" >
+		           	<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'>
+		           </u--textarea>
+				   <view class='termination' :class="{'active':value2.length>0}" @click='termination'>终止</view>
+			</view>
+		           
+		</u-popup>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
@@ -206,15 +221,20 @@
 	import {
 		mapState
 	} from 'vuex';
+	import uniPopup from '@/components/uni-popup/uni-popup.vue'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import {
 		apiGoods
 	} from "@/api/mock.js"
 	export default {
+		components:{
+			uniPopup
+		},
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
 				confirmText: '',
+				show:false,
 				showCancelButton: true,
 				type: null,
 				objData: {},
@@ -395,6 +415,12 @@
 
 		// },
 		methods: {
+			closepopup(){
+				this.show=false
+			},
+			close(){
+				this.show=false
+			},
 			goTodriverDetail(val){
 				uni.$u.route('/pages/order/driverDetail',{
 					driver:JSON.stringify(val)
@@ -484,9 +510,9 @@
 				// } else {
 				// 	this.isShowTerminationReason = true
 				// }
-					this.alertTitle = '确定终止订单?'
+					// this.alertTitle = '确定终止订单?'
 				this.id = item.id
-				this.isShowAlert = true
+				this.show = true
 			},
 			init() {
 
@@ -494,6 +520,42 @@
 			del() {
 				this.isShowAlert = true
 			},
+			termination(){
+				var that=this
+				let _terminationReason = ''
+				if (this.radiovalue1 == '已与货主协商') {
+					_terminationReason = 1
+				} else if (this.radiovalue1 == '货主原因终止') {
+					_terminationReason = 2
+				} else if (this.radiovalue1 == '司机个人原因终止') {
+					_terminationReason = 3
+				} else if (this.radiovalue1 == '其他') {
+					_terminationReason = 4
+				}
+					this.$request.baseRequest('post', '/orderInfo/api/end', {
+							id: this.id,
+							terminator: 2,
+							terminationReason: _terminationReason,
+							terminationReasonDescription: this.value2
+						}).then(res => {
+							if (res.code == 200) {
+								this.show=false
+								this.$refs.uToast.show({
+									type: 'success',
+									message: '终止订单成功',
+								})
+							} else {
+								this.$refs.uToast.show({
+									type: 'success',
+									message: '终止订单失败',
+								})
+							}
+							that.mescroll.resetUpScroll()
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
+			},
 			confirmClick() {
 				var that =this
 				// // #ifdef APP-PLUS
@@ -523,6 +585,7 @@
 									type: 'success',
 									message: _title,
 									complete() {
+										that.upCallback({size: 10,num: 1})
 										that.mescroll.resetUpScroll()
 									}
 								})
@@ -536,6 +599,7 @@
 									type: 'success',
 									message: _title,
 									complete() {
+										that.upCallback({size: 10,num: 1})
 										that.mescroll.resetUpScroll()
 									}
 								})
@@ -570,28 +634,7 @@
 						.catch(res => {
 							uni.$u.toast(res.message);
 						});
-				} else {
-					this.$request.baseRequest('post', '/orderInfo/api/end', {
-							id: this.id,
-							terminator: 2,
-						}).then(res => {
-							if (res.code == 200) {
-								this.$refs.uToast.show({
-									type: 'success',
-									message: '终止订单成功',
-								})
-							} else {
-								this.$refs.uToast.show({
-									type: 'success',
-									message: '终止订单失败',
-								})
-							}
-							that.mescroll.resetUpScroll()
-						})
-						.catch(res => {
-							uni.$u.toast(res.message);
-						});
-				}
+				} 
 			},
 			cancelClick() {
 				this.isShowAlert = false
@@ -1037,4 +1080,37 @@
 		padding: 20rpx;
 		border-radius: 20rpx;
 	}
+	/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;
+	}
+	.quanbu{
+		width:16px;
+		height:16px;
+	}
+	.pingjia{
+		width:14px;
+		height:14px;
+	}
+	
 </style>

+ 15 - 1
pages/order/jb.vue

@@ -10,7 +10,7 @@
 		<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>
+			<u--textarea v-model="value1" placeholder="输入要举报的内容10-300字" count maxlength='300'></u--textarea>
 			<u-upload class="uview-upload" :fileList="fileList1" @afterRead="afterRead($event)" @delete="deletePic"
 				name="1" multiple :maxCount="9"></u-upload>
 		</view>
@@ -63,6 +63,20 @@
 				}
 			},
 			submit() {
+				if (!this.value1) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "举报信息不能为空!",
+					})
+					return
+				}
+				if (this.value1.length<10||this.value1.length>300) {
+					that.$refs.uToast.show({
+						type: 'error',
+						message: "举报信息输入错误!",
+					})
+					return
+				}
 				uni.showLoading({
 					title: '加载中'
 				})

+ 23 - 9
pages/order/map.nvue

@@ -1,9 +1,9 @@
 <template>
 	<view>
-		<map v-if="polyline[0].points.length > 0" id="myMap" :markers="markers" :polyline="polyline"
+		<map v-if="polyline[0].points.length > 0" ref="myMap" id="myMap" :markers="markers" :polyline="polyline"
 			:latitude="polyline[0].points[0].latitude" :longitude="polyline[0].points[0].longitude"
 			style="width: 100%; height: 2000rpx" @updated="test" />
-		<view class="hcp-bottom">
+		<view v-if="polyline[0].points.length > 0" class="hcp-bottom">
 			<button v-if="startMove" @click="handleStopMove()">暂停移动</button>
 			<button v-else @click="handleStartMove()">开始移动</button>
 		</view>
@@ -65,11 +65,19 @@
 						'content-type': 'application/json' //'application/x-www-form-urlencoded; charset=UTF-8',
 					},
 					success: (res) => {
-						console.log(res.data.data,11111111)
+						// console.log(res.data,11111111)
 						if(res.data.code==200){
-							if(res.data.data.longitudeLatitude){
-								console.log(JSON.parse(res.data.data.longitudeLatitude));
-								this.polyline[0].points =JSON.parse(res.data.data.longitudeLatitude)
+							if(res.data.data){
+								if(res.data.data.longitudeLatitude){
+									// console.log(JSON.parse(res.data.data.longitudeLatitude));
+									this.polyline[0].points =JSON.parse(res.data.data.longitudeLatitude)
+								}
+							}else{
+								uni.showToast({
+									title: '暂无运输轨迹',
+									icon: 'none',
+									duration: 2000
+								})
 							}
 						}
 					}
@@ -101,8 +109,12 @@
 				// 	// 	var longitude = this.polyline[0].points[this.polyline[0].points.length -1].longitude + 0.0001
 				// 	// 	this.polyline[0].points.push({latitude,longitude})
 				// 	// }
-					this.durationTime = Math.ceil(30000 / this.polyline[0].points.length)	//默认播放全程使用30秒,计算相连两点动画时长
-					this.initMapData()
+				var that = this
+				setTimeout(()=>{
+					that.durationTime = Math.ceil(30000 / that.polyline[0].points.length)	//默认播放全程使用30秒,计算相连两点动画时长
+					that.initMapData()
+				},1000)
+					
 				// 	})
 				// 	.catch(res => {
 				// 		uni.hideLoading()
@@ -123,7 +135,7 @@
 
 			},
 			test() {
-				console.log("1111111111111111")
+				// console.log("1111111111111111")
 				this.mapContext.includePoints({
 					points: this.polyline[0].points,
 					padding: [100, 100, 1000, 100]
@@ -131,6 +143,7 @@
 			},
 			//设置位置(从起点开始)
 			initMarkers() {
+				console.log(this.polyline[0])
 				this.markers[0].latitude = this.polyline[0].points[0].latitude
 				this.markers[0].longitude = this.polyline[0].points[0].longitude
 			},
@@ -156,6 +169,7 @@
 				})
 				return
 				*/
+			   console.log(this.mapContext)
 				this.mapContext.moveAlong({
 					duration: 10000,
 					markerId: this.markers[0].id,

+ 132 - 9
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" @click="back"></u-icon> -->
 				<view class="nav-title">订单详情</view>
-				<u-icon class="search" name="server-fill" color="" size="28" @click="$helper.contactCustomerService()">
+				<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>
@@ -22,7 +24,7 @@
 				</u-button>
 				<u-button class="btn" text="接受" @click="accept(1)" v-if="dataObj.cargoOwnerStatus=='待接单'">
 				</u-button>
-				<u-button class="btn" text="终止" @click="stop()" v-if="dataObj.cargoOwnerStatus=='未装车'">
+				<u-button class="btn" text="终止" @click="clickstop()" v-if="dataObj.cargoOwnerStatus=='未装车'">
 				</u-button>
 				<u-button class="btn" text="查看合同" @click="lookContract" v-if="dataObj.cargoOwnerContract=='1'">
 				</u-button>
@@ -64,7 +66,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="toPhone"></u-icon>
+						<image class="phone" style='width:24px;height:24px;' src="../../static/images/dianhua.png" @click="toPhone" mode=""></image>
+						<!-- <u-icon class="phone" name="phone-fill" color="#2772FB" size="20" @click="toPhone"></u-icon> -->
 					</view>
 
 					<view class="hz-name">联系司机</view>
@@ -262,6 +265,29 @@
 				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="" >
+		           	<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'>
+		           </u--textarea>
+				   <view class='termination' :class="{'active':value2.length>0}" @click='termination'>终止</view>
+			</view>
+		           
+		</u-popup>
 		<u-toast ref="uToast"></u-toast>
 		<!-- 		<view v-if="lookAlert" class="look-contract" @click="lookAlert==false">
 			<u-button class="btn" text="查看合同" @click="lookContract"></u-button>
@@ -293,8 +319,12 @@
 
 <script>
 	var that;
+	import uniPopup from '@/components/uni-popup/uni-popup.vue'
 	import uploadImage from '@/components/ossutil/uploadFile.js';
 	export default {
+		components:{
+			uniPopup
+		},
 		data() {
 			return {
 				cyinfoStatus: '未装车',
@@ -309,6 +339,7 @@
 				status2: false,
 				status3: false,
 				id: '',
+				show:false,
 				value2: '',
 				radiolist1: [{
 						name: '已与货主协商',
@@ -364,6 +395,16 @@
 			this.getList()
 		},
 		methods: {
+			radioChange(n) {
+				console.log('radioChange', n);
+			
+			},
+			closepopup(){
+				this.show=false
+			},
+			close(){
+				this.show=false
+			},
 			ylImg(src) {
 				uni.previewImage({
 					urls: src,
@@ -488,6 +529,7 @@
 				// uni.$u.route('/pages/order/confirmUnloading', item);
 			},
 			confirmClick() {
+				var that=this
 				that.isShowAlert = false
 				if (this.type == 1 || this.type == 2) {
 					let _title = ''
@@ -505,7 +547,7 @@
 									type: 'success',
 									message: _title,
 									complete() {
-										that.mescroll.resetUpScroll()
+										that.getList()
 									}
 								})
 							} else {
@@ -518,7 +560,7 @@
 									type: 'success',
 									message: _title,
 									complete() {
-										that.mescroll.resetUpScroll()
+										
 									}
 								})
 							}
@@ -600,7 +642,52 @@
 						.catch(res => {
 							uni.$u.toast(res.message);
 						});
-				} else {
+				} else{
+					var 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,
+												terminator: 2,
+												terminationReason: _terminationReason,
+												terminationReasonDescription: this.value2
+											}).then(res => {
+												if (res.code == 200) {
+													that.show=false
+													this.$refs.uToast.show({
+														type: 'success',
+														message: '终止订单成功',
+													})
+													that.getList()
+												} else {
+													this.$refs.uToast.show({
+														type: 'success',
+														message: '终止订单失败',
+													})
+												}
+											})
+											.catch(res => {
+												uni.$u.toast(res.message);
+											});
+				}
+			},
+			termination(){
+				var that=this
 					if (this.radiovalue1 == '其他' && !this.value2) {
 						this.$refs.uToast.show({
 							type: 'error',
@@ -621,24 +708,26 @@
 					this.$request.baseRequest('post', '/orderInfo/api/end', {
 							id: this.id,
 							terminator: 2,
+							terminationReason: _terminationReason,
+							terminationReasonDescription: this.value2
 						}).then(res => {
 							if (res.code == 200) {
+								that.show=false
 								this.$refs.uToast.show({
 									type: 'success',
 									message: '终止订单成功',
 								})
+								that.getList()
 							} else {
 								this.$refs.uToast.show({
 									type: 'success',
 									message: '终止订单失败',
 								})
 							}
-							that.mescroll.resetUpScroll()
 						})
 						.catch(res => {
 							uni.$u.toast(res.message);
 						});
-				}
 			},
 			cancelClick() {
 				this.isShowAlert = false
@@ -654,6 +743,17 @@
 				this.id = item.id
 				this.isShowAlert = true
 			},
+			clickstop(){
+				let item = this.dataObj
+				// 货主接单
+				if (item.cargoOwnerStatusKey == 1) {
+					this.isShowTerminationReason = false
+				} else {
+					this.isShowTerminationReason = true
+				}
+				this.id = item.id
+				this.show = true
+			},
 			toPhone() {
 				var that=this
 				uni.makePhoneCall({
@@ -1066,4 +1166,27 @@
 		top: 120rpx;
 		left: 10rpx;
 	}
+	/deep/.u-popup__content{
+		border-radius: 10px;
+		padding:20px;
+	}
+	/deep/.u-radio{
+		margin:40rpx 0;
+	}
+	.close{
+		position:absolute;
+		right:20px;
+	}
+	.termination{
+		background:#F1F3F6;
+		color:#C5CAD4;
+		padding:10px;
+		border-radius:30px;
+		text-align: center;
+		margin-top:30rpx;
+	}
+	.termination.active{
+		background: #2772FB;
+		color: white;
+	}
 </style>

+ 3 - 0
pages/release/addAddress.vue

@@ -200,4 +200,7 @@
 		right: 0;
 		margin: auto;
 	}
+	/deep/input{
+		word-break:break-all;
+	}
 </style>

+ 3 - 1
pages/release/editRelease.vue

@@ -584,7 +584,9 @@
 							type: 'success',
 							message: "修改成功",
 							complete() {
-								
+								uni.navigateBack({
+									delta:1
+								})
 								_this.dataObj = {
 									commonId: '',
 									cargoOwner: '',

+ 8 - 4
pages/release/lookRelease.vue

@@ -21,7 +21,9 @@
 		<view class="flex place">
 			<view class="left flex">
 				<view class="flex">
-					<view class="ssx">{{$helper.getProvinceAbbreviation(dataObj.sendPrivate?dataObj.sendPrivate:dataObj.sendCity)}}</view>
+					<view class="ssx">
+						{{$helper.getProvinceAbbreviation(dataObj.sendPrivate?dataObj.sendPrivate:dataObj.sendCity)}}
+					</view>
 					<view class="level2-title">{{dataObj.sendCity}}</view>
 				</view>
 				<view class="level2-title">{{dataObj.sendArea}}</view>
@@ -125,7 +127,7 @@
 				<view class="left">任务描述</view>
 			</view>
 			<view class="row">
-				<u--textarea v-model="dataObj.taskDescription" placeholder="请输入内容"></u--textarea>
+				<u--textarea v-model="dataObj.taskDescription" placeholder="请输入内容" disabled></u--textarea>
 			</view>
 
 
@@ -394,7 +396,8 @@
 		}
 	}
 
-	.content2,.content5 {
+	.content2,
+	.content5 {
 		.row {
 			margin: 20rpx 0;
 		}
@@ -402,7 +405,8 @@
 		.left {
 			color: #8F8F8F;
 		}
-		.right{
+
+		.right {
 			color: #333333;
 		}
 	}

+ 38 - 1
pages/release/release.vue

@@ -106,7 +106,7 @@
 			<view class="row">
 				<view class="left">收货方信用代码(选填)</view>
 				<view class="right flex">
-					<input placeholder="输入收货方信用代码" class="input" v-model="dataObj.receiverCreditCode" />
+					<input placeholder="统一社会信用代码" class="input" v-model="dataObj.receiverCreditCode" />
 				</view>
 			</view>
 			<view class="flex row">
@@ -502,6 +502,8 @@
 					}).then(res => {
 						if (uni.getStorageSync('releaseCargoOwner')) {
 							this.dataObj.cargoOwner = uni.getStorageSync('releaseCargoOwner')
+							this.dataObj.compId =uni.getStorageSync('releasecompId')
+							
 						}
 						// 可用企业货主
 						this.qyList = []
@@ -515,6 +517,7 @@
 						if (!_self) _self = []
 						if (_self.length > 0) {
 							for (let i = 0; i < _self.length; i++) {
+								_self[i].compStatus='wd'
 								if (_self[i].status == '已认证') {
 									this.qyList.push(_self[i])
 								}
@@ -522,6 +525,7 @@
 						}
 						if (_dlhz.length > 0) {
 							for (let i = 0; i < _dlhz.length; i++) {
+								_dlhz[i].compStatus='ss'
 								if (_dlhz[i].status == '已认证') {
 									this.qyList.push(_dlhz[i])
 								}
@@ -587,6 +591,13 @@
 					})
 					return true
 				}
+				if (!uni.$u.test.chinese(this.dataObj.goodsName)) {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "货名输入错误!",
+					})
+					return true
+				}
 				if (uni.$u.test.isEmpty(this.dataObj.receiver)) {
 					this.$refs.uToast.show({
 						type: 'error',
@@ -616,6 +627,20 @@
 					})
 					return true
 				}
+				if(this.dataObj.receiverIdcard&&!uni.$u.test.rangeLength(this.dataObj.receiverIdcard, [18, 18])){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "身份证号输入错误!",
+					})
+					return true
+				}
+				if(this.dataObj.receiverCreditCode&&!uni.$u.test.rangeLength(this.dataObj.receiverCreditCode, [18, 18])){
+					this.$refs.uToast.show({
+						type: 'error',
+						message: "信用代码输入错误!",
+					})
+					return true
+				}
 				if (uni.$u.test.isEmpty(this.dataObj.freightPrice)) {
 					this.$refs.uToast.show({
 						type: 'error',
@@ -778,6 +803,9 @@
 						uni.removeStorage({
 							key: 'releaseCargoOwner'
 						});
+						uni.removeStorage({
+							key: 'releasecompId'
+						});
 						this.$refs.uToast.show({
 							type: 'success',
 							message: "发布成功",
@@ -912,9 +940,18 @@
 				for (let i = 0; i < this.qyList.length; i++) {
 					let _name = this.qyList[i].company ? this.qyList[i].company : this.qyList[i].companyName
 					if (_name == e.value[0]) {
+						if(e.value[0]!='个人货主'){
+							if(this.qyList[i].compStatus=='ss'){
+								this.dataObj.compId=this.qyList[i].compId
+							}else{
+								this.dataObj.compId=this.qyList[i].id
+							}
+							uni.setStorageSync('releasecompId', this.dataObj.compId)
+						}
 						this.dataObj.freightAdvance = this.qyList[i].advanceFreightService == 1 ? true : false
 					}
 				}
+				
 				uni.setStorageSync('releaseCargoOwner', this.dataObj.cargoOwner)
 				this.show = false
 			},

+ 4 - 2
pages/release/selectAddress.vue

@@ -300,8 +300,10 @@
 										uni.setStorageSync('storage_saddress',data)
 									}
 									
-									
-									uni.$u.route('/pages/release/release');
+									uni.navigateBack({
+										delta:1
+									})
+									// uni.$u.route('/pages/release/release');
 									// that.temporaryAddress.latitude = res.latitude
 									// that.temporaryAddress.longitude = res.longitude
 									// that.temporaryAddress.detailedAddress = locationObj.ADDRESS

TEMPAT SAMPAH
static/images/carSource/dianhua.png


TEMPAT SAMPAH
static/images/dianhua.png


TEMPAT SAMPAH
static/images/kefu.png


TEMPAT SAMPAH
static/images/order/guanbi@3x.png


TEMPAT SAMPAH
static/images/order/pingjia.png


TEMPAT SAMPAH
static/images/order/quanbuyewu.png


TEMPAT SAMPAH
static/images/order/right.png


TEMPAT SAMPAH
static/images/order/sousuo.png


TEMPAT SAMPAH
static/images/return.png


TEMPAT SAMPAH
static/images/xingxing.png


TEMPAT SAMPAH
static/images/xingxing_check.png


TEMPAT SAMPAH
static/mine/right.png


+ 76 - 50
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,47 +16,73 @@ 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))
-					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 
-						}); 
+	}
+	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)
+							}
+						} 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
+						// }
 					}
-					// // 登录失败
-					// 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)
-				}
-			)
+				).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
@@ -70,29 +96,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
 				}
@@ -109,4 +135,4 @@ export default {
 	baseUrl,
 	baseRequest,
 	TokenRequest
-}
+}