achao 3 vuotta sitten
vanhempi
commit
25164d4796
46 muutettua tiedostoa jossa 2790 lisäystä ja 1223 poistoa
  1. 62 62
      App.vue
  2. 3 2
      common/appUpdate.js
  3. 15 2
      common/helper.js
  4. 0 1
      components/ossutil/uploadFile.js
  5. 2 3
      components/upload.vue
  6. 3 1
      config/index.js
  7. 8 1
      main.js
  8. 49 7
      manifest.json
  9. 7 1
      pages.json
  10. 104 149
      pages/goodSource/index.vue
  11. 1 2
      pages/goodSource/selectCity.vue
  12. 2 6
      pages/goodSource/shippingDetails.vue
  13. 3 11
      pages/mine/driverCertification.vue
  14. 1 0
      pages/mine/driverCertificationNext.vue
  15. 34 4
      pages/mine/editDriverCertification.vue
  16. 0 1
      pages/mine/editDriverCertificationNext.vue
  17. 48 13
      pages/mine/index.vue
  18. 33 14
      pages/mine/manageBankCards/addBankCard.vue
  19. 89 9
      pages/mine/manageBankCards/index.vue
  20. 1 1
      pages/mine/manageVehicles/addVehicle.vue
  21. 18 3
      pages/mine/manageVehicles/index.vue
  22. 12 6
      pages/mine/set.vue
  23. 0 3
      pages/mine/settings/editAvatar.vue
  24. 278 157
      pages/mine/settings/editPassword.vue
  25. 52 6
      pages/news/index.vue
  26. 131 30
      pages/order/confirmLoading.vue
  27. 179 33
      pages/order/confirmUnloading.vue
  28. 256 53
      pages/order/index.vue
  29. 39 30
      pages/order/orderDetails.vue
  30. 357 0
      pages/public/code.vue
  31. 0 222
      pages/public/lginOther.vue
  32. 369 198
      pages/public/login.vue
  33. 252 0
      pages/public/loginOther.vue
  34. 380 190
      pages/public/register.vue
  35. 1 1
      static/css/common.scss
  36. 0 0
      static/images/mine/bank/huaxia.png
  37. 0 0
      static/images/mine/bank/jh@2x.png
  38. 0 0
      static/images/mine/bank/nh@2x.png
  39. 0 0
      static/images/mine/bank/qt@2x.png
  40. 0 0
      static/images/mine/bank/xingye.png
  41. BIN
      static/logo.png
  42. 1 1
      store/index.js
  43. BIN
      unpackage/dist/dev/app-plus/static/images/mine/bank/其他@2x.png
  44. BIN
      unpackage/dist/dev/app-plus/static/images/mine/bank/农业银行@2x.png
  45. BIN
      unpackage/dist/dev/app-plus/static/images/mine/bank/建设银行@2x.png
  46. BIN
      zhiyun.keystore

+ 62 - 62
App.vue

@@ -39,7 +39,7 @@
 			let type = uni.getSystemInfoSync().platform
 			console.log(type) 
 			if (type == "android") {
-				// appUpdate()
+				appUpdate()
 			}
 			var that = this
 			// plus.push.getClientInfoAsync((info) => {
@@ -53,69 +53,69 @@
 			// 	console.log("info.clientid", info.clientid)
 			// }, err => {});
 			// 监听在线消息事件  
-			plus.push.addEventListener("receive", function(msg) {
-				var title = msg.content.split(':')[0]
-				var content = msg.content.split(':')[1]
+			// plus.push.addEventListener("receive", function(msg) {
+			// 	var title = msg.content.split(':')[0]
+			// 	var content = msg.content.split(':')[1]
 
-				let params = {
-					inApp: true, // app内横幅提醒
-					voice: true, // 声音提醒
-					vibration: true, // 振动提醒
-					messageType: "",
-					messageTitle: title,
-					messageContent: content,
-					messageImage: 'https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/logo.png'
-				}
-				console.log("msg", msg)
-				new app_push({
-					...params
-				}).show();
-				var userInfo = uni.getStorageSync("userInfo")
-				var that = this
-				that.$request.baseRequest('get', '/notice/query/noticeNumber').then(res => {
-					if (res.data.data) {
-						let name = 'myTip';
-						let value = res.data.data.task;
-						that.$store.commit('$uStore', {
-							name,
-							value
-						});
-						if (value != 0 && value) {
-							uni.setTabBarBadge({
-								index: 4,
-								text: value + ""
-							})
-						}
-						name = 'taskTip';
-						value = res.data.data.task;
-						that.$store.commit('$uStore', {
-							name,
-							value
-						});
-						// name = 'contractTip';
-						// value = res.data.data.contractTip;
-						// that.$store.commit('$uStore', {
-						// 	name,
-						// 	value
-						// });
-					}
-				})
-				//其它逻辑  
-			}, false);
-			//监听系统通知栏消息点击事件  
-			plus.push.addEventListener('click', function(msg) {
-				//处理点击消息的业务逻辑代码  
-				if (msg.content && msg.content.contains("任务")) {
-					uni.navigateTo({
-						url: '/pages/task/my_task'
-					})
-				} else if (msg.content && (msg.content.contains("合同") || msg.content.contains("交易"))) {
-					uni.navigateTo({
-						url: '/pageB/contract/contract'
-					})
-				}
+			// 	let params = {
+			// 		inApp: true, // app内横幅提醒
+			// 		voice: true, // 声音提醒
+			// 		vibration: true, // 振动提醒
+			// 		messageType: "",
+			// 		messageTitle: title,
+			// 		messageContent: content,
+			// 		messageImage: 'https://taohaoliang.oss-cn-beijing.aliyuncs.com/app/logo.png'
+			// 	}
+			// 	console.log("msg", msg)
+			// 	new app_push({
+			// 		...params
+			// 	}).show();
+			// 	var userInfo = uni.getStorageSync("userInfo")
+			// 	var that = this
+			// 	that.$request.baseRequest('get', '/notice/query/noticeNumber').then(res => {
+			// 		if (res.data.data) {
+			// 			let name = 'myTip';
+			// 			let value = res.data.data.task;
+			// 			that.$store.commit('$uStore', {
+			// 				name,
+			// 				value
+			// 			});
+			// 			if (value != 0 && value) {
+			// 				uni.setTabBarBadge({
+			// 					index: 4,
+			// 					text: value + ""
+			// 				})
+			// 			}
+			// 			name = 'taskTip';
+			// 			value = res.data.data.task;
+			// 			that.$store.commit('$uStore', {
+			// 				name,
+			// 				value
+			// 			});
+			// 			// name = 'contractTip';
+			// 			// value = res.data.data.contractTip;
+			// 			// that.$store.commit('$uStore', {
+			// 			// 	name,
+			// 			// 	value
+			// 			// });
+			// 		}
+			// 	})
+			// 	//其它逻辑  
+			// }, false);
+			// //监听系统通知栏消息点击事件  
+			// plus.push.addEventListener('click', function(msg) {
+			// 	//处理点击消息的业务逻辑代码  
+			// 	if (msg.content && msg.content.contains("任务")) {
+			// 		uni.navigateTo({
+			// 			url: '/pages/task/my_task'
+			// 		})
+			// 	} else if (msg.content && (msg.content.contains("合同") || msg.content.contains("交易"))) {
+			// 		uni.navigateTo({
+			// 			url: '/pageB/contract/contract'
+			// 		})
+			// 	}
 
-			}, false);
+			// }, false);
 			// #endif
 			this.$socket.initWebIM(this.$ws, true, true)
 			let userInfo = uni.getStorageSync('userInfo') || '';

+ 3 - 2
common/appUpdate.js

@@ -6,11 +6,12 @@ export default function appUpdate() {
 		
 	let baseUrlNew = config.def().baseUrlNew
 	uni.request({
-	    url: baseUrlNew + '/appVersion/selectInfo',
+	    url: 'https://apitest.eliangeyun.com/appVersion/selectInfo',
 	    data: {
 	    	appid: plus.runtime.appid,
 	    	version: plus.runtime.version,
-	    	imei: "1"
+	    	imei: "1",
+			type:'sj'
 	    },
 	    method: 'GET',
 	    success: (res) => {			

+ 15 - 2
common/helper.js

@@ -94,11 +94,21 @@ const setAudit = (item) => {
 }
 const contactCustomerService = (item) => {
 	console.log(item)
+	if(!item){
+		item='110'
+	}
 	console.log("联系客服")
 	uni.makePhoneCall({
-		phoneNumber: '114' //仅为示例
+		phoneNumber: item
 	});
 }
+// 获取市、区简称
+const filterUrban = (s) => {
+	return s.substring(0,s.length-1)
+}
+const filterArea = (q) => {
+	return q.substring(0,q.length-1)
+}
 //获取省份简称
 const getProvinceAbbreviation = (province) => {
 	    if(province == "北京市"||province == "北京")
@@ -171,6 +181,7 @@ const getProvinceAbbreviation = (province) => {
 	        return "澳";
 	
 }
+
 export default {
 	getListByUserId,
 	setAudit,
@@ -180,5 +191,7 @@ export default {
 	imgType,
 	imgTypeList,
 	makeValidityPeriod,
-	getProvinceAbbreviation
+	getProvinceAbbreviation,
+	filterUrban,
+	filterArea
 }

+ 0 - 1
components/ossutil/uploadFile.js

@@ -21,7 +21,6 @@ const uploadFile = function (filePath, dir, successc, failc) {
     })
     return;
   }
-  
   //图片名字 可以自行定义,     这里是采用当前的时间戳 + 150内的随机数来给图片命名的
   const aliyunFileKey = dir + new Date().getTime() + Math.floor(Math.random() * 150) + '.png';
   

+ 2 - 3
components/upload.vue

@@ -170,7 +170,7 @@
 			// 成功背景颜色
 			checkBgColor:{
 				type: String,
-				default: '#22C572'
+				default: '#2772FB'
 			},
 			// 成功icon颜色
 			checkColor:{
@@ -313,7 +313,6 @@
 				uploading: false,
 				isSelectFile: false,
 				imgShow:false,
-				url:''
 			};
 		},
 		watch: {
@@ -666,7 +665,7 @@
 		top: 0rpx;
 		right: 0rpx;
 		z-index: 10;
-		background-color: $u-error;
+		background: rgba(17, 26, 52, 0.5);
 		border-radius:0 0 0 10rpx;
 		width: 44rpx;
 		height: 44rpx;

+ 3 - 1
config/index.js

@@ -1,5 +1,7 @@
 const dev = {
-	baseUrlNew: 'http://192.168.0.17:8091',
+	baseUrlNew: 'https://apitest.eliangeyun.com',
+	// baseUrlNew: 'http://192.168.1.114:8091',
+	// baseUrlNew: 'http://192.168.1.116:8999',
 	h5Appid: 'wxb66b599f7f61b46f',
 	debug: false
 }

+ 8 - 1
main.js

@@ -24,7 +24,14 @@ Vue.config.productionTip = false
 
 App.mpType = 'app'
 Vue.use(uView)
-
+const logout = () => {
+	uni.removeStorage({
+		key: 'userInfo'
+	})
+}
+Vue.prototype.$api = {
+	logout,
+};
 // #ifdef MP
 // 引入uView对小程序分享的mixin封装
 const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js')

+ 49 - 7
manifest.json

@@ -1,14 +1,14 @@
 {
-    "name" : "uni-app开发模板",
-    "appid" : "__UNI__6485BEA",
+    "name" : "智运",
+    "appid" : "__UNI__9C76CB6",
     "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
+    "versionName" : "1.0.3",
+    "versionCode" : 103,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {
         "usingComponents" : true,
-        "nvueStyleCompiler" : "uni-app",
+        "nvueStyleCompiler" : "智运",
         "compilerVersion" : 3,
         "splashscreen" : {
             "alwaysShowBeforeRender" : true,
@@ -17,7 +17,9 @@
             "delay" : 0
         },
         /* 模块配置 */
-        "modules" : {},
+        "modules" : {
+            "Maps" : {}
+        },
         /* 应用发布信息 */
         "distribute" : {
             /* android打包配置 */
@@ -43,7 +45,47 @@
             /* ios打包配置 */
             "ios" : {},
             /* SDK配置 */
-            "sdkConfigs" : {}
+            "sdkConfigs" : {
+                "ad" : {},
+                "maps" : {
+                    "amap" : {
+                        "appkey_ios" : "64541bb9b52fe4d41d8ac5c1959cf4b9",
+                        "appkey_android" : "8a601d5716a812aaf65291da18dae719"
+                    }
+                }
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                }
+            }
         }
     },
     /* 快应用特有相关 */

+ 7 - 1
pages.json

@@ -66,6 +66,12 @@
 				"navigationStyle": "custom"
 			}
 		},
+		{
+			"path": "pages/public/code",
+			"style": {
+				"navigationStyle": "custom"
+			}
+		},
 		{
 			"path": "pages/public/register",
 			"style": {
@@ -251,7 +257,7 @@
             
         }
         ,{
-            "path" : "pages/public/lginOther",
+            "path" : "pages/public/loginOther",
             "style" :                                                                                    
             {
               "navigationStyle": "custom"

+ 104 - 149
pages/goodSource/index.vue

@@ -38,85 +38,29 @@
 		<u-picker :show="show" :columns="columns" :closeOnClickOverlay='true' @close='selectTypeClose'
 			@cancel='selectTypeClose' @confirm='confirmSelectType'></u-picker>
 		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
-			<view class="good-list" v-for="(good,index) in goods" :key="index" @click="toDetail(good.id)">
-				<view style="padding: 0 35rpx 20rpx 35rpx;">
-					<view class="flex flex-space-between">
-						<view class="item1">
-							<view class="ssx">{{$helper.getProvinceAbbreviation(good.sendPrivate)}}</view>
-							<view class="level2-title">{{good.sendCity}} {{good.sendArea}}</view>
-						</view>
-
-						<image class="jt-icon item2" src="@/static/images/goodSource/jt.png" mode='widthFix'></image>
-						<view class="item3">
-							<view class="ssx">{{$helper.getProvinceAbbreviation(good.unloadPrivate)}}</view>
-							<view class="level2-title">{{good.unloadCity}} {{good.unloadArea}}</view>
-						</view>
-					</view>
-					<view class="right gray">
-						{{good.updateDate}}
-					</view>
-					<view class="flex flex-space-between">
-						<view class="left">
-							<view class="flex">
-								<view class="fontsize-25 gray mr20">货距 {{good.cargoDistance}}km</view>
-								<view class="fontsize-25 gray ">运距 {{good.distance}}km</view>
-							</view>
-							<view class="flex fontsize-25 gray row">
-								<view>{{good.goodsName}} | </view>
-								<view>{{carLength(good)}} | {{carType(good)}} | {{carWeight(good)}}</view>
-							</view>
-							<view class="flex row">
-								<view class="row-tips">{{good.taskDescription}}</view>
-							</view>
-						</view>
-						<view class="right flex h-color">
-							<view class="fontsize-46">
-								{{good.freightPrice}}
-							</view>
-							<view class="flex dw">元/吨</view>
-						</view>
-					</view>
-				</view>
-				<view class="flex flex-space-between item-bottom">
-					<view class="left flex row">
-						<u--image :src="good.cargoOwnerPortrait" width='122rpx' height='122rpx' shape="circle">
-						</u--image>
-						<view class="name">{{good.cargoOwnerName}}</view>
-						<!-- <view class="hp flex fontsize-24">
-							<view class="gray">评分</view>
-							<view class="number-color">99%</view>
-						</view>
-						<view class="sum flex fontsize-24">
-							<view class="gray">发运次数</view>
-							<view class="number-color">106</view>
-						</view> -->
-					</view>
-					<view class="right">
-						<view @click.stop="grabOrders(good)" class="qd">抢单</view>
-					</view>
-				</view>
-			</view>
-			<view class="">
-				周边货源
-				<view class="good-list" v-for="(good,index) in otherGoods" :key="index" @click="toDetail(good.id)">
+			<view v-for="(good,index) in goods" :key="index" @click="toDetail(good.id)">
+				<view v-if="good.peripheralInfo==1&&isFirstIndex==index" class="other-goods">周边货源</view>
+				<view class="good-list">
 					<view style="padding: 0 35rpx 20rpx 35rpx;">
 						<view class="flex flex-space-between">
 							<view class="item1">
 								<view class="ssx">{{$helper.getProvinceAbbreviation(good.sendPrivate)}}</view>
-								<view class="level2-title">{{good.sendCity}} {{good.sendArea}}</view>
+								<view class="level2-title">{{$helper.filterUrban(good.sendCity)}}
+									{{$helper.filterArea(good.sendArea)}}</view>
 							</view>
 
 							<image class="jt-icon item2" src="@/static/images/goodSource/jt.png" mode='widthFix'>
 							</image>
 							<view class="item3">
 								<view class="ssx">{{$helper.getProvinceAbbreviation(good.unloadPrivate)}}</view>
-								<view class="level2-title">{{good.unloadCity}} {{good.unloadArea}}</view>
+								<view class="level2-title">{{$helper.filterUrban(good.unloadCity)}}
+									{{$helper.filterArea(good.unloadArea)}}</view>
 							</view>
 						</view>
 						<view class="right gray">
-							{{good.updateDate}}
+							{{good.createDate}}
 						</view>
-						<view class="flex flex-space-between">
+						<view class="flex flex-space-between yf-style">
 							<view class="left">
 								<view class="flex">
 									<view class="fontsize-25 gray mr20">货距 {{good.cargoDistance}}km</view>
@@ -140,7 +84,9 @@
 					</view>
 					<view class="flex flex-space-between item-bottom">
 						<view class="left flex row">
-							<u--image :src="good.cargoOwnerPortrait" width='122rpx' height='122rpx' shape="circle">
+							<u--image
+								:src="good.cargoOwnerPortrait?good.cargoOwnerPortrait:'../../static/images/mine/tx.png'"
+								width='100rpx' height='100rpx' shape="circle">
 							</u--image>
 							<view class="name">{{good.cargoOwnerName}}</view>
 							<!-- <view class="hp flex fontsize-24">
@@ -153,7 +99,7 @@
 							</view> -->
 						</view>
 						<view class="right">
-							<view @click.stop="grabOrders(good)" class="qd">抢单</view>
+							<view @click.stop="grabOrders(good)" class="qd" v-if='hasLogin'>抢单</view>
 						</view>
 					</view>
 				</view>
@@ -177,6 +123,7 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
+				isFirstIndex: null,
 				ObjSelect: {},
 				isShowAlert: false,
 				alertTitle: '确定抢单?',
@@ -226,7 +173,7 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
-		onShow() {debugger
+		onShow() {
 			//获取上一次点击起装卸地
 			if (uni.getStorageSync('fPlaceObj')) {
 				this.startPlace = uni.getStorageSync('fPlaceObj');
@@ -235,18 +182,41 @@
 				this.getLngLat();
 				// #endif
 			}
+			// #ifdef APP-PLUS
+			this.getLngLat();
+			// #endif
 			if (uni.getStorageSync('sPlaceObj')) {
 				this.endPlace = uni.getStorageSync('sPlaceObj');
 			} else {
 				this.endPlace.selected = '全国'
 			}
-// this.mescroll.resetUpScroll()
+			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+				reCommonId: this.userInfo.id,
+			}).then(res3 => {
+				if (res3.data) {
+					let name = 'myTip';
+					let value = res3.data
+					if (value == 0) {
+						uni.removeTabBarBadge({
+							index: 2
+						})
+					}
+					that.$store.commit('$uStore', {
+						name,
+						value
+					});
+					if (value != 0 && value) {
+						uni.setTabBarBadge({
+							index: 2,
+							text: value + ""
+						})
+					}
+				}
+			})
+			// this.mescroll.resetUpScroll()
 
 		},
 		onLoad() {
-			//#ifdef APP-PLUS
-			// this.getLngLat();
-			//#endif
 			that = this
 		},
 		onPageScroll(res) {
@@ -270,7 +240,7 @@
 
 		},
 		methods: {
-			mescrollInit(mescroll) {debugger
+			mescrollInit(mescroll) {
 				this.mescroll = mescroll;
 			},
 			confirmClick() {
@@ -307,10 +277,7 @@
 									})
 								}
 							})
-
 						}
-
-
 					})
 					.catch(res => {
 						uni.$u.toast(res.message);
@@ -324,29 +291,29 @@
 				let length = ''
 				if (good.carLengthSmall && good.carLength) {
 					length = good.carLengthSmall + '~' + good.carLength + '米'
-				} else if (good.carLengthSmall) {
+				} else if (good.carLengthSmall && !good.carLength) {
 					length = "大于" + good.carLengthSmall + '米'
-				} else if (good.carLength) {
+				} else if (good.carLength && !good.carLengthSmall) {
 					length = "小于" + good.carLength + '米'
 				}
 				return length
 			},
 			carType(good) {
-				// let _val = '';
-				// if (good.carModel == 1) {
-				// 	_val = '不限'
-				// } else {
-				// 	if (good.carModel.includes(2)) {
-				// 		_val += '高栏/'
-				// 	}
-				// 	if (good.carModel.includes(3)) {
-				// 		_val += '集装箱/'
-				// 	}
-				// 	if (good.carModel.includes(4)) {
-				// 		_val += '自卸车'
-				// 	}
-				// }
-				// return _val
+				let _val = '';
+				if (good.carModel == 1) {
+					_val = '不限'
+				} else {
+					if (good.carModel.includes(2)) {
+						_val += '高栏/'
+					}
+					if (good.carModel.includes(3)) {
+						_val += '集装箱/'
+					}
+					if (good.carModel.includes(4)) {
+						_val += '自卸车'
+					}
+				}
+				return _val
 			},
 			carWeight(good) {
 				good.loadWeightSmall
@@ -375,6 +342,7 @@
 				return String(year) + String(mouth) + String(datetime)
 			},
 			grabOrders(item) {
+
 				this.isShowAlert = true
 				this.ObjSelect = item
 
@@ -390,6 +358,9 @@
 				this.show = true
 			},
 			getLngLat() {
+				// uni.showLoading({
+				// 	title:'获取定位信息'
+				// })
 				uni.getLocation({
 					type: 'gcj02',
 					geocode: true,
@@ -450,7 +421,6 @@
 			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
-				debugger
 				let _pickerSelect;
 				if (this.pickerSelect == '运费先付') {
 					_pickerSelect = 1
@@ -506,73 +476,37 @@
 				} else {
 					_data.unLoadingPlace = this.endPlace.selected == "全国" ? '' : this.endPlace.selected
 				}
-
-
-
+				if (this.lng) {
+					_data.longitude = this.lng
+					_data.latitude = this.lat
+				}
 				this.$request.baseRequest('get', '/publishTaskInfo/selectGoodsSource', _data).then(res => {
-						if (res.code == 200) {debugger
+						if (res.code == 200) {
 							this.mescroll.endBySize(res.data.records.length, res.data.total);
 							if (page.num == 1) {
 								this.goods = [];
 								// this.otherGoods = []
 							}; //如果是第一页需手动制空列表
-							// if(!res.data.records[0].publishTaskInfoList) res.data.records[0].publishTaskInfoList = []
-							// if(!res.data.records[0].publishTaskInfoLists) res.data.records[0].publishTaskInfoLists = []
-							this.goods = this.goods.concat(res.data.records); //追加新数据
-							// this.otherGoods = this.otherGoods.concat(res.data.records[0].publishTaskInfoLists);
+							that.goods = that.goods.concat(res.data.records);
+							for (let i = 0; i < that.goods.length; i++) {
+								if (that.goods[i].peripheralInfo == 1) {
+									that.isFirstIndex = i
+									return
+								}
+							}
 						}
+						uni.hideLoading()
 					})
 					.catch(res => {
 						uni.$u.toast(res.message);
 						this.mescroll.endErr();
 					});
-
-
-
-
-
-				// 此处可以继续请求其他接口
-				// if(page.num == 1){
-				// 	// 请求其他接口...
-				// }
-
-				// 如果希望先请求其他接口,再触发upCallback,可参考以下写法
-				// if(!this.isInitxx){
-				// 	apiGetxx().then(res=>{
-				// 		this.isInitxx = true
-				// 		this.mescroll.resetUpScroll() // 重新触发upCallback
-				// 	}).catch(()=>{
-				// 		this.mescroll.endErr()
-				// 	})
-				// 	return // 此处return,先获取xx
-				// }
-
-				// //联网加载数据
-				// apiGoods(page.num, page.size).then(res => {
-				// 	//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
-				// 	//mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
-
-				// 	//方法一(推荐): 后台接口有返回列表的总页数 totalPage
-				// 	//this.mescroll.endByPage(res.list.length, totalPage); //必传参数(当前页的数据个数, 总页数)
-
-				// 	//方法二(推荐): 后台接口有返回列表的总数据量 totalSize
-				// 	this.mescroll.endBySize(res.list.length, totalSize); //必传参数(当前页的数据个数, 总数据量)
-
-				// 	//方法三(推荐): 您有其他方式知道是否有下一页 hasNext
-				// 	//this.mescroll.endSuccess(res.list.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)
-
-				// 	//方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据
-				// 	// this.mescroll.endSuccess(res.list.length);
-
-				// 	//设置列表数据
-				// 	if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
-				// 	this.goods = this.goods.concat(res.list); //追加新数据
-				// }).catch(() => {
-				// 	//联网失败, 结束加载
-				// 	this.mescroll.endErr();
-				// })
 			},
 			clickTab(val) {
+				uni.showLoading({
+					mask: true,
+					title: '加载中'
+				})
 				this.tabIndex = val.index
 				this.upCallback({
 					size: 10,
@@ -580,8 +514,7 @@
 				})
 			},
 			changeCity() {
-				debugger
-				if (this.endPlace == '全国') {
+				if (this.endPlace.selected == '全国') {
 					this.$refs.uToast.show({
 						type: 'error',
 						message: "卸车地为全国不允许切换!",
@@ -766,4 +699,26 @@
 		margin-right: 20rpx;
 		align-items: center;
 	}
+
+	.other-goods {
+		// background: red;
+		margin: 40rpx 0;
+		display: flex;
+		justify-content: center;
+		font-size: 36rpx;
+	}
+
+	.level2-title {
+		font-size: 28rpx;
+	}
+
+	.yf-style {
+		position: relative;
+
+		.h-color {
+			position: absolute;
+			right: 0;
+			top: -30rpx;
+		}
+	}
 </style>

+ 1 - 2
pages/goodSource/selectCity.vue

@@ -130,7 +130,7 @@
 			console.log('---------------------------------')
 			console.log(this.type)
 		},
-		onLoad(options) {debugger
+		onLoad(options) {
 			console.log(options)
 			this.type = options.type
 			this.title = JSON.parse(options.startPlace).selected + '→' + JSON.parse(options.endPlace).selected
@@ -152,7 +152,6 @@
 		},
 		methods: {
 			historyClick(type,val){
-				debugger
 				console.log(type)
 				if(type==0){
 					this.historyFcityList.unshift(val)

+ 2 - 6
pages/goodSource/shippingDetails.vue

@@ -12,13 +12,13 @@
 			<view class="content1">
 				<view class="row1 flex flex-space-between">
 					<view class="left flex">
-						<u--image :src="detailData.cargoOwnerPortrait" width='122rpx' height='122rpx' shape="circle">
+						<u--image :src="detailData.cargoOwnerPortrait?detailData.cargoOwnerPortrait:'../../static/images/mine/tx.png'" width='122rpx' height='122rpx' shape="circle">
 						</u--image>
 						<view class="fontsize-46 ml20">{{detailData.cargoOwnerName}}</view>
 					</view>
 					<view class="right">
 						<view class="flex">
-							<view class="call fontsize-28" @click="call">
+							<view class="call fontsize-28" @click="$helper.contactCustomerService(detailData.cargoOwnerPhone)">
 								<u-icon name="phone-fill" color="#2772FB"></u-icon>联系货主
 							</view>
 						</view>
@@ -139,7 +139,6 @@
 			};
 		},
 		onLoad(options) {
-			debugger
 			console.log(options)
 			this.id = options.id
 			this.init()
@@ -148,7 +147,6 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication']),
 			carLength() {
-				debugger
 				let length = ''
 				if (this.detailData.carLengthSmall && this.detailData.carLength) {
 					length = this.detailData.carLengthSmall + '~' + this.detailData.carLength + '米'
@@ -210,7 +208,6 @@
 						id: this.id,
 						// id: '8f1f3c624d7946d79a9d44a4057d9623',
 					}).then(res => {
-						debugger
 						if (res.code == 200) {
 							this.detailData = res.data
 						}
@@ -262,7 +259,6 @@
 				}
 
 				this.$request.baseRequest('post', '/publishTaskInfo/api/addOrder', _obj).then(res => {
-						debugger
 						if (res.code == 200) {
 							this.$refs.uToast.show({
 								type: 'success',

+ 3 - 11
pages/mine/driverCertification.vue

@@ -141,10 +141,10 @@
 				<view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(1,index)"
 					class="preview-card-img picture">
 					<!-- <image class="card-img" :src="dataDetails.cardAddressUrl"></image> -->
-			<!-- 		<view @click.stop="delCard(1)">
+					<view @click.stop="delCard(1)">
 						<image class='del-card' src="@/static/images/common/quxiao@2x.png">
 						</image>
-					</view> -->
+					</view>
 
 					<image class="" :src="dataDetails.cardAddressUrl" mode="aspectFit" style=""></image>
 				</view>
@@ -204,12 +204,6 @@
 					</view>
 					<image class="" :src="item.payeeAddressUrl" mode="aspectFit"></image>
 				</view>
-
-
-
-
-
-
 				<view class="flex row">
 					<view class="left-text">银行卡卡号</view>
 					<view class="flex">
@@ -318,7 +312,6 @@
 						name: '女',
 						disabled: false
 					},
-
 				],
 				isFirstAuthentication: true,
 				bankType: [],
@@ -776,7 +769,6 @@
 							console.log('身份反面')
 							break
 						case 3:
-							debugger
 							uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=bank');
 							console.log('银行卡')
 
@@ -1243,7 +1235,7 @@
 
 	.preview-card-img {
 		/deep/uni-image>div, uni-image>img {
-		    transform: scale(1.5) rotate(-90deg);
+		    // transform: scale(1.5) rotate(-90deg);
 		}
 	}
 

+ 1 - 0
pages/mine/driverCertificationNext.vue

@@ -354,6 +354,7 @@
 											_this.dataDetails.trailerOperationCertificate = result
 											break;
 									}
+									_this.$forceUpdate()
 								}
 							)
 						}

+ 34 - 4
pages/mine/editDriverCertification.vue

@@ -71,6 +71,9 @@
 					</view>
 				</view>
 			</view>
+			<u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
+				@confirm="confirmValidityPeriod" @change="changeHandler">
+			</u-picker>
 			<u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
 				@select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true"
 				@close="isShowimgType=false">
@@ -154,7 +157,7 @@
 				imagesrc: null
 			};
 		},
-		onLoad() {debugger
+		onLoad() {
 			_this = this;
 			console.log(this.userInfo)
 			//获取截止日期List数据
@@ -168,7 +171,27 @@
 			...mapState(['hasLogin', 'userInfo']),
 		},
 		methods: {
-
+			changeHandler(e) {
+				const {
+					columnIndex,
+					value,
+					values,
+					index,
+					picker = this.$refs.uPicker
+				} = e
+
+				// if (columnIndex === 0) {
+				// 	debugger
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(1, this.validityPeriod[1].shift())
+				// 	}
+
+				// } else if (columnIndex === 1) {
+				// 	if (e.index != 0) {
+				// 		picker.setColumnValues(2, this.validityPeriod[2].shift())
+				// 	}
+				// }
+			},
 			codeChange(text) {
 				this.tips = text;
 			},
@@ -217,12 +240,12 @@
 				this.dataDetails.driverSex = n
 			},
 			//判断是否是初次认证
-			getAuthenticationStatus() {debugger
+			getAuthenticationStatus() {
 				this.$request.baseRequest('', '/driverInfo/firstAuthentication', {
 						driverPhone: this.userInfo.phone,
 					}).then(res => {
 						if (res.code == 200) {
-							 this.dataDetails = res.data
+							this.dataDetails = res.data
 							// this.dataDetails.driverName = res.data.driverName
 							// this.dataDetails.driverSex = res.data.driverSex
 							// this.dataDetails.driverCall = res.data.driverCall
@@ -242,6 +265,13 @@
 				if (e.value[0] == '长期') {
 					this.dataDetails.cardValidityDate = e.value[0]
 				} else {
+					if (!e.value[1] || !e.value[2]) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "日期格式错误,请重新选择!",
+						})
+						return
+					}
 					this.dataDetails.cardValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
 				}
 

+ 0 - 1
pages/mine/editDriverCertificationNext.vue

@@ -557,7 +557,6 @@
 
 				this.$request.baseRequest('post', '/driverInfo/api/editInfo', this.dataDetails).then(res => {
 						if (res.code == 200) {
-							debugger
 							this.$refs.uToast.show({
 								type: 'success',
 								message: "提交成功!",

+ 48 - 13
pages/mine/index.vue

@@ -12,7 +12,7 @@
 				</u--image>
 				<view class="right-text">
 					<view @click="toLogin" class="name">{{hasLogin? userName : '立即登录' }}</view>
-					<view @click="toLogin" class="phone" v-if="hasLogin">{{phone}}</view>
+					<view @click="toLogin" class="phone" v-if="hasLogin">{{starUserphone}}</view>
 				</view>
 
 			</view>
@@ -93,10 +93,10 @@
 </template>
 
 <script>
+	var that;
 	import {
 		mapState
 	} from 'vuex';
-	var that;
 	export default {
 		data() {
 			return {
@@ -114,26 +114,53 @@
 			};
 		},
 		onShow() {
-			debugger
 			// console.log("111111111111111111111111111", this.firstAuthentication)
 			//获取认证状态
+			// console.log(userInfo)
+			// console.log(hasLogin)
+			if (!this.hasLogin) {
+				this.isShowAlert = true
+				return
+			}
 			this.getAuthenticationStatus()
-
-
-
+			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+				reCommonId: this.userInfo.id,
+			}).then(res3 => {
+				if (res3.data) {
+					let name = 'myTip';
+					let value = res3.data
+					if (value == 0) {
+						uni.removeTabBarBadge({
+							index: 2
+						})
+					}
+					that.$store.commit('$uStore', {
+						name,
+						value
+					});
+					if (value != 0 && value) {
+						uni.setTabBarBadge({
+							index: 2,
+							text: value + ""
+						})
+					}
+				}
+			})
 		},
 		onLoad() {
+			debugger
 			that = this
+
 		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo']),
 			// 手机号中间4位加*
-			// starUserphone() {
-			// 	let reg = /^(\d{3})\d{4}(\d{4})$/;
-			// 	if (this.userphone) {
-			// 		return this.userphone.replace(reg, "$1****$2");
-			// 	}
-			// }
+			starUserphone() {
+				let reg = /^(\d{3})\d{4}(\d{4})$/;
+				if (this.phone) {
+					return this.phone.replace(reg, "$1****$2");
+				}
+			}
 		},
 		methods: {
 			async getAuthenticationStatus() {
@@ -143,8 +170,15 @@
 					}).then(res => {
 						debugger
 						this.firstAuthentication = res.data
+						console.log("this.firstAuthentication", this.firstAuthentication)
 						if (this.firstAuthentication) {
-							this.userName = this.firstAuthentication.driverCall
+							this.isFirstSH = false
+							if (this.firstAuthentication.driverSex == '女') {
+								this.userName = this.firstAuthentication.driverCall + '女士'
+							} else {
+								this.userName = this.firstAuthentication.driverCall + '先生'
+							}
+
 							if (this.firstAuthentication.authenticationStatus == '审核中') {
 								this.statusVal = '身份认证审核中'
 							} else if (this.firstAuthentication.authenticationStatus == '未通过') {
@@ -189,6 +223,7 @@
 					if (type == 1 && this.statusVal == '已认证') {
 						src = '/pages/mine/editDriverCertification'
 					}
+					console.log('this.isFirstSH', this.isFirstSH)
 					if ((type == 2 || type == 3) && this.isFirstSH) {
 						this.$refs.uToast.show({
 							type: 'error',

+ 33 - 14
pages/mine/manageBankCards/addBankCard.vue

@@ -274,22 +274,41 @@
 				// })
 			},
 			submit() {
-				this.$request.baseRequest('post', '/driverPayeeInfo/api/addInfo', this.dataDetails).then(res => {
-						if (res.code == '200') {
-							let params = {
-								type: 'success',
-								message: "提交成功",
-							}
-							this.$refs.uToast.show({
-								...params
-							})
-							uni.$u.route('/pages/mine/manageBankCards/index');
+				// // 获取银行卡颜色
+				// let _obj = {
+				// 	"input":this.dataDetails.payeeAddressUrl
+				// }
+				// this.$request.baseRequest('post', '/ClothingColorController/recognition', _obj)
+				// 	.then(res => {
+				// 		if (res.code == '200') {
+				// 			this.dataDetails.cardColor = res.data
+
+				// 		} else {
+				// 			uni.$u.toast(res.message);
+				// 		}
 
-						} else {
-							uni.$u.toast(res.message);
-						}
+				// 	})
+				// 	.catch(res => {
+				// 		uni.$u.toast(res.message);
+				// 	});
+
+				this.$request.baseRequest('post', '/driverPayeeInfo/api/addInfo', this.dataDetails).then(
+						res => {
+							if (res.code == '200') {
+								let params = {
+									type: 'success',
+									message: "提交成功",
+								}
+								this.$refs.uToast.show({
+									...params
+								})
+								uni.$u.route('/pages/mine/manageBankCards/index');
 
-					})
+							} else {
+								uni.$u.toast(res.message);
+							}
+
+						})
 					.catch(res => {
 						uni.$u.toast(res.message);
 					});

+ 89 - 9
pages/mine/manageBankCards/index.vue

@@ -13,10 +13,11 @@
 
 		</view>
 		<view class="card-list" v-for="(item,index) in bankList" :key='index'>
-			<view class="card-list-item">
-				<view class="flex flex-end number">{{item.bankCard}}</view>
+			<view class="card-list-item" :style='{"background-image":"url("+item.cardColor+")"}'>
+				<view class="flex flex-end number carNumber">{{item.bankCard}}</view>
 				<view class="flex align-center">
-					<image class="img left" src="@/static/images/mine/bank/gflogo@2x.png" mode='widthFix'>
+					<!-- @/static/images/mine/bank/gflogo@2x.png -->
+					<image class="img left" :src="item.imgLogo" mode='widthFix'>
 					</image>
 					<view class="right">
 						<view class="text1">{{item.bankDeposit}}</view>
@@ -85,12 +86,87 @@
 					}
 				}
 			},
+			number(value){
+			  if(value&&value.length>8) {
+			    let reg = /^(\d{4})(\d*)(\d{4})$/;
+			    let str = value.replace(reg, (a, b, c, d)=> {
+			      return b + c.replace(/\d/g, "*") + d;
+			    });
+			    return str
+			  }else {
+			    return value
+			  }
+			},
 			init() {
 				this.$request.baseRequest('post', '/driverPayeeInfo/selectDriverPayee', {
 						driverId: this.userInfo.driverId,
 					}).then(res => {
 						if (res.code == '200') {
+							debugger
 							this.bankList = res.data
+							for (let i = 0; i < this.bankList.length; i++) {
+								let _obj = this.bankList[i]
+								_obj.bankCard = this.number(_obj.bankCard)
+								switch (_obj.bankDeposit) {
+									case "建设银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/jiansheogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/jh@2x.png"
+										break
+									case "招商银行":
+										this.bankList[i].imgLogo =
+											"../../../static/images/mine/bank/zhaoshang@2x(1).png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "中国银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/zhongyin@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "邮政银行":
+										this.bankList[i].imgLogo =
+											"../../../static/images/mine/bank/youzhenglogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/nh@2x.png"
+										break
+									case "交通银行":
+										this.bankList[i].imgLogo =
+											"../../../static/images/mine/bank/jiaotognlogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/jh@2x.png"
+										break
+									case "工商银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/gslogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "农业银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/nongyelogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/nh@2x.png"
+										break
+									case "民生银行":
+										this.bankList[i].imgLogo =
+											"../../../static/images/mine/bank/minshenglogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/nh@2x.png"
+										break
+									case "中信银行":
+										this.bankList[i].imgLogo =
+											"../../../static/images/mine/bank/zhongxinlogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "广发银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/gflogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "华夏银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/huaxia.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/zsbg.png"
+										break
+									case "兴业银行":
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/xingye.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/jh@2x.png"
+										break
+									default:
+										this.bankList[i].imgLogo = "../../../static/images/mine/bank/qitalogo@2x.png"
+										this.bankList[i].cardColor = "../../../static/images/mine/bank/qt@2x.png"
+										break
+								}
+							}
 						} else {
 							uni.$u.toast(res.message);
 						}
@@ -179,9 +255,13 @@
 	}
 
 	.card-list-item {
-		background: url(../../../static/images/mine/bank/zsbg.png) center no-repeat;
-		background-size: 100% 100%;
+		// background: url(../../../static/images/mine/bank/zsbg.png) center no-repeat;
+		background-size: cover;
 		padding: 60rpx 43rpx 100rpx 43rpx;
+		border-radius: 20rpx;
+		.carNumber{
+			margin-bottom: 20rpx;
+		}
 
 		.img {
 			width: 80rpx;
@@ -191,13 +271,13 @@
 
 		.right {
 			.text1 {
-				font-size: 32rpx;
-				font-weight: 500;
+				font-size: 36rpx;
+				font-weight: 700;
 				color: #FFFFFF;
 			}
 
 			.text2 {
-				font-size: 24rpx;
+				// font-size: 24rpx;
 				color: #FFFFFF;
 				margin-top: 10rpx;
 			}
@@ -209,7 +289,7 @@
 	}
 
 	.default-card {
-		font-size: 28rpx;
+		// font-size: 28rpx;
 		color: #333333;
 	}
 </style>

+ 1 - 1
pages/mine/manageVehicles/addVehicle.vue

@@ -121,7 +121,7 @@
 		computed: {
 			...mapState(['hasLogin', 'userInfo','firstAuthentication']),
 		},
-		onLoad(options) {debugger
+		onLoad(options) {
 			_this = this;
 			this.dataDetails.driverId = this.userInfo.driverId
 		},

+ 18 - 3
pages/mine/manageVehicles/index.vue

@@ -14,17 +14,20 @@
 
 		</view>
 		<view class="car-list" v-for="(item,index) in carList" :key="index">
+			<view class="left-img">
+				<image style="width: 100%;height:100%; background-color: #eeeeee;border-radius:10rpx;" mode="widthFix" :src="item.addressUrl"></image>
+			</view>
 			<view class="car-list-item">
 				<view class="row1">
 					{{item.carNumber}}
 				</view>
 				<view class="row2">
-					<u-icon name="edit-pen" size="26" style="margin-right: 20rpx;" @click="edit(item)"></u-icon>
+					<u-icon name="edit-pen" size="26" style="margin-right: 20rpx;" @click="edit(item)" v-if="item.status!='审核中'"></u-icon>
 					<u-icon name="trash" size="26" @click="del(item,index)"></u-icon>
 				</view>
 				<view class="row3">
 					<view class="text">车辆状态:</view>
-					<u-tag v-if="item.status=='已通过'" :text="item.status" type="success" plain plainFill size="mini"></u-tag>
+					<u-tag v-if="item.status=='已认证'" :text="item.status" type="success" plain plainFill size="mini"></u-tag>
 					<u-tag v-if="item.status=='未通过'" :text="item.status" type="error" plain plainFill size="mini"></u-tag>
 					<u-tag v-if="item.status=='审核中'" :text="item.status" type="warning" plain plainFill size="mini"></u-tag>
 				</view>
@@ -81,6 +84,10 @@
 				uni.$u.route('/pages/mine/manageVehicles/editVehicle',val);
 			},
 			del(val,index) {
+				uni.showLoading({
+					mask:true,
+					title:'加载中'
+				})
 				this.$request.baseRequest('post', '/driverCarInfo/api/deleteDriverCar', {
 						id:val.id
 					}).then(res => {
@@ -90,6 +97,7 @@
 								message: "删除成功!",
 							})
 								this.carList.splice(index,1)
+								uni.hideLoading()
 						}
 				
 					})
@@ -149,13 +157,14 @@
 
 	.car-list {
 		margin-bottom: 20rpx;
+		display: flex;
 	}
 
 	.car-list-item {
 		background: url(../../../static/images/mine/bgh.png) center no-repeat;
 		background-size: 100% 100%;
 		padding: 60rpx 43rpx;
-
+		width: 70%;
 		.row1 {
 			font-size: 36rpx;
 			font-weight: 700;
@@ -171,4 +180,10 @@
 			display: flex;
 		}
 	}
+	.left-img{
+		width: 30%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
 </style>

+ 12 - 6
pages/mine/set.vue

@@ -17,7 +17,7 @@
 				<view>
 					<text>姓名</text>
 				</view>
-				<view style='align-items: center;' class="flex">
+				<view style='align-items: center;' class="flex" @click="editName">
 					<view class="username">
 						{{firstAuthentication.authenticationStatus=='已认证'?firstAuthentication.driverName:'未认证'}}
 					</view>
@@ -26,14 +26,14 @@
 			</view>
 		</view>
 		<view class="content2">
-
+<!-- 
 			<view class='flex flex-space-between' @click='UpdataAccount'>
 				<view>
 					<text>修改账号</text>
 				</view>
 				<image src="../../static/images/myimg/gengduo1@3x.png" class="arrow"></image>
-			</view>
-			<u-line color="#EEEEEE" class="line"></u-line>
+			</view> -->
+			<!-- <u-line color="#EEEEEE" class="line"></u-line> -->
 			<view class='flex flex-space-between' @click='UpdataPassword'>
 				<view>
 					<text>修改密码</text>
@@ -96,9 +96,16 @@
 		},
 		onLoad() {
 			_this = this
+			console.log(this.userInfo)
+			console.log(this.hasLogin)
 		},
 		methods: {
-			
+				editName(){
+					uni.showToast({
+						icon:'none',
+						title:'可在司机认证中修改'
+					})
+				},
 			UpdataAccount() {
 				uni.navigateTo({
 					url: `/pages/mine/settings/editPhone`
@@ -148,7 +155,6 @@
 
 			},
 			getList() {
-				this.userInfo = uni.getStorageSync('userInfo')
 				this.headUrl = this.userInfo.avatarUrl
 				if (this.headUrl == null || this.headUrl == "") {
 					this.headUrl = "../../static/images/myimg/YongHu@3x.png"

+ 0 - 3
pages/mine/settings/editAvatar.vue

@@ -53,17 +53,14 @@
 								result => {
 									// 上传成功
 									console.log('图片地址', result)
-									debugger
 									that.$request.baseRequest('get', '/BDAccessToken/getAuth', {
 											apiKey: 'yNWLRW6unoUxo2KXiCZxOxGS',
 											secretKey: 'E8hqzKWdFdTGnFnpAwZ7ixtL89SN3deR'
 										}).then(res => {
-												debugger
 												that.$request.baseRequest('get', '/commonUser/getUserDefinedBean', {
 														accessToken: res.data,
 														  imagePath : result
 													}).then(res1 => {
-															debugger
 																	that.deptListurl.avatarUrl = result
 													})
 													.catch(res => {

+ 278 - 157
pages/mine/settings/editPassword.vue

@@ -1,180 +1,268 @@
 <template>
-	<view class="u-page content">
+	<view class="container">
 		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
 		<view class="wrapper">
-				<h2 class="Semibold">重置密码</h2>
-			<u--form labelPosition="left" :model="registerData" ref="registerForm" labelWidth="80">
-				<u-form-item label="电话" prop="phone" borderBottom>
-					<u--input v-model="registerData.phone" border="none" placeholder="请输入手机号码"></u--input>
-				</u-form-item>
-			
-				<u-form-item label="验证码" prop="code"borderBottom>
-					<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
-					<u-button slot="right" @tap="getCode" :text="tips" size="mini" :disabled="disabled1" class="code-style">
-					</u-button>
-				</u-form-item>
-				<u-form-item label="新密码" prop="password" borderBottom>
-					<u--input v-model="registerData.password" border="none" placeholder="请输新入密码,6-16位字符"></u--input>
-				</u-form-item>
-			
-				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true" @end="disabled1 = false">
-				</u-code>
-			</u--form>
-			<u-button class="code-style reset" @click='reset'>重置密码</u-button>
+			<h2>重置密码</h2>
+			<view style='width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px;' class="flex">
+				<view style='width:15%;border-right:1px solid #E8E9ED;'>+86</view>
+				<view style='width:85%;'><input maxlength="11" @input='phoneinput' style='padding-left:10px;' v-model='phone' placeholder="请输入手机号码" type="text"></view>
+			</view>
+			<view style='width:100%;border-bottom:1px solid #E8E9ED;position:relative;padding:10px;' class="flex">
+				<view style='width:85%;'><input v-model='verifyCode' placeholder="请输入验证码" type="text"></view>
+				<button @click='getcode' :class='status&&!sendDisabled?"active":""' class='getcode'>{{sendText}}</button>
+			</view>
+			<view style='border-bottom:1px solid #E8E9ED;padding:10px;position:relative;'>
+				<input class='password' style='height:30px;' v-model='password' placeholder="请输入新密码,6-16位字符" :type="type" value="" />
+				<view @click='switchover' style='position:absolute;right:0;top:38%;z-index:10;cursor:pointer;' class="iconfont " :class='type=="password"?"icon-yanjing-biyan":"icon-yanjing-zhengyan"'></view>
+			</view>
+			<button :class='phone!=""&&verifyCode!=""&&password!=""?"active":""' @click='reset' class='verificationCode'>重置密码</button>
 		</view>
-
-
 	</view>
 </template>
 
 <script>
 	import {
-		mapState
+		mapMutations
 	} from 'vuex';
-	var _this;
-	import helper from '@/common/helper.js';
+	// import { openFSqlite, createFSQL, selectFSQL, addFSQL } from '../../util/f.js'
+	// import { queryData, upData, initData } from '../../util/dbUtil.js'
 	export default {
 		data() {
 			return {
-				disabled1: false,
-				tips: '',
-				registerData: {
-					phone: '',
-					password: '',
-					verifyCode: '',
+				inputContent: null,
+				loginType: "wechat",
+				phone: '',
+				password: '',
+				logining: false,
+				isPhone: false,
+				isApple: true,
+				accessToken:'',
+				params:{
+					encryptedData:'',
+					session_key:'',
+					iv:'',
 				},
-				rules: {
-					phone: {
-						type: 'string',
-						required: true,
-						len: 11,
-						message: '请填写11位手机号',
-						trigger: ['blur']
-					},
-					verifyCode: {
-						type: 'string',
-						required: true,
-						len: 6,
-						message: '请填写6位验证码',
-						trigger: ['blur']
-					},
-				}
+				status:false,
+				userInfo:{
+					nickName:'',
+					avatarUrl:'',
+					gender:'',
+					phone:''
+				},
+				consentStatus:false,
+				type:'password',
+				inputStatus:'none',
+				verifyCode:null,
+				sendText:'获取验证码',
+				sendDisabled: false,
+				system:'',
+				platform:'',
+				userData:undefined,
+				canIUseProfile:false,
+				isPhone:""
 			}
 		},
-		computed: {
-			...mapState(['hasLogin', 'userInfo']),
-			// 手机号中间4位加*
-			// starUserphone() {
-			// 	let reg = /^(\d{3})\d{4}(\d{4})$/;
-			// 	if (this.userphone) {
-			// 		return this.userphone.replace(reg, "$1****$2");
-			// 	}
-			// }
-		},
-		onReady() {
-			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
-			this.$refs.registerForm.setRules(this.rules)
+		onShow() {
+			// this.loginType = "wechat"
+			this.$api.logout()
 		},
-		onLoad() {
-			_this = this
-			this.registerData.phone = this.userInfo.phone
+		onLoad(options) {
+			this.phone = options.phone //个人首页修改密码
+			// this.isPhone = options.phone //个人首页修改密码成功后自动退出重新登录
+			// if( wx.getUserProfile ){  
+			//     console.log('--check getUserProfile--OK');  
+			//     this.canIUseProfile = true;  
+			// } 
+			// console.log("login on load")
+			// var that = this
+			// that.$api.request('user', 'sendIsApple', {
+			// }).then(res => {
+			// 	that.isApple = res.data
+			// })
+			//  uni.getSystemInfo({
+			// 	success:(res) => {
+			// 		// console.log(res)
+			// 		this.system = res.system  // ios
+			// 		this.platform = res.platform  // 14.3
+			// 	}
+			// })
 		},
 		methods: {
-			navBack() {
-				uni.navigateBack();
-			},
-			codeChange(text) {
-				this.tips = text;
+			phoneinput(e){
+				if(e.detail.value.length==11){
+					this.status=true
+				}
 			},
-			// 获取验证码
-			getCode() {
-				if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.registerData.phone)) {
-					if (this.$refs.uCode.canGetCode) {
-
-						// 模拟向后端请求验证码
-						uni.showLoading({
-							title: '正在获取验证码'
-						})
-						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
-								phone: this.registerData.phone
-							}).then(res => {
-								uni.hideLoading();
-								// 这里此提示会被this.start()方法中的提示覆盖
-								uni.$u.toast('验证码已发送');
-								// 通知验证码组件内部开始倒计时
-								this.$refs.uCode.start();
-
-							})
-							.catch(res => {
-								uni.$u.toast(res.message);
-							});
-
-						// setTimeout(() => {
-
-						// }, 2000);
-					} else {
-						uni.$u.toast('倒计时结束后再发送');
-					}
-				} else {
-					uni.$u.toast('请输入正确手机号');
+			getcode(e){
+				if(this.phone.length!=11){
+					uni.showToast({
+						title: '请输入正确的手机号',
+						icon:'none',
+						duration: 2000
+					})
+					return
+				}
+				if(/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.phone)){
+				var that=this
+					this.$request.baseRequest('get','/commonUser/sendVerifyCode',{phone:this.phone}).then(res => {
+					that.sendDisabled = true
+					let sec = 60
+					let interval = setInterval(() => {
+						sec--;
+						that.sendText = sec + 's后重发'
+						if (sec <= 0) {
+							that.sendDisabled = false
+							that.sendText = "获取验证码"
+							clearInterval(interval)
+						}
+					}, 1000)
+					})
+					.catch(res => {
+					    if(res.errmsg){
+					    	uni.showToast({
+					    		title: res.errmsg,
+					    		icon: 'none',
+					    		duration: 2000
+					    	})
+					    }
+					    else{
+					    	uni.showToast({
+					    		title: "系统异常,请联系管理员",
+					    		icon: 'none',
+					    		duration: 2000
+					    	})
+					    }
+					 });
+				}else{
+					uni.showToast({
+						title: '请输入正确的手机号',
+						icon:'none',
+						duration: 2000
+					})
 				}
-
 			},
-
-
-			//修改密码
-			reset() {
+			reset(){
+				var that = this
 				uni.showLoading({
-					title: '加载中1'
+					title: '重置密码中'
 				})
-				this.$refs.registerForm.validate().then(res => {
-					uni.$u.toast('校验通过')
-					_this.isLoading = true
-					_this.$request.baseRequest('post', '/commonUser/resetPassword', _this.registerData).then(
-						res => {
-							// 获得数据
-							if (res.code == 200) {
-								uni.clearStorageSync();
-								this.$request.baseRequest('post', '/auth/api/logout').then(res => {
-									
-								})
-								this.$store.commit('logout')
-								// this.$api.logout()
-									uni.showToast({
-										title: '修改成功',
-										icon: 'none',
-										duration: 2000
-									})
+				this.$request.baseRequest('post','/commonUser/resetPassword',{phone:this.phone,password:this.password,verifyCode:this.verifyCode}).then(res => {
+				    console.log("重置密码",res)
+					// 获得数据
+					if(res.data.code==200){
+						if(this.isPhone){//判断是否是在个人首页进来的(若是退出重进)
+							uni.clearStorageSync();
+							this.$request.baseRequest('post', '/auth/api/logout').then(res => {})
+							this.$store.commit('logout')
+							this.$api.logout()
+								setTimeout(() => {
+							uni.showToast({
+								title: '修改成功',
+								icon: 'none',
+								duration: 2000
+							})
+							},2000)
 							uni.navigateTo({
 								url: `/pages/public/login`
 							})
-							} else {
-								uni.showToast({
-									title: "系统异常或验证码已过期,请退出重试",
-									icon: 'none',
-									duration: 2000
-								})
-							}
-							uni.hideLoading()
+							
+						}else{
+							setTimeout(() => {
+								uni.navigateBack()
+						    }, 1000)
+						}
+						uni.showToast({
+							title: '重置成功',
+							icon: 'none',
+							duration: 2000
 						})
-						.catch(res => {
-							uni.$u.toast(res.message)
-						});
-				}).catch(errors => {
-					uni.$u.toast('校验失败')
+					}else{
+						uni.showToast({
+							title: "系统异常或验证码已过期,请退出重试",
+							icon:'none',
+							duration: 2000
+						})
+					}
+					uni.hideLoading()
 				})
+				.catch(res => {
+					console.log("重置密码",res)
+				    uni.showToast({
+				    	title: "系统异常,请联系管理员",
+				    	icon:'none',
+				    	duration: 2000
+				    })
+					uni.hideLoading()
+				});
+			},
+		
+			switchover(){
+				if(this.type=='password'){
+					this.type='text'
+				}else{
+					this.type='password'
+				}
 			},
+			cancel() {
+				this.inputShow = false
+				this.inputStatus = 'none'
+				this.isPhone = false
+			},
+			...mapMutations(['login']),
+			inputChange(e) {
+				const key = e.currentTarget.dataset.key;
+				this[key] = e.detail.value;
+			},
+			navBack() {
+				uni.navigateBack();
+			},
+
+	
+
+
 		},
+
 	}
 </script>
 
-<style lang="scss">
-	.content {
-		background: url(../../../static/images/mine/bg@2x.png);
-		background-size: 100% 100%;
-		height: 100vh;
+<style lang='scss' scoped>
+	
+	.apple{
+		background: #000;
+		width: 35px;
+		height: 35px;
+		padding: 8px;
+		border-radius: 50%;
+		vertical-align: middle;
+	}
+	page {
+		background: #fff;
+	}
+	.cuIcon-weixin{
+		background: #2772FB;
+		color: #fff;
+		font-size: 18px;
+		padding: 9px;
+		border-radius: 50%;
+		vertical-align: middle;
+		margin-right:5px;
+	}
+	.container {
 		padding-top: 85px;
 		position: relative;
+		width: 100vw;
+		height:calc(100vh - 85px);
+		overflow: hidden;
+			background: url('~@/static/images/mine/bg@2x.png');
+		background-size:100%;
+	}
+
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height:100%;
+		padding:0 30px;
 	}
 
 	.back-btn {
@@ -184,25 +272,58 @@
 		padding-top: var(--status-bar-height);
 		top: 40upx;
 		font-size: 40upx;
-		color: red;
+		color:black;
 	}
-
-	.wrapper {
-		position: relative;
-		z-index: 90;
-		padding-bottom: 40upx;
-		height: 100%;
-		padding: 0 30px;
+	.verificationCode{
+		margin-top:20px;
+		background:#F5F6F9;
+		color:#AFB3BF;
 	}
-
-	.code-style {
-		background: #2772FB;
-		color: white;
+	.verificationCode:after{
+		border:none;
+	}
+	.verificationCode.active{
+		background:#2772FB;
+		color:#fff;
+	}
+	.register{
+		position:absolute;
+		bottom:20px;
+		left:50%;
+		transform: translateX(-50%);
+		color:#333333;
+		height:50px;
+		line-height:50px;
+		border-radius:30px;border: 1px solid #444444;
+	}
+	.register:after{
+		border:none;
+	}
+	.getcode{
+		font-size:14px;
+		position:absolute;
+		right:0;
+		top:50%;
+		transform: translateY(-50%);
+		color:#AFB3BF;
+		background:#F5F6F9;
+		height:30px;
+		line-height:30px;
+		
+	}
+	.password{
+		border:none;
+		outline: none;
+	}
+	.getcode:after{
+		border:none;
 	}
-	.reset{
-		margin-top: 50rpx;
+	.getcode.active{
+		background:#2772FB;
+		color:#fff;
 	}
-	.Semibold{
-		margin-bottom: 50rpx;
+	uni-navigator{
+		display:inline-block;
+		color:#2772FB;
 	}
 </style>

+ 52 - 6
pages/news/index.vue

@@ -49,6 +49,7 @@
 </template>
 
 <script>
+	var that
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import {
 		mapState
@@ -61,29 +62,72 @@
 				bgColor: '#317AFE',
 				value: 100,
 				news: [], // 数据列表
-				badgeOffset: [0, -5]
+				badgeOffset: [0, -5],
+				mescroll: null
 			}
 		},
+		onLoad() {
+			that = this
+		},
+		onShow() {
+			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+				reCommonId: this.userInfo.id,
+			}).then(res3 => {
+				if (res3.data) {
+					let name = 'myTip';
+					let value = res3.data
+					if (value == 0) {
+						uni.removeTabBarBadge({
+							index: 2
+						})
+					}
+					that.$store.commit('$uStore', {
+						name,
+						value
+					});
+					if (value != 0 && value) {
+						uni.setTabBarBadge({
+							index: 2,
+							text: value + ""
+						})
+					}
+				}
+			})
+				// this.mescroll.resetUpScroll()
+		},
 		computed: {
 			...mapState(['hasLogin', 'userInfo', 'firstAuthentication'])
 		},
 		methods: {
 			rightClick() {
-				console.log(123)
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
 				this.$request.baseRequest('post', '/newsInfo/api/editAllNewsInfo', {
 						reCommonId: this.userInfo.id,
 					}).then(res => {
 						this.mescroll.resetUpScroll()
+						uni.hideLoading()
+						uni.removeTabBarBadge({
+							index: 2
+						})
+
 					})
 					.catch(res => {
 						uni.$u.toast(res.message);
 					});
 			},
 			read(val) {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
 				this.$request.baseRequest('post', '/newsInfo/api/editNewsInfo', {
 						id: val.id,
 					}).then(res => {
 						this.mescroll.resetUpScroll()
+						uni.hideLoading()
 					})
 					.catch(res => {
 						uni.$u.toast(res.message);
@@ -155,10 +199,11 @@
 		// padding: 20rpx;
 		box-sizing: border-box;
 		border-radius: 20rpx;
+		padding-top: 30rpx;
 	}
 
 	.info-item {
-		padding: 30rpx;
+		padding: 0 30rpx 30rpx 30rpx;
 
 		.img {
 			width: 80rpx;
@@ -172,15 +217,16 @@
 		.right {
 			width: 100%;
 			border-bottom: 1px solid #E6E6E6;
+			padding-bottom: 20rpx;
 
 			.row1 {
 				.title {
-					font-size: 28rpx;
+					font-size: 32rpx;
 					color: #000000;
 				}
 
 				.time {
-					font-size: 24rpx;
+					font-size: 32rpx;
 					color: #999999;
 				}
 
@@ -188,7 +234,7 @@
 
 			.row2 {
 				.text {
-					font-size: 24rpx;
+					font-size: 28rpx;
 					color: #999999;
 					width: 500rpx;
 				}

+ 131 - 30
pages/order/confirmLoading.vue

@@ -1,13 +1,13 @@
 <!-- 确认装车 -->
 <template>
 	<view class="content">
-		<!-- 	<div class='content1'>
+		<div class='content1'>
 			<view class="level2-title">承运合同</view>
 			<view class='row-between'>
 				<view class="row-left-text">合同编号</view>
 				<view class="row-right-text">{{detailData.contractNo?detailData.contractNo:'未签订'}}</view>
 			</view>
-		</div> -->
+		</div>
 		<view class="content2">
 			<view class="level2-title">基本信息</view>
 			<view class='row-between'>
@@ -60,15 +60,17 @@
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text">定位</view>
-				<view>{{detailData.carrierInfo.sendCity}}{{detailData.carrierInfo.sendArea}}</view>
-				<!-- 				<view class="row-right-text place">去授权</view>
-				<view class="row-right-text place">刷新</view> -->
+				<view class="flex align-center">{{detailData.carrierInfo.sendCity}} {{detailData.carrierInfo.sendArea}}
+					<view class="sx-style" @click.stop="getLngLat()">刷新</view>
+				</view>
+
 			</view>
 			<view class='s-flex'>
-				<view class="row-left-text">上传装车照片</view>
+				<view class="row-left-text" style="margin:20rpx 0;">上传装车照片</view>
 				<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="3"
-					:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
-					@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+					:size-type="['compressed']" @on-success="getImgUrl" @on-remove="onRemove"
+					@on-uploaded="isAdd = true" :sourceType='sourceType' :before-upload="filterFileType"
+					@on-progress="onProgress"></upload>
 			</view>
 			<!-- 			<view class='s-flex'>
 				<view class="row-left-text">上传装车磅单</view>
@@ -97,9 +99,9 @@
 		},
 		data() {
 			return {
+				sourceType: ['camera'],
 				detailData: {
-					addressUrl: '',
-					contractNo: 'CYHT20220317000001',
+					carrierInfo: {},
 
 				},
 				action: this.$helper.ossUploadUrl,
@@ -111,17 +113,21 @@
 			}
 		},
 		onLoad(options) {
+			// #ifdef APP-PLUS
+			this.getLngLat();
+			// #endif
 			console.log(options)
 			this.detailData = options;
+			// CYHT20220317000001
 			this.detailData.contractNo = 'CYHT20220317000001'
 			this.detailData.id = this.detailData.carrierId
 			this.detailData.carrierInfo = {
-				id:this.detailData.carrierId,
+				id: this.detailData.carrierId,
 				carNo: '123',
-				loadingDate: '2022-03-17',
-				estimatedFreight: '100',
-				loadingAreaLongitude: '123.123',
-				loadingAreaLatitude: '321.321',
+				loadingDate: '2023-03-17',
+				estimatedFreight: '10000',
+				loadingAreaLongitude: '',
+				loadingAreaLatitude: '',
 				sendCity: '营口',
 				sendArea: '鲅鱼圈',
 				loadingImg: ''
@@ -129,6 +135,63 @@
 			}
 		},
 		methods: {
+			getLngLat() {
+				uni.showLoading({
+					title: '获取定位中',
+					mask: true
+				})
+				uni.getLocation({
+					type: 'gcj02',
+					geocode: true,
+					success: res => {
+						console.log('定位地址')
+						console.log(res)
+						if (res.latitude) {
+							this.detailData.carrierInfo.loadingAreaLongitude = res.longitude;
+							this.detailData.carrierInfo.loadingAreaLatitude = res.latitude;
+							this.detailData.carrierInfo.sendCity = this.$helper.filterUrban(res.address.city)
+							this.detailData.carrierInfo.sendArea = this.$helper.filterArea(res.address
+								.district);
+							console.log(this.detailData.carrierInfo.sendCity)
+							console.log(this.detailData.carrierInfo.sendArea)
+							this.$forceUpdate()
+							uni.hideLoading()
+						} else {
+							if (uni.getSystemInfoSync().platform == 'android') {
+								var context = plus.android.importClass("android.content.Context");
+								var locationManager = plus.android.importClass(
+									"android.location.LocationManager");
+								var main = plus.android.runtimeMainActivity();
+								var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
+								this.bool = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)
+							}
+							if (this.bool === false) {
+								uni.showModal({
+									title: '提示',
+									content: '请打开定位服务',
+									success: ({
+										confirm,
+										cancel
+									}) => {
+										if (confirm) {
+											if (uni.getSystemInfoSync().platform == 'android') {
+												var Intent = plus.android.importClass(
+													'android.content.Intent');
+												var Settings = plus.android.importClass(
+													'android.provider.Settings');
+												var intent = new Intent(Settings
+													.ACTION_LOCATION_SOURCE_SETTINGS);
+												var main = plus.android.runtimeMainActivity();
+												main.startActivity(intent); // 打开系统设置GPS服务页面
+											}
+										}
+									}
+								});
+							}
+						}
+					}
+				});
+			},
 			alertBtn() {
 				// uni.navigateTo({
 				// 	url: '/pages/public/login'
@@ -142,11 +205,11 @@
 				console.log(res)
 				console.log('------------res-----------')
 			},
-			onError(error) {
-				alert(error)
-				console.log('------------error-----------')
-				console.log(error)
-			},
+			// onError(error) {
+			// 	alert(error)
+			// 	console.log('------------error-----------')
+			// 	console.log(error)
+			// },
 			onRemove(index) {},
 			filterFileType(index, lists) {
 				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
@@ -165,17 +228,20 @@
 			},
 			submit(type) {
 				console.log(type)
-
 				if (type == 1) {
-					//暂存
+					if (!this.detailData.contractNo) {
+						this.$refs.uToast.show({
+							type: 'error',
+							message: "合同未签订不能暂存!"
+						})
+						return
+					}
+					this.alertTitle = '确定暂存装车信息?'
 				} else {
-					this.alertContent = '确定提交装车信息?'
-					this.alertTitle = '提示'
-					this.isShowAlert = true
-					this.detailData.statusFlag = type
-
-
+					this.alertTitle = '确定提交装车信息?'
 				}
+				this.isShowAlert = true
+				this.detailData.statusFlag = type
 				// this.$refs.uToast.show({
 				// 	...params,
 				// 	complete() {
@@ -186,14 +252,36 @@
 				// })
 			},
 			confirmClick() {
+				//1暂存
+				if (this.detailData.statusFlag == 1) {
+					delete this.detailData.carrierInfo.loadingAreaLongitude;
+					delete this.detailData.carrierInfo.loadingAreaLatitude;
+					delete this.detailData.carrierInfo.sendCity;
+					delete this.detailData.carrierInfo.sendArea;
+				}
+				if (!this.detailData.carrierInfo.loadingImg) {
+					uni.showToast({
+						title: '装车照片不能为空',
+						duration: 2000,
+						icon: "none",
+					});
+					return
+				}
+				this.detailData.carrierInfo.statusFlag = this.detailData.statusFlag
 				this.$request.baseRequest('post', '/carrierInfo/loadingAdd', this.detailData.carrierInfo).then(res => {
 						if (res.code == 200) {
+							let _title = ''
+							if (this.detailData.statusFlag == 1) {
+								_title = '暂存成功!'
+							} else {
+								_title = '提交成功!'
+							}
 							this.$refs.uToast.show({
 								type: 'success',
-								message: "提交成功!",
+								message: _title,
 								complete() {
 									uni.switchTab({
-										url:'/pages/order/index'
+										url: '/pages/order/index'
 									})
 								}
 							})
@@ -260,4 +348,17 @@
 		border-radius: 40rpx;
 		text-align: center;
 	}
+
+	.row-between {
+		margin: 20rpx 0;
+	}
+
+	.sx-style {
+		background: #2772FB;
+		color: white;
+		padding: 2rpx 16rpx;
+		box-sizing: border-box;
+		border-radius: 10rpx;
+		margin-left: 20rpx;
+	}
 </style>

+ 179 - 33
pages/order/confirmUnloading.vue

@@ -43,25 +43,35 @@
 				<view class="row-left-text">车牌号</view>
 				<view class="row-right-text">{{detailData.carrierInfo.carNo}}</view>
 			</view>
-			<view class='row-between'>
+			<!-- 	<view class='row-between'>
 				<view class="row-left-text">卸车日期</view>
 				<view class="row-right-text">{{detailData.carrierInfo.unloadingDate}}</view>
+			</view> -->
+			<view class="row-between">
+				<view class="left-text">卸车日期</view>
+				<view class="" @click="selectUnloadingDate">
+					{{detailData.carrierInfo.unloadingDate?detailData.carrierInfo.unloadingDate:'选择卸车日期'}}
+				</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text">合计应付运费(元)</view>
-				<input type="text" value="" placeholder="输入合计应付运费" v-model="detailData.carrierInfo.totalFreight" />
+				<input class="totalFreight-input" placeholder="输入合计应付运费" v-model="detailData.carrierInfo.totalFreight"
+					type="number" />
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text">定位</view>
-				<view>{{detailData.carrierInfo.unloadCity}}{{detailData.carrierInfo.unloadArea}}</view>
-				<!-- <view class="row-right-text place">去授权</view> -->
-				<!-- <view class="row-right-text place">刷新</view> -->
+				<view class="flex align-center">
+					{{detailData.carrierInfo.unloadCity}}{{detailData.carrierInfo.unloadArea}}
+					<view class="sx-style" @click.stop="getLngLat()">刷新</view>
+				</view>
+
 			</view>
 			<view class='s-flex'>
-				<view class="row-left-text">上传卸车照片(1-3张)</view>
+				<view class="row-left-text" style="margin:20rpx 0;">上传卸车照片(1-3张)</view>
 				<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="3"
 					:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
-					@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+					@on-uploaded="isAdd = true" :before-upload="filterFileType" :sourceType='sourceType'
+					@on-progress="onProgress"></upload>
 			</view>
 		</view>
 		<view class="bottom-btn">
@@ -71,6 +81,9 @@
 		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :closeOnClickOverlay='true'
 			:showCancelButton='true' confirmColor='#2772FB' @confirm="confirmClick" @close="cancelClick"
 			@cancel="cancelClick"></u-modal>
+		<u-picker :show="isShowValidity" ref="uPicker" :columns="validityPeriod" @confirm="confirmValidityPeriod"
+			:closeOnClickOverlay='true' @close='isShowValidity=false' @cancel='isShowValidity=false'>
+		</u-picker>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 </template>
@@ -83,6 +96,9 @@
 		},
 		data() {
 			return {
+				isShowValidity: false,
+				validityPeriod: [],
+				sourceType: ['camera'],
 				detailData: {
 					addressUrl: ''
 				},
@@ -95,23 +111,101 @@
 			}
 		},
 		onLoad(options) {
+			console.log('------------')
 			console.log(options)
 			this.detailData = options;
-			this.detailData.contractNo = 'CYHT20220317000001'
 			this.detailData.carrierInfo = {
 				carNo: '123',
-				unloadingDate: '2022-03-17',
-				estimatedFreight: '100',
+				unloadingDate: '',
+				estimatedFreight: '',
 				unloadingAreaLongitude: '',
 				unloadingAreaLatitude: '',
 				unloadCity: '沈阳',
 				unloadArea: '大东',
 				unloadingImg: '',
-				totalFreight: '100'
+				totalFreight: '100',
+				id: this.detailData.carrierId,
 
 			}
+			this.validityPeriod = this.$helper.makeValidityPeriod()
+			// #ifdef APP-PLUS
+			this.getLngLat();
+			// #endif
+			this.getNowTime()
 		},
 		methods: {
+			getNowTime() {
+				let now = new Date();
+				let year = now.getFullYear(); //得到年份
+				let month = now.getMonth(); //得到月份
+				let date = now.getDate(); //得到日期
+				month = month + 1;
+				month = month.toString().padStart(2, "0");
+				date = date.toString().padStart(2, "0");
+				let defaultDate = `${year}-${month}-${date}`
+				this.detailData.carrierInfo.unloadingDate = defaultDate
+				// this.$forceUpdate()
+			},
+			selectUnloadingDate() {
+				this.isShowValidity = true
+			},
+			getLngLat() {
+				uni.showLoading({
+					title: '获取定位中',
+					mask: true
+				})
+				uni.getLocation({
+					type: 'gcj02',
+					geocode: true,
+					success: res => {
+						console.log('定位地址')
+						console.log(res)
+						if (res.latitude) {
+							this.detailData.carrierInfo.loadingAreaLongitude = res.longitude;
+							this.detailData.carrierInfo.loadingAreaLatitude = res.latitude;
+							this.detailData.carrierInfo.sendCity = this.$helper.filterUrban(res.address.city)
+							this.detailData.carrierInfo.sendArea = this.$helper.filterArea(res.address
+								.district);
+							console.log(this.detailData.carrierInfo.sendCity)
+							console.log(this.detailData.carrierInfo.sendArea)
+							this.$forceUpdate()
+							uni.hideLoading()
+						} else {
+							if (uni.getSystemInfoSync().platform == 'android') {
+								var context = plus.android.importClass("android.content.Context");
+								var locationManager = plus.android.importClass(
+									"android.location.LocationManager");
+								var main = plus.android.runtimeMainActivity();
+								var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
+								this.bool = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)
+							}
+							if (this.bool === false) {
+								uni.showModal({
+									title: '提示',
+									content: '请打开定位服务',
+									success: ({
+										confirm,
+										cancel
+									}) => {
+										if (confirm) {
+											if (uni.getSystemInfoSync().platform == 'android') {
+												var Intent = plus.android.importClass(
+													'android.content.Intent');
+												var Settings = plus.android.importClass(
+													'android.provider.Settings');
+												var intent = new Intent(Settings
+													.ACTION_LOCATION_SOURCE_SETTINGS);
+												var main = plus.android.runtimeMainActivity();
+												main.startActivity(intent); // 打开系统设置GPS服务页面
+											}
+										}
+									}
+								});
+							}
+						}
+					}
+				});
+			},
 			alertBtn() {
 				// uni.navigateTo({
 				// 	url: '/pages/public/login'
@@ -146,40 +240,69 @@
 			onProgress(e) {
 				console.log(e)
 			},
+
 			submit(type) {
 				console.log(type)
-				let params = {
-					type: 'success',
-					title: '成功主题(带图标)',
-					message: "庄生晓梦迷蝴蝶",
-					iconUrl: 'https://cdn.uviewui.com/uview/demo/toast/success.png'
-				}
 				if (type == 1) {
-
+					this.alertContent = '确定暂存卸车信息?'
 				} else {
 					this.alertContent = '确定提交卸车信息?'
-					this.alertTitle = '提示'
-					this.isShowAlert = true
-					this.detailData.statusFlag = type
 				}
-				// this.$refs.uToast.show({
-				// 	...params,
-				// 	complete() {
-				// 		params.url && uni.navigateTo({
-				// 			url: params.url
-				// 		})
-				// 	}
-				// })
+				this.isShowAlert = true
+				this.detailData.statusFlag = type
 			},
 			confirmClick() {
-				this.$request.baseRequest('post', '/carrierInfo/unLoadingAdd', this.detailData).then(res => {
+				debugger
+				if (this.detailData.statusFlag == 1) {
+					delete this.detailData.carrierInfo.unloadingAreaLongitude;
+					delete this.detailData.carrierInfo.unloadingAreaLatitude;
+					delete this.detailData.carrierInfo.unloadCity;
+					delete this.detailData.carrierInfo.unloadArea;
+				}
+				this.detailData.carrierInfo.statusFlag = this.detailData.statusFlag
+				if (!this.detailData.carrierInfo.totalFreight) {
+					uni.showToast({
+						title: '运费不能为空!',
+						duration: 2000,
+						icon: "none",
+					});
+					return
+				}
+				if (
+					this.detailData.carrierInfo.totalFreight < 0 || this.detailData.carrierInfo.totalFreight > 100000 || (
+						String(this.detailData.carrierInfo.totalFreight).indexOf('.') != -1 && String(this.detailData
+							.carrierInfo.totalFreight).length - (String(this.detailData.carrierInfo.totalFreight).indexOf(
+							'.') + 1) > 2)
+				) {
+					uni.showToast({
+						title: '运费输入错误!',
+						duration: 2000,
+						icon: "none",
+					});
+					return
+				}
+				if (!this.detailData.carrierInfo.unloadingImg) {
+					uni.showToast({
+						title: '卸车照片不能为空!',
+						icon: "none",
+						duration: 2000
+					});
+					return
+				}
+				this.$request.baseRequest('post', '/carrierInfo/unLoadingAdd', this.detailData.carrierInfo).then(res => {
 						if (res.code == 200) {
+							let _title = ''
+							if (this.detailData.statusFlag == 1) {
+								_title = '暂存成功!'
+							} else {
+								_title = '提交成功!'
+							}
 							this.$refs.uToast.show({
 								type: 'success',
-								message: "提交成功!",
+								message: _title,
 								complete() {
 									uni.switchTab({
-										url:'/pages/order/index'
+										url: '/pages/order/index'
 									})
 								}
 							})
@@ -189,7 +312,13 @@
 						uni.$u.toast(res.message);
 					});
 				console.log('提交')
-			}
+			},
+			confirmValidityPeriod(e) {
+				console.log('confirm', e)
+				this.detailData.carrierInfo.unloadingDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
+
+				this.isShowValidity = false
+			},
 		},
 	}
 </script>
@@ -247,4 +376,21 @@
 		border-radius: 40rpx;
 		text-align: center;
 	}
+
+	.row-between {
+		margin: 20rpx 0;
+	}
+
+	.sx-style {
+		background: #2772FB;
+		color: white;
+		padding: 2rpx 16rpx;
+		box-sizing: border-box;
+		border-radius: 10rpx;
+		margin-left: 20rpx;
+	}
+
+	.totalFreight-input {
+		text-align: right;
+	}
 </style>

+ 256 - 53
pages/order/index.vue

@@ -8,11 +8,30 @@
 					<view>订单</view>
 					<u-icon class="search" name="search" color="" size="28" @click="search"></u-icon>
 				</view>
-				<u-tabs :list="tabList" @click="clickTab" lineColor='#2772FB' :current='tabIndex' :activeStyle="{
-								color: '#2772FB',
-								fontWeight: 'bold',
-								transform: 'scale(1.05)'
-							}"></u-tabs>
+				<view class="tab-content">
+					<u-tabs :list="tabList" @click="clickTab" lineColor='#2772FB' :current='tabIndex' :activeStyle="{
+									color: '#2772FB',
+									fontWeight: 'bold',
+									transform: 'scale(1.05)'
+								}"></u-tabs>
+					<view class="right-btn" @click="showMenu=true">
+						<view class="">
+							全部类型
+						</view>
+						<u-icon name="arrow-down-fill" color="#333333" size="12"></u-icon>
+					</view>
+				</view>
+			</view>
+			<view class="all-menu">
+				<u-transition :show="showMenu" mode="fade">
+					<view class="transition">
+						<view v-for="(item,index) in tabList" :key='index' class="transition-item-style"
+							:class="tabIndex==index?'menu-active':''" @click="clickTab({index:index})">
+							{{item.name}}
+						</view>
+					</view>
+				</u-transition>
+				<view class="modal-black" v-show="showMenu" @click="closeMenu"></view>
 			</view>
 			<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
 				class="mescroll">
@@ -30,7 +49,9 @@
 						<view class="flex row2">
 							<view class="left flex flex-space-between">
 								<view class="ssx">{{$helper.getProvinceAbbreviation(good.sendPrivate)}}</view>
-								<view class="level2-title">{{good.sendCity}} {{good.sendArea}}</view>
+								<view class="level2-title">{{$helper.filterUrban(good.sendCity)}}
+									{{$helper.filterArea(good.sendArea)}}
+								</view>
 								<view>
 									<image class="jt-icon" src="@/static/images/goodSource/jt.png" mode='widthFix'>
 									</image>
@@ -38,7 +59,9 @@
 								<view class="ssx">
 									{{$helper.getProvinceAbbreviation(good.unloadPrivate)}}
 								</view>
-								<view class="level2-title">{{good.unloadCity}} {{good.unloadArea}}</view>
+								<view class="level2-title">{{$helper.filterUrban(good.unloadCity)}}
+									{{$helper.filterArea(good.unloadArea)}}
+								</view>
 							</view>
 						</view>
 						<view class="flex row3">
@@ -46,28 +69,55 @@
 								<image class="hz" src="@/static/images/news/hz.png"></image>
 							</view>
 							<view class="right">
-								<view class="flex fontsize-26 row">
+								<view class="flex row">
 									<view>{{good.compName}}</view>
 									<view class="sline"></view>
 									<view>{{good.cargoOwner}}</view>
 								</view>
 								<view class="flex align-center">
-									<view class="fontsize-26 ">运距 {{good.distance}}km</view>
+									<view class="">运距 {{good.distance}}km</view>
 								</view>
 							</view>
 						</view>
 						<view class="row4 flex flex-end align-center">
 							<view class="time">{{good.updateDate}}</view>
-							<view class="car">{{good.freight}}{{good.illingMethod==0?'元/吨':'元/车'}}</view>
+							<!-- 货主装车确认前运费 -->
+							<view class="car"
+								v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'||good.orderStatus=='待货主确认装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='已终止'">
+								{{good.freight}}{{good.illingMethod==0?'元/吨':'元/车'}}
+							</view>
+							<!-- 货主装车确认后卸车确认前运费 -->
+							<view class="car"
+								v-if="good.orderStatus=='待平台确认装车'||good.orderStatus=='平台驳回装车信息'||good.orderStatus=='运输中'||good.orderStatus=='待货主确认卸车'||good.orderStatus=='货主驳回卸车信息'">
+								{{good.estimatedFreight}}{{good.illingMethod==0?'元/吨':'元/车'}}
+							</view>
+							<!-- 货主装车卸车确认后 -->
+							<view class="car"
+								v-if="good.orderStatus=='待平台确认卸车'||good.orderStatus=='平台驳回卸车信息'||good.orderStatus=='待结算'||good.orderStatus=='已完结'||good.orderStatus=='结算中'||good.orderStatus=='待结算'">
+								{{good.totalFreight}}{{good.illingMethod==0?'元/吨':'元/车'}}
+							</view>
+							<view class='pay flex'
+								v-if="good.orderStatus=='运输中'||good.orderStatus=='待货主确认卸车'||good.orderStatus=='待平台确认卸车'||good.orderStatus=='货主驳回卸车信息'||good.orderStatus=='平台驳回卸车信息'||good.orderStatus=='结算中'||good.orderStatus=='待结算'">
+								<div>已付</div>
+								<div class='number'>¥{{good.totalRepayable}}</div>
+							</view>
 						</view>
 						<view class="row5 flex flex-end">
-							<view class="stop active" @click.stop="stop(good)" v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'">终止</view>
-							<view class="start normal" @click.stop="confirmLoading(good)" v-if="good.orderStatus=='未装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='平台驳回装车信息'">确认装车</view>
-							<view class="start normal" v-if="good.orderStatus!='未装车'&&good.orderStatus!='待货主确认'">联系客服</view>
-							<view class="start normal" @click.stop="confirmUnLoading(good)" v-if="good.orderStatus=='运输中'||good.orderStatus=='货主驳回卸车信息'||good.orderStatus=='平台驳回卸车信息'">确认卸车</view>
+							<view class="stop active" @click.stop="stop(good)"
+								v-if="good.orderStatus=='待货主确认'||good.orderStatus=='未装车'">终止</view>
+							<view class="start normal" @click.stop="confirmLoading(good)"
+								v-if="good.orderStatus=='未装车'||good.orderStatus=='货主驳回装车信息'||good.orderStatus=='平台驳回装车信息'">
+								确认装车</view>
+							<view class="start normal" v-if="good.orderStatus!='未装车'&&good.orderStatus!='待货主确认'"
+								@click.stop="$helper.contactCustomerService">联系客服
+							</view>
+							<view class="start normal" @click.stop="confirmUnLoading(good)"
+								v-if="good.orderStatus=='运输中'||good.orderStatus=='货主驳回卸车信息'||good.orderStatus=='平台驳回卸车信息'">
+								确认卸车</view>
 							<!-- 				<view class="start">评价</view>
 							-->
-							<view class="start normal" @click.stop="closed(good)" v-if="good.orderStatus=='结算中'">完结</view>
+							<view class="start normal" @click.stop="closed(good)" v-if="good.orderStatus=='结算中'">完结
+							</view>
 						</view>
 					</view>
 				</view>
@@ -111,6 +161,7 @@
 </template>
 
 <script>
+	var that
 	import {
 		mapState
 	} from 'vuex';
@@ -122,6 +173,15 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
+				showMenu: false,
+				searchStyle: {
+					background: "#317AFE",
+					color: 'white',
+					position: "absolute",
+					right: "30rpx",
+					padding: "6rpx 20rpx",
+					"border-radius": '30rpx'
+				},
 				// isShowStopBtn: false,
 				// isConfirmLoadingBtn:false,
 				// isShowCustomerServiceBtn:false,
@@ -201,15 +261,39 @@
 			//#endif
 		},
 		onLoad() {
+			that = this
 			// let _isHave = this.$utils.getRoles('aaa')
 			// console.log(_isHave)
 
 		},
 		onShow() {
-			this.upCallback({
-				size: 10,
-				num: 1
+			that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+				reCommonId: this.userInfo.id,
+			}).then(res3 => {
+				if (res3.data) {
+					let name = 'myTip';
+					let value = res3.data
+					if (value == 0) {
+						uni.removeTabBarBadge({
+							index: 2
+						})
+					}
+					that.$store.commit('$uStore', {
+						name,
+						value
+					});
+					if (value != 0 && value) {
+						uni.setTabBarBadge({
+							index: 2,
+							text: value + ""
+						})
+					}
+				}
 			})
+			// this.upCallback({
+			// 	size: 10,
+			// 	num: 1
+			// })
 		},
 		onPageScroll(res) {
 			this.scrollTop = res.scrollTop
@@ -232,9 +316,11 @@
 
 		},
 		methods: {
+			closeMenu() {
+				this.showMenu = false
+			},
 			// 完结
 			closed(item) {
-				let that = this
 				this.$request.baseRequest('post', '/orderInfo/api/editEnd', {
 						id: item.id,
 					}).then(res => {
@@ -287,40 +373,62 @@
 			},
 			del() {
 				this.isShowAlert = true
+				this.alertTitle = '确定删除全部历史记录?'
+				this.confirmText = '确定'
 			},
 			confirmClick() {
-				console.log('终止')
-				if (this.radiovalue1 == '其他' && !this.value2) {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "请填写终止原因描述!",
-					})
-					return
-				}
-				let _terminationReason = ''
-				if (this.radiovalue1 == '已与货主协商') {
-					_terminationReason = 1
-				} else if (this.radiovalue1 == '货主原因终止') {
-					_terminationReason = 2
-				} else if (this.radiovalue1 == '司机个人原因终止') {
-					_terminationReason = 3
-				} else if (this.radiovalue1 == '其他') {
-					_terminationReason = 4
+				if (this.alertTitle == '确定删除全部历史记录?') {
+					uni.removeStorageSync('useSearchList');
+					this.useSearchList = [];
+					this.isShowAlert = false
+				} else {
+					console.log('终止', this.radiovalue1 == '其他' && !this.value2)
+					if (this.radiovalue1 == '其他' && !this.value2) {
+						uni.showToast({
+							title: '请填写终止原因描述',
+							icon: 'none',
+							duration: 2000
+						});
+						return
+					}
+					let _terminationReason = ''
+					if (this.radiovalue1 == '已与货主协商') {
+						_terminationReason = 1
+					} else if (this.radiovalue1 == '货主原因终止') {
+						_terminationReason = 2
+					} else if (this.radiovalue1 == '司机个人原因终止') {
+						_terminationReason = 3
+					} else if (this.radiovalue1 == '其他') {
+						_terminationReason = 4
+					}
+					this.$request.baseRequest('post', '/orderInfo/api/end', {
+							id: this.id,
+							terminator: 1,
+							terminationReason: _terminationReason,
+							terminationReasonDescription: this.value2
+						}).then(res => {
+							console.log(res)
+							if (res.code == 200) {
+								this.$refs.uToast.show({
+									type: 'success',
+									message: "终止订单成功",
+									complete() {
+										that.mescroll.resetUpScroll()
+									}
+								})
+
+
+							} else {
+								uni.$u.toast("终止订单失败!");
+							}
+							this.isShowAlert = false
+
+						})
+						.catch(res => {
+							uni.$u.toast(res.message);
+						});
 				}
-				this.$request.baseRequest('post', '/orderInfo/api/end', {
-						id: this.id,
-						terminator: 1,
-						terminationReason: _terminationReason,
-						terminationReasonDescription: this.value2
-					}).then(res => {
-						console.log(res)
-						this.isShowAlert = false
-						this.mescroll.resetUpScroll()
 
-					})
-					.catch(res => {
-						uni.$u.toast(res.message);
-					});
 			},
 			cancelClick() {
 				this.isShowAlert = false
@@ -329,7 +437,11 @@
 				// = uni.getStorageSync('useSearchList')
 
 				this.useSearchList.unshift(e)
+				this.useSearchList=[...new Set(this.useSearchList)]
 				uni.setStorageSync("useSearchList", this.useSearchList)
+				if(this.useSearchList.length>9){
+					this.carList.splice(this.useSearchList.length,1)
+				}
 				console.log("点击搜索", e)
 				this.upCallback({
 					size: 10,
@@ -346,6 +458,13 @@
 			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
+				// uni.$u.sleep(300).then(() => {
+				uni.showLoading({
+					mask: true,
+					title: '加载中'
+				})
+				// })
+
 				// 此处可以继续请求其他接口
 				// if(page.num == 1){
 				// 	// 请求其他接口...
@@ -373,19 +492,27 @@
 						if (page.num == 1) this.goods = []; //如果是第一页需手动制空列表
 						this.goods = this.goods.concat(res.data.records); //追加新数据
 						this.mescroll.endBySize(res.data.records.length, res.data.total);
-						
+
 					})
 					.catch(res => {
 						uni.$u.toast(res.message);
 					});
+				uni.$u.sleep(500).then(() => {
+					uni.hideLoading()
+				})
 			},
 			clickTab(val) {
+				uni.showLoading({
+					mask: true
+				})
 				console.log(val)
 				this.searchType = val.index
+				this.tabIndex = val.index
 				this.upCallback({
 					size: 10,
 					num: 1
 				})
+				this.showMenu = false
 			},
 			search() {
 				this.isSearch = true
@@ -511,15 +638,22 @@
 			margin: 20rpx 0;
 
 			.time {
-				font-size: 26rpx;
 				color: #999999;
 				margin-right: 20rpx;
 			}
 
 			.car {
-				font-size: 28rpx;
 				color: #000000;
 			}
+
+			.pay {
+				margin-left: 20rpx;
+
+				.number {
+					color: #FE6300;
+					margin-left: 20rpx;
+				}
+			}
 		}
 
 		.row5 {
@@ -614,7 +748,7 @@
 	}
 
 	.item-style {
-
+		margin-top: 20rpx;
 		background: #F5F6FA;
 		padding: 11rpx 24rpx;
 		margin-right: 20rpx;
@@ -626,4 +760,73 @@
 	/deep/.u-modal__content {
 		flex-direction: column;
 	}
+
+	.tab-content {
+		position: relative;
+		padding-right: 200rpx;
+	}
+
+	.right-btn {
+		position: absolute;
+		background: #F3F3F3;
+		// box-shadow: -14px 0px 8px -8px rgba(0, 53, 149, 0.21);
+		display: flex;
+		right: 20rpx;
+		height: 60rpx;
+		top: 0;
+		bottom: 0;
+		margin: auto;
+		color: #333333;
+		align-items: center;
+		justify-content: center;
+		padding: 0rpx 20rpx;
+		box-sizing: border-box;
+		border-radius: 6rpx;
+	}
+
+	.all-menu {
+		position: absolute;
+		z-index: 99;
+		top: 136rrpx;
+	}
+
+	/deep/.u-transition {
+		border-radius: 0 0 50rpx 50rpx;
+	}
+
+	.transition {
+		background: white;
+		padding-bottom: 40rpx;
+
+		.transition-item-style {
+			display: inline-block;
+			width: calc(25% - 40rpx);
+			text-align: center;
+			box-sizing: border-box;
+			background: #F7F8FA;
+			border-radius: 6px;
+			margin: 20rpx 20rpx 0 20rpx;
+			padding: 16rpx 0;
+
+		}
+
+		.menu-active {
+			background: #2772FB;
+			color: white;
+		}
+	}
+
+	.modal-black {
+		background: black;
+		height: 100vh;
+		width: 100vw;
+		position: absolute;
+		z-index: 999;
+		opacity: 0.3;
+	}
+
+	.menu-active {
+		background: #2772FB;
+		color: white;
+	}
 </style>

+ 39 - 30
pages/order/orderDetails.vue

@@ -115,63 +115,65 @@
 				<view class="row-left-text gray">运费</view>
 				<view class="row-right-text">{{dataObj.freight}}{{dataObj.illingMethod==0?'元/吨':'元/车'}}</view>
 			</view>
-
 		</view>
-		<view class="content3" v-if="status1">
+		<view class="content3" v-if='dataObj.orderStatus!="待货主确认"&&dataObj.orderStatus!="未装车"&&dataObj.orderStatus!="已终止"'>
 			<view class="level2-title">承运信息</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">合同编号</view>
-				<view class="row-right-text">{{dataObj.contractNo}}</view>
+				<view class="row-right-text">{{carrierInfo.contractNo}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">车牌号</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.carNo}}</view>
+				<view class="row-right-text">{{carrierInfo.carNo}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">预计运费</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.estimatedFreight}}元</view>
+				<view class="row-right-text">{{carrierInfo.estimatedFreight}}元</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">装车时间</view>
-				<view class="row-right-text gray">{{dataObj.carrierInfo.loadingDate}}</view>
+				<view class="row-right-text gray">{{carrierInfo.loadingDate}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">装车照片</view>
 				<view class="flex">
-					<u--image :showLoading="true" :src="dataObj.carrierInfo.loadingDate" width="40px" height="40px"></u--image>
+					<u--image :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in zcPhoneList"></u--image>
 				</view>
 			</view>
-			<view class='row-between'>
-				<view class="row-left-text gray">合计应付运费</view>
-				<view class="row-right-text">{{dataObj.carrierInfo.totalFreight}}元</view>
-			</view>
-			<view class='row-between'>
-				<view class="row-left-text gray">卸车时间</view>
-				<view class="row-right-text gray">{{dataObj.carrierInfo.loadingDate}}</view>
-			</view>
-			<view class='row-between'>
-				<view class="row-left-text gray">卸车照片</view>
-				<view class="flex">
-					<u--image :showLoading="true" :src="dataObj.carrierInfo.unloadingImg" width="40px" height="40px"></u--image>
+			<view v-if='dataObj.orderStatus!="待货主确认"&&dataObj.orderStatus!="未装车"&&dataObj.orderStatus!="待货主确认装车"&&dataObj.orderStatus!="货主驳回装车信息"&&dataObj.orderStatus!="待平台确认装车"&&dataObj.orderStatus!="平台驳回装车信息"&&dataObj.orderStatus!="运输中"&&dataObj.orderStatus!="已终止"'>
+				<view class='row-between'>
+					<view class="row-left-text gray">合计应付运费</view>
+					<view class="row-right-text">{{carrierInfo.totalFreight}}元</view>
+				</view>
+				<view class='row-between'>
+					<view class="row-left-text gray">卸车时间</view>
+					<view class="row-right-text gray">{{carrierInfo.loadingDate}}</view>
+				</view>
+				<view class='row-between'>
+					<view class="row-left-text gray">卸车照片</view>
+					<view class="flex">
+						<u--image :showLoading="true" :src='item' width="40px" height="40px" v-for="(item,index) in xcPhoneList"></u--image>
+					</view>
 				</view>
 			</view>
+	
 		</view>
 		<!-- v-if="status2 -->
-		<view class="content4">
+		<view class="content4" v-if='dataObj.orderStatus!="待货主确认"&&dataObj.orderStatus!="未装车"&&dataObj.orderStatus!="待货主确认装车"&&dataObj.orderStatus!="货主驳回装车信息"&&dataObj.orderStatus!="待平台确认装车"&&dataObj.orderStatus!="平台驳回装车信息"&&dataObj.orderStatus!="已终止"'>
 			<view class="level2-title gray">运费信息(单位:元)</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">预付运费</view>
-				<view class="row-right-text">{{dataObj.freightInfo.prepaidFreight}}</view>
+				<view class="row-right-text">{{freightInfo.prepaidFreight}}</view>
 			</view>
 			<view class='flex flex-end'>
-				<view class="gray row-right-text">{{dataObj.freightInfo.prepaidFreightDate}}</view>
+				<view class="gray row-right-text">{{freightInfo.prepaidFreightDate}}</view>
 			</view>
 			<view class='row-between'>
 				<view class="row-left-text gray">运费尾款</view>
-				<view class="row-right-text">{{dataObj.freightInfo.freightBalance}}</view>
+				<view class="row-right-text">{{freightInfo.freightBalance?freightInfo.freightBalance:'未支付'}}</view>
 			</view>
 			<view class='row-between mx row-left-text gray'>
-				明细:预付{{dataObj.freightInfo.freightBalance}}元,扣款{{dataObj.freightInfo.deduction}}元,服务费{{dataObj.freightInfo.serviceCharge}}元,尾款{{dataObj.freightInfo.freightBalance}}元,合计收款{{dataObj.freightInfo.totalCollection}}元。
+				明细:预付{{freightInfo.prepaidFreight}}元,扣款{{freightInfo.deduction}}元,服务费{{freightInfo.serviceCharge}}元,尾款{{freightInfo.freightBalance}}元,合计收款{{freightInfo.totalCollection}}元。
 			</view>
 		</view>
 		<u-modal :show="isShowAlert" :title="alertTitle" :content='alertContent' :confirmText='confirmText'
@@ -194,6 +196,10 @@
 	export default {
 		data() {
 			return {
+				zcPhoneList:[],
+				xcPhoneList:[],
+				carrierInfo:{},
+				freightInfo:{},
 				cyinfoStatus: '未装车',
 				src: 'https://cdn.uviewui.com/uview/album/1.jpg',
 				isShowTerminationReason: false,
@@ -338,12 +344,15 @@
 					}).then(res => {
 						if(res.code==200){
 							this.dataObj = res.data
-							if(res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="已终止"){
-								this.status1 = true
-							}
-							if(res.data.orderStatus!="已终止"&&res.data.orderStatus!="平台驳回装车信息"&&res.data.orderStatus!="待平台确认装车"&&res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="待货主确认装车"&&res.data.orderStatus!="货主驳回装车信息"){
-								this.status2 = true
-							}
+							this.carrierInfo = res.data.carrierInfo
+							this.freightInfo =  res.data.freightInfo
+							this.zcPhoneList = this.carrierInfo.loadingImg.split(',')
+							// if(res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="已终止"){
+							// 	this.status1 = true
+							// }
+							// if(res.data.orderStatus!="已终止"&&res.data.orderStatus!="平台驳回装车信息"&&res.data.orderStatus!="待平台确认装车"&&res.data.orderStatus!="待货主确认"&&res.data.orderStatus!="未装车"&&res.data.orderStatus!="待货主确认装车"&&res.data.orderStatus!="货主驳回装车信息"){
+							// 	this.status2 = true
+							// }
 						}
 						
 					})

+ 357 - 0
pages/public/code.vue

@@ -0,0 +1,357 @@
+<template>
+	<view class="top">
+		<view class="back-btn cuIcon-back" @click="navBack"></view>
+		<!-- 文字 -->
+		<view class="top_one">请输入验证码</view>
+		<view class="top_two">验证码已发送到<text class="text">{{phone}}</text></view>
+		<!-- 六个显示框 -->
+		<view class="top_three">
+			<view :class="[ !inputList[0]||inputList.length>0 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[0]}}</text>
+				<view v-if="!inputList[0]" class="fours"></view>
+			</view>
+			<view :class="[ inputList[0] && !inputList[1]||inputList.length>1 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[1]}}</text>
+				<view v-if="inputList[0] && !inputList[1]" class="fours"></view>
+			</view>
+			<view :class="[ inputList[1] && !inputList[2]||inputList.length>2 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[2]}}</text>
+				<view v-if="inputList[1] && !inputList[2]" class="fours"></view>
+			</view>
+			<view :class="[ inputList[2] && !inputList[3]||inputList.length>3 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[3]}}</text>
+				<view v-if="inputList[2] && !inputList[3]" class="fours"></view>
+			</view>
+			<view :class="[ inputList[3] && !inputList[4]||inputList.length>4 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[4]}}</text>
+				<view v-if="inputList[3] && !inputList[4]" class="fours"></view>
+			</view>
+			<view :class="[ inputList[4] && !inputList[5]||inputList.length>5 ? 'inb' : '' ]" class="input">
+				<text>{{inputList[5]}}</text>
+				<view v-if="inputList[4] && !inputList[5]" class="fours"></view>
+			</view>
+		</view>
+		<!-- 隐藏的input -->
+		<view class="top_four">
+			<input type="number" class="input_show" maxlength="6" @input='submit' v-model="inputList" focus="true" />
+		</view>
+		<!-- 重新获取 -->
+		<view class="top_five" @click='regain' :class="!status ? 'active' : '' "><text v-if="!status">重新发送</text><text
+				v-if="status">{{count_down}}秒后重新发送</text></view>
+	</view>
+</template>
+
+<script>
+	import helper from '@/common/helper.js';
+	export default {
+		data() {
+			return {
+				// 电话
+				phone: '',
+				// 跟隐藏input绑定的数组
+				inputList: [],
+				//计时器
+				count_down: 60,
+				status: false
+			}
+		},
+		onLoad(options) {
+			console.log("options", options.phone)
+			this.phone = options.phone
+			console.log("phone:", this.phone);
+			if (this.phone) {
+				this.regain()
+			} else {
+				uni.showToast({
+					title: '请输入正确的手机号',
+					icon: 'none',
+					duration: 2000
+				})
+			}
+		},
+		methods: {
+			navBack() {
+				uni.navigateBack();
+			},
+			regain() {
+				console.log("regain", this.phone);
+				this.status = true
+				// console.log(e)150500
+				// 设定一个定时器 1000是1秒的意思
+				var interval = setInterval(() => {
+					--this.count_down
+				}, 1000)
+				if (this.count_down == 0) {
+					this.status = false
+				}
+				// 设定一个定时器 60000就是六十秒
+				setTimeout(() => {
+					this.status = false
+					clearInterval(interval) //括号里面的名字要与setInterval定义的相同
+				}, 60000)
+				this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
+						phone: this.phone
+					}).then(res => {
+						// 获得数据
+						if (res.code != 200) {
+							uni.showToast({
+								title: res.message,
+								icon: 'none',
+								duration: 2000
+							})
+						}
+						console.log(res);
+					})
+					.catch(res => {
+						uni.showToast({
+							title: res.errMsg,
+							icon: 'none',
+							duration: 2000
+						})
+					});
+			},
+			submit(e) {
+				if (e.detail.value.length == 6) {
+					var that = this
+					uni.showLoading({
+						title: '登录中',
+						mask: true
+					})
+					that.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
+							phone: this.phone,
+							verifyCode: this.inputList,
+							loginFlag: 2
+						}).then(res => {
+							if (res.code == 200) {
+								that.$request.baseRequest('post', '/commonUser/api/loginQuickly', {
+									mobilePhone: this.phone,
+									veriCode: "123456",
+									loginFlag: 2
+								}).then(res1 => {
+									that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+										reCommonId: this.userInfo.id,
+									}).then(res3 => {
+										if (res3.data) {
+											let name = 'myTip';
+											let value = res3.data
+											if (value == 0) {
+												uni.removeTabBarBadge({
+													index: 2
+												})
+											}
+											that.$store.commit('$uStore', {
+												name,
+												value
+											});
+											if (value != 0 && value) {
+												uni.setTabBarBadge({
+													index: 2,
+													text: value + ""
+												})
+											}
+										}
+									})
+									if (res1.code == 200) {
+										uni.setStorageSync('pcuserInfo', res1.data)
+										helper.getListByUserId()
+									} else {
+										that.$api.doRequest('post', '/commonUser/api/loginQuickly', {
+											mobilePhone: '14444444444',
+											veriCode: "123456",
+											loginFlag: 2
+										}).then(res2 => {
+											that.$request.baseRequest('get',
+											'/newsInfo/unreadMessage', {
+												reCommonId: this.userInfo.id,
+											}).then(res3 => {
+												if (res3.data) {
+													let name = 'myTip';
+													let value = res3.data
+													if (value == 0) {
+														uni.removeTabBarBadge({
+															index: 2
+														})
+													}
+													that.$store.commit('$uStore', {
+														name,
+														value
+													});
+													if (value != 0 && value) {
+														uni.setTabBarBadge({
+															index: 2,
+															text: value + ""
+														})
+													}
+												}
+											})
+											uni.setStorageSync('pcuserInfo', res2.data)
+											helper.getListByUserId()
+										})
+									}
+								})
+								uni.setStorageSync('userInfo', res.data)
+								helper.getListByUserId()
+								that.$store.commit('login', res.data)
+								// that.liangxinLogin()
+								uni.switchTab({
+									url: '/pages/goodSource/index'
+								});
+								uni.hideLoading()
+							} else {
+								uni.hideLoading()
+								uni.showToast({
+									title: res.message,
+									icon: 'none',
+									duration: 2000
+								})
+							}
+						})
+						.catch(res => {
+							uni.showToast({
+								title: res.message,
+								icon: 'none',
+								duration: 2000
+							})
+						});
+				}
+			}
+
+		}
+	}
+</script>1
+
+<style>
+	.top {
+		padding-top: 85px;
+		position: relative;
+		width: 100vw;
+		height: calc(100vh - 85px);
+		overflow: hidden;
+		background: url('~@/static/images/mine/bg@2x.png');
+		background-size: 100%;
+	}
+
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: $font-color-dark;
+	}
+
+	/* 文字 */
+	.top_one {
+		/* margin-top: 85px; */
+		width: 90%;
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 44rpx;
+		margin: auto;
+		font-weight: bold;
+	}
+
+	.top_two {
+		width: 90%;
+		height: 40rpx;
+		line-height: 40rpx;
+		font-size: 24rpx;
+		margin: auto;
+		color: #545454;
+	}
+
+	.text {
+		font-weight: bold;
+	}
+
+	/* 六个显示框容器 */
+	.top_three {
+		width: 80%;
+		height: 200rpx;
+		margin: auto;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+
+	/* 六个框显示框 */
+	.input {
+		width: 14%;
+		height: 80rpx;
+		background-color: #F5F5F5;
+		margin-right: 12rpx;
+		text-align: center;
+		line-height: 80rpx;
+		font-size: 50rpx;
+		border-radius: 3px;
+		color: #181818;
+	}
+
+	/* 模拟的焦点 */
+	.inb {
+		background: #FFFFFF;
+		box-shadow: 0px 9px 10px 4px rgba(0, 0, 0, 0.07);
+	}
+
+	.fours {
+		width: 5rpx;
+		height: 40rpx;
+		margin: auto;
+		background-color: #000000;
+		margin-top: 20rpx;
+		animation: show .8s linear infinite;
+	}
+
+	/* 模拟焦点动画  更改animation以更改动画样式*/
+	@keyframes show {
+		from {
+			background-color: #000000;
+		}
+
+		to {
+			background-color: #ffffff;
+		}
+	}
+
+	/* 隐藏的inpit容器 */
+	.top_four {
+		width: 80%;
+		height: 100rpx;
+		margin: auto;
+		margin-top: -140rpx;
+	}
+
+	.input_show {
+		width: 100%;
+		height: 100rpx;
+		border-bottom: 2rpx solid #000000;
+		margin: auto;
+		opacity: 0;
+		background-color: #c6c6c6;
+	}
+
+	/* 重新获取 */
+	.top_five {
+		width: 100%;
+		height: 60rpx;
+		margin-top: 180rpx;
+		text-align: center;
+		line-height: 60rpx;
+		color: #959595;
+	}
+
+	/* 定时器结束的字体样式 */
+	.active {
+		color: #22C572;
+	}
+
+	.button {
+		width: 80%;
+		height: 100rpx;
+		line-height: 100rpx;
+		background-color: #5473E8;
+		border-radius: 60rpx;
+
+	}
+</style>

+ 0 - 222
pages/public/lginOther.vue

@@ -1,222 +0,0 @@
-<template>
-	<view class="u-page content">
-		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
-		<view class="wrapper">
-			<image style='width:38px;height:38px;margin-bottom:10px;' src='@/static/logo.png'></image>
-			<h2 class="title">欢迎使用网络货运</h2>
-			<u--form labelPosition="left" :model="dataDetails" ref="loginForm" labelWidth="80">
-				<u-form-item label="电话" prop="phone" borderBottom>
-					<u--input v-model="dataDetails.phone" @input='passwordInput' border="none" placeholder="请输入手机号码">
-					</u--input>
-				</u-form-item>
-				<u-form-item label="密码" prop="password" borderBottom>
-					<u--input v-model="dataDetails.password" @input='passwordInput' border="none"
-						placeholder="请输入密码,6-16位字符"></u--input>
-				</u-form-item>
-			</u--form>
-			<u-button @tap="login" class="code-style submit" :disabled="isdisabled">登录</u-button>
-			<u-button @click='goregister' class="code-style submit">手机号一键注册</u-button>
-			<view class='flex' style='color:#6A6A6A;margin-top:10px;'>
-				<view style='flex:1;text-align:center;border-right:1px solid #E8E9ED;' class="Regular"
-					@click="forgetpass()">忘记密码</view>
-				<view @click='gocode' style='flex:1;text-align:center;' class="Regular">验证码登录</view>
-			</view>
-		</view>
-		<u-toast ref="uToast"></u-toast>
-	</view>
-</template>
-
-<script>
-	var _this
-	import helper from '@/common/helper.js';
-	export default {
-		data() {
-			return {
-				isdisabled: true,
-				dataDetails: {
-					phone: '',
-					password: '',
-					loginFlag: 2
-				},
-				rules: {
-					phone: [{
-							required: true,
-							message: '请输入手机号',
-							trigger: ['blur'],
-						},
-						{
-							// 自定义验证函数,见上说明
-							validator: (rule, value, callback) => {
-								// 上面有说,返回true表示校验通过,返回false表示不通过
-								// uni.$u.test.mobile()就是返回true或者false的
-								return uni.$u.test.mobile(value);
-							},
-							message: '手机号码不正确',
-							// 触发器可以同时用blur和change
-							trigger: ['blur'],
-						}
-					],
-					password: {
-						type: 'string',
-						required: true,
-						min: 6,
-						max: 16,
-						message: '长度在6-16位字符之间',
-						trigger: ['blur'],
-					},
-				}
-			}
-		},
-		onReady() {
-			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
-			this.$refs.loginForm.setRules(this.rules)
-		},
-		onLoad() {
-			_this = this
-		},
-		methods: {
-			passwordInput() {
-				if (this.dataDetails.password && this.dataDetails.phone) {
-					this.isdisabled = false
-				} else {
-					this.isdisabled = true
-				}
-			},
-			forgetpass() {
-				uni.navigateTo({
-					url: '/pages/mine/settings/editPassword'
-				})
-			},
-			goregister() {
-				uni.navigateTo({
-					url: '/pages/public/register'
-				})
-			},
-			gocode() {
-				uni.navigateTo({
-					url: '/pages/public/login'
-				})
-			},
-			navBack() {
-				uni.navigateBack();
-			},
-			codeChange(text) {
-				this.tips = text;
-			},
-
-			login() {
-				// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
-				this.$refs.loginForm.validate().then(res => {
-					uni.showLoading({
-						title: '登录中',
-						mask: true
-					})
-					_this.$request.baseRequest('get', '/commonUser/login', _this.dataDetails).then(res => {
-							if (res.data.code == '11002') {
-								uni.$u.toast('验证码错误或过期,请重新获取')
-
-								return
-							} else if (res.data.code == '11004') {
-								uni.$u.toast('该手机号已注册,可直接登录')
-
-								return
-							} else if (res.data.code == '11006') {
-								uni.$u.toast('手机号或密码错误!')
-
-								return
-							}
-							_this.$request.baseRequest('', '/driverInfo/firstAuthentication', {
-									driverPhone: _this.dataDetails.phone,
-								}).then(res1 => {
-									uni.setStorageSync('pcUserInfo', res.data)
-									uni.setStorageSync('userInfo', res.data)
-									uni.setStorageSync('firstAuthentication', res1.data)
-									helper.getListByUserId()
-									_this.$store.commit('login', res.data)
-									// that.liangxinLogin()
-									uni.switchTab({
-										url: '/pages/goodSource/index'
-									});
-									uni.hideLoading()
-									// 
-									// 
-								})
-								.catch(res => {
-									uni.$u.toast(res.message);
-								});
-						})
-						.catch(res => {
-							uni.showToast({
-								title: res.message,
-								icon: 'none',
-								duration: 2000
-							})
-						});
-				}).catch(errors => {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "校验失败",
-					})
-				})
-			},
-			reset() {
-				const validateList = ['userInfo.name', 'userInfo.sex', 'radiovalue1', 'checkboxValue1', 'intro',
-					'hotel', 'code', 'userInfo.birthday'
-				]
-				this.$refs.form1.resetFields()
-				this.$refs.form1.clearValidate()
-				setTimeout(() => {
-					this.$refs.form1.clearValidate(validateList)
-					// 或者使用 this.$refs.form1.clearValidate()
-				}, 10)
-			},
-			hideKeyboard() {
-				uni.hideKeyboard()
-			},
-			goregister() {
-				uni.$u.route('/pages/public/register');
-			},
-		},
-	}
-</script>
-
-<style lang="scss">
-	.content {
-		background: url(../../static/images/mine/bg@2x.png);
-		background-size: 100% 100%;
-		height: 100vh;
-		padding-top: 85px;
-		position: relative;
-	}
-
-	.back-btn {
-		position: absolute;
-		left: 40upx;
-		z-index: 9999;
-		padding-top: var(--status-bar-height);
-		top: 40upx;
-		font-size: 40upx;
-		color: red;
-	}
-
-	.wrapper {
-		position: relative;
-		z-index: 90;
-		padding-bottom: 40upx;
-		height: 100%;
-		padding: 0 30px;
-	}
-
-	.code-style {
-		background: #2772FB;
-		color: white;
-	}
-
-	.use-password {
-		margin-top: 31rpx;
-	}
-
-	.submit {
-		margin-top: 40rpx;
-	}
-</style>

+ 369 - 198
pages/public/login.vue

@@ -1,231 +1,377 @@
 <template>
-	<view class="u-page content">
+	<view class="container">
 		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
 		<view class="wrapper">
-			<image style='width:38px;height:38px;margin-bottom:10px;' src='@/static/logo.png'></image>
-			<h2 class="title">欢迎使用网络货运</h2>
-			<u--form labelPosition="left" :model="dataDetails" ref="loginForm" labelWidth="80">
-				<u-form-item label="电话" prop="phone" borderBottom>
-					<u--input v-model="dataDetails.phone" border="none" placeholder="请输入手机号码"></u--input>
-				</u-form-item>
-
-				<u-form-item label="验证码" prop="code" labelWidth="80" borderBottom>
-					<input v-model="dataDetails.code" border="none" placeholder="请填写验证码"></input>
-					<u-button slot="right" @tap="getCode" :text="tips" class="code-style" size="mini"
-						:disabled="disabled1">
-					</u-button>
-				</u-form-item>
-				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true"
-					@end="disabled1 = false">
-				</u-code>
-			</u--form>
-			<button @tap="login" class="code-style submit">登录</button>
-			<view @click='gonumber' class="use-password" style='text-align:center;color:#6A6A6A;'>使用账号密码登录</view>
-			<!-- <u-button type="primary" text="登录" customStyle="margin-top: 50px" @click="login()"></u-button>
-			<u-button type="primary" @click='goregister'>手机号一键注册</u-button> -->
-			<!-- <u-loading-page :loading="isLoading" bg-color="#e8e8e8"></u-loading-page> -->
+			<image style='width:38px;height:38px;margin:223rpx 0 20px 0;' src='@/static/logo.png'></image>
+			<h2 class="title Semibold">欢迎使用智运</h2>
+			<view
+				style='position:relative;width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px;align-items: center;'
+				class="flex">
+				<view class="phone-before-num NumberMedium">+86</view>
+				<view style='width:85%;'>
+					<!-- <u--input class="phone-number" border="none" maxlength='11' v-model='phone'
+						placeholder="请输入手机号码" type="number"></u--input>
+					<u-input /> -->
+					<u--input v-model="phone" border="none" type='number' placeholder="请输入手机号码" class="phone-number"
+						maxlength='11' :clearable='true'></u--input>
+				</view>
+			</view>
+			<view style='margin-top:20px;border-bottom:1px solid #E8E9ED;position:relative;height:40px'>
+				<!-- <u--input class='password' border="none" v-model='password'
+					placeholder="请输入密码,6-16位字符" :type="type" value="">
+					</u--input> -->
+				<u-input class='password' border="none" v-model='password' placeholder="请输入密码,6-16位字符"
+					:type="isShowPassword" :clearable='true'>
+					<template slot="suffix">
+						<u-icon name="eye-fill" color="rgb(192, 196, 204)" size="24" @click="passWordStatus(1)"
+							v-if="isShowPassword=='password'"></u-icon>
+						<u-icon name="eye-off" color="rgb(192, 196, 204)" size="24" @click="passWordStatus(2)" v-else>
+						</u-icon>
+					</template>
+				</u-input>
+			</view>
+			<button :class='phone!=""&&password!=""?"active":""' @click='passlogin'
+				class='Regular verificationCode'>登录</button>
+			<button @click='goregister' class='verificationCode active Regular'>手机号一键注册</button>
+			<view class='flex' style='color:#6A6A6A;margin-top:10px;'>
+				<view style='flex:1;text-align:center;border-right:1px solid #E8E9ED;' class="Regular"
+					@click="forgetpass()">忘记密码</view>
+				<view @click='gocode' style='flex:1;text-align:center;' class="Regular">验证码登录</view>
+			</view>
 		</view>
-		<u-toast ref="uToast"></u-toast>
+	</view>
 	</view>
 </template>
 
 <script>
-	var _this
+	import {
+		mapMutations
+	} from 'vuex';
+	import {
+		openFSqlite,
+		createFSQL,
+		selectFSQL,
+		addFSQL
+	} from '../../util/f.js'
 	import helper from '@/common/helper.js';
+	import {
+		queryData,
+		upData,
+		initData
+	} from '../../util/dbUtil.js'
+	import {
+		mapState
+	} from 'vuex';
 	export default {
 		data() {
 			return {
-				isLoading: false,
-				disabled1: false,
-				tips: '',
-				showCalendar: false,
-				showBirthday: false,
-				dataDetails: {
-					phone: '',
-					code: ''
+				isShowPassword: 'password',
+				inputContent: null,
+				loginType: "wechat",
+				phone: '',
+				password: '',
+				logining: false,
+				isPhone: false,
+				isApple: true,
+				accessToken: '',
+				params: {
+					encryptedData: '',
+					session_key: '',
+					iv: '',
 				},
-				rules: {
-					phone: [{
-							required: true,
-							message: '请输入手机号',
-							trigger: ['change', 'blur'],
-						},
-						{
-							// 自定义验证函数,见上说明
-							validator: (rule, value, callback) => {
-								// 上面有说,返回true表示校验通过,返回false表示不通过
-								// uni.$u.test.mobile()就是返回true或者false的
-								return uni.$u.test.mobile(value);
-							},
-							message: '手机号码不正确',
-							// 触发器可以同时用blur和change
-							trigger: ['blur'],
-						}
-					],
-					code: {
-						type: 'string',
-						required: true,
-						len: 6,
-						message: '请填写6位验证码',
-						trigger: ['blur'],
-					},
-				}
+				userInfo: {
+					nickName: '',
+					avatarUrl: '',
+					gender: '',
+					phone: ''
+				},
+				type: 'password',
+				inputStatus: 'none',
+				verifyCode: null,
+				sendText: '获取验证码',
+				sendDisabled: false,
+				system: '',
+				platform: '',
+				userData: undefined,
+				canIUseProfile: false
 			}
 		},
-		onReady() {
-			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
-			this.$refs.loginForm.setRules(this.rules)
+		computed: {
+			...mapState(['clientId'])
 		},
-		onLoad() {
-			_this = this
+		onShow() {
+			// this.loginType = "wechat"
+			this.$api.logout()
+		},
+		onLoad(options) {
+
+			if (wx.getUserProfile) {
+				console.log('--check getUserProfile--OK');
+				this.canIUseProfile = true;
+			}
+			console.log("login on load")
+			// var that = this
+			// that.$request.baseRequest('user', 'sendIsApple', {
+			// }).then(res => {
+			// 	that.isApple = res.data
+			// })
+			//  uni.getSystemInfo({
+			// 	success:(res) => {
+			// 		// console.log(res)
+			// 		this.system = res.system  // ios
+			// 		this.platform = res.platform  // 14.3
+			// 	}
+			// })
 		},
 		methods: {
-			gonumber() {
-				uni.navigateTo({
-					url: '/pages/public/lginOther'
-				})
-			},
-			navBack() {
-				uni.navigateBack();
-			},
-			codeChange(text) {
-				this.tips = text;
-			},
-			getCode() {
-				if (this.dataDetails.phone.length != 11) {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "手机号输入错误",
-					})
+			passWordStatus(type) {
+				if (type == 1) {
+					this.isShowPassword = 'text'
 				} else {
-					if (this.$refs.uCode.canGetCode) {
-						// 模拟向后端请求验证码
-						uni.showLoading({
-							title: '正在获取验证码'
-						})
-						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
-								phone: this.dataDetails.phone
-							}).then(res => {
-								uni.hideLoading();
-								// 这里此提示会被this.start()方法中的提示覆盖
-								uni.$u.toast('验证码已发送');
-								// 通知验证码组件内部开始倒计时
-								this.$refs.uCode.start();
-
-							})
-							.catch(res => {
-								uni.$u.toast(res.message);
-							});
-					} else {
-						uni.$u.toast('倒计时结束后再发送');
-					}
+					this.isShowPassword = 'password'
 				}
-
 			},
-
-			login() {
-				// 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
-				this.$refs.loginForm.validate().then(res => {
-					uni.$u.toast('校验通过')
-					this.isLoading = true
-					_this.$request.baseRequest('get', '/commonUser/loginVerifyCode', {
-							phone: _this.dataDetails.phone,
-							verifyCode: _this.dataDetails.code,
-							loginFlag: 2
-						}).then(res => {
-							if (res.data.code == '11002') {
-								uni.$u.toast('验证码错误或过期,请重新获取')
-
-								return
-							} else if (res.data.code == '11004') {
-								uni.$u.toast('该手机号已注册,可直接登录')
-
-								return
-							} else if (res.data.code == '11006') {
-								uni.$u.toast('手机号或密码错误!')
-
-								return
-							}
-
-							_this.$request.baseRequest('', '/driverInfo/firstAuthentication', {
-									driverPhone: _this.dataDetails.phone,
-								}).then(res1 => {
-									uni.setStorageSync('pcUserInfo', res.data)
-									uni.setStorageSync('userInfo', res.data)
-									uni.setStorageSync('firstAuthentication', res1.data)
-									helper.getListByUserId()
-									_this.$store.commit('login', res.data)
-									// that.liangxinLogin()
-									uni.switchTab({
-										url: '/pages/goodSource/index'
+			passlogin(e) {
+				var that = this
+				uni.showLoading({
+					title: '登录中',
+					mask: true
+				})
+				console.log("clinetId", this.clientId)
+				that.$request.baseRequest('get', '/commonUser/login', {
+						phone: this.phone,
+						password: this.password,
+						loginFlag: 2
+					}).then(res => {
+						if (res.code == 200) {
+							console.log("userInfo", res.data)
+							uni.setStorageSync('userInfo', res.data)
+							that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+								reCommonId: this.userInfo.id,
+							}).then(res3 => {
+								if (res3.data) {
+									let name = 'myTip';
+									let value = res3.data
+									if (value == 0) {
+										uni.removeTabBarBadge({
+											index: 2
+										})
+									}
+									that.$store.commit('$uStore', {
+										name,
+										value
 									});
-									_this.isLoading = false
-									// 
-									// 
-								})
-								.catch(res => {
-									uni.$u.toast(res.message);
+									if (value != 0 && value) {
+										uni.setTabBarBadge({
+											index: 2,
+											text: value + ""
+										})
+									}
+								}
+							})
+							that.$request.baseRequest('get', '/driverInfo/firstAuthentication', {
+								driverPhone: this.phone,
+							}).then(res2 => {
+								uni.setStorageSync('pcuserInfo', res.data)
+								uni.setStorageSync('userInfo', res.data)
+								uni.setStorageSync('firstAuthentication', res2.data)
+								helper.getListByUserId()
+								that.$store.commit('login', res.data)
+								// that.liangxinLogin()
+								uni.switchTab({
+									url: '/pages/goodSource/index'
 								});
+								uni.hideLoading()
+								// 
+								// 
+							})
+							that.$request.baseRequest('post', '/commonUser/api/loginQuickly', {
+								mobilePhone: this.phone,
+								veriCode: "123456",
+								loginFlag: 2
+							}).then(res1 => {
+								console.log("loginQuickly", res)
+								if (res1.data.code == 200) {
+									uni.setStorageSync('pcuserInfo', res1.data)
+									that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+										reCommonId: this.userInfo.id,
+									}).then(res3 => {
+										if (res3.data) {
+											let name = 'myTip';
+											let value = res3.data
+											if (value == 0) {
+												uni.removeTabBarBadge({
+													index: 2
+												})
+											}
+											that.$store.commit('$uStore', {
+												name,
+												value
+											});
+											if (value != 0 && value) {
+												uni.setTabBarBadge({
+													index: 2,
+													text: value + ""
+												})
+											}
+										}
+									})
+									helper.getListByUserId()
+								} else {
+									that.$request.baseRequest('post', '/commonUser/api/loginQuickly', {
+										mobilePhone: '14444444444',
+										veriCode: "123456",
+										loginFlag: 2
+									}).then(res2 => {
+										that.$request.baseRequest('get', '/newsInfo/unreadMessage', {
+											reCommonId: this.userInfo.id,
+										}).then(res3 => {
+											if (res3.data) {
+												let name = 'myTip';
+												let value = res3.data
+												if (value == 0) {
+													uni.removeTabBarBadge({
+														index: 2
+													})
+												}
+												that.$store.commit('$uStore', {
+													name,
+													value
+												});
+												if (value != 0 && value) {
+													uni.setTabBarBadge({
+														index: 2,
+														text: value + ""
+													})
+												}
+											}
+										})
+										uni.setStorageSync('pcuserInfo', res2.data)
+										helper.getListByUserId()
+									})
+								}
 
+							})
+							that.$store.commit('login', res.data)
+							var name = 'userInfo';
+							var value = res.data;
+							that.$store.commit('$uStore', {
+								name,
+								value
+							});
+							// that.liangxinLogin()
 
-							// that.$request.TokenRequest('post', '/commonUser/api/loginQuickly', {
-							// 	mobilePhone: that.model1.phone,
-							// 	veriCode: that.model1.code
-							// }).then(res1 => {
-							// 	uni.setStorageSync('pcUserInfo', res1.data)
-							// 	uni.setStorageSync('userInfo', res.data)
-							// 	helper.getListByUserId()
-							// 	that.$store.commit('login', res.data)
-							// 	// that.liangxinLogin()
-							// 	uni.switchTab({
-							// 		url: '/pages/index/index'
-							// 	});
-							// 	this.isLoading = false
-							// })
-
-						})
-						.catch(res => {
+							uni.switchTab({
+								url: '/pages/goodSource/index'
+							});
+							uni.hideLoading()
+						} else {
+							uni.hideLoading()
 							uni.showToast({
 								title: res.message,
 								icon: 'none',
 								duration: 2000
 							})
-						});
-				}).catch(errors => {
-					this.$refs.uToast.show({
-						type: 'error',
-						message: "校验失败",
+						}
 					})
-				})
+					.catch(res => {
+						uni.$u.toast(res.message);
+					});
 			},
-			reset() {
-				const validateList = ['userInfo.name', 'userInfo.sex', 'radiovalue1', 'checkboxValue1', 'intro',
-					'hotel', 'code', 'userInfo.birthday'
-				]
-				this.$refs.form1.resetFields()
-				this.$refs.form1.clearValidate()
-				setTimeout(() => {
-					this.$refs.form1.clearValidate(validateList)
-					// 或者使用 this.$refs.form1.clearValidate()
-				}, 10)
+			gocode() {
+				uni.navigateTo({
+					url: '/pages/public/loginOther'
+				})
 			},
-			hideKeyboard() {
-				uni.hideKeyboard()
+			forgetpass() {
+				uni.navigateTo({
+					url: '/pages/mine/settings/editPassword'
+				})
 			},
 			goregister() {
-				uni.$u.route('/pages/public/register');
+				uni.navigateTo({
+					url: '/pages/public/register'
+				})
+			},
+
+			...mapMutations(['login']),
+			navBack() {
+				uni.navigateBack();
 			},
 		},
+
 	}
 </script>
 
-<style lang="scss">
-	.content {
-		background: url(../../static/images/mine/bg@2x.png);
-		background-size: 100% 100%;
+<style lang='scss' scoped>
+	.apple {
+		background: #000;
+		width: 35px;
+		height: 35px;
+		padding: 8px;
+		border-radius: 50%;
+		vertical-align: middle;
+	}
+
+	page {
+		background: #fff;
+	}
+
+	.close {
+		width: 20px;
+		height: 20px;
+		position: absolute;
+		right: 0px;
+	}
+
+	.close1 {
+		width: 20px;
+		height: 20px;
+		position: absolute;
+		right: 10px;
+		top: 0;
+	}
+
+	.close2 {
+		width: 15px;
+		height: 15px;
+		position: absolute;
+		right: 19px;
+		top: 50%;
+		transform: translateY(-45%);
+	}
+
+	.password {
+		border: none;
+		outline: none;
+	}
+
+	.cuIcon-weixin {
+		background: #2772FB;
+		color: #fff;
+		font-size: 18px;
+		padding: 9px;
+		border-radius: 50%;
+		vertical-align: middle;
+		margin-right: 5px;
+	}
+
+	.container {
+		/* padding-top: 85px; */
+		position: relative;
+		width: 100vw;
 		height: 100vh;
-		padding-top: 85px;
+		overflow: hidden;
+		background: url('~@/static/images/mine/bg@2x.png');
+		background-size: cover;
+	}
+
+	.wrapper {
 		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
 	}
 
 	.back-btn {
@@ -238,24 +384,49 @@
 		color: red;
 	}
 
-	.wrapper {
-		position: relative;
-		z-index: 90;
-		padding-bottom: 40upx;
-		height: 100%;
-		padding: 0 30px;
+	.verificationCode {
+		margin-top: 20px;
+		background: #F5F6F9;
+		color: #AFB3BF;
+	}
+
+	.verificationCode:after {
+		border: none;
 	}
 
-	.code-style {
+	.verificationCode.active {
 		background: #2772FB;
-		color: white;
+		color: #fff;
+	}
+
+	.register {
+		/* position:absolute; */
+		bottom: 20px;
+		left: 50%;
+		transform: translateX(-50%);
+		color: #333333;
+		height: 50px;
+		line-height: 50px;
+		border-radius: 30px;
+		border: 1px solid #444444;
+	}
+
+	.register:after {
+		border: none;
 	}
 
-	.use-password {
-		margin-top: 31rpx;
+	.phone-before-num {
+		font-size: 34rpx;
+		color: #333333;
+		border-right: 1px solid #E8E9ED;
+		padding-right: 20rpx;
 	}
 
-	.submit {
-		margin-top: 40rpx;
+	.phone-number {
+		margin-left: 20rpx;
+		font-size: 34rpx;
+		font-family: DINPro-Medium, DINPro;
+		font-weight: 500;
+		color: #333333;
 	}
 </style>

+ 252 - 0
pages/public/loginOther.vue

@@ -0,0 +1,252 @@
+<template>
+	<view class="container">
+		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
+		<!-- 设置白色背景防止软键盘把下部绝对定位元素顶上来盖住输入框等 -->
+		<view class="wrapper">
+			<image style='width:38px;height:38px;margin:223rpx 0 20px 0;' src='@/static/logo.png'></image>
+			<h2 class="title Semibold">欢迎使用智运</h2>
+			<view style='width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px;' class="flex">
+				<view class="phone-before-num NumberMedium">+86</view>
+
+				<view style='width:85%;'>
+					<!-- <u--input style='padding-left:10px;' class="NumberMedium" v-model='phone' @input='changephone' placeholder="请输入手机号码" type="number" maxlength="11" :clearable='true'></u--input> -->
+					<input style='padding-left:10px;' class="NumberMedium" v-model='phone' @input='changephone'
+						placeholder="请输入手机号码" type="number" maxlength="11">
+				</view>
+				<!-- <image v-if='phone!=""' @click='phone=""' class='close' src='../../static/img/login/guanbi@2x.png'></image> -->
+			</view>
+			<button @click='gocode' :class='codestatus?"active":""' class='verificationCode'>获取验证码</button>
+			<view @click='gonumber' class="Regular use-password" style='text-align:center;color:#6A6A6A;'>使用账号密码登录
+			</view>
+
+			<button v-if='tabbar' @click='goregister' class='Regular register active'>手机号一键注册</button>
+		</view>
+		<view v-if="loginType === 'phone'" class="register-section">
+			还没有账号?
+			<text @click="toRegist">马上注册</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapMutations
+	} from 'vuex';
+	import {
+		openFSqlite,
+		createFSQL,
+		selectFSQL,
+		addFSQL
+	} from '../../util/f.js'
+	import {
+		queryData,
+		upData,
+		initData
+	} from '../../util/dbUtil.js'
+	import {
+		mapState
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				inputContent: null,
+				loginType: "wechat",
+				phone: '',
+				password: '',
+				logining: false,
+				isPhone: false,
+				isApple: true,
+				accessToken: '',
+				phone: '',
+				params: {
+					encryptedData: '',
+					session_key: '',
+					iv: '',
+				},
+				userInfo: {
+					nickName: '',
+					avatarUrl: '',
+					gender: '',
+					phone: ''
+				},
+				inputStatus: 'none',
+				verifyCode: null,
+				sendText: '获取验证码',
+				sendDisabled: false,
+				system: '',
+				platform: '',
+				userData: undefined,
+				tabbar: true,
+				windowHeight: '',
+				canIUseProfile: false,
+				codestatus: false
+			}
+		},
+		computed: {
+			...mapState(['clientId'])
+		},
+		onShow() {
+			// this.loginType = "wechat"
+			this.$api.logout()
+		},
+		onLoad(options) {
+		},
+		methods: {
+			changephone(e) {
+				if (e.detail.value.length > 11) {
+					this.codestatus = true
+				} else if (e.detail.value.length < 11) {
+					this.codestatus = false
+				} else {
+					this.codestatus = true
+				}
+			},
+			gonumber() {
+				uni.navigateTo({
+					url: '/pages/public/login'
+				})
+			},
+			forgetpass() {
+				uni.navigateTo({
+					url: '/pages/public/reset'
+				})
+			},
+			gocode() {
+				if (this.phone.length == 11 && /^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.phone)) {
+					uni.navigateTo({
+						url: '/pages/public/code?phone=' + this.phone
+					})
+				} else if (this.phone.length == 0) {
+					uni.showToast({
+					 title: '手机号不能为空',
+						icon: 'none'
+					})
+				} else {
+					uni.showToast({
+						title: '请输入正确的手机号',
+						icon: 'none'
+					})
+				}
+
+			},
+			goregister() {
+				uni.navigateTo({
+					url: '/pages/public/register'
+				})
+			},
+			...mapMutations(['login']),
+			navBack() {
+				uni.navigateBack();
+			},
+			
+		},
+
+	}
+</script>
+
+<style lang='scss' scoped>
+	.apple {
+		background: #000;
+		width: 35px;
+		height: 35px;
+		padding: 8px;
+		border-radius: 50%;
+		vertical-align: middle;
+	}
+
+	page {
+		background: #fff;
+	}
+
+	.cuIcon-weixin {
+		background: #2772FB;
+		color: #fff;
+		font-size: 18px;
+		padding: 9px;
+		border-radius: 50%;
+		vertical-align: middle;
+		margin-right: 5px;
+	}
+
+	.close {
+		width: 20px;
+		height: 20px;
+		position: absolute;
+		right: 30px;
+	}
+
+	.container {
+		/* padding-top: 223rpx; */
+		position: relative;
+		width: 100vw;
+		height: 100vh;
+		overflow: hidden;
+		background: url('~@/static/images/mine/bg@2x.png');
+		background-size: cover;
+	}
+
+	.wrapper {
+		position: relative;
+		z-index: 90;
+		padding-bottom: 40upx;
+		height: 100%;
+		padding: 0 30px;
+	}
+
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: red;
+	}
+
+	.verificationCode {
+		margin-top: 20px;
+		background: #F5F6F9;
+		color: #AFB3BF;
+	}
+
+	.verificationCode.active {
+		background: #2772FB;
+		color: #fff;
+	}
+
+	.verificationCode:after {
+		border: none;
+	}
+
+	.register {
+		position: absolute;
+		bottom: 136rpx;
+		left: 50%;
+		transform: translateX(-50%);
+		color: #333333;
+		border-radius: 43rpx;
+		border: 1px solid #444444;
+		font-size: 28rpx;
+		padding: 0rpx 49rpx;
+
+	}
+
+	.register:after {
+		border: none;
+	}
+
+	.title {
+		font-size: 46rpx;
+	}
+
+	.phone-before-num {
+		font-size: 34rpx;
+		font-family: DINPro-Medium, DINPro;
+		font-weight: 500;
+		color: #333333;
+	}
+
+	.use-password {
+		margin-top: 31rpx;
+	}
+</style>

+ 380 - 190
pages/public/register.vue

@@ -1,33 +1,39 @@
 <template>
-	<view class="u-page content">
+	<view class="container">
 		<u-icon class="back-btn" name="arrow-left" color="black" size="20" @click="navBack"></u-icon>
 		<view class="wrapper">
 			<h2 class="Semibold">手机号注册</h2>
-			<u--form labelPosition="left" :model="registerData" ref="registerForm" labelWidth="80">
-				<u-form-item label="电话" prop="phone" borderBottom>
-					<u--input v-model="registerData.phone" border="none" placeholder="请输入手机号码"></u--input>
-				</u-form-item>
-
-				<u-form-item label="验证码" prop="verifyCode" labelWidth="80" borderBottom>
-					<u--input v-model="registerData.verifyCode" border="none" placeholder="请填写验证码"></u--input>
-					<u-button slot="right" @tap="getCode" :text="tips" size="mini" :disabled="disabled1"
-						class="code-style">
-					</u-button>
-				</u-form-item>
-				<u-form-item label="密码" prop="password" borderBottom>
-					<u--input v-model="registerData.password" border="none" placeholder="请输入密码,6-16位字符"></u--input>
-				</u-form-item>
-
-				<u-code ref="uCode" @change="codeChange" seconds="20" @start="disabled1 = true"
-					@end="disabled1 = false">
-				</u-code>
-			</u--form>
-			<u-button class="code-style register" @click='register'>注册</u-button>
-			<view class="flex service align-center">
+			<view style='width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px;position:relative;'
+				class="flex">
+				<view class="NumberMedium" style='width:15%;border-right:1px solid #E8E9ED;'>+86</view>
+				<view style='width:85%;'>
+					<u-input border="none" maxlength="11" v-model='phone' @input='phoneinput' style='padding-left:10px;'
+						placeholder="请输入手机号码" type="number" class="Regular" />
+				</view>
+				<!-- <image v-if='phone!=""' @click='phone=""' class='close' src='../../static/img/login/guanbi@2x.png'></image> -->
+			</view>
+			<view style='width:100%;border-bottom:1px solid #E8E9ED;position:relative;padding:10px;' class="flex">
+				<view style='width:70%;position:relative;'>
+					<u-input border="none" v-model='verifyCode' class="Regular" placeholder="请输入验证码" type="number" />
+					<!-- <image v-if='verifyCode' @click='verifyCode=""' class='close1' src='../../static/img/login/guanbi@2x.png'></image> -->
+				</view>
+				<button :class='codestatus&&!sendDisabled?"active":""' @click='getcode'
+					class='getcode Regular'>{{sendText}}</button>
+			</view>
+			<view style='border-bottom:1px solid #E8E9ED;padding:10px;position:relative;'>
+				<u-input border="none" maxlength='16' class='Regular input-style' style='height:30px;'
+					v-model='password' placeholder="请输入密码,6-16位字符" :type="type" />
+				<!-- 				<input maxlength='16' class='password Regular input-style' style='height:30px;' v-model='password' placeholder="请输入密码,6-16位字符" :type="type"> -->
+				<!-- <image v-if='password!=""' @click='password=""' class='close2' src='../../static/img/login/guanbi@2x.png'></image> -->
+				<!-- <view @click='switchover' style='position:absolute;right:0;top:38%;z-index:10;cursor:pointer;' class="iconfont " :class='type=="password"?"icon-yanjing-biyan":"icon-yanjing-zhengyan"'></view> -->
+			</view>
+			<button :class='phone!=""&&verifyCode!=""&&password!=""?"active":""' @click='register'
+				class='verificationCode'>注册</button>
+			<view style='color:#6A6A6A;margin-top:10px;font-size:30rpx;display:flex;justify-content:center;align-items: center;'>
 				<u--image @click='consent'
 					:src="consentStatus==true?'../../static/images/mine/duihao@2x.png':'../../static/images/mine/wxz.png'"
-					width="12px" height="12px"></u--image>
-				我已阅读并同意
+					width="17px" height="17px"></u--image>
+				已阅读并同意
 				<navigator
 					url="/pages/sale/webview?can_share=false&url=https://liangxin.zthymaoyi.com/userAgreement.html"
 					class="path" hover-class="navigator-hover">《服务协议》</navigator>和<navigator
@@ -35,129 +41,87 @@
 					class="path" hover-class="navigator-hover">《隐私政策》</navigator>
 			</view>
 		</view>
-
 	</view>
 </template>
 
 <script>
-	var _this
+	import {
+		mapMutations
+	} from 'vuex';
+	import {
+		openFSqlite,
+		createFSQL,
+		selectFSQL,
+		addFSQL
+	} from '../../util/f.js'
 	import helper from '@/common/helper.js';
+	import {
+		queryData,
+		upData,
+		initData
+	} from '../../util/dbUtil.js'
 	export default {
 		data() {
 			return {
-				disabled1: false,
-				tips: '',
+				inputContent: null,
+				loginType: "wechat",
+				phone: '',
+				password: '',
+				logining: false,
+				isPhone: false,
+				isApple: true,
+				accessToken: '',
+				params: {
+					encryptedData: '',
+					session_key: '',
+					iv: '',
+				},
+				userInfo: {
+					nickName: '',
+					avatarUrl: '',
+					gender: '',
+					phone: ''
+				},
 				consentStatus: false,
 				codestatus: false,
-				registerData: {
-					phone: '',
-					password: '',
-					verifyCode: '',
-				},
-				rules: {
-					phone: [{
-							required: true,
-							message: '请输入手机号',
-							trigger: ['change', 'blur'],
-						},
-						{
-							// 自定义验证函数,见上说明
-							validator: (rule, value, callback) => {
-								// 上面有说,返回true表示校验通过,返回false表示不通过
-								// uni.$u.test.mobile()就是返回true或者false的
-								return uni.$u.test.mobile(value);
-							},
-							message: '手机号码不正确',
-							// 触发器可以同时用blur和change
-							trigger: ['blur'],
-						}
-					],
-					verifyCode: {
-						type: 'string',
-						required: true,
-						len: 6,
-						message: '请填写6位验证码',
-						trigger: ['blur'],
-					},
-					password: {
-						type: 'string',
-						required: true,
-						min: 6,
-						max: 16,
-						message: '长度在6-16位字符之间',
-						trigger: ['blur'],
-					}
-				}
+				type: 'password',
+				inputStatus: 'none',
+				verifyCode: null,
+				sendText: '获取验证码',
+				sendDisabled: false,
+				system: '',
+				platform: '',
+				canIUseProfile: false
 			}
 		},
-		onReady() {
-			// 如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则
-			this.$refs.registerForm.setRules(this.rules)
+		onShow() {
+			// this.loginType = "wechat"
+
+			// this.$api.logout()
 		},
-		onLoad() {
-			_this = this
+		onLoad(options) {
+			if (wx.getUserProfile) {
+				console.log('--check getUserProfile--OK');
+				this.canIUseProfile = true;
+			}
+			console.log("login on load")
+			var that = this
+			// that.$api.request('user', 'sendIsApple', {}).then(res => {
+			// 	that.isApple = res.data
+			// })
+			// uni.getSystemInfo({
+			// 	success: (res) => {
+			// 		// console.log(res)
+			// 		this.system = res.system // ios
+			// 		this.platform = res.platform // 14.3
+			// 	}
+			// })
 		},
 		methods: {
-			navBack() {
-				uni.navigateBack();
-			},
-			codeChange(text) {
-				this.tips = text;
-			},
-			// 获取验证码
-			getCode() {
-				if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.registerData.phone)) {
-					if (this.$refs.uCode.canGetCode) {
-
-						// 模拟向后端请求验证码
-						uni.showLoading({
-							title: '正在获取验证码'
-						})
-						_this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
-								phone: this.registerData.phone
-							}).then(res => {
-								uni.hideLoading();
-								// 这里此提示会被this.start()方法中的提示覆盖
-								uni.$u.toast('验证码已发送');
-								// 通知验证码组件内部开始倒计时
-								this.$refs.uCode.start();
-
-							})
-							.catch(res => {
-								uni.$u.toast(res.message);
-							});
-
-						// setTimeout(() => {
-
-						// }, 2000);
-					} else {
-						uni.$u.toast('倒计时结束后再发送');
-					}
-				} else {
-					uni.$u.toast('请输入正确手机号');
-				}
-
-			},
-			consent() {
-				this.consentStatus = !this.consentStatus
-				uni.setStorage({
-					key: 'policyStorageKey',
-					data: this.consentStatus
-				});
-			},
 			// 随机数
 			randomAccess(min, max) {
 				return Math.floor(Math.random() * (min - max) + max)
 			},
-			getRandomName(NameLength) {
-				let name = ""
-				for (let i = 0; i < NameLength; i++) {
-					let unicodeNum = ""
-					unicodeNum = this.randomAccess(0x4e00, 0x9fa5).toString(16)
-					name += this.decodeUnicode(unicodeNum)
-				}
-				return name
-			},
 			// 解码
 			decodeUnicode(str) {
 				//Unicode显示方式是\u4e00
@@ -169,8 +133,67 @@
 				str = str.replace(/%/g, "\\");
 				return str;
 			},
-			//注册
+			/*
+			 *@param Number NameLength 要获取的名字长度
+			 */
+			getRandomName(NameLength) {
+				let name = ""
+				for (let i = 0; i < NameLength; i++) {
+					let unicodeNum = ""
+					unicodeNum = this.randomAccess(0x4e00, 0x9fa5).toString(16)
+					name += this.decodeUnicode(unicodeNum)
+				}
+				return name
+			},
+			phoneinput(e) {
+				if (e.length == 11) {
+					this.codestatus = true
+				}
+			},
+			getcode() {
+				var that = this
+				if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.phone)) {
+					that.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
+							phone: this.phone
+						}).then(res => {
+							if (res.code == 200) {
+								that.sendDisabled = true
+								let sec = 60
+								let interval = setInterval(() => {
+									sec--;
+									that.sendText = sec + 's后重发'
+									if (sec <= 0) {
+										that.sendDisabled = false
+										that.sendText = "获取验证码"
+										clearInterval(interval)
+									}
+								}, 1000)
+							} else {
+								uni.showToast({
+									title: res.message,
+									icon: 'none',
+									duration: 2000
+								})
+							}
+						})
+						.catch(res => {
+							uni.showToast({
+								title: res.data.message,
+								icon: 'none',
+								duration: 2000
+							})
+						});
+				} else {
+					uni.showToast({
+						title: '请输入正确的手机号',
+						icon: 'none',
+						duration: 2000
+					})
+				}
+
+			},
 			register() {
+				var that = this
 				if (!this.consentStatus) {
 					uni.showToast({
 						title: '请勾选协议',
@@ -179,72 +202,189 @@
 					})
 					return
 				}
-				this.$refs.registerForm.validate().then(res => {
-					_this.registerData.userName = _this.getRandomName(3)
-					uni.$u.toast('校验通过')
-					_this.isLoading = true
-					_this.$request.baseRequest('post', '/commonUser/register', _this.registerData).then(res => {
-							if (res.data.code == '11002') {
-								uni.$u.toast('验证码错误或过期,请重新获取')
-
-								return
-							} else if (res.data.code == '11004') {
-								uni.$u.toast('该手机号已注册,可直接登录')
-
-								return
-							}
+				if (this.verifyCode.length > 6) {
+					uni.showToast({
+						title: '验证码错误',
+						icon: 'none',
+						duration: 2000
+					})
+					return
+				}
+				if (this.password.length < 6) {
+					uni.showToast({
+						title: '请输入正确的密码格式',
+						icon: 'none',
+						duration: 2000
+					})
+					return
+				}
+				var username = this.getRandomName(3)
+				that.$request.baseRequest('post', '/commonUser/register', {
+						phone: this.phone,
+						password: this.password,
+						verifyCode: this.verifyCode,
+						userName: username
+					}).then(res => {
+						if (res.code == '11002') {
+							uni.showToast({
+								title: '验证码错误或过期,请重新获取',
+								icon: 'none',
+								duration: 2000
+							})
+							return
+						} else if (res.code == '11004') {
+							uni.showToast({
+								title: '该手机号已注册,可直接登录',
+								icon: 'none',
+								duration: 2000
+							})
+							return
+						} else {
 							uni.showLoading({
 								title: '登录中',
 								mask: true
 							})
-							_this.$request.baseRequest('get', '/commonUser/login', {
-									phone: _this.registerData.phone,
-									password: _this.registerData.password,
-									cid: uni.getStorageSync("clientId")
+							that.$request.baseRequest('get', '/commonUser/login', {
+									phone: this.phone,
+									password: this.password,
+									loginFlag:2
 								}).then(res => {
-									uni.hideLoading()
-									uni.setStorageSync('userInfo', res.data)
-									_this.$store.commit('login', res.data)
-									uni.switchTab({
-										url: '/pages/goodSource/index'
-									});
 
+									if (res.data.code == 200) {
+										// pc登录
+										that.$request.baseRequest('post', '/commonUser/api/loginQuickly', {
+											mobilePhone: this.phone,
+											veriCode: "123456",
+										}).then(res1 => {
+											if (res1.data.code == 200) {
+												uni.setStorageSync('pcUserInfo', res1.data.data)
+
+												helper.getListByUserId()
+											} else {
+												that.$api.doRequest('post',
+													'/commonUser/api/loginQuickly', {
+														mobilePhone: '14444444444',
+														veriCode: "123456",
+													}).then(res2 => {
+													uni.setStorageSync('pcUserInfo', res2.data
+														.data)
+													helper.getListByUserId()
+												})
+											}
+										})
+										uni.setStorageSync('userInfo', res.data.data)
+										that.$store.commit('login', res.data.data)
+										// that.liangxinLogin()
+										uni.switchTab({
+											url: '/pages/sale/information'
+										});
+									} else {
+										uni.showToast({
+											title: res.data.message,
+											icon: 'none',
+											duration: 2000
+										})
+									}
+									uni.hideLoading()
 								})
 								.catch(res => {
-									uni.$u.toast(res.message)
+									console.log(res);
 								});
-
-
-
-						})
-						.catch(res => {
-							uni.$u.toast(res.message)
-						});
-				}).catch(errors => {
-					uni.$u.toast('校验失败')
-				})
+						}
+					})
+					.catch(res => {
+						console.log(res);
+					});
+			},
+			consent() {
+				this.consentStatus = !this.consentStatus
+				uni.setStorage({
+					key: 'policyStorageKey',
+					data: this.consentStatus
+				});
+			},
+			switchover() {
+				if (this.type == 'password') {
+					this.type = 'text'
+				} else {
+					this.type = 'password'
+				}
+			},
+			...mapMutations(['login']),
+			navBack() {
+				uni.navigateBack();
 			},
 		},
+
 	}
 </script>
 
-<style lang="scss">
-	.content {
-		background: url(../../static/images/mine/bg@2x.png);
-		background-size: 100% 100%;
-		height: 100vh;
+<style lang='scss' scoped>
+	uni-navigator{
+	    display: inline-block;
+	    color: #2772FB;
+	}
+	.password {
+		border: none;
+		outline: none;
+
+	}
+
+	.apple {
+		background: #000;
+		width: 35px;
+		height: 35px;
+		padding: 8px;
+		border-radius: 50%;
+		vertical-align: middle;
+	}
+
+	page {
+		background: #fff;
+	}
+
+	.cuIcon-weixin {
+		background: #2772FB;
+		color: #fff;
+		font-size: 18px;
+		padding: 9px;
+		border-radius: 50%;
+		vertical-align: middle;
+		margin-right: 5px;
+	}
+
+	.container {
 		padding-top: 85px;
 		position: relative;
+		width: 100vw;
+		height: calc(100vh - 85px) ;
+		overflow: hidden;
+		background: url('~@/static/images/mine/bg@2x.png');
+		background-size: 100%;
 	}
 
-	.back-btn {
+	.close {
+		width: 20px;
+		height: 20px;
 		position: absolute;
-		left: 40upx;
-		z-index: 9999;
-		padding-top: var(--status-bar-height);
-		top: 40upx;
-		font-size: 40upx;
-		color: red;
+		right: 0px;
+	}
+
+	.close1 {
+		width: 20px;
+		height: 20px;
+		position: absolute;
+		right: 10px;
+		top: 0;
+	}
+
+	.close2 {
+		width: 15px;
+		height: 15px;
+		position: absolute;
+		right: 19px;
+		top: 50%;
+		transform: translateY(-45%);
 	}
 
 	.wrapper {
@@ -255,30 +395,80 @@
 		padding: 0 30px;
 	}
 
-	.code-style {
-		background: #2772FB;
-		color: white;
+	.back-btn {
+		position: absolute;
+		left: 40upx;
+		z-index: 9999;
+		padding-top: var(--status-bar-height);
+		top: 40upx;
+		font-size: 40upx;
+		color: black;
+	}
+
+	.verificationCode {
+		margin-top: 20px;
+		background: #F5F6F9;
+		color: #AFB3BF;
+	}
+
+	.verificationCode:after {
+		border: none;
 	}
 
 	.register {
-		margin-top: 50rpx;
+		position: absolute;
+		bottom: 20px;
+		left: 50%;
+		transform: translateX(-50%);
+		color: #333333;
+		height: 50px;
+		line-height: 50px;
+		border-radius: 30px;
+		border: 1px solid #444444;
 	}
 
-	.service {
-		font-size: 24rpx;
-		margin: 20rpx;
-		justify-content: center;
+	.register:after {
+		border: none;
+	}
 
-		/deep/.u-image {
-			margin: 0 20rpx;
-		}
+	.verificationCode.active {
+		background: #2772FB;
+		color: #fff;
 	}
 
-	.path {
+	.getcode {
+		font-size: 14px;
+		position: absolute;
+		right: 0;
+		top: 50%;
+		transform: translateY(-50%);
+		color: #AFB3BF;
+		background: #F5F6F9;
+		height: 30px;
+		line-height: 30px;
+
+	}
+
+	.getcode:after {
+		border: none;
+	}
+
+	uni-navigator {
+		display: inline-block;
 		color: #2772FB;
 	}
 
-	.Semibold {
-		margin-bottom: 50rpx;
+	.getcode.active {
+		background: #2772FB;
+		color: #fff;
+	}
+
+	.NumberMedium {
+		display: flex;
+		align-items: center;
+	}
+
+	.flex {
+		align-items: center;
 	}
 </style>

+ 1 - 1
static/css/common.scss

@@ -150,7 +150,7 @@ color: #000000;
 	white-space: nowrap;
 }
 .row-left-text{
-	font-size:28rpx;
+	// font-size:28rpx;
 	// color: #8F8F8F;
 }
 .row-right-text{

+ 0 - 0
static/images/mine/bank/minshenglogo@2x(1).png → static/images/mine/bank/huaxia.png


+ 0 - 0
static/images/mine/bank/建设银行@2x.png → static/images/mine/bank/jh@2x.png


+ 0 - 0
static/images/mine/bank/农业银行@2x.png → static/images/mine/bank/nh@2x.png


+ 0 - 0
static/images/mine/bank/其他@2x.png → static/images/mine/bank/qt@2x.png


+ 0 - 0
static/images/mine/bank/qitalogo@2x(1).png → static/images/mine/bank/xingye.png


BIN
static/logo.png


+ 1 - 1
store/index.js

@@ -128,7 +128,7 @@ const store = new Vuex.Store({
 			state.firstAuthentication = {};
 			uni.removeStorageSync('userInfo')
 			uni.removeStorageSync('firstAuthentication')
-			uni.removeStorageSync('pcUserInfo')
+			uni.removeStorageSync('pcuserInfo')
 		},
 		configfreightTransport(state,flag){
 			state.isConfigfreightTransport = flag

BIN
unpackage/dist/dev/app-plus/static/images/mine/bank/其他@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/mine/bank/农业银行@2x.png


BIN
unpackage/dist/dev/app-plus/static/images/mine/bank/建设银行@2x.png


BIN
zhiyun.keystore