Răsfoiți Sursa

调整格式

zaijin 2 ani în urmă
părinte
comite
d8ebdfc16b
44 a modificat fișierele cu 5985 adăugiri și 5897 ștergeri
  1. 59 59
      common/http.interceptor.js
  2. 10 12
      main.js
  3. 328 329
      pages.json
  4. 76 76
      pages/applyRefund/applyRefund.scss
  5. 153 150
      pages/applyRefund/applyRefund.vue
  6. 61 60
      pages/applyRefundDetails/applyRefundAchieveDetails.vue
  7. 80 80
      pages/applyRefundDetails/applyRefundDetails.scss
  8. 97 88
      pages/applyRefundDetails/applyRefundDetails.vue
  9. 48 45
      pages/bannerDetails/bannerDetails.vue
  10. 121 121
      pages/chargeStandard/chargeStandard.scss
  11. 0 29
      pages/chargeStandard/chargeStandard.vue
  12. 114 114
      pages/favourableActivity/favourableActivity.scss
  13. 73 69
      pages/favourableActivity/favourableActivity.vue
  14. 248 239
      pages/geomagnetismLock/geomagnetismLock.scss
  15. 273 263
      pages/geomagnetismLock/geomagnetismLock.vue
  16. 61 71
      pages/handleMonthly/handleMonthly.scss
  17. 367 362
      pages/index/index.scss
  18. 717 701
      pages/index/index.vue
  19. 63 63
      pages/message/message.scss
  20. 146 149
      pages/message/message.vue
  21. 59 60
      pages/message/messageInfo.vue
  22. 171 163
      pages/myCars/myCars.scss
  23. 238 221
      pages/myCars/myCars.vue
  24. 75 67
      pages/noninductivePay/addVehicle.vue
  25. 248 239
      pages/parkadvance/parkadvance.scss
  26. 82 88
      pages/parkadvance/parkadvance.vue
  27. 248 239
      pages/parkentrace/parkentrace.scss
  28. 102 107
      pages/parkentrace/parkentrace.vue
  29. 248 239
      pages/parkexport/parkexport.scss
  30. 209 203
      pages/parkexport/parkexport.vue
  31. 129 129
      pages/parkingInformation/parkingInformation.scss
  32. 25 27
      pages/parkroadgate/parkroadgate.vue
  33. 119 119
      pages/payLists/payLists.scss
  34. 102 97
      pages/payPage/payPage.scss
  35. 149 142
      pages/payPage/payPage.vue
  36. 52 54
      pages/paymentMethod/jumpMiddle.vue
  37. 74 74
      pages/paymentMethod/paymentMethod.scss
  38. 9 9
      pages/paymentMethod/paymentMethod.vue
  39. 54 53
      pages/privacyPolicy/privacyPolicy.vue
  40. 270 257
      pages/roadGateSystem/roadGateSystem.vue
  41. 86 84
      pages/wechatLogin/wechatLogin.vue
  42. 105 109
      utils/filter.js
  43. 28 29
      utils/getUrlParams.js
  44. 8 8
      utils/judgEnvironment.js

+ 59 - 59
common/http.interceptor.js

@@ -1,63 +1,63 @@
 // vm,就是我们在vue文件里面的this,所以我们能在这里获取vuex的变量,比如存放在里面的token
 const install = (Vue, vm) => {
-	Vue.prototype.$u.http.setConfig({
-		baseUrl: vm.config.baseUrl,
-		showLoading: true,
-		loadingText: '加载中...',
-		loadingMask: true,
-		loadingTime: 100
-	});
-	// 请求拦截,配置Token等参数
-	Vue.prototype.$u.http.interceptor.request = (config) => {
-		if(vm.vuex_token){
-			config.header.Authorization = `Bearer ${vm.vuex_token}`;
-		}
-		// 请求地址加时间戳
-		config.url = config.url + '?t=' + Date.now()
-		let noTokenList = ['/client/wechat/h5/code/', '/client/auth/sendSmsCodeV2', '/client/auth/verifyCodeV2'];
-		if(noTokenList.includes(config.url)) config.header.noToken = true;
-		return config; 
-	}
-	// 响应拦截,判断状态码是否通过
-	Vue.prototype.$u.http.interceptor.response = (res) => {
-		if(res.code == 200) {
-			return res;  
-		} else if(res.code == 401 || res.code == 400) {
-			const backUrl = location.href
-			// 判断浏览器
-			const ua = window.navigator.userAgent.toLowerCase();
-			if (ua.match(/MicroMessenger/i) == 'micromessenger') {
-				// 微信中打开
-				vm.$u.route('pages/wechatLogin/wechatLogin', { backUrl })
-			} else {
-				// 普通浏览器中打开
-				localStorage.setItem('backUrl', backUrl)
-				localStorage.removeItem('lifeData')
-				uni.showModal({
-					title: '提示',
-					content: '未查询到登录信息或信息已失效, 请重新登录',
-					showCancel: false,
-					success: function(res) {
-						if (res.confirm) {
-							uni.redirectTo({
-								url: "/pages/center/phoneLogin/phoneLogin"
-							})
-						}
-					}
-				});
-			}
-			return false
-		} else {
-			uni.showToast({
-				title: res.msg || '程序错误!',
-				duration: 2000,
-				icon: 'none'
-			})
-			return false
-		};
-	}
-}
+  Vue.prototype.$u.http.setConfig({
+    baseUrl: vm.config.baseUrl,
+    showLoading: true,
+    loadingText: '加载中...',
+    loadingMask: true,
+    loadingTime: 100
+  });
+  // 请求拦截,配置Token等参数
+  Vue.prototype.$u.http.interceptor.request = (config) => {
+    if (vm.vuex_token) {
+      config.header.Authorization = `Bearer ${vm.vuex_token}`;
+    }
+    // 请求地址加时间戳
+    config.url = config.url + '?t=' + Date.now();
+    let noTokenList = ['/client/wechat/h5/code/', '/client/auth/sendSmsCodeV2', '/client/auth/verifyCodeV2'];
+    if (noTokenList.includes(config.url)) config.header.noToken = true;
+    return config;
+  };
+  // 响应拦截,判断状态码是否通过
+  Vue.prototype.$u.http.interceptor.response = (res) => {
+    if (res.code == 200) {
+      return res;
+    } else if (res.code == 401 || res.code == 400) {
+      const backUrl = location.href;
+      // 判断浏览器
+      const ua = window.navigator.userAgent.toLowerCase();
+      if (ua.match(/MicroMessenger/i) == 'micromessenger') {
+        // 微信中打开
+        vm.$u.route('pages/wechatLogin/wechatLogin', { backUrl });
+      } else {
+        // 普通浏览器中打开
+        localStorage.setItem('backUrl', backUrl);
+        localStorage.removeItem('lifeData');
+        uni.showModal({
+          title: '提示',
+          content: '未查询到登录信息或信息已失效, 请重新登录',
+          showCancel: false,
+          success: function (res) {
+            if (res.confirm) {
+              uni.redirectTo({
+                url: '/pages/center/phoneLogin/phoneLogin'
+              });
+            }
+          }
+        });
+      }
+      return false;
+    } else {
+      uni.showToast({
+        title: res.msg || '程序错误!',
+        duration: 2000,
+        icon: 'none'
+      });
+      return false;
+    }
+  };
+};
 
 export default {
-	install
-}
+  install
+};

+ 10 - 12
main.js

@@ -1,18 +1,16 @@
-import Vue from 'vue'
-import App from './App'
+import Vue from 'vue';
+import App from './App';
 
-Vue.config.productionTip = false
-import {
-	config
-} from './common/config'
+Vue.config.productionTip = false;
+import { config } from './common/config';
 Vue.prototype.config = config;
 
-import './utils/filter'
+import './utils/filter';
 
-App.mpType = 'app'
+App.mpType = 'app';
 
 // 引入全局uView
-import uView from 'uview-ui'
+import uView from 'uview-ui';
 Vue.use(uView);
 
 // 此处为演示vuex使用,非uView的功能部分
@@ -23,8 +21,8 @@ let vuexStore = require('@/store/$u.mixin.js');
 Vue.mixin(vuexStore);
 
 const app = new Vue({
-	store,
-	...App
+  store,
+  ...App
 });
 
 // http拦截器,将此部分放在new Vue()和app.$mount()之间,才能App.vue中正常使用
@@ -35,4 +33,4 @@ Vue.use(httpInterceptor, app);
 import httpApi from '@/common/http.api.js';
 Vue.use(httpApi, app);
 
-app.$mount()
+app.$mount();

+ 328 - 329
pages.json

@@ -1,331 +1,330 @@
 {
-	"easycom": {
-		"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
-	},
-	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-		{
-			"path": "pages/index/index",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "城市智慧停车"
-			}
-		},
-		{
-			"path": "pages/center/index",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "城市智慧停车"
-			}
-		},
-		{
-			"path": "pages/center/phoneLogin/phoneLogin",
-			"style": {
-				"navigationBarTitleText": "手机号登录",
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/center/order/order",
-			"style": {
-				"navigationBarTitleText": "停车记录",
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/center/order/orderDetails/orderDetails",
-			"style": {
-				// "navigationStyle":"custom",// 隐藏系统导航栏
-				"navigationBarTitleText": "订单详情"
-			}
-		},
-		{
-			"path": "pages/center/invoice/invoice",
-			"style": {
-				"navigationBarTitleText": "我的发票"
-			}
-		},
-		{
-			"path": "pages/center/invoice/makeinvoice/makeinvoice",
-			"style": {
-				"navigationBarTitleText": "我要开票"
-			}
-		},
-		{
-			"path": "pages/center/invoice/invoiceDetails/invoiceDetails",
-			"style": {
-				"navigationBarTitleText": "发票详情"
-			}
-		},
-		{
-			"path": "pages/parkingLists/parkingLists",
-			"style": {
-				"navigationStyle": "custom",
-				"navigationBarTitleText": "停车点"
-			}
-		},
-		{
-			"path": "pages/myCars/myCars",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "我的车辆"
-			}
-		},
-		{
-			"path": "pages/message/message",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "消息中心"
-			}
-		},
-		{
-			"path": "pages/message/messageInfo",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "消息中心"
-			}
-		},
-		{
-			"path": "pages/payLists/payLists",
-			"style": {
-				"navigationBarTitleText": "停车缴费",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-		},
-		{
-			"path": "pages/parkingInformation/parkingInformation",
-			"style": {
-				"navigationBarTitleText": "停车场信息",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#ffffff",
-				"navigationBarTextStyle": "black"
-			}
-
-		}, {
-			"path": "pages/chargeStandard/chargeStandard",
-			"style": {
-				"navigationBarTitleText": "收费标准",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/handleMonthly/handleMonthly",
-			"style": {
-				"navigationBarTitleText": "办理包月",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/center/monthly/monthly1",
-			"style": {
-				"navigationBarTitleText": "我的包月",
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/center/monthly/monthly",
-			"style": {
-				"navigationBarTitleText": "我的包月",
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white",
-				"enablePullDownRefresh": false
-			}
-		},
-		{
-			"path": "pages/payLists/pay",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "支付"
-			}
-
-		},
-		{
-			"path": "pages/paymentMethod/jumpMiddle",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "跳转"
-			}
-
-		},
-		{
-			"path": "pages/handleMonthly/monthPay",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "包月支付"
-			}
-
-		},
-		{
-			"path": "pages/searchparking/searchparking",
-			"style": {
-				"navigationStyle": "custom", // 隐藏系统导航栏
-				"navigationBarTitleText": "停车查询"
-			}
-
-		}, {
-			"path": "pages/favourableActivity/favourableActivity",
-			"style": {
-				"navigationBarTitleText": "一分钱停车",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkingLock/parkingLock",
-			"style": {
-				"navigationBarTitleText": "车位锁",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkingLists/map_web_view/map_web_view",
-			"style": {
-				"navigationStyle": "custom",
-				"navigationBarTitleText": "导航",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/bannerDetails/bannerDetails",
-			"style": {
-				"navigationBarTitleText": "详情页",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/applyRefund/applyRefund",
-			"style": {
-				"navigationBarTitleText": "申请退款",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/applyRefundDetails/applyRefundDetails",
-			"style": {
-				"navigationBarTitleText": "申请退款",
-				"navigationStyle": "custom",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/applyRefundDetails/applyRefundAchieveDetails",
-			"style": {
-				"navigationBarTitleText": "订单详情"
-			}
-
-		}, {
-			"path": "pages/privacyPolicy/privacyPolicy",
-			"style": {
-				"navigationBarTitleText": "隐私政策",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/wechatLogin/wechatLogin",
-			"style": {
-				"navigationBarTitleText": "微信登录",
-				"enablePullDownRefresh": false
-			}
-
-		}, {
-			"path": "pages/geomagnetismLock/geomagnetismLock",
-			"style": {
-				"navigationBarTitleText": "地磁",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkentrace/parkentrace",
-			"style": {
-				"navigationBarTitleText": "入口扫码",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkadvance/parkadvance",
-			"style": {
-				"navigationBarTitleText": "场内扫码",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkexport/parkexport",
-			"style": {
-				"navigationBarTitleText": "出口扫码",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		}, {
-			"path": "pages/parkroadgate/parkroadgate",
-			"style": {
-				"navigationBarTitleText": "道闸",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-
-		},
-		{
-			"path": "pages/roadGateSystem/roadGateSystem",
-			"style": {
-				"navigationBarTitleText": "道闸系统",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#008CFF",
-				"navigationBarTextStyle": "white"
-			}
-		}
-	],
-	"globalStyle": {
-		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "普定智慧停车",
-		"navigationBarBackgroundColor": "#F8F8F8",
-		"backgroundColor": "#F8F8F8",
-		"backgroundColorTop": "#FFFFFF"
-	},
-	"tabBar": {
-		"color": "#909399",
-		"selectedColor": "#303133",
-		"borderStyle": "black",
-		"backgroundColor": "#ffffff",
-		"list": [{
-			"pagePath": "pages/index/index",
-			"iconPath": "static/index.png",
-			"selectedIconPath": "static/index-selected.png",
-			"text": "首页"
-		}, {
-			"pagePath": "pages/parkingLists/parkingLists",
-			"iconPath": "static/car_h.png",
-			"selectedIconPath": "static/car.png",
-			"text": "找车位"
-		}, {
-			"pagePath": "pages/center/index",
-			"iconPath": "static/center.png",
-			"selectedIconPath": "static/center-selected.png",
-			"text": "我"
-		}]
-	}
+  "easycom": {
+    "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+  },
+  "pages": [
+    {
+      "path": "pages/index/index",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "城市智慧停车"
+      }
+    },
+    {
+      "path": "pages/center/index",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTextStyle": "white",
+        "navigationBarTitleText": "城市智慧停车"
+      }
+    },
+    {
+      "path": "pages/center/phoneLogin/phoneLogin",
+      "style": {
+        "navigationBarTitleText": "手机号登录",
+        "navigationStyle": "custom"
+      }
+    },
+    {
+      "path": "pages/center/order/order",
+      "style": {
+        "navigationBarTitleText": "停车记录",
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/center/order/orderDetails/orderDetails",
+      "style": {
+        "navigationBarTitleText": "订单详情"
+      }
+    },
+    {
+      "path": "pages/center/invoice/invoice",
+      "style": {
+        "navigationBarTitleText": "我的发票"
+      }
+    },
+    {
+      "path": "pages/center/invoice/makeinvoice/makeinvoice",
+      "style": {
+        "navigationBarTitleText": "我要开票"
+      }
+    },
+    {
+      "path": "pages/center/invoice/invoiceDetails/invoiceDetails",
+      "style": {
+        "navigationBarTitleText": "发票详情"
+      }
+    },
+    {
+      "path": "pages/parkingLists/parkingLists",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "停车点"
+      }
+    },
+    {
+      "path": "pages/myCars/myCars",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "我的车辆"
+      }
+    },
+    {
+      "path": "pages/message/message",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "消息中心"
+      }
+    },
+    {
+      "path": "pages/message/messageInfo",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "消息中心"
+      }
+    },
+    {
+      "path": "pages/payLists/payLists",
+      "style": {
+        "navigationBarTitleText": "停车缴费",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkingInformation/parkingInformation",
+      "style": {
+        "navigationBarTitleText": "停车场信息",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#ffffff",
+        "navigationBarTextStyle": "black"
+      }
+    },
+    {
+      "path": "pages/chargeStandard/chargeStandard",
+      "style": {
+        "navigationBarTitleText": "收费标准",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/handleMonthly/handleMonthly",
+      "style": {
+        "navigationBarTitleText": "办理包月",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/center/monthly/monthly1",
+      "style": {
+        "navigationBarTitleText": "我的包月",
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/center/monthly/monthly",
+      "style": {
+        "navigationBarTitleText": "我的包月",
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/payLists/pay",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "支付"
+      }
+    },
+    {
+      "path": "pages/paymentMethod/jumpMiddle",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "跳转"
+      }
+    },
+    {
+      "path": "pages/handleMonthly/monthPay",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "包月支付"
+      }
+    },
+    {
+      "path": "pages/searchparking/searchparking",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "停车查询"
+      }
+    },
+    {
+      "path": "pages/favourableActivity/favourableActivity",
+      "style": {
+        "navigationBarTitleText": "一分钱停车",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkingLock/parkingLock",
+      "style": {
+        "navigationBarTitleText": "车位锁",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkingLists/map_web_view/map_web_view",
+      "style": {
+        "navigationStyle": "custom",
+        "navigationBarTitleText": "导航",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/bannerDetails/bannerDetails",
+      "style": {
+        "navigationBarTitleText": "详情页",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/applyRefund/applyRefund",
+      "style": {
+        "navigationBarTitleText": "申请退款",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/applyRefundDetails/applyRefundDetails",
+      "style": {
+        "navigationBarTitleText": "申请退款",
+        "navigationStyle": "custom",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/applyRefundDetails/applyRefundAchieveDetails",
+      "style": {
+        "navigationBarTitleText": "订单详情"
+      }
+    },
+    {
+      "path": "pages/privacyPolicy/privacyPolicy",
+      "style": {
+        "navigationBarTitleText": "隐私政策",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/wechatLogin/wechatLogin",
+      "style": {
+        "navigationBarTitleText": "微信登录",
+        "enablePullDownRefresh": false
+      }
+    },
+    {
+      "path": "pages/geomagnetismLock/geomagnetismLock",
+      "style": {
+        "navigationBarTitleText": "地磁",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkentrace/parkentrace",
+      "style": {
+        "navigationBarTitleText": "入口扫码",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkadvance/parkadvance",
+      "style": {
+        "navigationBarTitleText": "场内扫码",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkexport/parkexport",
+      "style": {
+        "navigationBarTitleText": "出口扫码",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/parkroadgate/parkroadgate",
+      "style": {
+        "navigationBarTitleText": "道闸",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/roadGateSystem/roadGateSystem",
+      "style": {
+        "navigationBarTitleText": "道闸系统",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#008CFF",
+        "navigationBarTextStyle": "white"
+      }
+    }
+  ],
+  "globalStyle": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "普定智慧停车",
+    "navigationBarBackgroundColor": "#F8F8F8",
+    "backgroundColor": "#F8F8F8",
+    "backgroundColorTop": "#FFFFFF"
+  },
+  "tabBar": {
+    "color": "#909399",
+    "selectedColor": "#303133",
+    "borderStyle": "black",
+    "backgroundColor": "#ffffff",
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "iconPath": "static/index.png",
+        "selectedIconPath": "static/index-selected.png",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/parkingLists/parkingLists",
+        "iconPath": "static/car_h.png",
+        "selectedIconPath": "static/car.png",
+        "text": "找车位"
+      },
+      {
+        "pagePath": "pages/center/index",
+        "iconPath": "static/center.png",
+        "selectedIconPath": "static/center-selected.png",
+        "text": "我"
+      }
+    ]
+  }
 }

+ 76 - 76
pages/applyRefund/applyRefund.scss

@@ -1,77 +1,77 @@
 .apply-refund {
-	background-color: #F6F6FF;
-	min-height: calc(100vh - 44px);
-	.apply-refund-form {
-		background-color: #fff;
-		font-size: 28rpx;
-		.apply-refund-form-item {
-			display: flex;
-			flex-wrap: wrap;
-			line-height: 100rpx;
-			padding: 0 34rpx;
-			border-bottom: solid 2px #f5f5f5;
-			.apply-refund-form-label {
-				width: 150rpx;
-			}
-			.apply-refund-form-content {
-				color: #787878;
-				background-color: #fff;
-				.money {
-					color: #FA6400;
-				}
-				textarea {
-					width: 100%;
-					background-color: #f5f5f5;
-					font-size: 26rpx;
-					&:after{
-						content: attr(data-maxnum);
-						position: absolute;
-						right: 10px;
-						bottom: 3px;
-						font-size: 12px;
-					}
-				}
-			}
-			.full-width {
-				width: 100%;
-				background-color: #f5f5f5;
-				padding: 30rpx;
-				margin-bottom: 30rpx;
-				border-radius: 5px;
-				/deep/ .u-add-wrap {
-					border: 1px dashed #606266;
-				}
-			}
-		}
-	}
-	.apply-refund-form-submit {
-		padding: 0 34rpx;
-		margin: 50rpx 0;
-	}
-	.refund-tips {
-		padding: 34rpx;
-		background-color: #fff;
-	}
-	.pop-warp {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		height: 100%;
-		.pop-warp-icon {
-			width: 100rpx;
-			height: 100rpx;
-			line-height: 120rpx;
-			margin: 0 auto;
-			border-radius: 50%;
-			background-color: $u-type-primary;
-			text-align: center;
-		}
-		.pop-warp-tips {
-			color: $u-type-primary;
-			width: 260rpx;
-			text-align: center;
-			margin-top: 30rpx;
-		}
-	}
-}
+  background-color: #f6f6ff;
+  min-height: calc(100vh - 44px);
+  .apply-refund-form {
+    background-color: #fff;
+    font-size: 28rpx;
+    .apply-refund-form-item {
+      display: flex;
+      flex-wrap: wrap;
+      line-height: 100rpx;
+      padding: 0 34rpx;
+      border-bottom: solid 2px #f5f5f5;
+      .apply-refund-form-label {
+        width: 150rpx;
+      }
+      .apply-refund-form-content {
+        color: #787878;
+        background-color: #fff;
+        .money {
+          color: #fa6400;
+        }
+        textarea {
+          width: 100%;
+          background-color: #f5f5f5;
+          font-size: 26rpx;
+          &:after {
+            content: attr(data-maxnum);
+            position: absolute;
+            right: 10px;
+            bottom: 3px;
+            font-size: 12px;
+          }
+        }
+      }
+      .full-width {
+        width: 100%;
+        background-color: #f5f5f5;
+        padding: 30rpx;
+        margin-bottom: 30rpx;
+        border-radius: 5px;
+        /deep/ .u-add-wrap {
+          border: 1px dashed #606266;
+        }
+      }
+    }
+  }
+  .apply-refund-form-submit {
+    padding: 0 34rpx;
+    margin: 50rpx 0;
+  }
+  .refund-tips {
+    padding: 34rpx;
+    background-color: #fff;
+  }
+  .pop-warp {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    height: 100%;
+    .pop-warp-icon {
+      width: 100rpx;
+      height: 100rpx;
+      line-height: 120rpx;
+      margin: 0 auto;
+      border-radius: 50%;
+      background-color: $u-type-primary;
+      text-align: center;
+    }
+    .pop-warp-tips {
+      color: $u-type-primary;
+      width: 260rpx;
+      text-align: center;
+      margin-top: 30rpx;
+    }
+  }
+}

+ 153 - 150
pages/applyRefund/applyRefund.vue

@@ -1,158 +1,161 @@
 <template>
-	<view class="apply-refund">
-		<view class="apply-refund-form">
-			<view class="apply-refund-form-item">
-				<view class="apply-refund-form-label">
-					退款金额:
-				</view>
-				<view class="apply-refund-form-content">
-					<text class="money">{{Number(refundForm.refundAmount).toFixed(2)}}</text>元
-				</view>
-			</view>
-			<view class="apply-refund-form-item">
-				<view class="apply-refund-form-label">
-					退款原因:
-				</view>
-				<view class="apply-refund-form-content full-width">
-					<textarea v-model="refundForm.refundReason" maxlength="200" placeholder="请填写申请退款原因"
-						:data-maxnum="refundForm.refundReason.length+'/200'" />
-					<u-upload :header="{
-							Authorization: 'Bearer ' + vuex_token
-						}" max-count="3" ref="uUpload" :action="action"></u-upload>
-				</view>
-			</view>
-		</view>
-		<view class="apply-refund-form-submit">
-			<u-button type="primary" @click="submit">提交</u-button>
-		</view>
-		<view class="refund-tips" v-if="refundTipsContent">
-			<u-parse :html="refundTipsContent"></u-parse>
-		</view>
-		<u-mask :show="successPop" :zoom="true" :custom-style="{background: 'rgba(255, 255, 255, 0.8)'}">
-			<view class="pop-warp">
-				<view class="pop-warp-icon">
-					<u-icon name="checkbox-mark" color="#fff" size="50"></u-icon>
-				</view>
-				<view class="pop-warp-tips">
-					<text>提交成功!预计3-7个工作日内处理</text>
-				</view>
-			</view>
-		</u-mask>
-		<u-toast ref="uToast" />
-	</view>
+  <view class="apply-refund">
+    <view class="apply-refund-form">
+      <view class="apply-refund-form-item">
+        <view class="apply-refund-form-label"> 退款金额: </view>
+        <view class="apply-refund-form-content">
+          <text class="money">{{ Number(refundForm.refundAmount).toFixed(2) }}</text
+          >元
+        </view>
+      </view>
+      <view class="apply-refund-form-item">
+        <view class="apply-refund-form-label"> 退款原因: </view>
+        <view class="apply-refund-form-content full-width">
+          <textarea
+            v-model="refundForm.refundReason"
+            maxlength="200"
+            placeholder="请填写申请退款原因"
+            :data-maxnum="refundForm.refundReason.length + '/200'"
+          />
+          <u-upload
+            :header="{
+              Authorization: 'Bearer ' + vuex_token
+            }"
+            max-count="3"
+            ref="uUpload"
+            :action="action"
+          ></u-upload>
+        </view>
+      </view>
+    </view>
+    <view class="apply-refund-form-submit">
+      <u-button type="primary" @click="submit">提交</u-button>
+    </view>
+    <view class="refund-tips" v-if="refundTipsContent">
+      <u-parse :html="refundTipsContent"></u-parse>
+    </view>
+    <u-mask :show="successPop" :zoom="true" :custom-style="{ background: 'rgba(255, 255, 255, 0.8)' }">
+      <view class="pop-warp">
+        <view class="pop-warp-icon">
+          <u-icon name="checkbox-mark" color="#fff" size="50"></u-icon>
+        </view>
+        <view class="pop-warp-tips">
+          <text>提交成功!预计3-7个工作日内处理</text>
+        </view>
+      </view>
+    </u-mask>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import {
-		mapState,
-		mapMutations
-	} from 'vuex';
-	import {
-		config
-	} from '@/common/config.js'
-	export default {
-		data() {
-			return {
-				refundForm: {
-					orderId: '',
-					refundAmount: '',
-					refundReason: '',
-					images: []
-				},
-				action: config.baseUrl + '/file/tencent/upload',
-				successPop: false,
-				// 退款温馨提示
-				refundTipsContent: ''
-			}
-		},
-		computed: {
-			...mapState(['vuex_token'])
-		},
-		onLoad(page) {
-			this.refundForm.orderId = page.orderId
-			this.refundForm.refundAmount = Number(page.payAmount)
-			this.getSysterms(4)
-		},
-		methods: {
-			submit() {
-				let files = [];
-				// 是否有未完成上传的图片标识
-				let isHas = false
-				this.$refs.uUpload.lists.forEach(item => {
-					if (item.progress === 100 && item.response) {
-						const url = item?.response?.data?.url
-						if (url) {
-							files.push(url)
-						}
-					} else {
-						isHas = true
-					}
-				})
-				this.refundForm.images = files
-				if (this.refundForm.refundReason && !isHas) {
-					this.$u.api.updateOrderRefund(this.refundForm)
-						.then(res => {
-							this.successPop = true
-							if (res.code === 200) {
-								setTimeout(() => {
-									this.$u.route('pages/applyRefundDetails/applyRefundDetails', {
-										orderId: this.refundForm.orderId
-									})
-								}, 2000)
-							} else {
-								this.successPop = false
-								this.$refs.uToast.show({
-									title: res.msg,
-									type: 'error'
-								})
-							}
-						})
-						.catch(err => {
-							this.$refs.uToast.show({
-								title: '操作失败!',
-								type: 'error'
-							})
-						})
-				} else if (this.refundForm.refundReason == '') {
-					this.$refs.uToast.show({
-						title: '请填写申请退款原因',
-						type: 'warning'
-					})
-				} else if (isHas) {
-					this.$refs.uToast.show({
-						title: '还有图片未完成上传,请稍等!',
-						type: 'warning'
-					})
-				}
-			},
-			/**
-			 * 获取收费标准
-			 * */
-			getSysterms(termsType) {
-				this.$u.api.getSysterms({
-						termsType: Number(termsType)
-					})
-					.then(res => {
-						if (res.code === 200) {
-							this.refundTipsContent = res.data?.content
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error',
-							})
-						}
-					})
-					.catch(err => {
-						this.$refs.uToast.show({
-							title: '系统错误!',
-							type: 'error',
-						})
-					})
-			}
-		}
-	}
+import { mapState, mapMutations } from 'vuex';
+import { config } from '@/common/config.js';
+export default {
+  data() {
+    return {
+      refundForm: {
+        orderId: '',
+        refundAmount: '',
+        refundReason: '',
+        images: []
+      },
+      action: config.baseUrl + '/file/tencent/upload',
+      successPop: false,
+      // 退款温馨提示
+      refundTipsContent: ''
+    };
+  },
+  computed: {
+    ...mapState(['vuex_token'])
+  },
+  onLoad(page) {
+    this.refundForm.orderId = page.orderId;
+    this.refundForm.refundAmount = Number(page.payAmount);
+    this.getSysterms(4);
+  },
+  methods: {
+    submit() {
+      let files = [];
+      // 是否有未完成上传的图片标识
+      let isHas = false;
+      this.$refs.uUpload.lists.forEach((item) => {
+        if (item.progress === 100 && item.response) {
+          const url = item?.response?.data?.url;
+          if (url) {
+            files.push(url);
+          }
+        } else {
+          isHas = true;
+        }
+      });
+      this.refundForm.images = files;
+      if (this.refundForm.refundReason && !isHas) {
+        this.$u.api
+          .updateOrderRefund(this.refundForm)
+          .then((res) => {
+            this.successPop = true;
+            if (res.code === 200) {
+              setTimeout(() => {
+                this.$u.route('pages/applyRefundDetails/applyRefundDetails', {
+                  orderId: this.refundForm.orderId
+                });
+              }, 2000);
+            } else {
+              this.successPop = false;
+              this.$refs.uToast.show({
+                title: res.msg,
+                type: 'error'
+              });
+            }
+          })
+          .catch((err) => {
+            this.$refs.uToast.show({
+              title: '操作失败!',
+              type: 'error'
+            });
+          });
+      } else if (this.refundForm.refundReason == '') {
+        this.$refs.uToast.show({
+          title: '请填写申请退款原因',
+          type: 'warning'
+        });
+      } else if (isHas) {
+        this.$refs.uToast.show({
+          title: '还有图片未完成上传,请稍等!',
+          type: 'warning'
+        });
+      }
+    },
+    /**
+     * 获取收费标准
+     * */
+    getSysterms(termsType) {
+      this.$u.api
+        .getSysterms({
+          termsType: Number(termsType)
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.refundTipsContent = res.data?.content;
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '系统错误!',
+            type: 'error'
+          });
+        });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './applyRefund.scss';
+@import './applyRefund.scss';
 </style>

+ 61 - 60
pages/applyRefundDetails/applyRefundAchieveDetails.vue

@@ -1,68 +1,69 @@
 <template>
-	<!-- 订单详情  状态支付退款成功 -->
-	<view class="order-details">
-		<view class="order-details-content">
-			<view class="order-details-content-header">
-				<image src="../../static/img/refund-success.png"></image>
-				<view>+{{details.refundAmount}}</view>
-			</view>
-			<view class="order-details-content-item">
-				<view>当前状态</view>
-				<view>已全额退款</view>
-			</view>
-			<view class="order-details-content-item">
-				<view>退款时间</view>
-				<view>{{details.auditTime}}</view>
-			</view>
-			<view class="order-details-content-item">
-				<view>退款方式</view>
-				<view>退回原支付账户</view>
-			</view>
-			<view class="order-details-content-item">
-				<view>退款单号</view>
-				<view>{{details.refundNo}}</view>
-			</view>
-		</view>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 订单详情  状态支付退款成功 -->
+  <view class="order-details">
+    <view class="order-details-content">
+      <view class="order-details-content-header">
+        <image src="../../static/img/refund-success.png"></image>
+        <view>+{{ details.refundAmount }}</view>
+      </view>
+      <view class="order-details-content-item">
+        <view>当前状态</view>
+        <view>已全额退款</view>
+      </view>
+      <view class="order-details-content-item">
+        <view>退款时间</view>
+        <view>{{ details.auditTime }}</view>
+      </view>
+      <view class="order-details-content-item">
+        <view>退款方式</view>
+        <view>退回原支付账户</view>
+      </view>
+      <view class="order-details-content-item">
+        <view>退款单号</view>
+        <view>{{ details.refundNo }}</view>
+      </view>
+    </view>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				details: {}
-			}
-		},
-		onLoad(page) {
-			this.getOrderRefundDetails(page.orderId)
-		},
-		methods: {
-			getOrderRefundDetails(orderId) {
-				this.$u.api.getOrderRefundDetails({
-						orderId: orderId
-					})
-					.then(res => {
-						if (res.code === 200) {
-							this.details = res.data
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error'
-							})
-						}
-					})
-					.catch(err => {
-						this.$refs.uToast.show({
-							title: '操作失败',
-							type: 'error'
-						})
-					})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      details: {}
+    };
+  },
+  onLoad(page) {
+    this.getOrderRefundDetails(page.orderId);
+  },
+  methods: {
+    getOrderRefundDetails(orderId) {
+      this.$u.api
+        .getOrderRefundDetails({
+          orderId: orderId
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.details = res.data;
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败',
+            type: 'error'
+          });
+        });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './applyRefundDetails.scss';
+@import './applyRefundDetails.scss';
 </style>

+ 80 - 80
pages/applyRefundDetails/applyRefundDetails.scss

@@ -1,84 +1,84 @@
 .refund-details {
-	background-color: #f5f5f5;
-	padding-bottom: 100rpx;
-	min-height: calc(100vh - 44px);
-	.refund-details-list {
-		background-color: #fff;
-		padding: 30rpx 0;
-		.refund-details-list-item {
-			display: flex;
-			padding: 0 17px;
-			line-height: 70rpx;
-			.rdli-label {
-				width: 150rpx;
-				text-align: right;
-			}
-			.rdli-content {
-				width: calc(100% - 150rpx);
-			}
-			.rdli-font {
-				color: #FA6400;
-			}
-			.image {
-				width: 100%;
-				margin-top: 20rpx;
-				image {
-					width: 100%;
-				}
-			}
-		}
-	}
-	.apply-button {
-		padding: 0 50rpx;
-		margin-top: 50rpx;
-	}
-	.refund-details-status {
-		background-color: #fff;
-		padding: 0 17px;
-		margin-top: 50rpx;
-		.refund-details-status-item {
-			display: flex;
-			line-height: 70rpx;
-			view {
-				&:first-child {
-					width: 150rpx;
-					text-align: right;
-				}
-				&:last-child {
-					width: calc(100% - 150rpx);
-				}
-			}
-		}
-	}
+  background-color: #f5f5f5;
+  padding-bottom: 100rpx;
+  min-height: calc(100vh - 44px);
+  .refund-details-list {
+    background-color: #fff;
+    padding: 30rpx 0;
+    .refund-details-list-item {
+      display: flex;
+      padding: 0 17px;
+      line-height: 70rpx;
+      .rdli-label {
+        width: 150rpx;
+        text-align: right;
+      }
+      .rdli-content {
+        width: calc(100% - 150rpx);
+      }
+      .rdli-font {
+        color: #fa6400;
+      }
+      .image {
+        width: 100%;
+        margin-top: 20rpx;
+        image {
+          width: 100%;
+        }
+      }
+    }
+  }
+  .apply-button {
+    padding: 0 50rpx;
+    margin-top: 50rpx;
+  }
+  .refund-details-status {
+    background-color: #fff;
+    padding: 0 17px;
+    margin-top: 50rpx;
+    .refund-details-status-item {
+      display: flex;
+      line-height: 70rpx;
+      view {
+        &:first-child {
+          width: 150rpx;
+          text-align: right;
+        }
+        &:last-child {
+          width: calc(100% - 150rpx);
+        }
+      }
+    }
+  }
 }
 /* 订单详情  状态支付退款成功 */
 .order-details {
-	padding: 0 20px;
-	.order-details-content {
-		.order-details-content-header {
-			text-align: center;
-			margin-top: 54rpx;
-			font-size: 50rpx;
-			font-weight: 600;
-			image {
-				width: 90rpx;
-				height: 90rpx;
-			}
-		}
-		.order-details-content-item {
-			display: flex;
-			line-height: 70rpx;
-			view {
-				&:first-child {
-					width: 150rpx;
-					color: #2A2A2A;
-				}
-				&:last-child {
-					width: calc(100% - 150rpx);
-					text-align: right;
-					color: #6E6E6E;
-				}
-			}
-		}
-	}
-}
+  padding: 0 20px;
+  .order-details-content {
+    .order-details-content-header {
+      text-align: center;
+      margin-top: 54rpx;
+      font-size: 50rpx;
+      font-weight: 600;
+      image {
+        width: 90rpx;
+        height: 90rpx;
+      }
+    }
+    .order-details-content-item {
+      display: flex;
+      line-height: 70rpx;
+      view {
+        &:first-child {
+          width: 150rpx;
+          color: #2a2a2a;
+        }
+        &:last-child {
+          width: calc(100% - 150rpx);
+          text-align: right;
+          color: #6e6e6e;
+        }
+      }
+    }
+  }
+}

+ 97 - 88
pages/applyRefundDetails/applyRefundDetails.vue

@@ -1,96 +1,105 @@
 <template>
-	<view class="refund-details">
-		<u-navbar v-if="details.refundStatus === 0" :is-back="false" back-text="" title="申请退款"
-			:background="{backgroundColor: '#008CFF'}" title-color="#fff" back-icon-color="#fff"></u-navbar>
-		<u-navbar v-else back-text="" title="申请退款" :background="{backgroundColor: '#008CFF'}" title-color="#fff"
-			back-icon-color="#fff"></u-navbar>
-		<view class="refund-details-list">
-			<view class="refund-details-list-item">
-				<view class="rdli-label">申请时间:</view>
-				<view class="rdli-content">{{details.applyTime}}</view>
-			</view>
-			<view class="refund-details-list-item">
-				<view class="rdli-label">消费金额:</view>
-				<view class="rdli-content"><text class="rdli-font">{{details.refundAmount}}</text>元</view>
-			</view>
-			<view class="refund-details-list-item">
-				<view class="rdli-label">退款原因:</view>
-				<view class="rdli-content">{{details.refundReason}}</view>
-			</view>
-			<view class="refund-details-list-item" v-if="details.images && details.images.length > 0">
-				<view class="rdli-label">图片:</view>
-				<view class="rdli-content">
-					<u-lazy-load class="image" v-for="(item, index) in details.images" :key="index" :image="item"
-						img-mode="aspectFill"></u-lazy-load>
-				</view>
-			</view>
-		</view>
-		<view class="apply-button" v-if="details.refundStatus === 0">
-			<u-button type="primary" disabled>申请中</u-button>
-		</view>
-		<view class="apply-button" v-if="details.refundStatus === 0">
-			<u-button type="primary" @click="jumpPage('pages/center/order/order')">返回列表页</u-button>
-		</view>
-		<view class="refund-details-status" v-if="details.refundStatus === 2">
-			<view class="refund-details-status-item">
-				<view>处理时间:</view>
-				<view>{{details.auditTime}}</view>
-			</view>
-			<view class="refund-details-status-item">
-				<view>处理结果:</view>
-				<view v-if="details.refundStatus === 1">已通过</view>
-				<view v-if="details.refundStatus === 2">已驳回</view>
-			</view>
-			<view class="refund-details-status-item">
-				<view>备注:</view>
-				<view>{{details.refuseReason}}</view>
-			</view>
-		</view>
-		<u-toast ref="uToast" />
-	</view>
+  <view class="refund-details">
+    <u-navbar
+      v-if="details.refundStatus === 0"
+      :is-back="false"
+      back-text=""
+      title="申请退款"
+      :background="{ backgroundColor: '#008CFF' }"
+      title-color="#fff"
+      back-icon-color="#fff"
+    ></u-navbar>
+    <u-navbar v-else back-text="" title="申请退款" :background="{ backgroundColor: '#008CFF' }" title-color="#fff" back-icon-color="#fff"></u-navbar>
+    <view class="refund-details-list">
+      <view class="refund-details-list-item">
+        <view class="rdli-label">申请时间:</view>
+        <view class="rdli-content">{{ details.applyTime }}</view>
+      </view>
+      <view class="refund-details-list-item">
+        <view class="rdli-label">消费金额:</view>
+        <view class="rdli-content"
+          ><text class="rdli-font">{{ details.refundAmount }}</text
+          >元</view
+        >
+      </view>
+      <view class="refund-details-list-item">
+        <view class="rdli-label">退款原因:</view>
+        <view class="rdli-content">{{ details.refundReason }}</view>
+      </view>
+      <view class="refund-details-list-item" v-if="details.images && details.images.length > 0">
+        <view class="rdli-label">图片:</view>
+        <view class="rdli-content">
+          <u-lazy-load class="image" v-for="(item, index) in details.images" :key="index" :image="item" img-mode="aspectFill"></u-lazy-load>
+        </view>
+      </view>
+    </view>
+    <view class="apply-button" v-if="details.refundStatus === 0">
+      <u-button type="primary" disabled>申请中</u-button>
+    </view>
+    <view class="apply-button" v-if="details.refundStatus === 0">
+      <u-button type="primary" @click="jumpPage('pages/center/order/order')">返回列表页</u-button>
+    </view>
+    <view class="refund-details-status" v-if="details.refundStatus === 2">
+      <view class="refund-details-status-item">
+        <view>处理时间:</view>
+        <view>{{ details.auditTime }}</view>
+      </view>
+      <view class="refund-details-status-item">
+        <view>处理结果:</view>
+        <view v-if="details.refundStatus === 1">已通过</view>
+        <view v-if="details.refundStatus === 2">已驳回</view>
+      </view>
+      <view class="refund-details-status-item">
+        <view>备注:</view>
+        <view>{{ details.refuseReason }}</view>
+      </view>
+    </view>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				details: {}
-			}
-		},
-		onLoad(page) {
-			this.getOrderRefundDetails(page.orderId)
-		},
-		methods: {
-			getOrderRefundDetails(orderId) {
-				this.$u.api.getOrderRefundDetails({
-						orderId: orderId
-					})
-					.then(res => {
-						if (res.code === 200) {
-							this.details = res.data
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error'
-							})
-						}
-					})
-					.catch(err => {
-						this.$refs.uToast.show({
-							title: '操作失败',
-							type: 'error'
-						})
-					})
-			},
-			jumpPage(url) {
-				this.$u.route({
-					url
-				})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      details: {}
+    };
+  },
+  onLoad(page) {
+    this.getOrderRefundDetails(page.orderId);
+  },
+  methods: {
+    getOrderRefundDetails(orderId) {
+      this.$u.api
+        .getOrderRefundDetails({
+          orderId: orderId
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.details = res.data;
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败',
+            type: 'error'
+          });
+        });
+    },
+    jumpPage(url) {
+      this.$u.route({
+        url
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './applyRefundDetails.scss';
+@import './applyRefundDetails.scss';
 </style>

+ 48 - 45
pages/bannerDetails/bannerDetails.vue

@@ -1,53 +1,56 @@
 <template>
-	<!-- 轮播详情 -->
-	<view>
-		<u-parse :html="dom"></u-parse>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 轮播详情 -->
+  <view>
+    <u-parse :html="dom"></u-parse>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				dom: ''
-			}
-		},
-		onLoad(page) {
-			if (page.id) {
-				this.getDetails(page.id)
-			}
-		},
-		methods: {
-			// 获取详情
-			getDetails(id) {
-				this.$u.api.getIndexData()
-				.then(res=>{
-					if (res.code === 200) {
-						const list = res.data?.advs
-						list.forEach(item => {
-							if (item.id == id) {
-								this.dom = item.content
-							}
-						})
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg,
-							type: 'error'
-						})
-					}
-				})
-				.catch(err => {
-					this.$refs.uToast.show({
-						title: '操作失败!',
-						type: 'error'
-					})
-				})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      dom: ''
+    };
+  },
+  onLoad(page) {
+    if (page.id) {
+      this.getDetails(page.id);
+    }
+  },
+  methods: {
+    // 获取详情
+    getDetails(id) {
+      this.$u.api
+        .getIndexData()
+        .then((res) => {
+          if (res.code === 200) {
+            const list = res.data?.advs;
+            list.forEach((item) => {
+              if (item.id == id) {
+                this.dom = item.content;
+              }
+            });
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败!',
+            type: 'error'
+          });
+        });
+    }
+  }
+};
 </script>
 
 <style>
-page{padding: 24rpx;}
+page {
+  padding: 24rpx;
+}
 </style>

+ 121 - 121
pages/chargeStandard/chargeStandard.scss

@@ -1,122 +1,122 @@
 .charge {
-	background-color: #F6F6FF;
-	padding-bottom: 20rpx;
-	.charge-rules-container {
-		margin-bottom: 20rpx;
-		.charge-list {
-			width: 100%;
-			margin: 0 auto;
-			padding: 33rpx 38rpx;
-			display: flex;
-			justify-content: space-between;
-			background-color: #F6F6FF;
-			.charge-list-item {
-				width: 32%;
-				margin-right: 2%;
-				background-color: #fff;
-				border-radius: 10rpx;
-				padding: 29rpx;
-				text-align: center;
-				&:last-child {
-					margin-right: 0;
-				}
-				view {
-					&:first-child {
-						color: #008CFF;
-						font-size: 30rpx;
-						font-weight: 500;
-						line-height: 42rpx;
-					}
-					&:last-child {
-						color: #999999;
-						font-size: 24rpx;
-						font-weight: 400;
-						margin-top: 7rpx;
-						line-height: 33rpx;
-					}
-				}
-			}
-		}
-	}
-	.charge-rules-list {
-		padding: 32rpx 40rpx;
-		border-radius: 25rpx;
-		background-color: #fff;
-	}
-	.charge-type {
-		text {
-			font-size: 32rpx;
-			font-weight: 400;
-			color: #2E2E2E;
-			line-height: 40rpx;
-			font-family: PingFangSC-Regular, PingFang SC;
-		}
-	}
-	.charge-rule-list-header {
-		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
-		.charge-time {
-			display: flex;
-			flex-direction: row;
-			font-size: 24rpx;
-			line-height: 40rpx;
-			color: #999999;
-			// view:first-child {
-			// 	margin-right: 40rpx;
-			// }
-			text {
-				color: #008CFF;
-				margin-left: 10rpx;
-			}
-		}
-	}
-	.charge-rules-box {
-		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
-		padding: 25rpx 0;
-		border-bottom: solid 2rpx #EAEAEA;
-		view:first-child {
-			color: #2A2A2A;
-			font-weight: 400;
-		}
-		view.charge-rules-right {
-			width: 70%;
-			view {
-				display: flex;
-				flex-direction: row;
-				justify-content: space-between;
-				font-size: 24rpx;
-				font-weight: 400;
-				color: #6E6E6E;
-				line-height: 40rpx;
-			}
-		}
-	}
-	.charge-instructions {
-		background-color: #fff;
-		border-radius: 25rpx;
-		padding: 40rpx;
-		.charge-instructions-title {
-			line-height: 40rpx;
-			font-size: 32rpx;
-			color: #2e2e2e;
-			margin-bottom: 30rpx;
-		}
-		.charge-instructions-item {
-			text-indent: -1.5em;
-			margin-left: 1.5em;
-			line-height: 40rpx;
-			font-size: 24rpx;
-			color: #757575;
-		}
-	}
-	.charge-telphone {
-		margin-top: 30rpx;
-		font-size: 24rpx;
-		font-weight: 400;
-		color: #757575;
-		line-height: 40rpx;
-	}
-}
+  background-color: #f6f6ff;
+  padding-bottom: 20rpx;
+  .charge-rules-container {
+    margin-bottom: 20rpx;
+    .charge-list {
+      width: 100%;
+      margin: 0 auto;
+      padding: 33rpx 38rpx;
+      display: flex;
+      justify-content: space-between;
+      background-color: #f6f6ff;
+      .charge-list-item {
+        width: 32%;
+        margin-right: 2%;
+        background-color: #fff;
+        border-radius: 10rpx;
+        padding: 29rpx;
+        text-align: center;
+        &:last-child {
+          margin-right: 0;
+        }
+        view {
+          &:first-child {
+            color: #008cff;
+            font-size: 30rpx;
+            font-weight: 500;
+            line-height: 42rpx;
+          }
+          &:last-child {
+            color: #999999;
+            font-size: 24rpx;
+            font-weight: 400;
+            margin-top: 7rpx;
+            line-height: 33rpx;
+          }
+        }
+      }
+    }
+  }
+  .charge-rules-list {
+    padding: 32rpx 40rpx;
+    border-radius: 25rpx;
+    background-color: #fff;
+  }
+  .charge-type {
+    text {
+      font-size: 32rpx;
+      font-weight: 400;
+      color: #2e2e2e;
+      line-height: 40rpx;
+      font-family: PingFangSC-Regular, PingFang SC;
+    }
+  }
+  .charge-rule-list-header {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    .charge-time {
+      display: flex;
+      flex-direction: row;
+      font-size: 24rpx;
+      line-height: 40rpx;
+      color: #999999;
+      // view:first-child {
+      // 	margin-right: 40rpx;
+      // }
+      text {
+        color: #008cff;
+        margin-left: 10rpx;
+      }
+    }
+  }
+  .charge-rules-box {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    padding: 25rpx 0;
+    border-bottom: solid 2rpx #eaeaea;
+    view:first-child {
+      color: #2a2a2a;
+      font-weight: 400;
+    }
+    view.charge-rules-right {
+      width: 70%;
+      view {
+        display: flex;
+        flex-direction: row;
+        justify-content: space-between;
+        font-size: 24rpx;
+        font-weight: 400;
+        color: #6e6e6e;
+        line-height: 40rpx;
+      }
+    }
+  }
+  .charge-instructions {
+    background-color: #fff;
+    border-radius: 25rpx;
+    padding: 40rpx;
+    .charge-instructions-title {
+      line-height: 40rpx;
+      font-size: 32rpx;
+      color: #2e2e2e;
+      margin-bottom: 30rpx;
+    }
+    .charge-instructions-item {
+      text-indent: -1.5em;
+      margin-left: 1.5em;
+      line-height: 40rpx;
+      font-size: 24rpx;
+      color: #757575;
+    }
+  }
+  .charge-telphone {
+    margin-top: 30rpx;
+    font-size: 24rpx;
+    font-weight: 400;
+    color: #757575;
+    line-height: 40rpx;
+  }
+}

+ 0 - 29
pages/chargeStandard/chargeStandard.vue

@@ -2,20 +2,6 @@
   <!-- 收费标准 -->
   <view class="charge">
     <view class="charge-rules-container" v-for="(item, index) in chargeRulesInfo" :key="index">
-      <!-- <view class="charge-list">
-				<view class="charge-list-item">
-					<view>2.5元/小时</view>
-					<view>收费标准</view>
-				</view>
-				<view class="charge-list-item">
-					<view>{{item.freeTime}}分钟内</view>
-					<view>免费时长</view>
-				</view>
-				<view class="charge-list-item">
-					<view>{{item.topAmt}}元</view>
-					<view>封顶金额</view>
-				</view>
-			</view> -->
       <view class="charge-rules-list">
         <view class="charge-rule-list-header">
           <view class="charge-type">
@@ -51,21 +37,6 @@
       </view>
     </view>
     <view class="charge-instructions">
-      <!-- <view class="charge-instructions-title">相关说明</view>
-			<view class="charge-instructions-item">1、全天任何时段,封停必须扫码;</view>
-			<view class="charge-instructions-item">2、停车5分钟未扫码启动缴费程序,将按违法停车处罚;</view>
-			<view class="charge-instructions-item">3、停车时间在15分钟内不收费;超过15分钟按1小时收费;</view>
-			<view class="charge-instructions-item">4、停放车辆须按车位停放,禁止乱停乱放,否则停车场有权采取相应措施;</view>
-			<view class="charge-instructions-item">5、路边临停收费仅是收起个人占用公共资源的费用,非保管合同法律关系,如车辆发生刮蹭,责任由相关部门认定,与运营方无关;</view>
-			<view class="charge-instructions-item">6、贵重东西请妥善保管或随身带走,如有遗失概不负责;</view>
-			<view class="charge-telphone">
-				<view>客服电话</view>
-				<view>0851-8888888</view>
-			</view>
-			<view class="charge-telphone">
-				<view>监督电话</view>
-				<view>0851-8888888</view>
-			</view> -->
       <u-parse :html="chargeContent"></u-parse>
     </view>
   </view>

+ 114 - 114
pages/favourableActivity/favourableActivity.scss

@@ -1,115 +1,115 @@
 .container {
-	height: calc(100vh - 88rpx);
-	.penny-parking {
-		height: 100%;
-		background-color: #B3DDFF;
-		padding-top: 39rpx;
-		.penny-parking-icon {
-			width: calc(100% - 56rpx);
-			height: 141rpx;
-			margin: 0 auto;
-			background-image: url('/static/img/penny-parking-icon.png');
-			background-position: center center;
-			background-size: 100% 100%;
-		}
-		.penny-parking-content {
-			width: 100%;
-			background-image: url('/static/img/penny-parking-bg.png');
-			background-position: center 40px;
-			background-repeat: no-repeat;
-			view {
-				&:nth-child(1) {
-					color: #4E4E4E;
-					font-size: 28rpx;
-					font-weight: 300;
-					text-align: center;
-				}
-				&:nth-child(2) {
-					margin-top: 400rpx;
-					color: #1A517E;
-					font-weight: 400;
-					font-size: 26rpx;
-					line-height: 52rpx;
-					padding: 0 39rpx;
-				}
-				&:nth-child(3) {
-					margin-top: 60rpx;
-					color: #1A517E;
-					font-weight: 400;
-					font-size: 26rpx;
-					line-height: 52rpx;
-					padding: 0 39rpx;
-				}
-				button {
-					width: calc(100% - 56rpx);
-					height: 96rpx;
-					line-height: 96rpx;
-					background-color: #008CFF;
-					color: #fff;
-					margin-top: 80rpx;
-					border-radius: 10rpx;
-					font-size: 28rpx;
-					font-weight: 500;
-					border: none;
-				}
-			}
-		}
-	}
-	.eighty-percent-of-parking {
-		height: 100%;
-		background-color: #FFECEC;
-		padding-top: 39rpx;
-		.penny-parking-icon {
-			width: calc(100% - 84rpx);
-			height: 141rpx;
-			margin: 0 auto;
-			background-image: url('/static/img/eighty-percent-parking-icon.png');
-			background-position: center center;
-			background-size: 100% 100%;
-		}
-		.penny-parking-content {
-			width: 100%;
-			background-image: url('/static/img/eighty-percent-parking-bg.png');
-			background-size: 554rpx 551rpx;
-			background-position: top;
-			background-repeat: no-repeat;
-			view {
-				&:nth-child(1) {
-					color: #4F4F4F;
-					font-size: 30rpx;
-					font-weight: 300;
-					text-align: center;
-				}
-				&:nth-child(2) {
-					margin-top: 500rpx;
-					color: #946969;
-					font-weight: 400;
-					font-size: 26rpx;
-					line-height: 52rpx;
-					padding: 0 39rpx;
-				}
-				&:nth-child(3) {
-					margin-top: 60rpx;
-					color: #946969;
-					font-weight: 400;
-					font-size: 26rpx;
-					line-height: 52rpx;
-					padding: 0 39rpx;
-				}
-				button {
-					width: calc(100% - 56rpx);
-					height: 96rpx;
-					line-height: 96rpx;
-					background-color: #FFBABA;
-					background: linear-gradient(#FFA9A9,#FF8C8C);
-					color: #fff;
-					margin-top: 60rpx;
-					border-radius: 10rpx;
-					font-size: 28rpx;
-					font-weight: 500;
-					border: none;
-				}
-			}
-		}
-	}
-}
+  height: calc(100vh - 88rpx);
+  .penny-parking {
+    height: 100%;
+    background-color: #b3ddff;
+    padding-top: 39rpx;
+    .penny-parking-icon {
+      width: calc(100% - 56rpx);
+      height: 141rpx;
+      margin: 0 auto;
+      background-image: url('/static/img/penny-parking-icon.png');
+      background-position: center center;
+      background-size: 100% 100%;
+    }
+    .penny-parking-content {
+      width: 100%;
+      background-image: url('/static/img/penny-parking-bg.png');
+      background-position: center 40px;
+      background-repeat: no-repeat;
+      view {
+        &:nth-child(1) {
+          color: #4e4e4e;
+          font-size: 28rpx;
+          font-weight: 300;
+          text-align: center;
+        }
+        &:nth-child(2) {
+          margin-top: 400rpx;
+          color: #1a517e;
+          font-weight: 400;
+          font-size: 26rpx;
+          line-height: 52rpx;
+          padding: 0 39rpx;
+        }
+        &:nth-child(3) {
+          margin-top: 60rpx;
+          color: #1a517e;
+          font-weight: 400;
+          font-size: 26rpx;
+          line-height: 52rpx;
+          padding: 0 39rpx;
+        }
+        button {
+          width: calc(100% - 56rpx);
+          height: 96rpx;
+          line-height: 96rpx;
+          background-color: #008cff;
+          color: #fff;
+          margin-top: 80rpx;
+          border-radius: 10rpx;
+          font-size: 28rpx;
+          font-weight: 500;
+          border: none;
+        }
+      }
+    }
+  }
+  .eighty-percent-of-parking {
+    height: 100%;
+    background-color: #ffecec;
+    padding-top: 39rpx;
+    .penny-parking-icon {
+      width: calc(100% - 84rpx);
+      height: 141rpx;
+      margin: 0 auto;
+      background-image: url('/static/img/eighty-percent-parking-icon.png');
+      background-position: center center;
+      background-size: 100% 100%;
+    }
+    .penny-parking-content {
+      width: 100%;
+      background-image: url('/static/img/eighty-percent-parking-bg.png');
+      background-size: 554rpx 551rpx;
+      background-position: top;
+      background-repeat: no-repeat;
+      view {
+        &:nth-child(1) {
+          color: #4f4f4f;
+          font-size: 30rpx;
+          font-weight: 300;
+          text-align: center;
+        }
+        &:nth-child(2) {
+          margin-top: 500rpx;
+          color: #946969;
+          font-weight: 400;
+          font-size: 26rpx;
+          line-height: 52rpx;
+          padding: 0 39rpx;
+        }
+        &:nth-child(3) {
+          margin-top: 60rpx;
+          color: #946969;
+          font-weight: 400;
+          font-size: 26rpx;
+          line-height: 52rpx;
+          padding: 0 39rpx;
+        }
+        button {
+          width: calc(100% - 56rpx);
+          height: 96rpx;
+          line-height: 96rpx;
+          background-color: #ffbaba;
+          background: linear-gradient(#ffa9a9, #ff8c8c);
+          color: #fff;
+          margin-top: 60rpx;
+          border-radius: 10rpx;
+          font-size: 28rpx;
+          font-weight: 500;
+          border: none;
+        }
+      }
+    }
+  }
+}

+ 73 - 69
pages/favourableActivity/favourableActivity.vue

@@ -1,76 +1,80 @@
 <template>
-	<!-- 优惠活动 -->
-	<view class="container">
-		<view class="penny-parking" v-if="id == 1">
-			<view class="penny-parking-icon"></view>
-			<view class="penny-parking-content">
-				<view>使用贵州银行支付可一分钱停车</view>
-				<view>从客户启用贵州银行行卡支付的第四个月开始,使用我行卡支付永久享受八折优惠(单日不限次数)。时间计算同上。三个月最后一天,假如车主跨天的话,拆分账单计算:三个月内一分钱或八折,三个月外时段八折。
-				</view>
-				<view>如果停车场、路边停车位有{{ freeTime }}分钟内等免费政策的,我行客户自然享受后再按“一分钱停车”、“八折停车”执行。</view>
-				<view>
-					<button type="default" class="btn1" @click="openAcount">银行卡开户</button>
-				</view>
-			</view>
-		</view>
-		<view class="eighty-percent-of-parking" v-if="id == 2">
-			<view class="penny-parking-icon"></view>
-			<view class="penny-parking-content">
-				<view>使用贵州银行支付可享永久八折优惠</view>
-				<view>从客户启用贵州银行行卡支付的第四个月开始,使用我行卡支付永久享受八折优惠(单日不限次数)。时间计算同上。三个月最后一天,假如车主跨天的话,拆分账单计算:三个月内一分钱或八折,三个月外时段八折。
-				</view>
-				<view>如果停车场、路边停车位有{{ freeTime }}分钟内等免费政策的,我行客户自然享受后再按“一分钱停车”、“八折停车”执行。</view>
-				<view>
-					<button type="default" class="btn2" @click="openAcount">银行卡开户</button>
-				</view>
-			</view>
-		</view>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 优惠活动 -->
+  <view class="container">
+    <view class="penny-parking" v-if="id == 1">
+      <view class="penny-parking-icon"></view>
+      <view class="penny-parking-content">
+        <view>使用贵州银行支付可一分钱停车</view>
+        <view
+          >从客户启用贵州银行行卡支付的第四个月开始,使用我行卡支付永久享受八折优惠(单日不限次数)。时间计算同上。三个月最后一天,假如车主跨天的话,拆分账单计算:三个月内一分钱或八折,三个月外时段八折。
+        </view>
+        <view>如果停车场、路边停车位有{{ freeTime }}分钟内等免费政策的,我行客户自然享受后再按“一分钱停车”、“八折停车”执行。</view>
+        <view>
+          <button type="default" class="btn1" @click="openAcount">银行卡开户</button>
+        </view>
+      </view>
+    </view>
+    <view class="eighty-percent-of-parking" v-if="id == 2">
+      <view class="penny-parking-icon"></view>
+      <view class="penny-parking-content">
+        <view>使用贵州银行支付可享永久八折优惠</view>
+        <view
+          >从客户启用贵州银行行卡支付的第四个月开始,使用我行卡支付永久享受八折优惠(单日不限次数)。时间计算同上。三个月最后一天,假如车主跨天的话,拆分账单计算:三个月内一分钱或八折,三个月外时段八折。
+        </view>
+        <view>如果停车场、路边停车位有{{ freeTime }}分钟内等免费政策的,我行客户自然享受后再按“一分钱停车”、“八折停车”执行。</view>
+        <view>
+          <button type="default" class="btn2" @click="openAcount">银行卡开户</button>
+        </view>
+      </view>
+    </view>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				id: '',
-				freeTime: '15'
-			}
-		},
-		onLoad(page) {
-			this.getParams();
-			if (page.title) {
-				uni.setNavigationBarTitle({
-					title: page.title
-				})
-				this.id = page.id
-			} else {
-				uni.setNavigationBarTitle({
-					title: '一分钱停车'
-				})
-				this.id = 1
-			}
-		},
-		onShow() {},
-		methods: {
-			getParams() {
-				this.$u.api.getParamsApi({
-					key: 'park.lock.freetime'
-				}).then(res => {
-					if (res.code === 200) {
-						this.freeTime = res.msg
-					}
-				})
-			},
-			openAcount() {
-				this.$refs.uToast.show({
-					title: '该功能尚未开发',
-					type: 'warning'
-				})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      id: '',
+      freeTime: '15'
+    };
+  },
+  onLoad(page) {
+    this.getParams();
+    if (page.title) {
+      uni.setNavigationBarTitle({
+        title: page.title
+      });
+      this.id = page.id;
+    } else {
+      uni.setNavigationBarTitle({
+        title: '一分钱停车'
+      });
+      this.id = 1;
+    }
+  },
+  onShow() {},
+  methods: {
+    getParams() {
+      this.$u.api
+        .getParamsApi({
+          key: 'park.lock.freetime'
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.freeTime = res.msg;
+          }
+        });
+    },
+    openAcount() {
+      this.$refs.uToast.show({
+        title: '该功能尚未开发',
+        type: 'warning'
+      });
+    }
+  }
+};
 </script>
 <style lang="scss" scoped>
-	@import './favourableActivity.scss'
+@import './favourableActivity.scss';
 </style>

+ 248 - 239
pages/geomagnetismLock/geomagnetismLock.scss

@@ -1,209 +1,209 @@
 .parking-lock {
-	height: calc(100vh - 88rpx);
-	background-color: #F6F6FF;
-	padding-top: 133rpx;
-	.parking-lock-title {
-		font-size: 46rpx;
-		color: #292929;
-		text-align: center;
-		padding-top: 31rpx;
-		line-height: 65rpx;
-		font-family: PingFangSC-Regular, PingFang SC;
-		font-weight: 400;
-	}
-	.parking-lock-tips {
-		width: calc(100% - 72rpx);
-		font-size: 30rpx;
-		color: #777777;
-		text-align: center;
-		margin: 10rpx auto;
-		line-height: 47rpx;
-	}
-	.parking-lock-info {
-		width: calc(100% - 72rpx);
-		margin: 31rpx auto 54rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		padding: 39rpx 41rpx;
-		.parking-lock-info-item {
-			display: flex;
-			margin-bottom: 16rpx;
-			view {
-				font-size: 28rpx;
-				&:first-child {
-					width: 30%;
-					color: #2A2A2A;
-					font-weight: 500;
-				}
-				&:last-child {
-					color: #6E6E6E;
-				}
-			}
-			.weight {
-				color: #2A2A2A!important;
-				font-weight: 500;
-			}
-			.really-money {
-				color: #FA7319!important;
-			}
-		}
-	}
-	.parking-lock-pay-btn {
-		width: calc(100% - 72rpx);
-		margin: 0 auto;
-		button {
-			width: 100%;
-			height: 100rpx;
-			line-height: 100rpx;
-			background-color: #008CFF;
-			border: none;
-			color: #fff;
-			box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
-			font-size: 28rpx;
-			font-weight: 500;
-		}
-	}
-	.parking-lock-begin-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(270deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		// animation: spin 3s linear infinite;
-		.parking-lock-begin-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-begin-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-loading-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(0deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		animation: spin 3s linear infinite;
-		.parking-lock-loading-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-loading-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-success {
-		.parking-lock-success-box {
-			width: 441rpx;
-			height: 441rpx;
-			margin: 0 auto;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-		.parking-lock-success-info {
-			color: #4CCD8A;
-			font-size: 50rpx;
-			text-align: center;
-			margin: 56rpx 0 202rpx;
-		}
-		.parking-lock-success-button {
-			width: calc(100% - 80rpx);
-			margin: 0 auto;
-			button {
-				width: 100%;
-				height: 100rpx;
-				line-height: 100rpx;
-				background-color: #008CFF;
-				font-size: 28rpx;
-				color: #fff;
-			}
-		}
-	}
+  height: calc(100vh - 88rpx);
+  background-color: #f6f6ff;
+  padding-top: 133rpx;
+  .parking-lock-title {
+    font-size: 46rpx;
+    color: #292929;
+    text-align: center;
+    padding-top: 31rpx;
+    line-height: 65rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+  }
+  .parking-lock-tips {
+    width: calc(100% - 72rpx);
+    font-size: 30rpx;
+    color: #777777;
+    text-align: center;
+    margin: 10rpx auto;
+    line-height: 47rpx;
+  }
+  .parking-lock-info {
+    width: calc(100% - 72rpx);
+    margin: 31rpx auto 54rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    padding: 39rpx 41rpx;
+    .parking-lock-info-item {
+      display: flex;
+      margin-bottom: 16rpx;
+      view {
+        font-size: 28rpx;
+        &:first-child {
+          width: 30%;
+          color: #2a2a2a;
+          font-weight: 500;
+        }
+        &:last-child {
+          color: #6e6e6e;
+        }
+      }
+      .weight {
+        color: #2a2a2a !important;
+        font-weight: 500;
+      }
+      .really-money {
+        color: #fa7319 !important;
+      }
+    }
+  }
+  .parking-lock-pay-btn {
+    width: calc(100% - 72rpx);
+    margin: 0 auto;
+    button {
+      width: 100%;
+      height: 100rpx;
+      line-height: 100rpx;
+      background-color: #008cff;
+      border: none;
+      color: #fff;
+      box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
+      font-size: 28rpx;
+      font-weight: 500;
+    }
+  }
+  .parking-lock-begin-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(270deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    // animation: spin 3s linear infinite;
+    .parking-lock-begin-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-begin-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-loading-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(0deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    animation: spin 3s linear infinite;
+    .parking-lock-loading-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-loading-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-success {
+    .parking-lock-success-box {
+      width: 441rpx;
+      height: 441rpx;
+      margin: 0 auto;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .parking-lock-success-info {
+      color: #4ccd8a;
+      font-size: 50rpx;
+      text-align: center;
+      margin: 56rpx 0 202rpx;
+    }
+    .parking-lock-success-button {
+      width: calc(100% - 80rpx);
+      margin: 0 auto;
+      button {
+        width: 100%;
+        height: 100rpx;
+        line-height: 100rpx;
+        background-color: #008cff;
+        font-size: 28rpx;
+        color: #fff;
+      }
+    }
+  }
 }
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
 }
 @keyframes rotate {
-    0%{
-        transform: rotate(0);
-    }
-    50% {
-    	transform:rotate(200deg);
-    }
-    100% {
-        transform: rotate(0);
-	}
+  0% {
+    transform: rotate(0);
+  }
+  50% {
+    transform: rotate(200deg);
+  }
+  100% {
+    transform: rotate(0);
+  }
 }
 @keyframes spin {
   from {
     transform: rotate(0);
   }
-  to{
+  to {
     transform: rotate(359deg);
   }
 }
-.loadingSelect{
-	    text-align: center;
-	    margin-top: 20rpx;
+.loadingSelect {
+  text-align: center;
+  margin-top: 20rpx;
 }
 .spinner {
   margin: auto;
@@ -212,89 +212,98 @@
   text-align: center;
   font-size: 10px;
 }
- 
+
 .spinner > view {
-  background-color: #6495ED;
+  background-color: #6495ed;
   height: 100%;
   width: 10rpx;
   margin-right: 2rpx;
   display: inline-block;
-   
+
   -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
   animation: stretchdelay 1.2s infinite ease-in-out;
 }
- 
+
 .spinner .rect2 {
   -webkit-animation-delay: -1.1s;
   animation-delay: -1.1s;
 }
- 
+
 .spinner .rect3 {
-  -webkit-animation-delay: -1.0s;
-  animation-delay: -1.0s;
+  -webkit-animation-delay: -1s;
+  animation-delay: -1s;
 }
- 
+
 .spinner .rect4 {
   -webkit-animation-delay: -0.9s;
   animation-delay: -0.9s;
 }
- 
+
 .spinner .rect5 {
   -webkit-animation-delay: -0.8s;
   animation-delay: -0.8s;
 }
- 
+
 @-webkit-keyframes stretchdelay {
-  0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 
-  20% { -webkit-transform: scaleY(1.0) }
+  0%,
+  40%,
+  100% {
+    -webkit-transform: scaleY(0.4);
+  }
+  20% {
+    -webkit-transform: scaleY(1);
+  }
 }
- 
+
 @keyframes stretchdelay {
-  0%, 40%, 100% {
+  0%,
+  40%,
+  100% {
     transform: scaleY(0.4);
     -webkit-transform: scaleY(0.4);
-  }  20% {
-    transform: scaleY(1.0);
-    -webkit-transform: scaleY(1.0);
   }
+  20% {
+    transform: scaleY(1);
+    -webkit-transform: scaleY(1);
+  }
+}
+.new-plate-number {
+  margin-bottom: 70rpx;
 }
-.new-plate-number{	
-	margin-bottom: 70rpx;
+.message-input-wrap {
+  margin: 0 -40rpx;
 }
-.message-input-wrap{
-	margin: 0 -40rpx;
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item {
+  background-color: #e8ffe8;
 }
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
+.really-license-txt {
+  color: #008cff;
 }
-.really-license-txt{
-	color: #008CFF;
+.really-license-txt1 {
+  color: #008cff;
+  margin: 20rpx;
 }
-.really-license-txt1{
-	color: #008CFF;
-	margin: 20rpx;
+.popup-vehicleNo-title {
+  font-size: 48rpx;
+  text-align: center;
+  padding-top: 20rpx;
 }
-.popup-vehicleNo-title{
-	font-size: 48rpx;
-	text-align: center;
-	padding-top: 20rpx;
+.popup-vehicleNo-center {
+  width: 95%;
+  height: 2rpx;
+  border-top: solid rgb(146, 146, 146) 2rpx;
+  margin: 30rpx 20rpx 50rpx 20rpx;
 }
-.popup-vehicleNo-center{
-	width: 95%;
-	height: 2rpx;
-	border-top: solid rgb(146, 146, 146) 2rpx;
-	margin: 30rpx 20rpx 50rpx 20rpx;
+.popup-vehicleNo-select {
+  text-align: center;
+  color: #777777;
 }
-.popup-vehicleNo-select{
-	text-align: center;
-	color: #777777;
+.vehicleNo-btn {
+  display: flex;
+  margin: 40rpx 0;
 }
-.vehicleNo-btn{
-	display: flex;
-	margin: 40rpx 0;
+.parking-lock-pay-attention {
+  margin: 50rpx;
+  line-height: 48rpx;
+  color: #777777;
 }
-.parking-lock-pay-attention{
-	margin: 50rpx;
-	line-height: 48rpx;
-	color: #777777;
-}

+ 273 - 263
pages/geomagnetismLock/geomagnetismLock.vue

@@ -1,273 +1,283 @@
 <template>
-	<!-- 地磁 -->
-	<view class="parking-lock">
-		<view class="Jump">
-			<view class="Jump-btn" @click="jumpArrears">
-				欠费补缴
-			</view>
-		</view>
-		<!-- 地磁支付 -->
-		<template v-if="parkingLockStatus === 1">
-			<view class="parking-lock-pay">
-				<view class="parking-lock-title">支付停车费</view>
-				<view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>车牌号</view>
-						<view class="weight">{{ orderInfo.vehicleNo }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>停车场名称</view>
-						<view>{{orderInfo.roadName }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>停车泊位</view>
-						<view>{{orderInfo.spaceName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场时间</view>
-						<view>{{orderInfo.inTime}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>出场时间</view>
-						<view>{{orderInfo.outTime}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>免费时长</view>
-						<view>{{ orderInfo.freeDuration || '0天0时15分0秒' }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>计费时长</view>
-						<view>{{orderInfo.calcDuration || 0}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>累计停车时长</view>
-						<view>{{ orderInfo.duration || 0 }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>应缴金额</view>
-						<view class="really-money">{{ orderInfo.payAmount || 0 }} 元</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>订单编号</view>
-						<view>{{ orderInfo.orderId }}</view>
-					</view>
-				</view>
-				<view class="parking-lock-pay-btn" v-if="is_pay">
-					<button type="default" @click="payMoney">立即支付</button>
-				</view>
-			</view>
-		</template>
-		<template v-else-if="parkingLockStatus === 2">
-			<view class="parking-lock-pay">
-				<view class="parking-lock-tips">{{ tipsMsg }}</view>
-			</view>
-		</template>
-		<!-- 支付方式 -->
-		<PaymentMethod :payWayPop="payWayPop" :curOrderList="[orderId]" :jumpUrl="jumpUrl" :payeeId="payeeId"
-			:payeeName="payeeName" :pursueType="pursueType" :vehicleNo="orderInfo.vehicleNo"
-			@closePaymentMethod="closePaymentMethod"></PaymentMethod>
-		<u-popup v-model="show" mode="center" border-radius="14" width="200rpx" height="200rpx">
-			<view class="loadingSelect">订单查询中...</view>
-			<view class="spinner">
-				<view class="rect1"></view>
-				<view class="rect2"></view>
-				<view class="rect3"></view>
-				<view class="rect4"></view>
-				<view class="rect5"></view>
-			</view>
-		</u-popup>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 地磁 -->
+  <view class="parking-lock">
+    <view class="Jump">
+      <view class="Jump-btn" @click="jumpArrears"> 欠费补缴 </view>
+    </view>
+    <!-- 地磁支付 -->
+    <template v-if="parkingLockStatus === 1">
+      <view class="parking-lock-pay">
+        <view class="parking-lock-title">支付停车费</view>
+        <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>车牌号</view>
+            <view class="weight">{{ orderInfo.vehicleNo }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>停车场名称</view>
+            <view>{{ orderInfo.roadName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>停车泊位</view>
+            <view>{{ orderInfo.spaceName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场时间</view>
+            <view>{{ orderInfo.inTime }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>出场时间</view>
+            <view>{{ orderInfo.outTime }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>免费时长</view>
+            <view>{{ orderInfo.freeDuration || '0天0时15分0秒' }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>计费时长</view>
+            <view>{{ orderInfo.calcDuration || 0 }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>累计停车时长</view>
+            <view>{{ orderInfo.duration || 0 }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>应缴金额</view>
+            <view class="really-money">{{ orderInfo.payAmount || 0 }} 元</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>订单编号</view>
+            <view>{{ orderInfo.orderId }}</view>
+          </view>
+        </view>
+        <view class="parking-lock-pay-btn" v-if="is_pay">
+          <button type="default" @click="payMoney">立即支付</button>
+        </view>
+      </view>
+    </template>
+    <template v-else-if="parkingLockStatus === 2">
+      <view class="parking-lock-pay">
+        <view class="parking-lock-tips">{{ tipsMsg }}</view>
+      </view>
+    </template>
+    <!-- 支付方式 -->
+    <PaymentMethod
+      :payWayPop="payWayPop"
+      :curOrderList="[orderId]"
+      :jumpUrl="jumpUrl"
+      :payeeId="payeeId"
+      :payeeName="payeeName"
+      :pursueType="pursueType"
+      :vehicleNo="orderInfo.vehicleNo"
+      @closePaymentMethod="closePaymentMethod"
+    ></PaymentMethod>
+    <u-popup v-model="show" mode="center" border-radius="14" width="200rpx" height="200rpx">
+      <view class="loadingSelect">订单查询中...</view>
+      <view class="spinner">
+        <view class="rect1"></view>
+        <view class="rect2"></view>
+        <view class="rect3"></view>
+        <view class="rect4"></view>
+        <view class="rect5"></view>
+      </view>
+    </u-popup>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import getUrlParams from "../../utils/getUrlParams.js";
-	import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue'
-	export default {
-		components: {
-			PaymentMethod
-		},
-		data() {
-			return {
-				// 车位锁状态 1:需支付 2:查询失败返回提醒
-				parkingLockStatus: 0,
-				// 支付方式选择弹框
-				payWayPop: false,
-				// 订单编号
-				orderList: [],
-				// 提示信息
-				tipsMsg: null,
-				// 轮询
-				timer: null,
-				// 订单信息
-				orderInfo: {},
-				// 订单id
-				orderId: null,
-				// 重定向地址
-				jumpUrl: location.href + '&isBack=1',
-				show: true,
-				isBack: '',
-				polyOrderId: '',
-				// 地磁
-				spaceId: '',
-				payeeId: '',
-				payeeName: '',
-				pursueType: '',
-				is_pay: false
-			}
-		},
-		onLoad(page) {
-			if (page.orderId) {
-				this.orderId = page?.orderId
-				this.spaceId = page?.spaceId
-				this.payeeId = page?.payeeId
-				this.polyOrderId = page?.polyOrderId
-				this.pursueType = page?.pursueType
-				this.isBack = page?.isBack
-			} else {
-				this.tipsMsg = page.msg || '参数丢失!';
-				this.parkingLockStatus = 2
-			}
-		},
-		onShow() {
-			if (this.orderId) {
-				this.getOrderDetails(this.spaceId, this.orderId, this.payeeId)
-				if (this.polyOrderId && this.isBack == 1) {
-					this.timer = setInterval(() => {
-						this.show = true
-						this.handlePayStatus(this.polyOrderId)
-					}, 1000)
-				}
-			} else {
-				this.show = false
-			}
-		},
-		onUnload() {
-			if (this.timer) {
-				clearInterval(this.timer)
-			}
-		},
-		methods: {
-			jumpArrears() {
-				uni.navigateTo({
-					url: '../center/order/order?orderStatus=2'
-				})
-			},
-			/**
-			 * 反复查询支付状态
-			 * @param { String } orderId
-			 */
-			handlePayStatus(orderId) {
-				this.$u.api.getOrderInfo({
-					orderId
-				}).then(res => {
-					if (res.code === 200) {
-						if (res.data.payStatus === 1 || res.data.payStatus === 3) {
-							this.show = false
-							clearInterval(this.timer);
-							this.is_pay = false
-							uni.showModal({
-								title: '提示',
-								content: '支付成功,返回首页',
-								showCancel: false,
-								success: (res) => {
-									if (res.confirm) {
-										uni.switchTab({
-											url: '/pages/index/index'
-										})
-									}
-								}
-							});
-						} else if (res.data.payStatus === 2) {
-							this.is_pay = true
-						}
-					} else {
-						this.show = false
-						clearInterval(this.timer);
-						this.$refs.uToast.show({
-							title: res.msg,
-							type: 'error',
-						});
-					}
-				}).catch(() => {
-					this.show = false
-					clearInterval(this.timer);
-				})
-			},
-			/**
-			 * 立即支付
-			 */
-			payMoney() {
-				this.payWayPop = true
-			},
-			/**
-			 * 查询订单信息
-			 * @param { String } spaceId 车位ID
-			 * @param { String } orderId 订单id
-			 * @param { String } payeeId 收费员ID
-			 */
-			getOrderDetails(spaceId, orderId, payeeId) {
-				this.$u.api.geomaLockDetailsApi({
-					spaceId,
-					orderId,
-					payeeId
-				}).then(res => {
-					if (res.code === 200 && res.data.id) {
-						this.payeeName = res.data.payeeName
-						this.parkingLockStatus = 1
-						this.orderInfo = res.data
-						this.show = false
-						if (res.data.payStatus == 0 || res.data.payStatus == 2 || res.data.payStatus == 3) {
-							this.is_pay = true
-						} else if (res.data.payStatus == 1) {
-							this.is_pay = false
-							uni.showModal({
-								title: '提示',
-								content: '订单已支付,返回首页',
-								showCancel: false,
-								success: function(res) {
-									if (res.confirm) {
-										uni.switchTab({
-											url: '/pages/index/index'
-										})
-									}
-								}
-							});
-						}
-						if (res.data.payAmount == 0) {
-							this.is_pay = false
-						}
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '订单无数据',
-							type: 'error',
-						});
-					}
-				})
-			},
-			/**
-			 * 关闭支付弹框
-			 */
-			closePaymentMethod() {
-				this.payWayPop = false
-			}
-		}
-	}
+import getUrlParams from '../../utils/getUrlParams.js';
+import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue';
+export default {
+  components: {
+    PaymentMethod
+  },
+  data() {
+    return {
+      // 车位锁状态 1:需支付 2:查询失败返回提醒
+      parkingLockStatus: 0,
+      // 支付方式选择弹框
+      payWayPop: false,
+      // 订单编号
+      orderList: [],
+      // 提示信息
+      tipsMsg: null,
+      // 轮询
+      timer: null,
+      // 订单信息
+      orderInfo: {},
+      // 订单id
+      orderId: null,
+      // 重定向地址
+      jumpUrl: location.href + '&isBack=1',
+      show: true,
+      isBack: '',
+      polyOrderId: '',
+      // 地磁
+      spaceId: '',
+      payeeId: '',
+      payeeName: '',
+      pursueType: '',
+      is_pay: false
+    };
+  },
+  onLoad(page) {
+    if (page.orderId) {
+      this.orderId = page?.orderId;
+      this.spaceId = page?.spaceId;
+      this.payeeId = page?.payeeId;
+      this.polyOrderId = page?.polyOrderId;
+      this.pursueType = page?.pursueType;
+      this.isBack = page?.isBack;
+    } else {
+      this.tipsMsg = page.msg || '参数丢失!';
+      this.parkingLockStatus = 2;
+    }
+  },
+  onShow() {
+    if (this.orderId) {
+      this.getOrderDetails(this.spaceId, this.orderId, this.payeeId);
+      if (this.polyOrderId && this.isBack == 1) {
+        this.timer = setInterval(() => {
+          this.show = true;
+          this.handlePayStatus(this.polyOrderId);
+        }, 1000);
+      }
+    } else {
+      this.show = false;
+    }
+  },
+  onUnload() {
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+  },
+  methods: {
+    jumpArrears() {
+      uni.navigateTo({
+        url: '../center/order/order?orderStatus=2'
+      });
+    },
+    /**
+     * 反复查询支付状态
+     * @param { String } orderId
+     */
+    handlePayStatus(orderId) {
+      this.$u.api
+        .getOrderInfo({
+          orderId
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            if (res.data.payStatus === 1 || res.data.payStatus === 3) {
+              this.show = false;
+              clearInterval(this.timer);
+              this.is_pay = false;
+              uni.showModal({
+                title: '提示',
+                content: '支付成功,返回首页',
+                showCancel: false,
+                success: (res) => {
+                  if (res.confirm) {
+                    uni.switchTab({
+                      url: '/pages/index/index'
+                    });
+                  }
+                }
+              });
+            } else if (res.data.payStatus === 2) {
+              this.is_pay = true;
+            }
+          } else {
+            this.show = false;
+            clearInterval(this.timer);
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch(() => {
+          this.show = false;
+          clearInterval(this.timer);
+        });
+    },
+    /**
+     * 立即支付
+     */
+    payMoney() {
+      this.payWayPop = true;
+    },
+    /**
+     * 查询订单信息
+     * @param { String } spaceId 车位ID
+     * @param { String } orderId 订单id
+     * @param { String } payeeId 收费员ID
+     */
+    getOrderDetails(spaceId, orderId, payeeId) {
+      this.$u.api
+        .geomaLockDetailsApi({
+          spaceId,
+          orderId,
+          payeeId
+        })
+        .then((res) => {
+          if (res.code === 200 && res.data.id) {
+            this.payeeName = res.data.payeeName;
+            this.parkingLockStatus = 1;
+            this.orderInfo = res.data;
+            this.show = false;
+            if (res.data.payStatus == 0 || res.data.payStatus == 2 || res.data.payStatus == 3) {
+              this.is_pay = true;
+            } else if (res.data.payStatus == 1) {
+              this.is_pay = false;
+              uni.showModal({
+                title: '提示',
+                content: '订单已支付,返回首页',
+                showCancel: false,
+                success: function (res) {
+                  if (res.confirm) {
+                    uni.switchTab({
+                      url: '/pages/index/index'
+                    });
+                  }
+                }
+              });
+            }
+            if (res.data.payAmount == 0) {
+              this.is_pay = false;
+            }
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg || '订单无数据',
+              type: 'error'
+            });
+          }
+        });
+    },
+    /**
+     * 关闭支付弹框
+     */
+    closePaymentMethod() {
+      this.payWayPop = false;
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './geomagnetismLock.scss';
+@import './geomagnetismLock.scss';
 
-	.Jump {
-		position: fixed;
-		top: 50px;
-		right: 0;
-		background-color: #F6F6FF;
+.Jump {
+  position: fixed;
+  top: 50px;
+  right: 0;
+  background-color: #f6f6ff;
 
-		&-btn {
-			color: rgb(0, 140, 255);
-			padding: 20rpx 30rpx;
-		}
-	}
+  &-btn {
+    color: rgb(0, 140, 255);
+    padding: 20rpx 30rpx;
+  }
+}
 </style>

+ 61 - 71
pages/handleMonthly/handleMonthly.scss

@@ -1,72 +1,62 @@
 .handle-monthly {
-	padding: 40rpx;
-	.handle-monthly-item {
-		display: flex;
-		flex-direction: row;
-		border-bottom: solid 1rpx #CECECE;
-		height: 96rpx;
-		line-height: 96rpx;
-		>view {
-			&:first-child {
-				width: 22%;
-				color: #757575;
-				font-size: 36rpx;
-				font-weight: 400;
-				text-align: justify;
-				text-align-last: justify;
-				margin-right: 8%;
-			}
-			&:last-child {
-				width: 70%;
-				color: #404040;
-				font-size: 36rpx;
-				font-weight: 400;
-			}
-		}
-		.choose-license {
-			display: flex;
-			justify-content: space-between;
-		}
-		.handle-monthly-money {
-			color: #F97219!important;
-		}
-		.handle-monthly-time-long {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			button {
-				margin: 0;
-				padding: 0;
-				width: 46rpx;
-				height: 46rpx;
-				line-height: 40rpx;
-				border: solid 1px #008CFF;
-				color: #008CFF;
-				text-align: center;
-			}
-			view {
-				padding: 0 61rpx;
-			}
-		}
-	}
-	.handle-monthly-explain {
-		font-size: 24rpx;
-		line-height: 40rpx;
-		color: #3A3A3A;
-		font-weight: 400;
-	}
-	.handle-monthly-confirm-button {
-		width: calc(100% - 60rpx);
-		margin: 52rpx auto;
-		button {
-			// width: 100%;
-			// height: 100rpx;
-			// line-height: 100rpx;
-			// background-color: #008CFF;
-			// color: #fff;
-			// font-size: 28rpx;
-			// font-weight: 500;
-			// border-radius: 10rpx;
-		}
-	}
-}
+  padding: 40rpx;
+  .handle-monthly-item {
+    display: flex;
+    flex-direction: row;
+    border-bottom: solid 1rpx #cecece;
+    height: 96rpx;
+    line-height: 96rpx;
+    > view {
+      &:first-child {
+        width: 22%;
+        color: #757575;
+        font-size: 36rpx;
+        font-weight: 400;
+        text-align: justify;
+        text-align-last: justify;
+        margin-right: 8%;
+      }
+      &:last-child {
+        width: 70%;
+        color: #404040;
+        font-size: 36rpx;
+        font-weight: 400;
+      }
+    }
+    .choose-license {
+      display: flex;
+      justify-content: space-between;
+    }
+    .handle-monthly-money {
+      color: #f97219 !important;
+    }
+    .handle-monthly-time-long {
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      button {
+        margin: 0;
+        padding: 0;
+        width: 46rpx;
+        height: 46rpx;
+        line-height: 40rpx;
+        border: solid 1px #008cff;
+        color: #008cff;
+        text-align: center;
+      }
+      view {
+        padding: 0 61rpx;
+      }
+    }
+  }
+  .handle-monthly-explain {
+    font-size: 24rpx;
+    line-height: 40rpx;
+    color: #3a3a3a;
+    font-weight: 400;
+  }
+  .handle-monthly-confirm-button {
+    width: calc(100% - 60rpx);
+    margin: 52rpx auto;
+  }
+}

+ 367 - 362
pages/index/index.scss

@@ -1,362 +1,367 @@
-page{background-color: $my-page-bg-color;}
-
-.header-bar{
-	background-color: $my-main-color;
-	height: 106rpx;
-	display: flex;
-	padding: 0 40rpx;
-	.city{
-		display: flex;
-		margin-right: 23rpx;
-		color: #fff;
-		align-items: center;
-		.city-name{
-			margin-right: 8rpx;
-		}
-	}
-	.scan{margin-left: 23rpx;}
-}
-.content-nav{
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	.content-nav-item{
-		.content-nav-item-icon-wrap{
-			width: 95rpx;
-			height: 95rpx;
-			margin: 0 auto 13rpx;
-			// border-radius: 30rpx;
-			// background: linear-gradient(163deg, #FFCC60 0%, #FF9221 100%);
-		}
-		.content-nav-item-icon-text{
-			font-size: 28rpx;
-			font-weight: 500;
-			color: #5A5A5A;
-			line-height: 1;
-		}
-	}
-	.content-nav-item + .content-nav-item{
-		// margin-left: 74rpx;
-	}
-}
-.pending-order-head{
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	color: $my-main-color;
-	.pending-order-head-left{
-		font-size: 30rpx;
-		b{font-weight: 500;font-size: 50rpx;margin-right: 5rpx;}
-	}
-	.pending-order-head-right{
-		font-size: 22rpx;
-		font-weight: 500;
-	}
-}
-.pending-order-body{
-	.pending-order-body-nav{
-		display: flex;
-		border-radius: 32px;
-		border: 1px solid $my-main-color;
-		margin-bottom: 36rpx;
-		.nav-item{
-			flex: 1;
-			height: 62rpx;
-			line-height: 62rpx;
-			font-size: 24rpx;
-			text-align: center;
-			&.active{
-				background: $my-main-color;
-				color: #fff;
-				border-radius: 32rpx;
-			}
-		}
-	}
-	.pending-order-body-wrap{
-		display: flex;
-		flex-wrap: wrap;
-		justify-content: space-between;
-		.pending-order-body-left-label{
-			font-size: 22rpx;
-			font-weight: 500;
-			color: #787878;
-			display: inline-block;
-			width: 160rpx;
-			text-align: right;
-		}
-		.pending-order-body-right-label{
-			color: #008CFF;
-			margin-left: 20rpx;
-		}
-		.pending-order-body-center-label{
-			color: #008CFF;
-		}
-		.nosign{
-			width: 100%;
-			line-height: 56rpx;
-			.nosign1{
-				font-size: 40rpx;
-				color: #FF6D6D;
-				text-align: center;
-			}
-			.nosign2{
-				color: #A6A6A6;
-				text-align: center;
-			}
-		}
-		.sign{
-			width: 100%;
-			line-height: 56rpx;
-			.sign1{
-				font-size: 40rpx;
-				color: #52BD4E;
-				text-align: center;
-			}
-			.sign2{
-				color: #A6A6A6;
-				text-align: center;
-			}
-		}
-		
-		
-	}
-	.pending-order-body-left{
-		.car-number{
-			margin-bottom: 20rpx;
-			font-size: 30rpx;
-			font-weight: 600;
-			color: #3A3A3A;
-			line-height: 42rpx;
-			letter-spacing: 1px;
-		}
-		.item-cell{
-			margin-bottom: 5rpx;
-			font-size: 26rpx
-		}
-		.cost{
-			.number{
-				font-size: 26rpx;
-				line-height: 50rpx;
-				color: $my-main-color;
-			}
-		}
-	}
-	.pending-order-body-right{
-		text-align: left;
-		font-size: 24rpx;
-		.order{
-			margin-bottom: 28rpx;			
-			font-weight: 400;
-			color: #9A9A9A;
-		}
-		
-	}
-	.go-pay-wrap{
-		margin-top: 50rpx;
-		width: 100%;
-		text-align: center;
-		.go-pay{
-			display: inline-block;
-			padding: 12rpx 39rpx 11rpx;
-			background: linear-gradient(90deg, #FF2727 0%, #FF9A13 100%, #FF0F0F 100%);
-			color: #fff;
-			border-radius: 10rpx;
-			cursor: pointer;
-		}
-		.go-pay1{
-			display: inline-block;
-			padding: 12rpx 39rpx 11rpx;
-			background: linear-gradient(90deg, #D3D3D3 0%, #F5F5F5 100%, #DCDCDC 100%);
-			color: #fff;
-			border-radius: 10rpx;
-			cursor: pointer;
-		}
-	}
-	
-}
-
-.popup-order-details{
-	color: #545454;
-	&-til{
-		padding: 61rpx 40rpx 16rpx;
-		font-size: 36rpx;
-		color: #008CFF;
-		line-height: 50rpx;
-		text-align: center;
-	}
-	&-con{
-		margin-bottom: 40rpx;
-	}
-	&-footer{
-		border-top: 1px solid #CECECE;
-		padding: 28rpx 0 26rpx;
-		font-size: 45rpx;
-		line-height: 63rpx;
-		text-align: center;
-		color: #008CFF;
-	}
-	dl{
-		margin: 20rpx 38rpx;
-		display: flex;
-		font-size: 30rpx;
-		dt{
-			width: 150rpx;
-			color: #A3A3A3;
-			text-align: right;
-		}
-		dd{
-			flex: 1;
-		}
-	}
-}
-
-.promotion{
-	margin: 20rpx 40rpx 40rpx;
-	background-color: #FFFFFF;
-	border-radius: 15rpx;
	&-header{
-		padding: 26rpx 40rpx 12rpx;
-		border-bottom: 1px solid #DFDFDF;
-		margin-bottom: 26rpx;
-		.promotion-header-til{
-			font-size: 30rpx;
-			color: #383838;
-			line-height: 42rpx;
-		}
-		.promotion-header-con{
-			font-size: 22rpx;
-			color: #787878;
-			line-height: 30rpx;
-		}
-	}
-	&-body{
-		padding: 0 40rpx 24rpx;
-		.promotion-body-til{
-			font-size: 26rpx;
-			color: #676767;
-			line-height: 37rpx;
-			margin-bottom: 15rpx;
-		}
-		.promotion-body-con{
-			font-size: 20rpx;
-			color: #A5A5A5;
-			line-height: 34rpx;
-		}
-	}
-}
-.notice-bar-wrap{
-	margin: 20rpx 40rpx;
-	background-color: #fff;
-	padding: 32rpx 0 25rpx 30rpx;
-	border-radius: 15rpx;
-	overflow: hidden;
-}
-/* 优惠活动 */
-.promotion-box {
-	padding: 10px 20px;
-	.promotion-title {
-		text {
-			color: #3A3A3A;
-			font-size: 36rpx;
-			font-family: PingFangSC-Regular, PingFang SC;
-		}
-	}
-	.promotion-banner {
-		margin-top: 20rpx;
-		/deep/ .u-indicator-item-round {
-			background-color: #AAD8FF;
-		}
-		/deep/ .u-indicator-item-round-active {
-			background-color: #FFFFFF;
-			// width: 20rpx;
-		}
-	}
-}
-.pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
-}
-.pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
-}
-.empty-data-box {
-	background-color: #fff;
-	height: 462rpx;
-	width: calc(100% - 80rpx);
-	margin: 0 auto;
-	border-radius: 16rpx;
-	margin-top: 20rpx;
-}
-
-.myorders-item{
-	position: relative;
-	margin-bottom: 8rpx;
-	padding-left: 30rpx;
-	&::before{
-		content: '';
-		width: 9rpx;
-		height: 9rpx;
-		border-radius: 50%;
-		background-color: #626262;
-		position: absolute;
-		left: 0;
-		top: 17rpx;
-	}
-}
-.new-plate-number{	
-	margin-bottom: 70rpx;
-}
-.message-input-wrap{
-	margin: 0 -40rpx;
-}
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
-}
-.really-license-txt{
-	color: #008CFF;
-}
-.really-license-txt1{
-	color: #008CFF;
-	margin: 20rpx;
-}
-.popup-vehicleNo-title{
-	font-size: 48rpx;
-	text-align: center;
-	padding-top: 20rpx;
-}
-.popup-vehicleNo-center{
-	width: 95%;
-	height: 2rpx;
-	border-top: solid rgb(146, 146, 146) 2rpx;
-	margin: 30rpx 20rpx 50rpx 20rpx;
-}
-.popup-vehicleNo-select{
-	text-align: center;
-	color: #777777;
-}
-.vehicleNo-btn{
-	display: flex;
-	margin: 40rpx 0;
-}
-.parking-lock-pay-attention{
-	margin: 50rpx;
-	line-height: 48rpx;
-	color: #777777;
-}
+page {
+  background-color: $my-page-bg-color;
+}
+
+.header-bar {
+  background-color: $my-main-color;
+  height: 106rpx;
+  display: flex;
+  padding: 0 40rpx;
+  .city {
+    display: flex;
+    margin-right: 23rpx;
+    color: #fff;
+    align-items: center;
+    .city-name {
+      margin-right: 8rpx;
+    }
+  }
+  .scan {
+    margin-left: 23rpx;
+  }
+}
+.content-nav {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  .content-nav-item {
+    .content-nav-item-icon-wrap {
+      width: 95rpx;
+      height: 95rpx;
+      margin: 0 auto 13rpx;
+      // border-radius: 30rpx;
+      // background: linear-gradient(163deg, #FFCC60 0%, #FF9221 100%);
+    }
+    .content-nav-item-icon-text {
+      font-size: 28rpx;
+      font-weight: 500;
+      color: #5a5a5a;
+      line-height: 1;
+    }
+  }
+  .content-nav-item + .content-nav-item {
+    // margin-left: 74rpx;
+  }
+}
+.pending-order-head {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  color: $my-main-color;
+  .pending-order-head-left {
+    font-size: 30rpx;
+    b {
+      font-weight: 500;
+      font-size: 50rpx;
+      margin-right: 5rpx;
+    }
+  }
+  .pending-order-head-right {
+    font-size: 22rpx;
+    font-weight: 500;
+  }
+}
+.pending-order-body {
+  .pending-order-body-nav {
+    display: flex;
+    border-radius: 32px;
+    border: 1px solid $my-main-color;
+    margin-bottom: 36rpx;
+    .nav-item {
+      flex: 1;
+      height: 62rpx;
+      line-height: 62rpx;
+      font-size: 24rpx;
+      text-align: center;
+      &.active {
+        background: $my-main-color;
+        color: #fff;
+        border-radius: 32rpx;
+      }
+    }
+  }
+  .pending-order-body-wrap {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    .pending-order-body-left-label {
+      font-size: 22rpx;
+      font-weight: 500;
+      color: #787878;
+      display: inline-block;
+      width: 160rpx;
+      text-align: right;
+    }
+    .pending-order-body-right-label {
+      color: #008cff;
+      margin-left: 20rpx;
+    }
+    .pending-order-body-center-label {
+      color: #008cff;
+    }
+    .nosign {
+      width: 100%;
+      line-height: 56rpx;
+      .nosign1 {
+        font-size: 40rpx;
+        color: #ff6d6d;
+        text-align: center;
+      }
+      .nosign2 {
+        color: #a6a6a6;
+        text-align: center;
+      }
+    }
+    .sign {
+      width: 100%;
+      line-height: 56rpx;
+      .sign1 {
+        font-size: 40rpx;
+        color: #52bd4e;
+        text-align: center;
+      }
+      .sign2 {
+        color: #a6a6a6;
+        text-align: center;
+      }
+    }
+  }
+  .pending-order-body-left {
+    .car-number {
+      margin-bottom: 20rpx;
+      font-size: 30rpx;
+      font-weight: 600;
+      color: #3a3a3a;
+      line-height: 42rpx;
+      letter-spacing: 1px;
+    }
+    .item-cell {
+      margin-bottom: 5rpx;
+      font-size: 26rpx;
+    }
+    .cost {
+      .number {
+        font-size: 26rpx;
+        line-height: 50rpx;
+        color: $my-main-color;
+      }
+    }
+  }
+  .pending-order-body-right {
+    text-align: left;
+    font-size: 24rpx;
+    .order {
+      margin-bottom: 28rpx;
+      font-weight: 400;
+      color: #9a9a9a;
+    }
+  }
+  .go-pay-wrap {
+    margin-top: 50rpx;
+    width: 100%;
+    text-align: center;
+    .go-pay {
+      display: inline-block;
+      padding: 12rpx 39rpx 11rpx;
+      background: linear-gradient(90deg, #ff2727 0%, #ff9a13 100%, #ff0f0f 100%);
+      color: #fff;
+      border-radius: 10rpx;
+      cursor: pointer;
+    }
+    .go-pay1 {
+      display: inline-block;
+      padding: 12rpx 39rpx 11rpx;
+      background: linear-gradient(90deg, #d3d3d3 0%, #f5f5f5 100%, #dcdcdc 100%);
+      color: #fff;
+      border-radius: 10rpx;
+      cursor: pointer;
+    }
+  }
+}
+
+.popup-order-details {
+  color: #545454;
+  &-til {
+    padding: 61rpx 40rpx 16rpx;
+    font-size: 36rpx;
+    color: #008cff;
+    line-height: 50rpx;
+    text-align: center;
+  }
+  &-con {
+    margin-bottom: 40rpx;
+  }
+  &-footer {
+    border-top: 1px solid #cecece;
+    padding: 28rpx 0 26rpx;
+    font-size: 45rpx;
+    line-height: 63rpx;
+    text-align: center;
+    color: #008cff;
+  }
+  dl {
+    margin: 20rpx 38rpx;
+    display: flex;
+    font-size: 30rpx;
+    dt {
+      width: 150rpx;
+      color: #a3a3a3;
+      text-align: right;
+    }
+    dd {
+      flex: 1;
+    }
+  }
+}
+
+.promotion {
+  margin: 20rpx 40rpx 40rpx;
+  background-color: #ffffff;
+  border-radius: 15rpx;
+  &-header {
+    padding: 26rpx 40rpx 12rpx;
+    border-bottom: 1px solid #dfdfdf;
+    margin-bottom: 26rpx;
+    .promotion-header-til {
+      font-size: 30rpx;
+      color: #383838;
+      line-height: 42rpx;
+    }
+    .promotion-header-con {
+      font-size: 22rpx;
+      color: #787878;
+      line-height: 30rpx;
+    }
+  }
+  &-body {
+    padding: 0 40rpx 24rpx;
+    .promotion-body-til {
+      font-size: 26rpx;
+      color: #676767;
+      line-height: 37rpx;
+      margin-bottom: 15rpx;
+    }
+    .promotion-body-con {
+      font-size: 20rpx;
+      color: #a5a5a5;
+      line-height: 34rpx;
+    }
+  }
+}
+.notice-bar-wrap {
+  margin: 20rpx 40rpx;
+  background-color: #fff;
+  padding: 32rpx 0 25rpx 30rpx;
+  border-radius: 15rpx;
+  overflow: hidden;
+}
+/* 优惠活动 */
+.promotion-box {
+  padding: 10px 20px;
+  .promotion-title {
+    text {
+      color: #3a3a3a;
+      font-size: 36rpx;
+      font-family: PingFangSC-Regular, PingFang SC;
+    }
+  }
+  .promotion-banner {
+    margin-top: 20rpx;
+    /deep/ .u-indicator-item-round {
+      background-color: #aad8ff;
+    }
+    /deep/ .u-indicator-item-round-active {
+      background-color: #ffffff;
+      // width: 20rpx;
+    }
+  }
+}
+.pay-way {
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
+}
+.pay-way-close-btn {
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
+}
+.empty-data-box {
+  background-color: #fff;
+  height: 462rpx;
+  width: calc(100% - 80rpx);
+  margin: 0 auto;
+  border-radius: 16rpx;
+  margin-top: 20rpx;
+}
+
+.myorders-item {
+  position: relative;
+  margin-bottom: 8rpx;
+  padding-left: 30rpx;
+  &::before {
+    content: '';
+    width: 9rpx;
+    height: 9rpx;
+    border-radius: 50%;
+    background-color: #626262;
+    position: absolute;
+    left: 0;
+    top: 17rpx;
+  }
+}
+.new-plate-number {
+  margin-bottom: 70rpx;
+}
+.message-input-wrap {
+  margin: 0 -40rpx;
+}
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item {
+  background-color: #e8ffe8;
+}
+.really-license-txt {
+  color: #008cff;
+}
+.really-license-txt1 {
+  color: #008cff;
+  margin: 20rpx;
+}
+.popup-vehicleNo-title {
+  font-size: 48rpx;
+  text-align: center;
+  padding-top: 20rpx;
+}
+.popup-vehicleNo-center {
+  width: 95%;
+  height: 2rpx;
+  border-top: solid rgb(146, 146, 146) 2rpx;
+  margin: 30rpx 20rpx 50rpx 20rpx;
+}
+.popup-vehicleNo-select {
+  text-align: center;
+  color: #777777;
+}
+.vehicleNo-btn {
+  display: flex;
+  margin: 40rpx 0;
+}
+.parking-lock-pay-attention {
+  margin: 50rpx;
+  line-height: 48rpx;
+  color: #777777;
+}

+ 717 - 701
pages/index/index.vue

@@ -1,100 +1,109 @@
 <template>
-	<view>
-		<!-- ===================================== 搜索栏 ===================================== -->
-		<view class="header-bar">
-			<view class="city" @click="handleCitySelect">
-				<view class="city-name">{{ city }}</view>
-				<u-icon name="arrow-down" color="#fff" size="32"></u-icon>
-			</view>
-			<u-search placeholder="搜索停车点" :show-action="false" @search="handleSearch" v-model="keyword"></u-search>
-			<!-- <u-icon class="scan" name="scan" color="#fff" size="48" @click="$refs.uToast.show({title: '建设中'})"></u-icon> -->
-		</view>
+  <view>
+    <!-- ===================================== 搜索栏 ===================================== -->
+    <view class="header-bar">
+      <view class="city" @click="handleCitySelect">
+        <view class="city-name">{{ city }}</view>
+        <u-icon name="arrow-down" color="#fff" size="32"></u-icon>
+      </view>
+      <u-search placeholder="搜索停车点" :show-action="false" @search="handleSearch" v-model="keyword"></u-search>
+      <!-- <u-icon class="scan" name="scan" color="#fff" size="48" @click="$refs.uToast.show({title: '建设中'})"></u-icon> -->
+    </view>
 
-		<!-- ===================================== 轮播图 ===================================== -->
-		<u-swiper :list="bannerList" border-radius="0" mode="none" @click="swiperClick"></u-swiper>
+    <!-- ===================================== 轮播图 ===================================== -->
+    <u-swiper :list="bannerList" border-radius="0" mode="none" @click="swiperClick"></u-swiper>
 
-		<!-- ===================================== 城市选择器 ===================================== -->
-		<u-city-select v-model="cityOpen" @city-change="cityChange" :areaCode='["52", "5201"]'></u-city-select>
+    <!-- ===================================== 城市选择器 ===================================== -->
+    <u-city-select v-model="cityOpen" @city-change="cityChange" :areaCode="['52', '5201']"></u-city-select>
 
-		<!-- ===================================== 滚动信息栏 ===================================== -->
-		<view class="notice-bar-wrap u-flex" v-if="noticeList.length >= 1"
-			@click="openPage('pages/message/message', true)">
-			<u-icon custom-prefix="custom-icon" size="50" name="xiaoxi" color="#008CFF"></u-icon>
-			<u-notice-bar class="u-flex-1" mode="vertical" :autoplay="true" :list="noticeList" :volume-icon="false"
-				bg-color="#fff" color="#727272" :more-icon="true"></u-notice-bar>
-		</view>
+    <!-- ===================================== 滚动信息栏 ===================================== -->
+    <view class="notice-bar-wrap u-flex" v-if="noticeList.length >= 1" @click="openPage('pages/message/message', true)">
+      <u-icon custom-prefix="custom-icon" size="50" name="xiaoxi" color="#008CFF"></u-icon>
+      <u-notice-bar
+        class="u-flex-1"
+        mode="vertical"
+        :autoplay="true"
+        :list="noticeList"
+        :volume-icon="false"
+        bg-color="#fff"
+        color="#727272"
+        :more-icon="true"
+      ></u-notice-bar>
+    </view>
 
-		<!-- ===================================== 宫格菜单 ===================================== -->
-		<u-card :show-head="false" :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
-			<view class="content-nav" slot="body">
-				<view class="content-nav-item" v-for="(grid, index) in gridList" :key="'g-' + index"
-					@click="openPage(grid.url, true)">
-					<view class="content-nav-item-icon-wrap">
-						<u-image :src="grid.imageUrl" :width="grid.width || '95rpx'" :height="grid.height || '95rpx'"
-							:mode="grid.mode || 'heightFix'"></u-image>
-					</view>
-					<view class="content-nav-item-icon-text">{{grid.title}}</view>
-				</view>
-			</view>
-		</u-card>
+    <!-- ===================================== 宫格菜单 ===================================== -->
+    <u-card :show-head="false" :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
+      <view class="content-nav" slot="body">
+        <view class="content-nav-item" v-for="(grid, index) in gridList" :key="'g-' + index" @click="openPage(grid.url, true)">
+          <view class="content-nav-item-icon-wrap">
+            <u-image :src="grid.imageUrl" :width="grid.width || '95rpx'" :height="grid.height || '95rpx'" :mode="grid.mode || 'heightFix'"></u-image>
+          </view>
+          <view class="content-nav-item-icon-text">{{ grid.title }}</view>
+        </view>
+      </view>
+    </u-card>
 
-		<u-card :show-head="false" :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
-			<view slot="body" class="myorders">
-				<view class="myorders-item">当前已缴费<text style="color: #008CFF;">{{ totalCount || '0'}}</text>笔,合计<text
-						style="color: #008CFF;">{{totalActualAmount || '0'}}</text>元</view>
-				<view class="myorders-item">当前欠费<text style="color: #FF482B;">{{totalPayCount||'0'}}</text>笔,合计<text
-						style="color: #FF482B;">{{ totalPayAmount || '0' }}</text>元</view>
-			</view>
-		</u-card>
-		<!-- ===================================== 无停车信息 ===================================== -->
-		<view class="empty-data-box" v-if="!orderList || orderList.length < 1">
-			<u-empty text="暂无停车信息" mode="list"></u-empty>
-		</view>
+    <u-card :show-head="false" :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
+      <view slot="body" class="myorders">
+        <view class="myorders-item"
+          >当前已缴费<text style="color: #008cff">{{ totalCount || '0' }}</text
+          >笔,合计<text style="color: #008cff">{{ totalActualAmount || '0' }}</text
+          >元</view
+        >
+        <view class="myorders-item"
+          >当前欠费<text style="color: #ff482b">{{ totalPayCount || '0' }}</text
+          >笔,合计<text style="color: #ff482b">{{ totalPayAmount || '0' }}</text
+          >元</view
+        >
+      </view>
+    </u-card>
+    <!-- ===================================== 无停车信息 ===================================== -->
+    <view class="empty-data-box" v-if="!orderList || orderList.length < 1">
+      <u-empty text="暂无停车信息" mode="list"></u-empty>
+    </view>
 
-		<!-- ===================================== 停车列表 ===================================== -->
-		<template v-for="(item, index) in orderList">
-			<u-card :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
-				<view class="pending-order-head" slot="head">
-					<view class="pending-order-head-left">
-						<b>P</b>
-						{{ item.roadName }}
-					</view>
-					<view class="pending-order-head-right" @click="  onRoadInfo(item)">
-						<u-icon class="arrow-down" name="arrow-down" size="32" color="#aaa"></u-icon>
-					</view>
-				</view>
-				<view class="pending-order-body" slot="body">
-					<view class="pending-order-body-nav">
-						<view class="nav-item nav-manual" @click="orderNavclick()" :class="{ active: orderNav == 0 }">
-							手动缴费</view>
-						<view class="nav-item nav-auto" @click="orderNavclick()" :class="{ active: orderNav == 1 }">无感支付
-						</view>
-					</view>
-					<view class="pending-order-body-wrap" v-show="orderNav == 0">
-						<view class="pending-order-body-left">
-							<view class="car-number">{{ item.vehicleNo }}</view>
-							<view class="item-cell">
-								<span class="pending-order-body-left-label">入场时间:</span>
-								<span>{{ item.inTime }}</span>
-							</view>
-							<view class="item-cell">
-								<span class="pending-order-body-left-label">出场时间:</span>
-								<span>{{item.outTime || '未出场' }}</span>
-							</view>
-							<view class="item-cell">
-								<span class="pending-order-body-left-label">预计金额:</span>
-								<span>{{ item.payAmount || 0 }}</span>
-							</view>
-							<view class="item-cell" v-if="item.vehicleNo==''">
-								<span class="pending-order-body-left-label">车牌信息:</span>
-								<span class="pending-order-body-center-label" @click="addvehicleNo(item.orderId)">添加车牌</span>
-							</view>
-							<view class="item-cell" v-else>
-								<span class="pending-order-body-left-label">车牌信息:</span>
-								<span >{{ item.vehicleNo }}</span>
-								<!-- <span class="pending-order-body-right-label" @click="changevehicleNo(item.orderId)">更换</span> -->
-							</view>
-							<!-- <view class="item-cell">
+    <!-- ===================================== 停车列表 ===================================== -->
+    <template v-for="(item) in orderList">
+      <u-card :show-foot="false" border-radius="16" margin="20rpx 40rpx" padding="30">
+        <view class="pending-order-head" slot="head">
+          <view class="pending-order-head-left">
+            <b>P</b>
+            {{ item.roadName }}
+          </view>
+          <view class="pending-order-head-right" @click="onRoadInfo(item)">
+            <u-icon class="arrow-down" name="arrow-down" size="32" color="#aaa"></u-icon>
+          </view>
+        </view>
+        <view class="pending-order-body" slot="body">
+          <view class="pending-order-body-nav">
+            <view class="nav-item nav-manual" @click="orderNavclick()" :class="{ active: orderNav == 0 }"> 手动缴费</view>
+            <view class="nav-item nav-auto" @click="orderNavclick()" :class="{ active: orderNav == 1 }">无感支付 </view>
+          </view>
+          <view class="pending-order-body-wrap" v-show="orderNav == 0">
+            <view class="pending-order-body-left">
+              <view class="car-number">{{ item.vehicleNo }}</view>
+              <view class="item-cell">
+                <span class="pending-order-body-left-label">入场时间:</span>
+                <span>{{ item.inTime }}</span>
+              </view>
+              <view class="item-cell">
+                <span class="pending-order-body-left-label">出场时间:</span>
+                <span>{{ item.outTime || '未出场' }}</span>
+              </view>
+              <view class="item-cell">
+                <span class="pending-order-body-left-label">预计金额:</span>
+                <span>{{ item.payAmount || 0 }}</span>
+              </view>
+              <view class="item-cell" v-if="item.vehicleNo == ''">
+                <span class="pending-order-body-left-label">车牌信息:</span>
+                <span class="pending-order-body-center-label" @click="addvehicleNo(item.orderId)">添加车牌</span>
+              </view>
+              <view class="item-cell" v-else>
+                <span class="pending-order-body-left-label">车牌信息:</span>
+                <span>{{ item.vehicleNo }}</span>
+                <!-- <span class="pending-order-body-right-label" @click="changevehicleNo(item.orderId)">更换</span> -->
+              </view>
+              <!-- <view class="item-cell">
                 <span class="pending-order-body-left-label">出场时间:</span>
                 <span>{{item.outTime||'停放中'}}</span>
               </view>
@@ -109,626 +118,633 @@
                   <span class="number" v-else>停放中</span>
                 </span>
               </view>-->
-						</view>
-						<view class="pending-order-body-right">
-							<view class="order">停车泊位:{{ item.spaceName }}</view>
-						</view>
-						<view class="go-pay-wrap" v-if="Number(item.deviceType) !== 2">
-							<view class="go-pay" @click="goPay(item.id)" v-if="item.payAmount != 0">出场缴费</view>
-							<view class="go-pay1" v-else>出场缴费</view>
-						</view>
-					</view>
-					<view class="pending-order-body-wrap" v-show="orderNav == 1">
-						<view v-if="contractStatus == 0" class="nosign">
-							<view class="nosign1">您的车牌未签约贵州银行无感支付</view>
-							<view class="nosign2">请下载贵州银行手机银行app进行签约</view>
-						</view>
-						<view v-if="contractStatus == 1" class="sign">
-							<view class="sign1">您已签约贵州银行无感支付</view>
-							<view class="sign2">停车出场时将默认使用无感支付进行支付</view>
-						</view>
-					</view>
-				</view>
-			</u-card>
-		</template>
+            </view>
+            <view class="pending-order-body-right">
+              <view class="order">停车泊位:{{ item.spaceName }}</view>
+            </view>
+            <view class="go-pay-wrap" v-if="Number(item.deviceType) !== 2">
+              <view class="go-pay" @click="goPay(item.id)" v-if="item.payAmount != 0">出场缴费</view>
+              <view class="go-pay1" v-else>出场缴费</view>
+            </view>
+          </view>
+          <view class="pending-order-body-wrap" v-show="orderNav == 1">
+            <view v-if="contractStatus == 0" class="nosign">
+              <view class="nosign1">您的车牌未签约贵州银行无感支付</view>
+              <view class="nosign2">请下载贵州银行手机银行app进行签约</view>
+            </view>
+            <view v-if="contractStatus == 1" class="sign">
+              <view class="sign1">您已签约贵州银行无感支付</view>
+              <view class="sign2">停车出场时将默认使用无感支付进行支付</view>
+            </view>
+          </view>
+        </view>
+      </u-card>
+    </template>
+
+    <!-- ===================================== 优惠活动 ===================================== -->
+    <view class="promotion-box">
+      <view class="promotion-title">
+        <text>优惠活动</text>
+      </view>
+      <view class="promotion-banner">
+        <u-swiper :list="promotionBannerList" @click="promotionBannerClick" height="221"></u-swiper>
+      </view>
+    </view>
+
+    <!-- ===================================== 绑定车牌号弹框 ===================================== -->
+    <u-modal
+      v-model="bindCarShow"
+      title="绑定车牌号"
+      :show-cancel-button="true"
+      confirm-text="去绑定"
+      content="首次使用请先绑定您的车牌"
+      @confirm="$u.route({ url: 'pages/myCars/myCars' })"
+    ></u-modal>
+
+    <!-- ===================================== 停车场信息弹框 ===================================== -->
+    <u-popup class="popup-order-details" v-model="showOrderDetails" mode="center" width="90%" border-radius="20">
+      <view class="popup-order-details-til">停车场信息</view>
+      <view class="popup-order-details-con">
+        <dl>
+          <dt>路段名称:</dt>
+          <dd>{{ popupOrderDetails.roadName }}</dd>
+        </dl>
+        <dl>
+          <dt>路段编码:</dt>
+          <dd>{{ popupOrderDetails.roadNo }}</dd>
+        </dl>
+        <dl>
+          <dt>联系人:</dt>
+          <dd>{{ popupOrderDetails.manager }}</dd>
+        </dl>
+        <dl>
+          <dt>联系电话:</dt>
+          <dd @click="phoneCall(popupOrderDetails.telephone)">{{ popupOrderDetails.telephone }}</dd>
+        </dl>
+      </view>
+      <view class="popup-order-details-footer" @click="closeOrderDetails">知道了</view>
+    </u-popup>
+
+    <!-- ===================================== 支付方式弹框 ===================================== -->
+    <PaymentMethod :payWayPop="payWayPop" :curOrderList="curOrderList" :jumpUrl="jumpUrl" @closePaymentMethod="closePaymentMethod"></PaymentMethod>
 
-		<!-- ===================================== 优惠活动 ===================================== -->
-		<view class="promotion-box">
-			<view class="promotion-title">
-				<text>优惠活动</text>
-			</view>
-			<view class="promotion-banner">
-				<u-swiper :list="promotionBannerList" @click="promotionBannerClick" height="221"></u-swiper>
-			</view>
-		</view>
+    <!-- ===================================== 0元提示弹出层 ===================================== -->
+    <u-modal v-model="jumpMsgModal" :content="jumpMsgContent" :show-title="false" :show-confirm-button="false" />
+    <u-toast ref="uToast" />
 
-		<!-- ===================================== 绑定车牌号弹框 ===================================== -->
-		<u-modal v-model="bindCarShow" title="绑定车牌号" :show-cancel-button="true" confirm-text="去绑定"
-			content="首次使用请先绑定您的车牌" @confirm="$u.route({ url: 'pages/myCars/myCars' })"></u-modal>
+    <!-- ===================================== 添加车牌弹出层 ===================================== -->
+    <u-popup class="popup-vehicleNo" v-model="ShowaddvehicleNo" mode="center" border-radius="20" width="710rpx" height="auto">
+      <view class="popup-vehicleNo-title">添加车牌</view>
+      <view class="popup-vehicleNo-center"></view>
+      <view class="popup-vehicleNo-content">
+        <view class="new-plate-number">
+          <view class="message-input-wrap" @click="messageInputClick">
+            <u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
+          </view>
+        </view>
+      </view>
+      <view class="popup-vehicleNo-select">暂无绑定车牌</view>
+      <view class="vehicleNo-btn">
+        <u-button type="primary" @click="handleAddCar">确认</u-button>
+        <u-button type="primary" plain @click="ShowaddvehicleNo = false">取消</u-button>
+      </view>
+    </u-popup>
 
-		<!-- ===================================== 停车场信息弹框 ===================================== -->
-		<u-popup class="popup-order-details" v-model="showOrderDetails" mode="center" width="90%" border-radius="20">
-			<view class="popup-order-details-til">停车场信息</view>
-			<view class="popup-order-details-con">
-				<dl>
-					<dt>路段名称:</dt>
-					<dd>{{ popupOrderDetails.roadName }}</dd>
-				</dl>
-				<dl>
-					<dt>路段编码:</dt>
-					<dd>{{ popupOrderDetails.roadNo }}</dd>
-				</dl>
-				<dl>
-					<dt>联系人:</dt>
-					<dd>{{ popupOrderDetails.manager }}</dd>
-				</dl>
-				<dl>
-					<dt>联系电话:</dt>
-					<dd @click="phoneCall(popupOrderDetails.telephone)">{{ popupOrderDetails.telephone }}</dd>
-				</dl>
-			</view>
-			<view class="popup-order-details-footer" @click="closeOrderDetails">知道了</view>
-		</u-popup>
+    <u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
+    <u-keyboard
+      ref="uKeyboard"
+      mode="car"
+      @change="keyboardChange"
+      @confirm="keyboardConfirm"
+      @backspace="backspace"
+      v-model="keyboardshow"
+    ></u-keyboard>
 
-		<!-- ===================================== 支付方式弹框 ===================================== -->
-		<PaymentMethod
-			:payWayPop="payWayPop"
-			:curOrderList="curOrderList"
-			:jumpUrl="jumpUrl"
-			@closePaymentMethod="closePaymentMethod"
-		></PaymentMethod>
-		
-		<!-- ===================================== 0元提示弹出层 ===================================== -->
-		<u-modal
-			v-model="jumpMsgModal"
-			:content="jumpMsgContent"
-			:show-title="false"
-			:show-confirm-button="false"
-		/>
-		<u-toast ref="uToast" />
-		
-		<!-- ===================================== 添加车牌弹出层 ===================================== -->
-		<u-popup class="popup-vehicleNo" v-model="ShowaddvehicleNo" mode="center" border-radius="20" width="710rpx" height="auto">
-			<view class="popup-vehicleNo-title">添加车牌</view>
-			<view class="popup-vehicleNo-center"></view>
-			<view class="popup-vehicleNo-content">
-				<view class="new-plate-number">
-					<view class="message-input-wrap" @click="messageInputClick">
-						<u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
-					</view>		
-				</view>
-			</view>
-			<view class="popup-vehicleNo-select">暂无绑定车牌</view>
-			<view class="vehicleNo-btn">
-				<u-button type="primary" @click="handleAddCar">确认</u-button>
-				<u-button type="primary" plain @click="ShowaddvehicleNo=false">取消</u-button>
-			</view>
-		</u-popup>
-		
-		<u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
-		<u-keyboard ref="uKeyboard" mode="car" @change="keyboardChange" @confirm="keyboardConfirm" @backspace="backspace" v-model="keyboardshow" ></u-keyboard>
-		
-		<!-- ===================================== 更换车牌弹出层 ===================================== -->
-		<u-popup class="popup-vehicleNo" v-model="ShowchangevehicleNo" mode="center" border-radius="20" width="710rpx" height="auto">
-			<view class="popup-vehicleNo-title">更换车牌</view>
-			<view class="popup-vehicleNo-center"></view>
-			<view class="popup-vehicleNo-content">
-				<view class="new-plate-number">
-					<view class="message-input-wrap" @click="messageInputClick">
-						<u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
-					</view>
-				</view>
-			</view>
-			<view class="popup-vehicleNo-select">
-				<u-collapse ref="refValue">
-					<u-collapse-item title="点击选择车牌" align="center" >
-						<u-cell-group >
-							<u-cell-item  :title="item.vehicleNo" v-for="(item, index) in groupList"  :key="index" :arrow="false" >
-								<u-radio-group v-model="selectvalue"  @change="radioGroupChange">
-									<u-radio  :name="item.vehicleNo" :key="index"></u-radio>
-								</u-radio-group>
-							</u-cell-item>
-						</u-cell-group>
-					</u-collapse-item>
-				</u-collapse>
-			</view>
-			<view class="vehicleNo-btn">
-				<u-button type="primary" @click="handleAddCar">确认</u-button>
-				<u-button type="primary" plain @click="ShowchangevehicleNo=false">取消</u-button>
-			</view>
-		</u-popup>
-	</view>
+    <!-- ===================================== 更换车牌弹出层 ===================================== -->
+    <u-popup class="popup-vehicleNo" v-model="ShowchangevehicleNo" mode="center" border-radius="20" width="710rpx" height="auto">
+      <view class="popup-vehicleNo-title">更换车牌</view>
+      <view class="popup-vehicleNo-center"></view>
+      <view class="popup-vehicleNo-content">
+        <view class="new-plate-number">
+          <view class="message-input-wrap" @click="messageInputClick">
+            <u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
+          </view>
+        </view>
+      </view>
+      <view class="popup-vehicleNo-select">
+        <u-collapse ref="refValue">
+          <u-collapse-item title="点击选择车牌" align="center">
+            <u-cell-group>
+              <u-cell-item :title="item.vehicleNo" v-for="(item, index) in groupList" :key="index" :arrow="false">
+                <u-radio-group v-model="selectvalue" @change="radioGroupChange">
+                  <u-radio :name="item.vehicleNo" :key="index"></u-radio>
+                </u-radio-group>
+              </u-cell-item>
+            </u-cell-group>
+          </u-collapse-item>
+        </u-collapse>
+      </view>
+      <view class="vehicleNo-btn">
+        <u-button type="primary" @click="handleAddCar">确认</u-button>
+        <u-button type="primary" plain @click="ShowchangevehicleNo = false">取消</u-button>
+      </view>
+    </u-popup>
+  </view>
 </template>
 
 <script>
-	import getUrlParams from '../../utils/getUrlParams.js'
-	import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue'
-	import { jsonp } from 'vue-jsonp'
-	export default {
-		components: {
-			PaymentMethod
-		},
-		data() {
-			return {
-				orderid:'',
-				selectvalue: null,
-				groupList: [],
-				radiogroupList: [],
-				keyboardshow: false,
-				colorShow: false,
-				colorList:[
-					{text:'蓝色',colorCode:0}
-					,{text:'黄色',colorCode:1}
-					,{text:'黑色',colorCode:2}
-					,{text:'白色',colorCode:3}
-					,{text:'绿色',colorCode:4}
-					,{text:'其他',colorCode:99}
-				],
-				vehicleColor:0,
-				newPlateNumber:'',
-				//更换车牌弹窗
-				ShowchangevehicleNo: false,
-				//添加车牌弹窗
-				ShowaddvehicleNo: false,
-				// 城市选择框
-				cityOpen: false,
-				// 选中城市
-				city: '贵州省',
-				// 搜索框值
-				keyword: '',
-				// 轮播图
-				bannerList: [{
-					image: require('@/static/img/index-banner01.png')
-				}],
-				// 订单列表
-				orderList: [],
-				// 微信code
-				code: null,
-				// 手动,无感
-				orderNav: '',
-				// 绑定车询问弹窗
-				bindCarShow: false,
-				// 是否线上订单细节
-				showOrderDetails: false,
-				// 订单详情
-				popupOrderDetails: [],
-				// 消息列表
-				noticeList: [],
-				// 优惠活动广告图
-				promotionBannerList: [{
-						id: 1,
-						image: '/static/img/promotion-banner-1.png',
-						title: '1分钱停车'
-					},
-					{
-						id: 2,
-						image: '/static/img/promotion-banner-2.png',
-						title: '八折停车'
-					}
-				],
-				// 签约状态
-				contractStatus: '',
-				vehicleId: '',
-				recordList: [],
-				// 支付方式弹框
-				payWayPop: false,
-				// 订单号
-				curOrderList: [],
-				// 当前位置经纬度
-				latLongItude: {},
-				// 跳转地址
-				jumpUrl: '',
-				// 宫格菜单列表
-				gridList: [{
-						url: 'pages/payLists/payLists',
-						imageUrl: '../../static/img/index-content-nav-01.png',
-						title: '停车缴费'
-					},
-					{
-						url: 'pages/favourableActivity/favourableActivity',
-						imageUrl: '../../static/img/index-content-nav-02.png',
-						title: '优惠活动'
-					},
-					{
-						url: 'pages/myCars/myCars',
-						imageUrl: '../../static/img/index-content-nav-03.png',
-						title: '车辆管理'
-					},
-					{
-						url: 'pages/searchparking/searchparking',
-						imageUrl: '../../static/img/index-content-nav-04.png',
-						title: '我的停车'
-					}
-				],
-				totalActualAmount: '', //缴费总额
-				totalPayAmount: '', //应支付总额
-				totalCount: '', //缴费总笔数 
-				totalPayCount: '', //应支付总笔数
-				// 0元提示框
-				jumpMsgModal: false,
-				// 0元提示内容
-				jumpMsgContent: ''
-			}
-		},
-		onLoad(page) {
-			const locationLocaturl = window.location.href
-			// 微信聚合支付完成跳转过来重定向到详情页
-			const type = getUrlParams(locationLocaturl, 'type')
-			if (type && type === 'jumpurl') {
-				const jumpurl = localStorage.getItem('jumpUrl')
-				if (jumpurl) {
-					uni.showLoading({
-						title: '正在跳转中...'
-					})
-					setTimeout(() => {
-						uni.hideLoading()
-						location.href = jumpurl
-					}, 0)
-				}
-			}
-			// 0元支付情况添加一个加载层
-			const jumpMsg = getUrlParams(locationLocaturl, 'jumpMsg')
-			if (jumpMsg) {
-				this.jumpMsgModal = true
-				this.jumpMsgContent = jumpMsg
-				setTimeout(() => {
-					this.jumpMsgModal = false
-				}, 3000)
-			}
-		},
-		onShow() {
-			this.handleGetIndexData()
-			this.getLocation()
-			const locationLocaturl = window.location.search
-			this.code = getUrlParams(locationLocaturl, 'code')
-			if (this.code && !this.$store.state.vuex_wxinfo.openId) {
-				this.handleGetWXInfo(this.code)
-			};
-		},
-		methods: {
-			radioGroupChange(e){
-				this.newPlateNumber = e
-			},
-			// 获取车辆列表
-			handlegetMycars(){
-				let that = this;
-				this.$u.api.getMycars()
-					.then(res=>{
-						if (res.code === 200) {
-							this.groupList = res.data.rows;
-							this.radiogroupList = res.data.rows;
-							this.$nextTick(() => {
-								// dom元素更新后执行,因此这里能正确打印更改之后的值
-								console.log(that.$refs.refValue.init()) // 改变了的值
-							})
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error'
-							})
-						}
-					})
-			},
-			//更换车牌信息
-			changevehicleNo(id){
-				this.orderid = id;
-				this.ShowchangevehicleNo = true;
-				this.handlegetMycars();
-			},
-			// 添加车辆
-			handleAddCar(){
-				if(!this.$u.test.carNo(this.newPlateNumber)){
-					this.$refs.uToast.show({
-						title: '请正确填写车牌号',
-						type: 'error',
-					});
-					return
-				}
-				let param = {
-					orderId: this.orderid,
-					vehicleNo: this.newPlateNumber,
-					vehicleColor: this.vehicleColor,
-				};
-				let that = this;
-				this.$u.api.bindVehicleNo(param)
-					.then(res=>{
-						if (res.code === 200) {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'success',
-							});
-							that.handleGetIndexData();
-							that.ShowchangevehicleNo = false;
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error',
-							});
-						}
-					})
-			},
-			//新增车牌
-			addvehicleNo(){
-				this.ShowaddvehicleNo = true;
-			},
-			
-			// 点击输入框
-			messageInputClick(){
-				this.keyboardshow = true;
-			},
-			// 按键被点击(点击退格键不会触发此事件)
-			keyboardChange(val) {
-				// 将每次按键的值拼接到value变量中,注意+=写法
-				this.newPlateNumber += val;
-			},
-			// 退格键被点击
-			backspace() {
-				// 删除value的最后一个字符
-				if(this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
-			},
-			// 键盘输入完成后确认
-			keyboardConfirm(){
-				this.colorShow = true;
-			},
-			// 确认颜色
-			confirmColor(e){
-				this.vehicleColor = this.colorList[e].colorCode;
-			},
-			//添加车牌
-			addvehicleNo(id){
-				this.orderid = id;
-				this.ShowaddvehicleNo = true;
-			},
-			// 定位
-			getLocation() {
-				const that = this
-				if (navigator.geolocation) {
-					// 判断是否有这个对象
-					navigator.geolocation.getCurrentPosition(function(pos) {
-						that.latLongItude = {
-							latitude: pos.coords.latitude,
-							longitude: pos.coords.longitude
-						}
-						that.latitude = pos.coords.latitude
-						that.longitude = pos.coords.longitude
-						that.getCityNameByLonLat(that.latLongItude)
-					}, function(err) {
-						// 错误处理
-						switch (err.code) {
-							case 1:
-								alert('位置服务被拒绝。')
-								break
-							case 2:
-								alert('暂时获取不到位置信息。')
-								break
-							case 3:
-								alert('获取信息超时。')
-								break
-							default:
-								alert('未知错误。')
-								break
-						}
-					})
-				} else {
-					alert('当前系统不支持GPS API')
-				};
-			},
-			// 通过经纬度获取地区详细信息
-			getCityNameByLonLat({
-				longitude,
-				latitude
-			} = {}) {
-				const that = this
-				uni.showLoading({
-					title: '加载中',
-					mask: true
-				})
-				const str = `output=jsonp&key=BOGBZ-2BZ33-O4L32-Y3QJR-PGN66-RFFEL&location=${latitude},${longitude}`
-				jsonp('https://apis.map.qq.com/ws/geocoder/v1/?' + str, {}).then(res => {
-					uni.hideLoading()
-					if (res.status == 0) {
-						if (res.result.ad_info) {
-							that.city = res.result.ad_info.district
-						}
-					}
-				})
-			},
-			// 轮播图点击
-			swiperClick(item) {
-				this.$u.route({
-					url: 'pages/bannerDetails/bannerDetails',
-					params: {
-						id: this.bannerList[item].id
-					}
-				})
-			},
-			// 切换无感和手动
-			orderNavclick() {
-				uni.showLoading({
-					title: '加载中'
-				});
-				console.log('this.recordList[1]', this.recordList[1]);
-				console.log('orderNav', this.orderNav)
-				if (!this.recordList[1]) {
-					uni.hideLoading();
-					return
-				}
-				this.$u.api.feePay({
-						vehicleId: this.recordList[1]
-					})
-					.then(res => {
-						console.log('res', res);
-						if (res?.code == 200) {
-							this.handleGetIndexData()
-						} else {
+import getUrlParams from '../../utils/getUrlParams.js';
+import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue';
+import { jsonp } from 'vue-jsonp';
+export default {
+  components: {
+    PaymentMethod
+  },
+  data() {
+    return {
+      orderid: '',
+      selectvalue: null,
+      groupList: [],
+      radiogroupList: [],
+      keyboardshow: false,
+      colorShow: false,
+      colorList: [
+        { text: '蓝色', colorCode: 0 },
+        { text: '黄色', colorCode: 1 },
+        { text: '黑色', colorCode: 2 },
+        { text: '白色', colorCode: 3 },
+        { text: '绿色', colorCode: 4 },
+        { text: '其他', colorCode: 99 }
+      ],
+      vehicleColor: 0,
+      newPlateNumber: '',
+      //更换车牌弹窗
+      ShowchangevehicleNo: false,
+      //添加车牌弹窗
+      ShowaddvehicleNo: false,
+      // 城市选择框
+      cityOpen: false,
+      // 选中城市
+      city: '贵州省',
+      // 搜索框值
+      keyword: '',
+      // 轮播图
+      bannerList: [
+        {
+          image: require('@/static/img/index-banner01.png')
+        }
+      ],
+      // 订单列表
+      orderList: [],
+      // 微信code
+      code: null,
+      // 手动,无感
+      orderNav: '',
+      // 绑定车询问弹窗
+      bindCarShow: false,
+      // 是否线上订单细节
+      showOrderDetails: false,
+      // 订单详情
+      popupOrderDetails: [],
+      // 消息列表
+      noticeList: [],
+      // 优惠活动广告图
+      promotionBannerList: [
+        {
+          id: 1,
+          image: '/static/img/promotion-banner-1.png',
+          title: '1分钱停车'
+        },
+        {
+          id: 2,
+          image: '/static/img/promotion-banner-2.png',
+          title: '八折停车'
+        }
+      ],
+      // 签约状态
+      contractStatus: '',
+      vehicleId: '',
+      recordList: [],
+      // 支付方式弹框
+      payWayPop: false,
+      // 订单号
+      curOrderList: [],
+      // 当前位置经纬度
+      latLongItude: {},
+      // 跳转地址
+      jumpUrl: '',
+      // 宫格菜单列表
+      gridList: [
+        {
+          url: 'pages/payLists/payLists',
+          imageUrl: '../../static/img/index-content-nav-01.png',
+          title: '停车缴费'
+        },
+        {
+          url: 'pages/favourableActivity/favourableActivity',
+          imageUrl: '../../static/img/index-content-nav-02.png',
+          title: '优惠活动'
+        },
+        {
+          url: 'pages/myCars/myCars',
+          imageUrl: '../../static/img/index-content-nav-03.png',
+          title: '车辆管理'
+        },
+        {
+          url: 'pages/searchparking/searchparking',
+          imageUrl: '../../static/img/index-content-nav-04.png',
+          title: '我的停车'
+        }
+      ],
+      totalActualAmount: '', //缴费总额
+      totalPayAmount: '', //应支付总额
+      totalCount: '', //缴费总笔数
+      totalPayCount: '', //应支付总笔数
+      // 0元提示框
+      jumpMsgModal: false,
+      // 0元提示内容
+      jumpMsgContent: ''
+    };
+  },
+  onLoad(page) {
+    const locationLocaturl = window.location.href;
+    // 微信聚合支付完成跳转过来重定向到详情页
+    const type = getUrlParams(locationLocaturl, 'type');
+    if (type && type === 'jumpurl') {
+      const jumpurl = localStorage.getItem('jumpUrl');
+      if (jumpurl) {
+        uni.showLoading({
+          title: '正在跳转中...'
+        });
+        setTimeout(() => {
+          uni.hideLoading();
+          location.href = jumpurl;
+        }, 0);
+      }
+    }
+    // 0元支付情况添加一个加载层
+    const jumpMsg = getUrlParams(locationLocaturl, 'jumpMsg');
+    if (jumpMsg) {
+      this.jumpMsgModal = true;
+      this.jumpMsgContent = jumpMsg;
+      setTimeout(() => {
+        this.jumpMsgModal = false;
+      }, 3000);
+    }
+  },
+  onShow() {
+    this.handleGetIndexData();
+    this.getLocation();
+    const locationLocaturl = window.location.search;
+    this.code = getUrlParams(locationLocaturl, 'code');
+    if (this.code && !this.$store.state.vuex_wxinfo.openId) {
+      this.handleGetWXInfo(this.code);
+    }
+  },
+  methods: {
+    radioGroupChange(e) {
+      this.newPlateNumber = e;
+    },
+    // 获取车辆列表
+    handlegetMycars() {
+      let that = this;
+      this.$u.api.getMycars().then((res) => {
+        if (res.code === 200) {
+          this.groupList = res.data.rows;
+          this.radiogroupList = res.data.rows;
+          this.$nextTick(() => {
+            // dom元素更新后执行,因此这里能正确打印更改之后的值
+            console.log(that.$refs.refValue.init()); // 改变了的值
+          });
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg,
+            type: 'error'
+          });
+        }
+      });
+    },
+    //更换车牌信息
+    changevehicleNo(id) {
+      this.orderid = id;
+      this.ShowchangevehicleNo = true;
+      this.handlegetMycars();
+    },
+    // 添加车辆
+    handleAddCar() {
+      if (!this.$u.test.carNo(this.newPlateNumber)) {
+        this.$refs.uToast.show({
+          title: '请正确填写车牌号',
+          type: 'error'
+        });
+        return;
+      }
+      let param = {
+        orderId: this.orderid,
+        vehicleNo: this.newPlateNumber,
+        vehicleColor: this.vehicleColor
+      };
+      let that = this;
+      this.$u.api.bindVehicleNo(param).then((res) => {
+        if (res.code === 200) {
+          this.$refs.uToast.show({
+            title: res.msg,
+            type: 'success'
+          });
+          that.handleGetIndexData();
+          that.ShowchangevehicleNo = false;
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg,
+            type: 'error'
+          });
+        }
+      });
+    },
+    //新增车牌
+    addvehicleNo() {
+      this.ShowaddvehicleNo = true;
+    },
 
-							// this.$refs.uToast.show({
-							//   title: res?.msg,
-							//   type: 'error'
-							// })
-						}
-						uni.hideLoading()
-					}).catch(err => {
-						console.log('orderNavclick err', err)
-					})
-			},
-			/**
-			 * 跳转页面
-			 * path 跳转路径
-			 * flag 是否存储
-			 * */
-			openPage(path, flag) {
-				this.$u.route({
-					url: path
-				})
-				if (flag) {
-					uni.setStorage({
-						key: 'messageBack',
-						data: 'pages/index/index'
-					})
-				}
-			},
-			// 搜索
-			handleSearch() {
-				uni.reLaunch({
-					url: `/pages/parkingLists/parkingLists?keyword=${this.keyword}`
-				})
-			},
-			// 城市选择
-			handleCitySelect() {
-				this.cityOpen = true
-			},
-			// 城市选择下拉变化
-			cityChange(e) {
-				if (e.area) {
-					this.city = e.area.label
-				} else if (e.city) {
-					this.city = e.city.label
-				} else {
-					this.city = e.province.label
-				}
-			},
-			// 获取首页数据
-			handleGetIndexData() {
-				this.$u.api.getIndexData()
-					.then(res => {
-						if (res.code === 200) {
-							// 轮播
-							const bannerList = []
-							const banner = res.data?.advs
-							banner.forEach(item => {
-								const obj = {
-									image: item.bannerUrl,
-									id: item.id,
-									name: item.name,
-									content: item.content
-								}
-								bannerList.push(obj)
-							})
-							if (bannerList.length > 0) {
-								this.bannerList = bannerList
-							}
-							// 是否有绑定车牌: 没有则通过弹框去绑定
-							const vehicleList = res.data?.vehicleList ?? []
-							if (vehicleList.length === 0) {
-								this.bindCarShow = true
-							}
-							// 无感和手动
-							const enableFeepay = []
-							const orderList = res.data?.orderList ?? []
-							orderList.forEach(item => {
-								if (item.enableFeepay) {
-									enableFeepay.push(item.enableFeepay)
-								} else {
-									enableFeepay.push(0)
-								}
-								enableFeepay.push(item.vehicleId)
-								if (item.contractStatus) {
-									enableFeepay.push(item.contractStatus)
-								} else {
-									enableFeepay.push(0)
-								}
-							})
-							this.totalActualAmount = res.data?.payedInfo?.totalActualAmount
-							this.totalCount = res.data?.payedInfo?.totalCount
-							this.totalPayAmount = res.data?.payingInfo?.totalPayAmount
-							this.totalPayCount = res.data?.payingInfo?.totalCount
-							this.recordList = enableFeepay
-							this.orderNav = enableFeepay[0]
-							this.contractStatus = enableFeepay[2]
-							this.orderList = res.data.orderList
-							// 消息提示
-							const newsList = []
-							const news = res.data?.news ?? []
-							news.forEach(item => {
-								newsList.push(item.content)
-							})
-							this.noticeList = newsList
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error'
-							})
-						}
-					})
-			},
-			// 去支付,选择支付方式
-			goPay(orderId) {
-				const href = location.href.split('#')
-				this.jumpUrl = href[0] + '#/pages/center/order/orderDetails/orderDetails?orderId=' + orderId + '&type=open'
-				this.payWayPop = true
-				this.curOrderList = []
-				this.curOrderList.push(orderId)
-			},
-			// 获取路段详情
-			onRoadInfo(item) {
-				this.$u.api.roadInfoById({
-						id: item.roadId
-					})
-					.then(res => {
-						this.popupOrderDetails = res.data
-						this.showOrderDetails = true
-					}).catch(err => {
-						this.$refs.uToast.show({
-							title: '系统异常',
-							type: 'error'
-						})
-					})
-			},
-			// 关闭路段详情弹框
-			closeOrderDetails() {
-				this.showOrderDetails = false
-			},
-			// 打电话
-			phoneCall(phone) {
-				uni.makePhoneCall({
-					phoneNumber: phone
-				})
-			},
-			/**
-			 * 点击优惠活动的广告图
-			 * */
-			promotionBannerClick(cur) {
-				this.promotionBannerList.forEach((item, index) => {
-					if (cur === index) {
-						this.$u.route({
-							url: 'pages/favourableActivity/favourableActivity',
-							params: {
-								title: item.title,
-								id: item.id
-							}
-						})
-					}
-				})
-			},
-			// 关闭支付弹框
-			closePaymentMethod() {
-				this.payWayPop = false
-			}
-		}
-	}
+    // 点击输入框
+    messageInputClick() {
+      this.keyboardshow = true;
+    },
+    // 按键被点击(点击退格键不会触发此事件)
+    keyboardChange(val) {
+      // 将每次按键的值拼接到value变量中,注意+=写法
+      this.newPlateNumber += val;
+    },
+    // 退格键被点击
+    backspace() {
+      // 删除value的最后一个字符
+      if (this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
+    },
+    // 键盘输入完成后确认
+    keyboardConfirm() {
+      this.colorShow = true;
+    },
+    // 确认颜色
+    confirmColor(e) {
+      this.vehicleColor = this.colorList[e].colorCode;
+    },
+    //添加车牌
+    addvehicleNo(id) {
+      this.orderid = id;
+      this.ShowaddvehicleNo = true;
+    },
+    // 定位
+    getLocation() {
+      const that = this;
+      if (navigator.geolocation) {
+        // 判断是否有这个对象
+        navigator.geolocation.getCurrentPosition(
+          function (pos) {
+            that.latLongItude = {
+              latitude: pos.coords.latitude,
+              longitude: pos.coords.longitude
+            };
+            that.latitude = pos.coords.latitude;
+            that.longitude = pos.coords.longitude;
+            that.getCityNameByLonLat(that.latLongItude);
+          },
+          function (err) {
+            // 错误处理
+            switch (err.code) {
+              case 1:
+                alert('位置服务被拒绝。');
+                break;
+              case 2:
+                alert('暂时获取不到位置信息。');
+                break;
+              case 3:
+                alert('获取信息超时。');
+                break;
+              default:
+                alert('未知错误。');
+                break;
+            }
+          }
+        );
+      } else {
+        alert('当前系统不支持GPS API');
+      }
+    },
+    // 通过经纬度获取地区详细信息
+    getCityNameByLonLat({ longitude, latitude } = {}) {
+      const that = this;
+      uni.showLoading({
+        title: '加载中',
+        mask: true
+      });
+      const str = `output=jsonp&key=BOGBZ-2BZ33-O4L32-Y3QJR-PGN66-RFFEL&location=${latitude},${longitude}`;
+      jsonp('https://apis.map.qq.com/ws/geocoder/v1/?' + str, {}).then((res) => {
+        uni.hideLoading();
+        if (res.status == 0) {
+          if (res.result.ad_info) {
+            that.city = res.result.ad_info.district;
+          }
+        }
+      });
+    },
+    // 轮播图点击
+    swiperClick(item) {
+      this.$u.route({
+        url: 'pages/bannerDetails/bannerDetails',
+        params: {
+          id: this.bannerList[item].id
+        }
+      });
+    },
+    // 切换无感和手动
+    orderNavclick() {
+      uni.showLoading({
+        title: '加载中'
+      });
+      console.log('this.recordList[1]', this.recordList[1]);
+      console.log('orderNav', this.orderNav);
+      if (!this.recordList[1]) {
+        uni.hideLoading();
+        return;
+      }
+      this.$u.api
+        .feePay({
+          vehicleId: this.recordList[1]
+        })
+        .then((res) => {
+          console.log('res', res);
+          if (res?.code == 200) {
+            this.handleGetIndexData();
+          } else {
+            // this.$refs.uToast.show({
+            //   title: res?.msg,
+            //   type: 'error'
+            // })
+          }
+          uni.hideLoading();
+        })
+        .catch((err) => {
+          console.log('orderNavclick err', err);
+        });
+    },
+    /**
+     * 跳转页面
+     * path 跳转路径
+     * flag 是否存储
+     * */
+    openPage(path, flag) {
+      this.$u.route({
+        url: path
+      });
+      if (flag) {
+        uni.setStorage({
+          key: 'messageBack',
+          data: 'pages/index/index'
+        });
+      }
+    },
+    // 搜索
+    handleSearch() {
+      uni.reLaunch({
+        url: `/pages/parkingLists/parkingLists?keyword=${this.keyword}`
+      });
+    },
+    // 城市选择
+    handleCitySelect() {
+      this.cityOpen = true;
+    },
+    // 城市选择下拉变化
+    cityChange(e) {
+      if (e.area) {
+        this.city = e.area.label;
+      } else if (e.city) {
+        this.city = e.city.label;
+      } else {
+        this.city = e.province.label;
+      }
+    },
+    // 获取首页数据
+    handleGetIndexData() {
+      this.$u.api.getIndexData().then((res) => {
+        if (res.code === 200) {
+          // 轮播
+          const bannerList = [];
+          const banner = res.data?.advs;
+          banner.forEach((item) => {
+            const obj = {
+              image: item.bannerUrl,
+              id: item.id,
+              name: item.name,
+              content: item.content
+            };
+            bannerList.push(obj);
+          });
+          if (bannerList.length > 0) {
+            this.bannerList = bannerList;
+          }
+          // 是否有绑定车牌: 没有则通过弹框去绑定
+          const vehicleList = res.data?.vehicleList ?? [];
+          if (vehicleList.length === 0) {
+            this.bindCarShow = true;
+          }
+          // 无感和手动
+          const enableFeepay = [];
+          const orderList = res.data?.orderList ?? [];
+          orderList.forEach((item) => {
+            if (item.enableFeepay) {
+              enableFeepay.push(item.enableFeepay);
+            } else {
+              enableFeepay.push(0);
+            }
+            enableFeepay.push(item.vehicleId);
+            if (item.contractStatus) {
+              enableFeepay.push(item.contractStatus);
+            } else {
+              enableFeepay.push(0);
+            }
+          });
+          this.totalActualAmount = res.data?.payedInfo?.totalActualAmount;
+          this.totalCount = res.data?.payedInfo?.totalCount;
+          this.totalPayAmount = res.data?.payingInfo?.totalPayAmount;
+          this.totalPayCount = res.data?.payingInfo?.totalCount;
+          this.recordList = enableFeepay;
+          this.orderNav = enableFeepay[0];
+          this.contractStatus = enableFeepay[2];
+          this.orderList = res.data.orderList;
+          // 消息提示
+          const newsList = [];
+          const news = res.data?.news ?? [];
+          news.forEach((item) => {
+            newsList.push(item.content);
+          });
+          this.noticeList = newsList;
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg,
+            type: 'error'
+          });
+        }
+      });
+    },
+    // 去支付,选择支付方式
+    goPay(orderId) {
+      const href = location.href.split('#');
+      this.jumpUrl = href[0] + '#/pages/center/order/orderDetails/orderDetails?orderId=' + orderId + '&type=open';
+      this.payWayPop = true;
+      this.curOrderList = [];
+      this.curOrderList.push(orderId);
+    },
+    // 获取路段详情
+    onRoadInfo(item) {
+      this.$u.api
+        .roadInfoById({
+          id: item.roadId
+        })
+        .then((res) => {
+          this.popupOrderDetails = res.data;
+          this.showOrderDetails = true;
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '系统异常',
+            type: 'error'
+          });
+        });
+    },
+    // 关闭路段详情弹框
+    closeOrderDetails() {
+      this.showOrderDetails = false;
+    },
+    // 打电话
+    phoneCall(phone) {
+      uni.makePhoneCall({
+        phoneNumber: phone
+      });
+    },
+    /**
+     * 点击优惠活动的广告图
+     * */
+    promotionBannerClick(cur) {
+      this.promotionBannerList.forEach((item, index) => {
+        if (cur === index) {
+          this.$u.route({
+            url: 'pages/favourableActivity/favourableActivity',
+            params: {
+              title: item.title,
+              id: item.id
+            }
+          });
+        }
+      });
+    },
+    // 关闭支付弹框
+    closePaymentMethod() {
+      this.payWayPop = false;
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import "./index.scss";
+@import './index.scss';
 </style>

+ 63 - 63
pages/message/message.scss

@@ -1,65 +1,65 @@
-.swiper-wrap{
-	display: flex;
-	flex-direction: column;
-	height: calc(100vh - var(--window-top));
-	width: 100%;
-	.swiper-box {
-		flex: 1;
-	}
+.swiper-wrap {
+  display: flex;
+  flex-direction: column;
+  height: calc(100vh - var(--window-top));
+  width: 100%;
+  .swiper-box {
+    flex: 1;
+  }
 }
-.page-box{
-	margin: 25rpx 40rpx;
-	.message{
-		overflow: hidden;
-		margin-bottom: 20rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		.message-top{
-			margin-bottom: 20rpx;
-			padding: 25rpx 40rpx;
-			.car{
-				font-size: 32rpx;
-				font-weight: 600;
-				color: #3A3A3A;
-				line-height: 45rpx;
-				letter-spacing: 1px
-			}
-			.addr{
-				color: #858585;
-				font-size: 26rpx;
-				line-height: 37rpx;
-			}
-			.message-top-right{
-				padding: 0 15rpx;
-				height: 50rpx;
-				line-height: 48rpx;
-				border-radius: 5rpx;
-				position: relative;
-			}
-		}
-		.message-center{
-			padding: 0 40rpx 25rpx;
-			border-bottom: 1px solid #DFDFDF;
-			.message-center-item{
-				margin-bottom: 9rpx;
-				font-size: 26rpx;
-				font-weight: 400;
-				color: #595959;
-				line-height: 37rpx;
-				letter-spacing: 1px;
-				overflow : hidden;
-				text-overflow: ellipsis;
-				display: -webkit-box;
-				-webkit-line-clamp: 2;
-				-webkit-box-orient: vertical;
-			}
-		}
-		.u-cell_title{
-			color: "#008CFF" ;
-		}
-	}
+.page-box {
+  margin: 25rpx 40rpx;
+  .message {
+    overflow: hidden;
+    margin-bottom: 20rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    .message-top {
+      margin-bottom: 20rpx;
+      padding: 25rpx 40rpx;
+      .car {
+        font-size: 32rpx;
+        font-weight: 600;
+        color: #3a3a3a;
+        line-height: 45rpx;
+        letter-spacing: 1px;
+      }
+      .addr {
+        color: #858585;
+        font-size: 26rpx;
+        line-height: 37rpx;
+      }
+      .message-top-right {
+        padding: 0 15rpx;
+        height: 50rpx;
+        line-height: 48rpx;
+        border-radius: 5rpx;
+        position: relative;
+      }
+    }
+    .message-center {
+      padding: 0 40rpx 25rpx;
+      border-bottom: 1px solid #dfdfdf;
+      .message-center-item {
+        margin-bottom: 9rpx;
+        font-size: 26rpx;
+        font-weight: 400;
+        color: #595959;
+        line-height: 37rpx;
+        letter-spacing: 1px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-line-clamp: 2;
+        -webkit-box-orient: vertical;
+      }
+    }
+    .u-cell_title {
+      color: '#008CFF';
+    }
+  }
+}
+.time {
+  margin-left: 115px;
+  margin-top: 10px;
 }
-.time{
-	margin-left: 115px;
-	margin-top: 10px;
-}

+ 146 - 149
pages/message/message.vue

@@ -1,162 +1,159 @@
 <template>
-	<view>
-		<u-navbar
-			title-color="#fff"
-			:custom-back="customBack"
-			:border-bottom="false"
-			back-icon-color="#CCE8FF"
-			:background="{background: '#008CFF' }"
-			title="消息中心"
-		/>
-		<mescroll-body
-			ref="mescrollRef"
-			@init="mescrollInit"
-			@down="downCallback"
-			@up="upCallback">
-			<scroll-view scroll-y style="height: 100%; width: 100%;" v-for="(messageItem, index) in  messageList"
-				:key="messageItem.id">
-				<view class="time">{{messageItem.createTime}}</view>
-				<view class="page-box">
-					<view class="message"
-						@click="goDetails(messageItem)">
-						<view class="message-top u-flex">
-							<view class="message-top-left u-flex-1">
-								<view class="car">{{messageItem.title}}</view>
-							</view>
-							<view class="message-top-right u-flex-2">
-								<u-badge :is-dot="true" type="error" v-if="messageItem.readFlag=='0'"></u-badge>
-							</view>
-						</view>
-						<view class="message-center">
-							<view class="message-center-item">{{messageItem.content}}</view>
-						</view>
-						<view class="message-bottom">
-							<u-cell-item title="查看详情" style="color: #008CFF;"></u-cell-item>
-						</view>
-					</view>
-				</view>
-			</scroll-view>
-		</mescroll-body>
-		<u-toast ref="uToast" />
-	</view>
+  <view>
+    <u-navbar
+      title-color="#fff"
+      :custom-back="customBack"
+      :border-bottom="false"
+      back-icon-color="#CCE8FF"
+      :background="{ background: '#008CFF' }"
+      title="消息中心"
+    />
+    <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback">
+      <scroll-view scroll-y style="height: 100%; width: 100%" v-for="(messageItem, index) in messageList" :key="messageItem.id">
+        <view class="time">{{ messageItem.createTime }}</view>
+        <view class="page-box">
+          <view class="message" @click="goDetails(messageItem)">
+            <view class="message-top u-flex">
+              <view class="message-top-left u-flex-1">
+                <view class="car">{{ messageItem.title }}</view>
+              </view>
+              <view class="message-top-right u-flex-2">
+                <u-badge :is-dot="true" type="error" v-if="messageItem.readFlag == '0'"></u-badge>
+              </view>
+            </view>
+            <view class="message-center">
+              <view class="message-center-item">{{ messageItem.content }}</view>
+            </view>
+            <view class="message-bottom">
+              <u-cell-item title="查看详情" style="color: #008cff"></u-cell-item>
+            </view>
+          </view>
+        </view>
+      </scroll-view>
+    </mescroll-body>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
-	export default {
-		mixins: [MescrollMixin], // 使用mixin
-		data() {
-			return {
-				messageList: []
-			};
-		},
-		methods: {
-			// 返回上一页
-			customBack() {
-				uni.getStorage({
-				    key: 'messageBack',
-				    success: (res) => {
-							this.$u.route({
-								type: 'switchTab',
-								url: res.data
-							})
-				    }
-				})
-			},
-			/*下拉刷新的回调*/
-			downCallback() {
-				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
-				this.mescroll.resetUpScroll(); // 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
-			},
-			/*上拉加载的回调*/
-			upCallback(page) {
-				let pageNum = page.num; // 页码, 默认从1开始
-				let pageSize = page.size; // 页长, 默认每页10条
-				this.$u.api.getMessageList({
-						pageSize: pageSize,
-						pageNum: pageNum
-					})
-					.then(res => {
-						if (res.code == 200) {
-							// 接口返回的当前页数据列表 (数组)
-							let curPageData = res.data?.rows??[];
-							// 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
-							let curPageLen = curPageData.length;
-							// 接口返回的总页数 (如列表有26个数据,每页10条,共3页; 则totalPage=3)
-							let totalPage = res.data.pages;
-							// 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
-							let totalSize = res.data.total;
-							// 接口返回的是否有下一页 (true/false)
-							let hasNext = res.data.page < res.data.pages;
+import MescrollMixin from '@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js';
+export default {
+  mixins: [MescrollMixin], // 使用mixin
+  data() {
+    return {
+      messageList: []
+    };
+  },
+  methods: {
+    // 返回上一页
+    customBack() {
+      uni.getStorage({
+        key: 'messageBack',
+        success: (res) => {
+          this.$u.route({
+            type: 'switchTab',
+            url: res.data
+          });
+        }
+      });
+    },
+    /*下拉刷新的回调*/
+    downCallback() {
+      // 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
+      this.mescroll.resetUpScroll(); // 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
+    },
+    /*上拉加载的回调*/
+    upCallback(page) {
+      let pageNum = page.num; // 页码, 默认从1开始
+      let pageSize = page.size; // 页长, 默认每页10条
+      this.$u.api
+        .getMessageList({
+          pageSize: pageSize,
+          pageNum: pageNum
+        })
+        .then((res) => {
+          if (res.code == 200) {
+            // 接口返回的当前页数据列表 (数组)
+            let curPageData = res.data?.rows ?? [];
+            // 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
+            let curPageLen = curPageData.length;
+            // 接口返回的总页数 (如列表有26个数据,每页10条,共3页; 则totalPage=3)
+            let totalPage = res.data.pages;
+            // 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
+            let totalSize = res.data.total;
+            // 接口返回的是否有下一页 (true/false)
+            let hasNext = res.data.page < res.data.pages;
 
-							//设置列表数据
-							if (page.num == 1) this.messageList = []; // 如果是第一页需手动置空列表
-							this.messageList = this.messageList.concat(curPageData); // 追加新数据
-							// 后台接口有返回列表的总页数 totalPage
-							this.mescroll.endByPage(curPageLen, totalPage);
-							setTimeout(() => {
-								this.mescroll.endSuccess(curPageLen)
-							}, 20)
-						} else {
-							this.mescroll.endErr()
-						}
-					}).catch(err => {
-						this.$refs.uToast.show({
-							title: err.msg,
-							type: 'error',
-						});
-					});
-			},
-			// 跳转消息详情
-			goDetails(item) {
-				if (Number(item.readFlag) === 0) {
-					this.$u.api.messageRead({
-							newId: item.id
-						})
-						.then(res => {
-							if (res.code == 200) {
-								this.$u.route({
-									url: 'pages/message/messageInfo',
-									params: {
-										details: JSON.stringify(item)
-									}
-								});
-							} else {
-								this.$refs.uToast.show({
-									title: res.msg,
-									type: 'error'
-								})
-							}
-						})
-						.catch(err => {
-							this.$refs.uToast.show({
-								title: '操作失败',
-								type: 'error'
-							})
-						})
-				} else {
-					this.$u.route({
-						url: 'pages/message/messageInfo',
-						params: {
-							details: JSON.stringify(item)
-						}
-					});
-				}
-			}
-		},
-	};
+            //设置列表数据
+            if (page.num == 1) this.messageList = []; // 如果是第一页需手动置空列表
+            this.messageList = this.messageList.concat(curPageData); // 追加新数据
+            // 后台接口有返回列表的总页数 totalPage
+            this.mescroll.endByPage(curPageLen, totalPage);
+            setTimeout(() => {
+              this.mescroll.endSuccess(curPageLen);
+            }, 20);
+          } else {
+            this.mescroll.endErr();
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: err.msg,
+            type: 'error'
+          });
+        });
+    },
+    // 跳转消息详情
+    goDetails(item) {
+      if (Number(item.readFlag) === 0) {
+        this.$u.api
+          .messageRead({
+            newId: item.id
+          })
+          .then((res) => {
+            if (res.code == 200) {
+              this.$u.route({
+                url: 'pages/message/messageInfo',
+                params: {
+                  details: JSON.stringify(item)
+                }
+              });
+            } else {
+              this.$refs.uToast.show({
+                title: res.msg,
+                type: 'error'
+              });
+            }
+          })
+          .catch((err) => {
+            this.$refs.uToast.show({
+              title: '操作失败',
+              type: 'error'
+            });
+          });
+      } else {
+        this.$u.route({
+          url: 'pages/message/messageInfo',
+          params: {
+            details: JSON.stringify(item)
+          }
+        });
+      }
+    }
+  }
+};
 </script>
 
 <style>
-	/* #ifndef H5 */
-	page {
-		height: 100%;
-		background-color: #F6F6FF;
-	}
+/* #ifndef H5 */
+page {
+  height: 100%;
+  background-color: #f6f6ff;
+}
 
-	/* #endif */
+/* #endif */
 </style>
 
 <style lang="scss" scoped>
-	@import "./message.scss";
+@import './message.scss';
 </style>

+ 59 - 60
pages/message/messageInfo.vue

@@ -1,75 +1,74 @@
 <template>
-	<view class="info">
-		<u-navbar
-			title-color="#fff"
-			:custom-back="customBack"
-			:border-bottom="false"
-			back-icon-color="#CCE8FF"
-			:background="{background: '#008CFF' }"
-			title="消息详情"></u-navbar>
-		<view class="time">{{details.createTime}}</view>
-		<view class="box">
-			<view class="title">{{details.title}}</view>
-			<view class="content">{{details.content}}</view>
-		</view>
-	</view>
+  <view class="info">
+    <u-navbar
+      title-color="#fff"
+      :custom-back="customBack"
+      :border-bottom="false"
+      back-icon-color="#CCE8FF"
+      :background="{ background: '#008CFF' }"
+      title="消息详情"
+    ></u-navbar>
+    <view class="time">{{ details.createTime }}</view>
+    <view class="box">
+      <view class="title">{{ details.title }}</view>
+      <view class="content">{{ details.content }}</view>
+    </view>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				details: {}
-			};
-		},
-		onLoad(page) {
-			const details = JSON.parse(page.details)
-			if (details) {
-				this.details = details
-			}
-		},
-		methods: {
-			customBack() {
-				this.$u.route({
-					url: 'pages/message/message'
-				});
-			}
-		}
-
-	}
+export default {
+  data() {
+    return {
+      details: {}
+    };
+  },
+  onLoad(page) {
+    const details = JSON.parse(page.details);
+    if (details) {
+      this.details = details;
+    }
+  },
+  methods: {
+    customBack() {
+      this.$u.route({
+        url: 'pages/message/message'
+      });
+    }
+  }
+};
 </script>
 
 <style>
-	/* #ifndef H5 */
-	page {
-		height: 100%;
-		background-color: #F6F6FF;
-	}
+/* #ifndef H5 */
+page {
+  height: 100%;
+  background-color: #f6f6ff;
+}
 
-	/* #endif */
+/* #endif */
 </style>
 
 <style lang="scss" scoped>
-	.info {
-		padding: 40rpx 40rpx;
-
-	}
+.info {
+  padding: 40rpx 40rpx;
+}
 
-	.box {
-		margin-top: 20rpx;
-		background-color: white;
-		border-radius: 15rpx;
+.box {
+  margin-top: 20rpx;
+  background-color: white;
+  border-radius: 15rpx;
 
-		.title {
-			padding-top: 20rpx;
-			text-align: center;
-			font-size: 40rpx;
-		}
-	}
+  .title {
+    padding-top: 20rpx;
+    text-align: center;
+    font-size: 40rpx;
+  }
+}
 
-	.content {
-		text-indent: 2em;
-		padding: 20rpx 40rpx;
-		line-height: 44rpx;
-	}
+.content {
+  text-indent: 2em;
+  padding: 20rpx 40rpx;
+  line-height: 44rpx;
+}
 </style>

+ 171 - 163
pages/myCars/myCars.scss

@@ -1,163 +1,171 @@
-.header{
	height: 296rpx;
-	overflow: hidden;
	background: url(../../static/img/myCars-header-bg.png) no-repeat;
	background-size: contain;
-	color: $my-main-color;
	
}
-.header .header-title{
-	margin-top: 80rpx;
	color: #fff;
	font-size: 50rpx;
-	text-align: center;
}
-
-.statistics{
-	margin: -78rpx 0 59rpx;
-	background-color: #fff;
-	box-shadow: 0px 6rpx 10px 0px rgba(0, 0, 0, 0.06);
-	border-radius: 15rpx;
-	height: 182rpx;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	color: #323232;
-	
-}
-.statistics-title{
-		font-size: 60rpx;
-		letter-spacing: 2rpx;
-	}
-.statistics-center{
-	width: 4rpx;
-	height: 106rpx;
-	margin: 0 103rpx;
-	box-shadow: 0px 6rpx 10rpx 0rx rgba(0, 0, 0, 0.06);
-	opacity: 0.5;
-	border: 1px solid #979797;
-}
-.statistics-number-wrap{
-	font-size: 28rpx;
-}
-.statistics-number-wrap .number{
-	margin-right: 4rpx;
-	font-size: 72rpx;
-}
-.add-car-btn{
-	height: 100rpx;
-	line-height: 100rpx;
-	background: #008CFF;
-	color: #fff;;
-	font-size: 28rpx;
-	text-align: center;
-	box-shadow: 0px 7rpx 13rpx 0px rgba(16, 153, 250, 0.31);
-	border-radius: 10rpx;
-	margin-bottom: 50rpx;
-}
-.new-plate-number{	
-	margin-bottom: 70rpx;
-}
-.message-input-wrap{
-	margin: 0 -40rpx;
-}
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
-}
-
-.mycars-item{
-	display: flex;
-	align-items: center;
-	height: 111rpx;
-	border-bottom: 1px solid #EAEAEA;
-}
-.mycars-item-name{
-	// margin-right: 43rpx;
-	width: 258rpx;
-	font-size: 36rpx;
-	color: #4B4B4B;
-}
-.mycars-item-type{
-	font-size: 26rpx;
-	color: #959595;	
-}
-.mycars-item-sign{
-	line-height: 40rpx;
-	text-align: center;
-	border-radius: 5rpx;
-	color: #fff;
-	font-size: 22rpx;
-	padding: 0 15rpx;
-	border: solid 1px #FF6D6D;
-	background-color: #FF6D6D;
-	margin-left: 40rpx;
-}
-.mycars-item-sign1{
-	line-height: 40rpx;
-	text-align: center;
-	border-radius: 5rpx;
-	color: #fff;
-	font-size: 22rpx;
-	padding: 0 15rpx;
-	border: solid 1px #D8D8D8;
-	background-color: #D8D8D8;
-	margin-left: 40rpx;
-}
-.mycars-item-tool{
-	flex: 1;
-	font-size: 22rpx;
-	color: #C9C9C9;
-	text-align: right;
-}
-.mycars-item-tool .default{
-	display: inline-block;
-	box-sizing: border-box;
-	// width: 75rpx;
-	height:38rpx;
-	line-height: 34rpx;
-	border-radius: 5rpx;
-	border: 1px solid #E3E3E3;
-	text-align: center;
-	margin-right: 17rpx;
-	font-size: 18rpx;
-	color: #CDCDCD;
-}
-.mycars-item-tool .default.isDefault{
-	background-color: #FFEEE3;
-	border-color: #FFEEE3;
-	color: #FA6400;
-	
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+.header{
+	height: 296rpx;
+	overflow: hidden;
+	background: url(../../static/img/myCars-header-bg.png) no-repeat;
+	background-size: contain;
+	color: $my-main-color;
+	
+}
+.header .header-title{
+	margin-top: 80rpx;
+	color: #fff;
+	font-size: 50rpx;
+	text-align: center;
+}
+
+.statistics{
+	margin: -78rpx 0 59rpx;
+	background-color: #fff;
+	box-shadow: 0px 6rpx 10px 0px rgba(0, 0, 0, 0.06);
+	border-radius: 15rpx;
+	height: 182rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	color: #323232;
+	
+}
+.statistics-title{
+		font-size: 60rpx;
+		letter-spacing: 2rpx;
+	}
+.statistics-center{
+	width: 4rpx;
+	height: 106rpx;
+	margin: 0 103rpx;
+	box-shadow: 0px 6rpx 10rpx 0rx rgba(0, 0, 0, 0.06);
+	opacity: 0.5;
+	border: 1px solid #979797;
+}
+.statistics-number-wrap{
+	font-size: 28rpx;
+}
+.statistics-number-wrap .number{
+	margin-right: 4rpx;
+	font-size: 72rpx;
+}
+.add-car-btn{
+	height: 100rpx;
+	line-height: 100rpx;
+	background: #008CFF;
+	color: #fff;;
+	font-size: 28rpx;
+	text-align: center;
+	box-shadow: 0px 7rpx 13rpx 0px rgba(16, 153, 250, 0.31);
+	border-radius: 10rpx;
+	margin-bottom: 50rpx;
+}
+.new-plate-number{	
+	margin-bottom: 70rpx;
+}
+.message-input-wrap{
+	margin: 0 -40rpx;
+}
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
+	background-color: #E8FFE8;
+}
+
+.mycars-item{
+	display: flex;
+	align-items: center;
+	height: 111rpx;
+	border-bottom: 1px solid #EAEAEA;
+}
+.mycars-item-name{
+	// margin-right: 43rpx;
+	width: 258rpx;
+	font-size: 36rpx;
+	color: #4B4B4B;
+}
+.mycars-item-type{
+	font-size: 26rpx;
+	color: #959595;	
+}
+.mycars-item-sign{
+	line-height: 40rpx;
+	text-align: center;
+	border-radius: 5rpx;
+	color: #fff;
+	font-size: 22rpx;
+	padding: 0 15rpx;
+	border: solid 1px #FF6D6D;
+	background-color: #FF6D6D;
+	margin-left: 40rpx;
+}
+.mycars-item-sign1{
+	line-height: 40rpx;
+	text-align: center;
+	border-radius: 5rpx;
+	color: #fff;
+	font-size: 22rpx;
+	padding: 0 15rpx;
+	border: solid 1px #D8D8D8;
+	background-color: #D8D8D8;
+	margin-left: 40rpx;
+}
+.mycars-item-tool{
+	flex: 1;
+	font-size: 22rpx;
+	color: #C9C9C9;
+	text-align: right;
+}
+.mycars-item-tool .default{
+	display: inline-block;
+	box-sizing: border-box;
+	// width: 75rpx;
+	height:38rpx;
+	line-height: 34rpx;
+	border-radius: 5rpx;
+	border: 1px solid #E3E3E3;
+	text-align: center;
+	margin-right: 17rpx;
+	font-size: 18rpx;
+	color: #CDCDCD;
+}
+.mycars-item-tool .default.isDefault{
+	background-color: #FFEEE3;
+	border-color: #FFEEE3;
+	color: #FA6400;
+	
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 238 - 221
pages/myCars/myCars.vue

@@ -1,229 +1,246 @@
 <template>
-	<view>
-		<u-navbar
-		 title-color="#fff" 
-		 :custom-back="customBack" 
-		 :border-bottom="false" 
-		 back-icon-color="#CCE8FF" 
-		 :background="{background: '#008CFF' }" title="车辆管理"></u-navbar>
-		<view class="header">
-			<view class="header-title">我的车辆</view>
-		</view>
-		<view class="wrap">
-			<view class="statistics">
-				<view class="statistics-title">车辆</view>
-				<view class="statistics-center"></view>
-				<view class="statistics-number-wrap"><span class="number">{{mycarsTotal}}</span>辆</view>
-			</view>
-			<view class="new-plate-number">
-				<view class="message-input-wrap" @click="messageInputClick">
-					<u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
-				</view>				
-				<u-keyboard ref="uKeyboard" mode="car" @change="keyboardChange" @confirm="keyboardConfirm" @backspace="backspace" v-model="keyboardshow"></u-keyboard>
-			</view>
-			<view class="add-car-btn" @click="handleAddCar">添加车辆</view>
-			<view class="mycars">
-				<view class="mycars-item" v-for="(item, index) in mycars" :key="index">
-					<view class="mycars-item-name">{{item.vehicleNo}}</view>
-					<view class="mycars-item-type">{{item.energyTpye | energyTpye}}</view>
-					<view class="mycars-item-sign" v-if="item.contractStatus==1">已签约</view>
-					<view class="mycars-item-sign1" v-if="item.contractStatus==0">未签约</view>
-					<view class="mycars-item-tool">
-						<span class="default" v-if="item.isDefault == 1" :class="{'isDefault':item.isDefault == 1}" @click="handlesetDefault(item.id)">默认</span>
-						<span class="default" v-else @click="handlesetDefault(item.id)">设为默认</span>
-						<span @click="handleDelCar(item.id, item.vehicleNo)">删除</span>
-					</view>
-				</view>
-			</view>
-		</view>
-		
-		<u-toast ref="uToast" />
-		<u-modal v-model="delCarshow" :show-cancel-button="true" @confirm="confirmDelCar" :content="delCarContent"></u-modal>
-		<u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
-	</view>
+  <view>
+    <u-navbar
+      title-color="#fff"
+      :custom-back="customBack"
+      :border-bottom="false"
+      back-icon-color="#CCE8FF"
+      :background="{ background: '#008CFF' }"
+      title="车辆管理"
+    ></u-navbar>
+    <view class="header">
+      <view class="header-title">我的车辆</view>
+    </view>
+    <view class="wrap">
+      <view class="statistics">
+        <view class="statistics-title">车辆</view>
+        <view class="statistics-center"></view>
+        <view class="statistics-number-wrap"
+          ><span class="number">{{ mycarsTotal }}</span
+          >辆</view
+        >
+      </view>
+      <view class="new-plate-number">
+        <view class="message-input-wrap" @click="messageInputClick">
+          <u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
+        </view>
+        <u-keyboard
+          ref="uKeyboard"
+          mode="car"
+          @change="keyboardChange"
+          @confirm="keyboardConfirm"
+          @backspace="backspace"
+          v-model="keyboardshow"
+        ></u-keyboard>
+      </view>
+      <view class="add-car-btn" @click="handleAddCar">添加车辆</view>
+      <view class="mycars">
+        <view class="mycars-item" v-for="(item, index) in mycars" :key="index">
+          <view class="mycars-item-name">{{ item.vehicleNo }}</view>
+          <view class="mycars-item-type">{{ item.energyTpye | energyTpye }}</view>
+          <view class="mycars-item-sign" v-if="item.contractStatus == 1">已签约</view>
+          <view class="mycars-item-sign1" v-if="item.contractStatus == 0">未签约</view>
+          <view class="mycars-item-tool">
+            <span class="default" v-if="item.isDefault == 1" :class="{ isDefault: item.isDefault == 1 }" @click="handlesetDefault(item.id)"
+              >默认</span
+            >
+            <span class="default" v-else @click="handlesetDefault(item.id)">设为默认</span>
+            <span @click="handleDelCar(item.id, item.vehicleNo)">删除</span>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <u-toast ref="uToast" />
+    <u-modal v-model="delCarshow" :show-cancel-button="true" @confirm="confirmDelCar" :content="delCarContent"></u-modal>
+    <u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
+  </view>
 </template>
 
 <script>
-	export default{
-		data(){
-			return{
-				keyboardshow:false,
-				delCarshow:false,
-				delCarId:null,
-				delCarContent:'',
-				newPlateNumber:'',
-				vehicleColor:0,
-				mycars:[],
-				mycarsTotal:0,
-				colorShow:false,
-				colorList:[
-					{text:'蓝色',colorCode:0}
-					,{text:'黄色',colorCode:1}
-					,{text:'黑色',colorCode:2}
-					,{text:'白色',colorCode:3}
-					,{text:'绿色',colorCode:4}
-					,{text:'其他',colorCode:99}
-				],
-			}
-		},
-		onLoad(){
-			this.handlegetMycars();
-		},
-		methods:{
-			customBack(){
-				uni.getStorage({
-				    key: 'messageBack',
-				    success: (res) => {
-							this.$u.route({
-								type: 'switchTab',
-								url: res.data
-							})
-				    },
-					fail:()=> {
-						this.$u.route({
-							type: 'switchTab',
-							url: 'pages/index/index'
-						})
-					}
-				})
-			},
-			// 获取车辆列表
-			handlegetMycars(){
-				this.$u.api.getMycars()
-					.then(res=>{
-						if (res.code === 200) {
-							this.mycars = res.data.rows;
-							this.mycarsTotal = res.data.total;
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error'
-							})
-						}
-					})
-					.catch(err=>{
-						this.$refs.uToast.show({
-							title: '操作失败!',
-							type: 'error'
-						})
-					});
-			},
-			// 添加车辆
-			handleAddCar(){
-				if(!this.$u.test.carNo(this.newPlateNumber)){
-					this.$refs.uToast.show({
-						title: '请正确填写车牌号',
-						type: 'error',
-					});
-					return
-				}
-				let param = {
-					vehicleNo: this.newPlateNumber,
-					vehicleColor: this.vehicleColor
-				};
-				this.$u.api.addCar(param)
-					.then(res=>{
-						if (res.code === 200) {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'success',
-							});
-							this.handlegetMycars();
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error',
-							});
-						}
-					})
-					.catch(err=>{
-						this.$refs.uToast.show({
-							title: '操作失败!',
-							type: 'error',
-						});
-					});
-			},
-			// 删除车辆
-			handleDelCar(id, content){
-				this.delCarContent = `是否删除${content}`;
-				this.delCarId = id;
-				this.delCarshow = true;
-				
-			},
-			// 确认删除
-			confirmDelCar(){
-				this.$u.api.delCar(this.delCarId)
-					.then(res=>{
-						if (res.code === 200) {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'success',
-							});
-							this.handlegetMycars();
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error',
-							});
-						}
-					})
-					.catch(err=>{
-						this.$refs.uToast.show({
-							title: '操作失败!',
-							type: 'error',
-						});
-					});				
-			},
-			// 点击输入框
-			messageInputClick(){
-				this.keyboardshow = true;
-			},
-			// 按键被点击(点击退格键不会触发此事件)
-			keyboardChange(val) {
-				// 将每次按键的值拼接到value变量中,注意+=写法
-				this.newPlateNumber += val;
-			},
-			// 退格键被点击
-			backspace() {
-				// 删除value的最后一个字符
-				if(this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
-			},
-			// 键盘输入完成后确认
-			keyboardConfirm(){
-				this.colorShow = true;
-			},
-			// 确认颜色
-			confirmColor(e){
-				this.vehicleColor = this.colorList[e].colorCode;
-			},
-			// 设置默认车辆操作
-			handlesetDefault(id){
-				this.$u.api.setDefaultCar({id:id})
-				.then(res=>{
-					if (res.code === 200) {
-						this.$refs.uToast.show({
-							title: res.msg,
-							type: 'success',
-						});
-						this.handlegetMycars();
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg,
-							type: 'error',
-						});
-					}
-				}).catch(err=>{
-					this.$refs.uToast.show({
-						title: '操作失败!',
-						type: 'error',
-					});
-				});	
-			}
-			
-		},
-	}
+export default {
+  data() {
+    return {
+      keyboardshow: false,
+      delCarshow: false,
+      delCarId: null,
+      delCarContent: '',
+      newPlateNumber: '',
+      vehicleColor: 0,
+      mycars: [],
+      mycarsTotal: 0,
+      colorShow: false,
+      colorList: [
+        { text: '蓝色', colorCode: 0 },
+        { text: '黄色', colorCode: 1 },
+        { text: '黑色', colorCode: 2 },
+        { text: '白色', colorCode: 3 },
+        { text: '绿色', colorCode: 4 },
+        { text: '其他', colorCode: 99 }
+      ]
+    };
+  },
+  onLoad() {
+    this.handlegetMycars();
+  },
+  methods: {
+    customBack() {
+      uni.getStorage({
+        key: 'messageBack',
+        success: (res) => {
+          this.$u.route({
+            type: 'switchTab',
+            url: res.data
+          });
+        },
+        fail: () => {
+          this.$u.route({
+            type: 'switchTab',
+            url: 'pages/index/index'
+          });
+        }
+      });
+    },
+    // 获取车辆列表
+    handlegetMycars() {
+      this.$u.api
+        .getMycars()
+        .then((res) => {
+          if (res.code === 200) {
+            this.mycars = res.data.rows;
+            this.mycarsTotal = res.data.total;
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败!',
+            type: 'error'
+          });
+        });
+    },
+    // 添加车辆
+    handleAddCar() {
+      if (!this.$u.test.carNo(this.newPlateNumber)) {
+        this.$refs.uToast.show({
+          title: '请正确填写车牌号',
+          type: 'error'
+        });
+        return;
+      }
+      let param = {
+        vehicleNo: this.newPlateNumber,
+        vehicleColor: this.vehicleColor
+      };
+      this.$u.api
+        .addCar(param)
+        .then((res) => {
+          if (res.code === 200) {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'success'
+            });
+            this.handlegetMycars();
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败!',
+            type: 'error'
+          });
+        });
+    },
+    // 删除车辆
+    handleDelCar(id, content) {
+      this.delCarContent = `是否删除${content}`;
+      this.delCarId = id;
+      this.delCarshow = true;
+    },
+    // 确认删除
+    confirmDelCar() {
+      this.$u.api
+        .delCar(this.delCarId)
+        .then((res) => {
+          if (res.code === 200) {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'success'
+            });
+            this.handlegetMycars();
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败!',
+            type: 'error'
+          });
+        });
+    },
+    // 点击输入框
+    messageInputClick() {
+      this.keyboardshow = true;
+    },
+    // 按键被点击(点击退格键不会触发此事件)
+    keyboardChange(val) {
+      // 将每次按键的值拼接到value变量中,注意+=写法
+      this.newPlateNumber += val;
+    },
+    // 退格键被点击
+    backspace() {
+      // 删除value的最后一个字符
+      if (this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
+    },
+    // 键盘输入完成后确认
+    keyboardConfirm() {
+      this.colorShow = true;
+    },
+    // 确认颜色
+    confirmColor(e) {
+      this.vehicleColor = this.colorList[e].colorCode;
+    },
+    // 设置默认车辆操作
+    handlesetDefault(id) {
+      this.$u.api
+        .setDefaultCar({ id: id })
+        .then((res) => {
+          if (res.code === 200) {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'success'
+            });
+            this.handlegetMycars();
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '操作失败!',
+            type: 'error'
+          });
+        });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import url("./myCars.scss");
+@import url('./myCars.scss');
 </style>

+ 75 - 67
pages/noninductivePay/addVehicle.vue

@@ -1,73 +1,81 @@
 <template>
-	<view>
-		<u-navbar
-		 title-color="#fff" 
-		 :custom-back="customBack" 
-		 :border-bottom="false" 
-		 back-icon-color="#CCE8FF" 
-		 :background="{background: '#008CFF' }" title="新增免密支付车牌"></u-navbar>
-		<view class="new-plate-number">
-			<view class="message-input-wrap" @click="messageInputClick">
-				<u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
-			</view>				
-			<u-keyboard ref="uKeyboard" mode="car" @change="keyboardChange" @confirm="keyboardConfirm" @backspace="backspace" v-model="keyboardshow"></u-keyboard>
-		</view>
-		
-		<u-toast ref="uToast" />
-		<u-modal v-model="delCarshow" :show-cancel-button="true" @confirm="confirmDelCar" :content="delCarContent"></u-modal>
-		<u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
-	</view>
+  <view>
+    <u-navbar
+      title-color="#fff"
+      :custom-back="customBack"
+      :border-bottom="false"
+      back-icon-color="#CCE8FF"
+      :background="{ background: '#008CFF' }"
+      title="新增免密支付车牌"
+    ></u-navbar>
+    <view class="new-plate-number">
+      <view class="message-input-wrap" @click="messageInputClick">
+        <u-message-input :maxlength="8" width="70" font-size="50" :disabled-keyboard="true" v-model="newPlateNumber"></u-message-input>
+      </view>
+      <u-keyboard
+        ref="uKeyboard"
+        mode="car"
+        @change="keyboardChange"
+        @confirm="keyboardConfirm"
+        @backspace="backspace"
+        v-model="keyboardshow"
+      ></u-keyboard>
+    </view>
+
+    <u-toast ref="uToast" />
+    <u-modal v-model="delCarshow" :show-cancel-button="true" @confirm="confirmDelCar" :content="delCarContent"></u-modal>
+    <u-action-sheet :list="colorList" @click="confirmColor" v-model="colorShow"></u-action-sheet>
+  </view>
 </template>
 
 <script>
-	export default{
-		data(){
-			return{
-				keyboardshow:false,
-				delCarshow:false,
-				colorShow:false,
-				delCarContent:'',
-				colorList:[
-					{text:'蓝色',colorCode:0}
-					,{text:'黄色',colorCode:1}
-					,{text:'黑色',colorCode:2}
-					,{text:'白色',colorCode:3}
-					,{text:'绿色',colorCode:4}
-					,{text:'其他',colorCode:99}
-				],
-			}
-		},
-		methods:{
-			customBack(){
-				this.$u.route({
-					type:'switchTab',
-					url: 'pages/index/index'
-				});
-			},
-			messageInputClick(){
-				this.keyboardshow = true;
-			},
-			// 按键被点击(点击退格键不会触发此事件)
-			keyboardChange(val) {
-				// 将每次按键的值拼接到value变量中,注意+=写法
-				this.newPlateNumber += val;
-				console.log(this.newPlateNumber);
-			},
-			// 退格键被点击
-			backspace() {
-				// 删除value的最后一个字符
-				if(this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
-				console.log(this.newPlateNumber);
-			},
-			keyboardConfirm(){
-				this.colorShow = true;
-			},
-			confirmColor(e){
-				this.vehicleColor = this.colorList[e].colorCode;
-			},
-		}
-	}
+export default {
+  data() {
+    return {
+      keyboardshow: false,
+      delCarshow: false,
+      colorShow: false,
+      delCarContent: '',
+      colorList: [
+        { text: '蓝色', colorCode: 0 },
+        { text: '黄色', colorCode: 1 },
+        { text: '黑色', colorCode: 2 },
+        { text: '白色', colorCode: 3 },
+        { text: '绿色', colorCode: 4 },
+        { text: '其他', colorCode: 99 }
+      ]
+    };
+  },
+  methods: {
+    customBack() {
+      this.$u.route({
+        type: 'switchTab',
+        url: 'pages/index/index'
+      });
+    },
+    messageInputClick() {
+      this.keyboardshow = true;
+    },
+    // 按键被点击(点击退格键不会触发此事件)
+    keyboardChange(val) {
+      // 将每次按键的值拼接到value变量中,注意+=写法
+      this.newPlateNumber += val;
+      console.log(this.newPlateNumber);
+    },
+    // 退格键被点击
+    backspace() {
+      // 删除value的最后一个字符
+      if (this.newPlateNumber.length) this.newPlateNumber = this.newPlateNumber.substr(0, this.newPlateNumber.length - 1);
+      console.log(this.newPlateNumber);
+    },
+    keyboardConfirm() {
+      this.colorShow = true;
+    },
+    confirmColor(e) {
+      this.vehicleColor = this.colorList[e].colorCode;
+    }
+  }
+};
 </script>
 
-<style>
-</style>
+<style></style>

+ 248 - 239
pages/parkadvance/parkadvance.scss

@@ -1,209 +1,209 @@
 .parking-lock {
-	height: calc(100vh - 88rpx);
-	background-color: #F6F6FF;
-	padding-top: 133rpx;
-	.parking-lock-title {
-		font-size: 46rpx;
-		color: #292929;
-		text-align: center;
-		padding-top: 31rpx;
-		line-height: 65rpx;
-		font-family: PingFangSC-Regular, PingFang SC;
-		font-weight: 400;
-	}
-	.parking-lock-tips {
-		width: calc(100% - 72rpx);
-		font-size: 30rpx;
-		color: #777777;
-		text-align: center;
-		margin: 10rpx auto;
-		line-height: 47rpx;
-	}
-	.parking-lock-info {
-		width: calc(100% - 72rpx);
-		margin: 31rpx auto 54rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		padding: 39rpx 41rpx;
-		.parking-lock-info-item {
-			display: flex;
-			margin-bottom: 16rpx;
-			view {
-				font-size: 28rpx;
-				&:first-child {
-					width: 30%;
-					color: #2A2A2A;
-					font-weight: 500;
-				}
-				&:last-child {
-					color: #6E6E6E;
-				}
-			}
-			.weight {
-				color: #2A2A2A!important;
-				font-weight: 500;
-			}
-			.really-money {
-				color: #FA7319!important;
-			}
-		}
-	}
-	.parking-lock-pay-btn {
-		width: calc(100% - 72rpx);
-		margin: 0 auto;
-		button {
-			width: 100%;
-			height: 100rpx;
-			line-height: 100rpx;
-			background-color: #008CFF;
-			border: none;
-			color: #fff;
-			box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
-			font-size: 28rpx;
-			font-weight: 500;
-		}
-	}
-	.parking-lock-begin-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(270deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		// animation: spin 3s linear infinite;
-		.parking-lock-begin-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-begin-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-loading-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(0deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		animation: spin 3s linear infinite;
-		.parking-lock-loading-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-loading-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-success {
-		.parking-lock-success-box {
-			width: 441rpx;
-			height: 441rpx;
-			margin: 0 auto;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-		.parking-lock-success-info {
-			color: #4CCD8A;
-			font-size: 50rpx;
-			text-align: center;
-			margin: 56rpx 0 202rpx;
-		}
-		.parking-lock-success-button {
-			width: calc(100% - 80rpx);
-			margin: 0 auto;
-			button {
-				width: 100%;
-				height: 100rpx;
-				line-height: 100rpx;
-				background-color: #008CFF;
-				font-size: 28rpx;
-				color: #fff;
-			}
-		}
-	}
+  height: calc(100vh - 88rpx);
+  background-color: #f6f6ff;
+  padding-top: 133rpx;
+  .parking-lock-title {
+    font-size: 46rpx;
+    color: #292929;
+    text-align: center;
+    padding-top: 31rpx;
+    line-height: 65rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+  }
+  .parking-lock-tips {
+    width: calc(100% - 72rpx);
+    font-size: 30rpx;
+    color: #777777;
+    text-align: center;
+    margin: 10rpx auto;
+    line-height: 47rpx;
+  }
+  .parking-lock-info {
+    width: calc(100% - 72rpx);
+    margin: 31rpx auto 54rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    padding: 39rpx 41rpx;
+    .parking-lock-info-item {
+      display: flex;
+      margin-bottom: 16rpx;
+      view {
+        font-size: 28rpx;
+        &:first-child {
+          width: 30%;
+          color: #2a2a2a;
+          font-weight: 500;
+        }
+        &:last-child {
+          color: #6e6e6e;
+        }
+      }
+      .weight {
+        color: #2a2a2a !important;
+        font-weight: 500;
+      }
+      .really-money {
+        color: #fa7319 !important;
+      }
+    }
+  }
+  .parking-lock-pay-btn {
+    width: calc(100% - 72rpx);
+    margin: 0 auto;
+    button {
+      width: 100%;
+      height: 100rpx;
+      line-height: 100rpx;
+      background-color: #008cff;
+      border: none;
+      color: #fff;
+      box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
+      font-size: 28rpx;
+      font-weight: 500;
+    }
+  }
+  .parking-lock-begin-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(270deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    // animation: spin 3s linear infinite;
+    .parking-lock-begin-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-begin-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-loading-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(0deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    animation: spin 3s linear infinite;
+    .parking-lock-loading-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-loading-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-success {
+    .parking-lock-success-box {
+      width: 441rpx;
+      height: 441rpx;
+      margin: 0 auto;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .parking-lock-success-info {
+      color: #4ccd8a;
+      font-size: 50rpx;
+      text-align: center;
+      margin: 56rpx 0 202rpx;
+    }
+    .parking-lock-success-button {
+      width: calc(100% - 80rpx);
+      margin: 0 auto;
+      button {
+        width: 100%;
+        height: 100rpx;
+        line-height: 100rpx;
+        background-color: #008cff;
+        font-size: 28rpx;
+        color: #fff;
+      }
+    }
+  }
 }
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
 }
 @keyframes rotate {
-    0%{
-        transform: rotate(0);
-    }
-    50% {
-    	transform:rotate(200deg);
-    }
-    100% {
-        transform: rotate(0);
-	}
+  0% {
+    transform: rotate(0);
+  }
+  50% {
+    transform: rotate(200deg);
+  }
+  100% {
+    transform: rotate(0);
+  }
 }
 @keyframes spin {
   from {
     transform: rotate(0);
   }
-  to{
+  to {
     transform: rotate(359deg);
   }
 }
-.loadingSelect{
-	    text-align: center;
-	    margin-top: 20rpx;
+.loadingSelect {
+  text-align: center;
+  margin-top: 20rpx;
 }
 .spinner {
   margin: auto;
@@ -212,89 +212,98 @@
   text-align: center;
   font-size: 10px;
 }
- 
+
 .spinner > view {
-  background-color: #6495ED;
+  background-color: #6495ed;
   height: 100%;
   width: 10rpx;
   margin-right: 2rpx;
   display: inline-block;
-   
+
   -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
   animation: stretchdelay 1.2s infinite ease-in-out;
 }
- 
+
 .spinner .rect2 {
   -webkit-animation-delay: -1.1s;
   animation-delay: -1.1s;
 }
- 
+
 .spinner .rect3 {
-  -webkit-animation-delay: -1.0s;
-  animation-delay: -1.0s;
+  -webkit-animation-delay: -1s;
+  animation-delay: -1s;
 }
- 
+
 .spinner .rect4 {
   -webkit-animation-delay: -0.9s;
   animation-delay: -0.9s;
 }
- 
+
 .spinner .rect5 {
   -webkit-animation-delay: -0.8s;
   animation-delay: -0.8s;
 }
- 
+
 @-webkit-keyframes stretchdelay {
-  0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 
-  20% { -webkit-transform: scaleY(1.0) }
+  0%,
+  40%,
+  100% {
+    -webkit-transform: scaleY(0.4);
+  }
+  20% {
+    -webkit-transform: scaleY(1);
+  }
 }
- 
+
 @keyframes stretchdelay {
-  0%, 40%, 100% {
+  0%,
+  40%,
+  100% {
     transform: scaleY(0.4);
     -webkit-transform: scaleY(0.4);
-  }  20% {
-    transform: scaleY(1.0);
-    -webkit-transform: scaleY(1.0);
   }
+  20% {
+    transform: scaleY(1);
+    -webkit-transform: scaleY(1);
+  }
+}
+.new-plate-number {
+  margin-bottom: 70rpx;
 }
-.new-plate-number{	
-	margin-bottom: 70rpx;
+.message-input-wrap {
+  margin: 0 -40rpx;
 }
-.message-input-wrap{
-	margin: 0 -40rpx;
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item {
+  background-color: #e8ffe8;
 }
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
+.really-license-txt {
+  color: #008cff;
 }
-.really-license-txt{
-	color: #008CFF;
+.really-license-txt1 {
+  color: #008cff;
+  margin: 20rpx;
 }
-.really-license-txt1{
-	color: #008CFF;
-	margin: 20rpx;
+.popup-vehicleNo-title {
+  font-size: 48rpx;
+  text-align: center;
+  padding-top: 20rpx;
 }
-.popup-vehicleNo-title{
-	font-size: 48rpx;
-	text-align: center;
-	padding-top: 20rpx;
+.popup-vehicleNo-center {
+  width: 95%;
+  height: 2rpx;
+  border-top: solid rgb(146, 146, 146) 2rpx;
+  margin: 30rpx 20rpx 50rpx 20rpx;
 }
-.popup-vehicleNo-center{
-	width: 95%;
-	height: 2rpx;
-	border-top: solid rgb(146, 146, 146) 2rpx;
-	margin: 30rpx 20rpx 50rpx 20rpx;
+.popup-vehicleNo-select {
+  text-align: center;
+  color: #777777;
 }
-.popup-vehicleNo-select{
-	text-align: center;
-	color: #777777;
+.vehicleNo-btn {
+  display: flex;
+  margin: 40rpx 0;
 }
-.vehicleNo-btn{
-	display: flex;
-	margin: 40rpx 0;
+.parking-lock-pay-attention {
+  margin: 50rpx;
+  line-height: 48rpx;
+  color: #777777;
 }
-.parking-lock-pay-attention{
-	margin: 50rpx;
-	line-height: 48rpx;
-	color: #777777;
-}

+ 82 - 88
pages/parkadvance/parkadvance.vue

@@ -1,96 +1,90 @@
 <template>
-	<!-- 地磁 -->
-	<view class="parking-lock">
-		<!-- 地磁支付 -->
-		<template >
-			<view class="parking-lock-pay" v-if="infoData">
-				<!-- <view class="parking-lock-title">支付停车费</view> -->
-				<!-- <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view> -->
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>停车场</view>
-						<view class="weight">{{ infoData.parkName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<input  type="text" placeholder="请输入车牌" v-model="formInfo.vehicleNo" />
-					</view>
-				</view>
-				<view class="parking-lock-pay-btn">
-					<button type="default" @click="onSearchClick">查询</button>
-				</view>
-			</view>
-			<view v-else>
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>入口无车辆</view>
-					</view>
-				</view>
-			</view>
-		</template>
-	</view>
+  <!-- 地磁 -->
+  <view class="parking-lock">
+    <!-- 地磁支付 -->
+    <template>
+      <view class="parking-lock-pay" v-if="infoData">
+        <!-- <view class="parking-lock-title">支付停车费</view> -->
+        <!-- <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view> -->
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>停车场</view>
+            <view class="weight">{{ infoData.parkName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <input type="text" placeholder="请输入车牌" v-model="formInfo.vehicleNo" />
+          </view>
+        </view>
+        <view class="parking-lock-pay-btn">
+          <button type="default" @click="onSearchClick">查询</button>
+        </view>
+      </view>
+      <view v-else>
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>入口无车辆</view>
+          </view>
+        </view>
+      </view>
+    </template>
+  </view>
 </template>
 
 <script>
-	export default {
-		components: {
-		},
-		data() {
-			return {
-				intoInfo:{
-					parkNo: ''
-				},
-				formInfo:{
-					vehicleNo : ''
-				},
-				infoData:undefined
-			}
-		},
-		onLoad(page) {
-			this.intoInfo.parkNo = page?.parkNo;
-		},
-		onShow() {
-			this.getOrderDetails(this.intoInfo.parkNo);
-		},
-		onUnload() {
-			
-		},
-		methods: {
-			onSearchClick(){
-				let askParams = {
-					parkNo: this.intoInfo.parkNo,
-					vehicleNo: this.formInfo.vehicleNo
-				}
-				this.$u.api.getAdvanceInfoApi(askParams).then(res => {
-					if (res.code === 200 ) {
-						
-					} else {
-						
-					}
-				})
-			},
-			/**
-			 * 查询订单信息
-			 * @param { String } tqgThree 车位ID
-			 * @param { String } orderId 订单id
-			 * @param { String } payeeId 收费员ID
-			 */
-			getOrderDetails(parkNo) {
-				this.$u.api.getDetailAdvanceApi({parkNo}).then(res => {
-					if (res.code === 200 ) {
-						this.infoData = res.data
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '订单无数据',
-							type: 'error',
-						});
-					}
-				})
-			}
-	
-		}
-	}
+export default {
+  components: {},
+  data() {
+    return {
+      intoInfo: {
+        parkNo: ''
+      },
+      formInfo: {
+        vehicleNo: ''
+      },
+      infoData: undefined
+    };
+  },
+  onLoad(page) {
+    this.intoInfo.parkNo = page?.parkNo;
+  },
+  onShow() {
+    this.getOrderDetails(this.intoInfo.parkNo);
+  },
+  onUnload() {},
+  methods: {
+    onSearchClick() {
+      let askParams = {
+        parkNo: this.intoInfo.parkNo,
+        vehicleNo: this.formInfo.vehicleNo
+      };
+      this.$u.api.getAdvanceInfoApi(askParams).then((res) => {
+        if (res.code === 200) {
+        } else {
+        }
+      });
+    },
+    /**
+     * 查询订单信息
+     * @param { String } tqgThree 车位ID
+     * @param { String } orderId 订单id
+     * @param { String } payeeId 收费员ID
+     */
+    getOrderDetails(parkNo) {
+      this.$u.api.getDetailAdvanceApi({ parkNo }).then((res) => {
+        if (res.code === 200) {
+          this.infoData = res.data;
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg || '订单无数据',
+            type: 'error'
+          });
+        }
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './parkadvance.scss';
+@import './parkadvance.scss';
 </style>

+ 248 - 239
pages/parkentrace/parkentrace.scss

@@ -1,209 +1,209 @@
 .parking-lock {
-	height: calc(100vh - 88rpx);
-	background-color: #F6F6FF;
-	padding-top: 133rpx;
-	.parking-lock-title {
-		font-size: 46rpx;
-		color: #292929;
-		text-align: center;
-		padding-top: 31rpx;
-		line-height: 65rpx;
-		font-family: PingFangSC-Regular, PingFang SC;
-		font-weight: 400;
-	}
-	.parking-lock-tips {
-		width: calc(100% - 72rpx);
-		font-size: 30rpx;
-		color: #777777;
-		text-align: center;
-		margin: 10rpx auto;
-		line-height: 47rpx;
-	}
-	.parking-lock-info {
-		width: calc(100% - 72rpx);
-		margin: 31rpx auto 54rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		padding: 39rpx 41rpx;
-		.parking-lock-info-item {
-			display: flex;
-			margin-bottom: 16rpx;
-			view {
-				font-size: 28rpx;
-				&:first-child {
-					width: 30%;
-					color: #2A2A2A;
-					font-weight: 500;
-				}
-				&:last-child {
-					color: #6E6E6E;
-				}
-			}
-			.weight {
-				color: #2A2A2A!important;
-				font-weight: 500;
-			}
-			.really-money {
-				color: #FA7319!important;
-			}
-		}
-	}
-	.parking-lock-pay-btn {
-		width: calc(100% - 72rpx);
-		margin: 0 auto;
-		button {
-			width: 100%;
-			height: 100rpx;
-			line-height: 100rpx;
-			background-color: #008CFF;
-			border: none;
-			color: #fff;
-			box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
-			font-size: 28rpx;
-			font-weight: 500;
-		}
-	}
-	.parking-lock-begin-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(270deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		// animation: spin 3s linear infinite;
-		.parking-lock-begin-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-begin-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-loading-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(0deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		animation: spin 3s linear infinite;
-		.parking-lock-loading-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-loading-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-success {
-		.parking-lock-success-box {
-			width: 441rpx;
-			height: 441rpx;
-			margin: 0 auto;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-		.parking-lock-success-info {
-			color: #4CCD8A;
-			font-size: 50rpx;
-			text-align: center;
-			margin: 56rpx 0 202rpx;
-		}
-		.parking-lock-success-button {
-			width: calc(100% - 80rpx);
-			margin: 0 auto;
-			button {
-				width: 100%;
-				height: 100rpx;
-				line-height: 100rpx;
-				background-color: #008CFF;
-				font-size: 28rpx;
-				color: #fff;
-			}
-		}
-	}
+  height: calc(100vh - 88rpx);
+  background-color: #f6f6ff;
+  padding-top: 133rpx;
+  .parking-lock-title {
+    font-size: 46rpx;
+    color: #292929;
+    text-align: center;
+    padding-top: 31rpx;
+    line-height: 65rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+  }
+  .parking-lock-tips {
+    width: calc(100% - 72rpx);
+    font-size: 30rpx;
+    color: #777777;
+    text-align: center;
+    margin: 10rpx auto;
+    line-height: 47rpx;
+  }
+  .parking-lock-info {
+    width: calc(100% - 72rpx);
+    margin: 31rpx auto 54rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    padding: 39rpx 41rpx;
+    .parking-lock-info-item {
+      display: flex;
+      margin-bottom: 16rpx;
+      view {
+        font-size: 28rpx;
+        &:first-child {
+          width: 30%;
+          color: #2a2a2a;
+          font-weight: 500;
+        }
+        &:last-child {
+          color: #6e6e6e;
+        }
+      }
+      .weight {
+        color: #2a2a2a !important;
+        font-weight: 500;
+      }
+      .really-money {
+        color: #fa7319 !important;
+      }
+    }
+  }
+  .parking-lock-pay-btn {
+    width: calc(100% - 72rpx);
+    margin: 0 auto;
+    button {
+      width: 100%;
+      height: 100rpx;
+      line-height: 100rpx;
+      background-color: #008cff;
+      border: none;
+      color: #fff;
+      box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
+      font-size: 28rpx;
+      font-weight: 500;
+    }
+  }
+  .parking-lock-begin-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(270deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    // animation: spin 3s linear infinite;
+    .parking-lock-begin-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-begin-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-loading-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(0deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    animation: spin 3s linear infinite;
+    .parking-lock-loading-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-loading-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-success {
+    .parking-lock-success-box {
+      width: 441rpx;
+      height: 441rpx;
+      margin: 0 auto;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .parking-lock-success-info {
+      color: #4ccd8a;
+      font-size: 50rpx;
+      text-align: center;
+      margin: 56rpx 0 202rpx;
+    }
+    .parking-lock-success-button {
+      width: calc(100% - 80rpx);
+      margin: 0 auto;
+      button {
+        width: 100%;
+        height: 100rpx;
+        line-height: 100rpx;
+        background-color: #008cff;
+        font-size: 28rpx;
+        color: #fff;
+      }
+    }
+  }
 }
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
 }
 @keyframes rotate {
-    0%{
-        transform: rotate(0);
-    }
-    50% {
-    	transform:rotate(200deg);
-    }
-    100% {
-        transform: rotate(0);
-	}
+  0% {
+    transform: rotate(0);
+  }
+  50% {
+    transform: rotate(200deg);
+  }
+  100% {
+    transform: rotate(0);
+  }
 }
 @keyframes spin {
   from {
     transform: rotate(0);
   }
-  to{
+  to {
     transform: rotate(359deg);
   }
 }
-.loadingSelect{
-	    text-align: center;
-	    margin-top: 20rpx;
+.loadingSelect {
+  text-align: center;
+  margin-top: 20rpx;
 }
 .spinner {
   margin: auto;
@@ -212,89 +212,98 @@
   text-align: center;
   font-size: 10px;
 }
- 
+
 .spinner > view {
-  background-color: #6495ED;
+  background-color: #6495ed;
   height: 100%;
   width: 10rpx;
   margin-right: 2rpx;
   display: inline-block;
-   
+
   -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
   animation: stretchdelay 1.2s infinite ease-in-out;
 }
- 
+
 .spinner .rect2 {
   -webkit-animation-delay: -1.1s;
   animation-delay: -1.1s;
 }
- 
+
 .spinner .rect3 {
-  -webkit-animation-delay: -1.0s;
-  animation-delay: -1.0s;
+  -webkit-animation-delay: -1s;
+  animation-delay: -1s;
 }
- 
+
 .spinner .rect4 {
   -webkit-animation-delay: -0.9s;
   animation-delay: -0.9s;
 }
- 
+
 .spinner .rect5 {
   -webkit-animation-delay: -0.8s;
   animation-delay: -0.8s;
 }
- 
+
 @-webkit-keyframes stretchdelay {
-  0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 
-  20% { -webkit-transform: scaleY(1.0) }
+  0%,
+  40%,
+  100% {
+    -webkit-transform: scaleY(0.4);
+  }
+  20% {
+    -webkit-transform: scaleY(1);
+  }
 }
- 
+
 @keyframes stretchdelay {
-  0%, 40%, 100% {
+  0%,
+  40%,
+  100% {
     transform: scaleY(0.4);
     -webkit-transform: scaleY(0.4);
-  }  20% {
-    transform: scaleY(1.0);
-    -webkit-transform: scaleY(1.0);
   }
+  20% {
+    transform: scaleY(1);
+    -webkit-transform: scaleY(1);
+  }
+}
+.new-plate-number {
+  margin-bottom: 70rpx;
 }
-.new-plate-number{	
-	margin-bottom: 70rpx;
+.message-input-wrap {
+  margin: 0 -40rpx;
 }
-.message-input-wrap{
-	margin: 0 -40rpx;
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item {
+  background-color: #e8ffe8;
 }
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
+.really-license-txt {
+  color: #008cff;
 }
-.really-license-txt{
-	color: #008CFF;
+.really-license-txt1 {
+  color: #008cff;
+  margin: 20rpx;
 }
-.really-license-txt1{
-	color: #008CFF;
-	margin: 20rpx;
+.popup-vehicleNo-title {
+  font-size: 48rpx;
+  text-align: center;
+  padding-top: 20rpx;
 }
-.popup-vehicleNo-title{
-	font-size: 48rpx;
-	text-align: center;
-	padding-top: 20rpx;
+.popup-vehicleNo-center {
+  width: 95%;
+  height: 2rpx;
+  border-top: solid rgb(146, 146, 146) 2rpx;
+  margin: 30rpx 20rpx 50rpx 20rpx;
 }
-.popup-vehicleNo-center{
-	width: 95%;
-	height: 2rpx;
-	border-top: solid rgb(146, 146, 146) 2rpx;
-	margin: 30rpx 20rpx 50rpx 20rpx;
+.popup-vehicleNo-select {
+  text-align: center;
+  color: #777777;
 }
-.popup-vehicleNo-select{
-	text-align: center;
-	color: #777777;
+.vehicleNo-btn {
+  display: flex;
+  margin: 40rpx 0;
 }
-.vehicleNo-btn{
-	display: flex;
-	margin: 40rpx 0;
+.parking-lock-pay-attention {
+  margin: 50rpx;
+  line-height: 48rpx;
+  color: #777777;
 }
-.parking-lock-pay-attention{
-	margin: 50rpx;
-	line-height: 48rpx;
-	color: #777777;
-}

+ 102 - 107
pages/parkentrace/parkentrace.vue

@@ -1,115 +1,110 @@
 <template>
-	<!-- 地磁 -->
-	<view class="parking-lock">
-		<!-- 地磁支付 -->
-		<template >
-			<view class="parking-lock-pay" v-if="infoData">
-				<!-- <view class="parking-lock-title">支付停车费</view> -->
-				<!-- <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view> -->
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>停车场</view>
-						<view class="weight">{{ infoData.parkingName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入口名称</view>
-						<view>{{infoData.entranceName }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>通道名称</view>
-						<view>{{infoData.roadwayName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场时间</view>
-						<view>{{infoData.inTime}}</view>
-					</view>
-				</view>
-				<view class="parking-lock-pay-btn">
-					<button type="default" @click="onEntraceClick">立即入场</button>
-				</view>
-			</view>
-			<view v-else>
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>入口无车辆</view>
-					</view>
-				</view>
-			</view>
-		</template>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 地磁 -->
+  <view class="parking-lock">
+    <!-- 地磁支付 -->
+    <template>
+      <view class="parking-lock-pay" v-if="infoData">
+        <!-- <view class="parking-lock-title">支付停车费</view> -->
+        <!-- <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view> -->
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>停车场</view>
+            <view class="weight">{{ infoData.parkingName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入口名称</view>
+            <view>{{ infoData.entranceName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>通道名称</view>
+            <view>{{ infoData.roadwayName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场时间</view>
+            <view>{{ infoData.inTime }}</view>
+          </view>
+        </view>
+        <view class="parking-lock-pay-btn">
+          <button type="default" @click="onEntraceClick">立即入场</button>
+        </view>
+      </view>
+      <view v-else>
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>入口无车辆</view>
+          </view>
+        </view>
+      </view>
+    </template>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		components: {
-		},
-		data() {
-			return {
-				intoInfo:{
-					parkNo: '',
-					roadwayNo:''
-				},
-				infoData:undefined
-			}
-		},
-		onLoad(page) {
-			this.intoInfo.parkNo = page?.parkNo;
-			this.intoInfo.roadwayNo = page?.roadwayNo;
-		},
-		onShow() {
-			this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
-		},
-		onUnload() {
-			
-		},
-		methods: {
-			onEntraceClick(){
-				let askParams = {
-					orderId: this.infoData.id
-				}
-				
-				this.$u.api.entranceByNoVehicleApi(askParams).then(res => {
-					if (res.code === 200 ) {
-						this.$refs.uToast.show({
-							title: res.msg || '入场成功',
-							type: 'success',
-						});
-						uni.reLaunch({
-						    url: '/pages/parkroadgate/parkroadgate'
-						});
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '入场失败',
-							type: 'error',
-						});
-					}
-				})
-				
-			},
-			/**
-			 * 查询订单信息
-			 * @param { String } tqgThree 车位ID
-			 * @param { String } orderId 订单id
-			 * @param { String } payeeId 收费员ID
-			 */
-			getOrderDetails(parkNo, roadwayNo) {
-				this.$u.api.getDetailEntranceApi({parkNo,roadwayNo}).then(res => {
-					if (res.code === 200 ) {
-						this.infoData = res.data
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '订单无数据',
-							type: 'error',
-						});
-					}
-				})
-			}
-	
-		}
-	}
+export default {
+  components: {},
+  data() {
+    return {
+      intoInfo: {
+        parkNo: '',
+        roadwayNo: ''
+      },
+      infoData: undefined
+    };
+  },
+  onLoad(page) {
+    this.intoInfo.parkNo = page?.parkNo;
+    this.intoInfo.roadwayNo = page?.roadwayNo;
+  },
+  onShow() {
+    this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
+  },
+  onUnload() {},
+  methods: {
+    onEntraceClick() {
+      let askParams = {
+        orderId: this.infoData.id
+      };
+
+      this.$u.api.entranceByNoVehicleApi(askParams).then((res) => {
+        if (res.code === 200) {
+          this.$refs.uToast.show({
+            title: res.msg || '入场成功',
+            type: 'success'
+          });
+          uni.reLaunch({
+            url: '/pages/parkroadgate/parkroadgate'
+          });
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg || '入场失败',
+            type: 'error'
+          });
+        }
+      });
+    },
+    /**
+     * 查询订单信息
+     * @param { String } tqgThree 车位ID
+     * @param { String } orderId 订单id
+     * @param { String } payeeId 收费员ID
+     */
+    getOrderDetails(parkNo, roadwayNo) {
+      this.$u.api.getDetailEntranceApi({ parkNo, roadwayNo }).then((res) => {
+        if (res.code === 200) {
+          this.infoData = res.data;
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg || '订单无数据',
+            type: 'error'
+          });
+        }
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './parkentrace.scss';
+@import './parkentrace.scss';
 </style>

+ 248 - 239
pages/parkexport/parkexport.scss

@@ -1,209 +1,209 @@
 .parking-lock {
-	height: calc(100vh - 88rpx);
-	background-color: #F6F6FF;
-	padding-top: 133rpx;
-	.parking-lock-title {
-		font-size: 46rpx;
-		color: #292929;
-		text-align: center;
-		padding-top: 31rpx;
-		line-height: 65rpx;
-		font-family: PingFangSC-Regular, PingFang SC;
-		font-weight: 400;
-	}
-	.parking-lock-tips {
-		width: calc(100% - 72rpx);
-		font-size: 30rpx;
-		color: #777777;
-		text-align: center;
-		margin: 10rpx auto;
-		line-height: 47rpx;
-	}
-	.parking-lock-info {
-		width: calc(100% - 72rpx);
-		margin: 31rpx auto 54rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		padding: 39rpx 41rpx;
-		.parking-lock-info-item {
-			display: flex;
-			margin-bottom: 16rpx;
-			view {
-				font-size: 28rpx;
-				&:first-child {
-					width: 30%;
-					color: #2A2A2A;
-					font-weight: 500;
-				}
-				&:last-child {
-					color: #6E6E6E;
-				}
-			}
-			.weight {
-				color: #2A2A2A!important;
-				font-weight: 500;
-			}
-			.really-money {
-				color: #FA7319!important;
-			}
-		}
-	}
-	.parking-lock-pay-btn {
-		width: calc(100% - 72rpx);
-		margin: 0 auto;
-		button {
-			width: 100%;
-			height: 100rpx;
-			line-height: 100rpx;
-			background-color: #008CFF;
-			border: none;
-			color: #fff;
-			box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
-			font-size: 28rpx;
-			font-weight: 500;
-		}
-	}
-	.parking-lock-begin-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(270deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		// animation: spin 3s linear infinite;
-		.parking-lock-begin-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-begin-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-loading-box {
-		width: 441rpx;
-		height: 441rpx;
-		line-height: 441rpx;
-		background: #31A2FF;
-		background: linear-gradient(0deg, rgba(49,162,255,0.1) 20%, rgba(49,162,255,1) 100%);
-		border-radius: 50%;
-		text-align: center;
-		margin: 0 auto;
-		animation: spin 3s linear infinite;
-		.parking-lock-loading-bg {
-			display: inline-block;
-			width: 420rpx;
-			height: 420rpx;
-			line-height: 420rpx;
-			vertical-align: middle;
-			border: solid 12rpx #fff;
-			background: linear-gradient(346deg, #008CFF 0%, #95CFFF 100%);
-			border-radius: 50%;
-			image {
-				width: 194rpx;
-				height: 239rpx;
-				vertical-align: middle;
-			}
-		}
-	}
-	.parking-lock-loading-info {
-		text-align: center;
-		font-size: 50rpx;
-		color: #008CFF;
-		margin-top: 57rpx;
-	}
-	.parking-lock-success {
-		.parking-lock-success-box {
-			width: 441rpx;
-			height: 441rpx;
-			margin: 0 auto;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-		.parking-lock-success-info {
-			color: #4CCD8A;
-			font-size: 50rpx;
-			text-align: center;
-			margin: 56rpx 0 202rpx;
-		}
-		.parking-lock-success-button {
-			width: calc(100% - 80rpx);
-			margin: 0 auto;
-			button {
-				width: 100%;
-				height: 100rpx;
-				line-height: 100rpx;
-				background-color: #008CFF;
-				font-size: 28rpx;
-				color: #fff;
-			}
-		}
-	}
+  height: calc(100vh - 88rpx);
+  background-color: #f6f6ff;
+  padding-top: 133rpx;
+  .parking-lock-title {
+    font-size: 46rpx;
+    color: #292929;
+    text-align: center;
+    padding-top: 31rpx;
+    line-height: 65rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+  }
+  .parking-lock-tips {
+    width: calc(100% - 72rpx);
+    font-size: 30rpx;
+    color: #777777;
+    text-align: center;
+    margin: 10rpx auto;
+    line-height: 47rpx;
+  }
+  .parking-lock-info {
+    width: calc(100% - 72rpx);
+    margin: 31rpx auto 54rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    padding: 39rpx 41rpx;
+    .parking-lock-info-item {
+      display: flex;
+      margin-bottom: 16rpx;
+      view {
+        font-size: 28rpx;
+        &:first-child {
+          width: 30%;
+          color: #2a2a2a;
+          font-weight: 500;
+        }
+        &:last-child {
+          color: #6e6e6e;
+        }
+      }
+      .weight {
+        color: #2a2a2a !important;
+        font-weight: 500;
+      }
+      .really-money {
+        color: #fa7319 !important;
+      }
+    }
+  }
+  .parking-lock-pay-btn {
+    width: calc(100% - 72rpx);
+    margin: 0 auto;
+    button {
+      width: 100%;
+      height: 100rpx;
+      line-height: 100rpx;
+      background-color: #008cff;
+      border: none;
+      color: #fff;
+      box-shadow: 0px 7px 13px 0px rgba(16, 153, 250, 0.31);
+      font-size: 28rpx;
+      font-weight: 500;
+    }
+  }
+  .parking-lock-begin-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(270deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    // animation: spin 3s linear infinite;
+    .parking-lock-begin-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-begin-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-loading-box {
+    width: 441rpx;
+    height: 441rpx;
+    line-height: 441rpx;
+    background: #31a2ff;
+    background: linear-gradient(0deg, rgba(49, 162, 255, 0.1) 20%, rgba(49, 162, 255, 1) 100%);
+    border-radius: 50%;
+    text-align: center;
+    margin: 0 auto;
+    animation: spin 3s linear infinite;
+    .parking-lock-loading-bg {
+      display: inline-block;
+      width: 420rpx;
+      height: 420rpx;
+      line-height: 420rpx;
+      vertical-align: middle;
+      border: solid 12rpx #fff;
+      background: linear-gradient(346deg, #008cff 0%, #95cfff 100%);
+      border-radius: 50%;
+      image {
+        width: 194rpx;
+        height: 239rpx;
+        vertical-align: middle;
+      }
+    }
+  }
+  .parking-lock-loading-info {
+    text-align: center;
+    font-size: 50rpx;
+    color: #008cff;
+    margin-top: 57rpx;
+  }
+  .parking-lock-success {
+    .parking-lock-success-box {
+      width: 441rpx;
+      height: 441rpx;
+      margin: 0 auto;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .parking-lock-success-info {
+      color: #4ccd8a;
+      font-size: 50rpx;
+      text-align: center;
+      margin: 56rpx 0 202rpx;
+    }
+    .parking-lock-success-button {
+      width: calc(100% - 80rpx);
+      margin: 0 auto;
+      button {
+        width: 100%;
+        height: 100rpx;
+        line-height: 100rpx;
+        background-color: #008cff;
+        font-size: 28rpx;
+        color: #fff;
+      }
+    }
+  }
 }
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
 }
 @keyframes rotate {
-    0%{
-        transform: rotate(0);
-    }
-    50% {
-    	transform:rotate(200deg);
-    }
-    100% {
-        transform: rotate(0);
-	}
+  0% {
+    transform: rotate(0);
+  }
+  50% {
+    transform: rotate(200deg);
+  }
+  100% {
+    transform: rotate(0);
+  }
 }
 @keyframes spin {
   from {
     transform: rotate(0);
   }
-  to{
+  to {
     transform: rotate(359deg);
   }
 }
-.loadingSelect{
-	    text-align: center;
-	    margin-top: 20rpx;
+.loadingSelect {
+  text-align: center;
+  margin-top: 20rpx;
 }
 .spinner {
   margin: auto;
@@ -212,89 +212,98 @@
   text-align: center;
   font-size: 10px;
 }
- 
+
 .spinner > view {
-  background-color: #6495ED;
+  background-color: #6495ed;
   height: 100%;
   width: 10rpx;
   margin-right: 2rpx;
   display: inline-block;
-   
+
   -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
   animation: stretchdelay 1.2s infinite ease-in-out;
 }
- 
+
 .spinner .rect2 {
   -webkit-animation-delay: -1.1s;
   animation-delay: -1.1s;
 }
- 
+
 .spinner .rect3 {
-  -webkit-animation-delay: -1.0s;
-  animation-delay: -1.0s;
+  -webkit-animation-delay: -1s;
+  animation-delay: -1s;
 }
- 
+
 .spinner .rect4 {
   -webkit-animation-delay: -0.9s;
   animation-delay: -0.9s;
 }
- 
+
 .spinner .rect5 {
   -webkit-animation-delay: -0.8s;
   animation-delay: -0.8s;
 }
- 
+
 @-webkit-keyframes stretchdelay {
-  0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 
-  20% { -webkit-transform: scaleY(1.0) }
+  0%,
+  40%,
+  100% {
+    -webkit-transform: scaleY(0.4);
+  }
+  20% {
+    -webkit-transform: scaleY(1);
+  }
 }
- 
+
 @keyframes stretchdelay {
-  0%, 40%, 100% {
+  0%,
+  40%,
+  100% {
     transform: scaleY(0.4);
     -webkit-transform: scaleY(0.4);
-  }  20% {
-    transform: scaleY(1.0);
-    -webkit-transform: scaleY(1.0);
   }
+  20% {
+    transform: scaleY(1);
+    -webkit-transform: scaleY(1);
+  }
+}
+.new-plate-number {
+  margin-bottom: 70rpx;
 }
-.new-plate-number{	
-	margin-bottom: 70rpx;
+.message-input-wrap {
+  margin: 0 -40rpx;
 }
-.message-input-wrap{
-	margin: 0 -40rpx;
+.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item {
+  background-color: #e8ffe8;
 }
-.message-input-wrap /deep/ .u-input ~ uni-view:last-of-type .u-char-item{
-	background-color: #E8FFE8;
+.really-license-txt {
+  color: #008cff;
 }
-.really-license-txt{
-	color: #008CFF;
+.really-license-txt1 {
+  color: #008cff;
+  margin: 20rpx;
 }
-.really-license-txt1{
-	color: #008CFF;
-	margin: 20rpx;
+.popup-vehicleNo-title {
+  font-size: 48rpx;
+  text-align: center;
+  padding-top: 20rpx;
 }
-.popup-vehicleNo-title{
-	font-size: 48rpx;
-	text-align: center;
-	padding-top: 20rpx;
+.popup-vehicleNo-center {
+  width: 95%;
+  height: 2rpx;
+  border-top: solid rgb(146, 146, 146) 2rpx;
+  margin: 30rpx 20rpx 50rpx 20rpx;
 }
-.popup-vehicleNo-center{
-	width: 95%;
-	height: 2rpx;
-	border-top: solid rgb(146, 146, 146) 2rpx;
-	margin: 30rpx 20rpx 50rpx 20rpx;
+.popup-vehicleNo-select {
+  text-align: center;
+  color: #777777;
 }
-.popup-vehicleNo-select{
-	text-align: center;
-	color: #777777;
+.vehicleNo-btn {
+  display: flex;
+  margin: 40rpx 0;
 }
-.vehicleNo-btn{
-	display: flex;
-	margin: 40rpx 0;
+.parking-lock-pay-attention {
+  margin: 50rpx;
+  line-height: 48rpx;
+  color: #777777;
 }
-.parking-lock-pay-attention{
-	margin: 50rpx;
-	line-height: 48rpx;
-	color: #777777;
-}

+ 209 - 203
pages/parkexport/parkexport.vue

@@ -1,214 +1,220 @@
 <template>
-	<!-- 地磁 -->
-	<view class="parking-lock">
-		<!-- 地磁支付 -->
-		<template v-if="infoData">
-			<view class="parking-lock-pay">
-				<view class="parking-lock-title">支付停车费</view>
-				<view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>车牌号</view>
-						<view class="weight">{{ infoData.vehicleNo}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>停车场名称</view>
-						<view class="weight">{{ infoData.parkingName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场车道</view>
-						<view class="weight">{{infoData.entranceName}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场时间</view>
-						<view class="weight">{{infoData.inTime}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>出场车道</view>
-						<view class="weight">{{infoData.outEntranceName }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>出场时间</view>
-						<view class="weight">{{infoData.outTime}}</view>
-					</view>
-					<!-- <view class="parking-lock-info-item">
+  <!-- 地磁 -->
+  <view class="parking-lock">
+    <!-- 地磁支付 -->
+    <template v-if="infoData">
+      <view class="parking-lock-pay">
+        <view class="parking-lock-title">支付停车费</view>
+        <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>车牌号</view>
+            <view class="weight">{{ infoData.vehicleNo }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>停车场名称</view>
+            <view class="weight">{{ infoData.parkingName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场车道</view>
+            <view class="weight">{{ infoData.entranceName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场时间</view>
+            <view class="weight">{{ infoData.inTime }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>出场车道</view>
+            <view class="weight">{{ infoData.outEntranceName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>出场时间</view>
+            <view class="weight">{{ infoData.outTime }}</view>
+          </view>
+          <!-- <view class="parking-lock-info-item">
 						<view>通道名称</view>
 						<view class="weight">{{infoData.roadwayName}}</view>
 					</view> -->
-					<view class="parking-lock-info-item">
-						<view>免费时长</view>
-						<view class="weight">{{infoData.freeDuration}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view class="weight">计费时长</view>
-						<view class="weight">{{infoData.calcDuration}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>累计停车时长</view>
-						<view class="weight">{{infoData.duration}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>应收金额</view>
-						<view class="weight">{{infoData.totalAmount}}元</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>订单编号</view>
-						<view class="weight">{{infoData.id}}</view>
-					</view>
-				</view>
-				<view class="parking-lock-pay-btn">
-					<button type="default" v-if="isPay" @click="onEntraceClick">支付出场</button>
-					<button type="default" v-else @click="jumpHome('/pages/index/index')">支付成功,返回首页</button>
-				</view>
-			</view>
-		</template>
-		<template v-else>
-			<view class="parking-lock-info">
-				<view class="parking-lock-info-item">
-					<view>出口无车辆</view>
-				</view>
-			</view>
-		</template>
-		<!-- 支付方式 -->
-		<PaymentMethod
-			:payWayPop="payWayPop"
-			:curOrderList="orderList"
-			:jumpUrl="jumpUrl"
-			:exportFlag="true"
-			:sanPay="saopay"
-			@closePaymentMethod="closePaymentMethod"
-		></PaymentMethod>
-		<u-toast ref="uToast" />
-	</view>
+          <view class="parking-lock-info-item">
+            <view>免费时长</view>
+            <view class="weight">{{ infoData.freeDuration }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view class="weight">计费时长</view>
+            <view class="weight">{{ infoData.calcDuration }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>累计停车时长</view>
+            <view class="weight">{{ infoData.duration }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>应收金额</view>
+            <view class="weight">{{ infoData.totalAmount }}元</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>订单编号</view>
+            <view class="weight">{{ infoData.id }}</view>
+          </view>
+        </view>
+        <view class="parking-lock-pay-btn">
+          <button type="default" v-if="isPay" @click="onEntraceClick">支付出场</button>
+          <button type="default" v-else @click="jumpHome('/pages/index/index')">支付成功,返回首页</button>
+        </view>
+      </view>
+    </template>
+    <template v-else>
+      <view class="parking-lock-info">
+        <view class="parking-lock-info-item">
+          <view>出口无车辆</view>
+        </view>
+      </view>
+    </template>
+    <!-- 支付方式 -->
+    <PaymentMethod
+      :payWayPop="payWayPop"
+      :curOrderList="orderList"
+      :jumpUrl="jumpUrl"
+      :exportFlag="true"
+      :sanPay="saopay"
+      @closePaymentMethod="closePaymentMethod"
+    ></PaymentMethod>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue'
-	export default {
-		components: {
-			PaymentMethod
-		},
-		data() {
-			return {
-				intoInfo: {
-					parkNo: '',
-					roadwayNo: '',
-					polyOrderId: '',
-					isBack: 0
-				},
-				saopay: true,
-				payWayPop: false, // 支付弹框
-				infoData: undefined, // 订单信息
-				orderList: [], // 支付订单列表
-				jumpUrl: location.href + '&isBack=1', // 回调地址
-				timer: null, // 轮询
-				isPay: false, // 支付按钮显示
-			}
-		},
-		onLoad(page) {
-			this.intoInfo.parkNo = page?.parkNo;
-			this.intoInfo.roadwayNo = page?.roadwayNo;
-			this.intoInfo.polyOrderId = page?.polyOrderId
-			this.intoInfo.isBack = page?.isBack
-		},
-		onShow() {
-			this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
-			if (this.intoInfo.polyOrderId && this.intoInfo.isBack == 1) {
-				uni.showLoading({
-					title: '订单状态查询中...'
-				})
-				this.timer = setInterval(() => {
-					this.handlePayStatus(this.intoInfo.polyOrderId)
-				}, 1000)
-			}
-		},
-		onUnload() {
-			clearInterval(this.timer)
-		},
-		methods: {
-			/**
-			 * 立即支付
-			 */
-			onEntraceClick() {
-				this.payWayPop = true
-			},
-			/**
-			 * 反复查询支付状态
-			 * @param { String } orderId
-			 */
-			handlePayStatus(orderId) {
-				this.$u.api.getOrderStateExportApi({
-					orderId
-				}).then(res => {
-					if (res.code === 200) {
-						if (res.data.payStatus === 1 || res.data.payStatus === 3) {
-							clearInterval(this.timer);
-							uni.hideLoading()
-							this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
-						} else if (res.data.payStatus === 2) {
-							this.isPay = true
-							uni.hideLoading()
-						}
-					} else {
-						clearInterval(this.timer);
-						uni.hideLoading()
-						this.$refs.uToast.show({
-							title: res.msg || '支付失败!',
-							type: 'error',
-						});
-					}
-				}).catch(() => {
-					uni.hideLoading()
-					clearInterval(this.timer);
-				})
-			},
-			/**
-			 * 查询订单信息
-			 * @param { String } parkNo 停车场编号
-			 * @param { String } roadwayNo 出口编号
-			 */
-			getOrderDetails(parkNo, roadwayNo) {
-				uni.showLoading({
-					title: '订单查询中...'
-				})
-				this.$u.api.getDetailExportApi({
-					parkNo,
-					roadwayNo
-				}).then(res => {
-					if (res.code === 200) {
-						this.infoData = res.data
-						this.orderList = [res.data.id]
-						if (res.data.orderStatus == 2 || res.data.orderStatus == 3) {
-							this.isPay = true
-						} else {
-							this.isPay = false
-						}
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '订单无数据',
-							type: 'error',
-						});
-					}
-					uni.hideLoading()
-				}).catch(err => {
-					uni.hideLoading()
-				})
-			},
-			/**
-			 * 关闭支付弹框
-			 */
-			closePaymentMethod() {
-				this.payWayPop = false
-			},
-			jumpHome(url) {
-				uni.switchTab({
-					url: url
-				})
-			}
-		}
-	}
+import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue';
+export default {
+  components: {
+    PaymentMethod
+  },
+  data() {
+    return {
+      intoInfo: {
+        parkNo: '',
+        roadwayNo: '',
+        polyOrderId: '',
+        isBack: 0
+      },
+      saopay: true,
+      payWayPop: false, // 支付弹框
+      infoData: undefined, // 订单信息
+      orderList: [], // 支付订单列表
+      jumpUrl: location.href + '&isBack=1', // 回调地址
+      timer: null, // 轮询
+      isPay: false // 支付按钮显示
+    };
+  },
+  onLoad(page) {
+    this.intoInfo.parkNo = page?.parkNo;
+    this.intoInfo.roadwayNo = page?.roadwayNo;
+    this.intoInfo.polyOrderId = page?.polyOrderId;
+    this.intoInfo.isBack = page?.isBack;
+  },
+  onShow() {
+    this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
+    if (this.intoInfo.polyOrderId && this.intoInfo.isBack == 1) {
+      uni.showLoading({
+        title: '订单状态查询中...'
+      });
+      this.timer = setInterval(() => {
+        this.handlePayStatus(this.intoInfo.polyOrderId);
+      }, 1000);
+    }
+  },
+  onUnload() {
+    clearInterval(this.timer);
+  },
+  methods: {
+    /**
+     * 立即支付
+     */
+    onEntraceClick() {
+      this.payWayPop = true;
+    },
+    /**
+     * 反复查询支付状态
+     * @param { String } orderId
+     */
+    handlePayStatus(orderId) {
+      this.$u.api
+        .getOrderStateExportApi({
+          orderId
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            if (res.data.payStatus === 1 || res.data.payStatus === 3) {
+              clearInterval(this.timer);
+              uni.hideLoading();
+              this.getOrderDetails(this.intoInfo.parkNo, this.intoInfo.roadwayNo);
+            } else if (res.data.payStatus === 2) {
+              this.isPay = true;
+              uni.hideLoading();
+            }
+          } else {
+            clearInterval(this.timer);
+            uni.hideLoading();
+            this.$refs.uToast.show({
+              title: res.msg || '支付失败!',
+              type: 'error'
+            });
+          }
+        })
+        .catch(() => {
+          uni.hideLoading();
+          clearInterval(this.timer);
+        });
+    },
+    /**
+     * 查询订单信息
+     * @param { String } parkNo 停车场编号
+     * @param { String } roadwayNo 出口编号
+     */
+    getOrderDetails(parkNo, roadwayNo) {
+      uni.showLoading({
+        title: '订单查询中...'
+      });
+      this.$u.api
+        .getDetailExportApi({
+          parkNo,
+          roadwayNo
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.infoData = res.data;
+            this.orderList = [res.data.id];
+            if (res.data.orderStatus == 2 || res.data.orderStatus == 3) {
+              this.isPay = true;
+            } else {
+              this.isPay = false;
+            }
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg || '订单无数据',
+              type: 'error'
+            });
+          }
+          uni.hideLoading();
+        })
+        .catch((err) => {
+          uni.hideLoading();
+        });
+    },
+    /**
+     * 关闭支付弹框
+     */
+    closePaymentMethod() {
+      this.payWayPop = false;
+    },
+    jumpHome(url) {
+      uni.switchTab({
+        url: url
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './parkexport.scss';
+@import './parkexport.scss';
 </style>

+ 129 - 129
pages/parkingInformation/parkingInformation.scss

@@ -1,130 +1,130 @@
 .parking-information {
-	background-color: #fff;
-	width: 100%;
-	.parking-information-slider {
-		image {
-			width: 100%;
-			height: 410rpx;
-		}
-	}
-	.parking-information-content {
-		padding: 35rpx 40rpx;
-		.parking-information-content-title {
-			display: flex;
-			flex-direction: row;
-			justify-content: space-between;
-			border-bottom: solid 1px #979797;
-			padding-bottom: 25rpx;
-			.pict-left {
-				.title {
-					font-size: 32rpx;
-					color: #484848;
-					font-weight: 600;
-					text {
-						font-size: 24rpx;
-						color: #AAAAAA;
-						margin-left: 19rpx;
-					}
-				}
-				.subtitle {
-					font-size: 24rpx;
-					color: #969696;
-					font-weight: 400;
-					line-height: 33rpx;
-					margin-top: 10rpx;
-				}
-				.tags {
-					display: flex;
-					word-wrap: break-word;
-					margin-top: 10rpx;
-					.tag {
-						padding: 3rpx 18rpx;
-						border: solid 2rpx #FA6400;
-						border-radius: 4px;
-						color: #FA6400;
-						margin-right: 10rpx;
-						font-size: 18rpx;
-					}
-				}
-			}
-			.pict-right {
-				text-align: center;
-				font-size: 18rpx;
-				color: #3A3A3A;
-				font-weight: 400;
-				image {
-					width: 44rpx;
-					height: 44rpx;
-				}
-			}
-		}
-		.parking-information-content-subtitle {
-			font-size: 24rpx;
-			color: #3A3A3A;
-			margin: 13rpx 0;
-		}
-		.parking-information-content-time {
-			color: #555555;
-			font-size: 24rpx;
-			margin-bottom: 73rpx;
-			margin-top: 23rpx;
-			display: flex;
-			flex-direction: row;
-			view {
-				width: 50%;
-			}
-		}
-		.parking-information-content-cars {
-			display: flex;
-			justify-content: space-between;
-			.picc-tag {
-				width: 48%;
-				background-color: #F6F6FF;
-				border-radius: 15rpx;
-				height: 139rpx;
-				align-items: center;
-				text-align: center;
-				view {
-					line-height: 50rpx;
-					&:first-child {
-						color: #1997FF;
-						font-size: 56rpx;
-						padding-top: 28rpx;
-					}
-					&:last-child {
-						color: #838383;
-						font-size: 24rpx;
-					}
-				}
-			}
-		}
-		.parking-information-content-price {
-			text-align: center;
-			margin: 37rpx 0 81rpx 0;
-			font-size: 24rpx;
-			color: #A4A4A4;
-			font-weight: 400;
-			text {
-				margin-right: 33rpx;
-			}
-		}
-		.parking-information-content-button {
-			background-color: #008CFF;
-			color: #fff;
-			height: 100rpx;
-		}
-		.parking-information-content-rule {
-			padding: 33rpx 0 37rpx 0;
-			font-size: 24rpx;
-			color: #3A3A3A;
-			line-height: 40rpx;
-			border-bottom: solid 2rpx #DDDDDD;
-		}
-		.parking-information-content-telphone {
-			padding: 23rpx 0 33rpx 0;
-			font-size: 24rpx;
-			color: #3A3A3A;
-			line-height: 45rpx;
-		}
-	}
-}
+  background-color: #fff;
+  width: 100%;
+  .parking-information-slider {
+    image {
+      width: 100%;
+      height: 410rpx;
+    }
+  }
+  .parking-information-content {
+    padding: 35rpx 40rpx;
+    .parking-information-content-title {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      border-bottom: solid 1px #979797;
+      padding-bottom: 25rpx;
+      .pict-left {
+        .title {
+          font-size: 32rpx;
+          color: #484848;
+          font-weight: 600;
+          text {
+            font-size: 24rpx;
+            color: #aaaaaa;
+            margin-left: 19rpx;
+          }
+        }
+        .subtitle {
+          font-size: 24rpx;
+          color: #969696;
+          font-weight: 400;
+          line-height: 33rpx;
+          margin-top: 10rpx;
+        }
+        .tags {
+          display: flex;
+          word-wrap: break-word;
+          margin-top: 10rpx;
+          .tag {
+            padding: 3rpx 18rpx;
+            border: solid 2rpx #fa6400;
+            border-radius: 4px;
+            color: #fa6400;
+            margin-right: 10rpx;
+            font-size: 18rpx;
+          }
+        }
+      }
+      .pict-right {
+        text-align: center;
+        font-size: 18rpx;
+        color: #3a3a3a;
+        font-weight: 400;
+        image {
+          width: 44rpx;
+          height: 44rpx;
+        }
+      }
+    }
+    .parking-information-content-subtitle {
+      font-size: 24rpx;
+      color: #3a3a3a;
+      margin: 13rpx 0;
+    }
+    .parking-information-content-time {
+      color: #555555;
+      font-size: 24rpx;
+      margin-bottom: 73rpx;
+      margin-top: 23rpx;
+      display: flex;
+      flex-direction: row;
+      view {
+        width: 50%;
+      }
+    }
+    .parking-information-content-cars {
+      display: flex;
+      justify-content: space-between;
+      .picc-tag {
+        width: 48%;
+        background-color: #f6f6ff;
+        border-radius: 15rpx;
+        height: 139rpx;
+        align-items: center;
+        text-align: center;
+        view {
+          line-height: 50rpx;
+          &:first-child {
+            color: #1997ff;
+            font-size: 56rpx;
+            padding-top: 28rpx;
+          }
+          &:last-child {
+            color: #838383;
+            font-size: 24rpx;
+          }
+        }
+      }
+    }
+    .parking-information-content-price {
+      text-align: center;
+      margin: 37rpx 0 81rpx 0;
+      font-size: 24rpx;
+      color: #a4a4a4;
+      font-weight: 400;
+      text {
+        margin-right: 33rpx;
+      }
+    }
+    .parking-information-content-button {
+      background-color: #008cff;
+      color: #fff;
+      height: 100rpx;
+    }
+    .parking-information-content-rule {
+      padding: 33rpx 0 37rpx 0;
+      font-size: 24rpx;
+      color: #3a3a3a;
+      line-height: 40rpx;
+      border-bottom: solid 2rpx #dddddd;
+    }
+    .parking-information-content-telphone {
+      padding: 23rpx 0 33rpx 0;
+      font-size: 24rpx;
+      color: #3a3a3a;
+      line-height: 45rpx;
+    }
+  }
+}

+ 25 - 27
pages/parkroadgate/parkroadgate.vue

@@ -1,35 +1,33 @@
 <template>
-	<!-- 道闸 -->
-	<view class="parking-roadgate">
-		<view class="parking-lock-success">
-			<view class="parking-lock-success-box">
-				<image src="../../static/img/parking-lock-achieve.png" mode=""></image>
-			</view>
-			<view class="parking-lock-success-info">已开闸,请入场</view>
-			<view class="parking-lock-success-button">
-				<button @click="cancel">返回</button>
-			</view>
-		</view>
-	</view>
+  <!-- 道闸 -->
+  <view class="parking-roadgate">
+    <view class="parking-lock-success">
+      <view class="parking-lock-success-box">
+        <image src="../../static/img/parking-lock-achieve.png" mode=""></image>
+      </view>
+      <view class="parking-lock-success-info">已开闸,请入场</view>
+      <view class="parking-lock-success-button">
+        <button @click="cancel">返回</button>
+      </view>
+    </view>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			cancel(){
-				uni.reLaunch({
-				    url: '/pages/index/index'
-				});
-			}
-		}
-	}
+export default {
+  data() {
+    return {};
+  },
+  methods: {
+    cancel() {
+      uni.reLaunch({
+        url: '/pages/index/index'
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-@import './parkroadgate'
+@import './parkroadgate';
 </style>

+ 119 - 119
pages/payLists/payLists.scss

@@ -1,131 +1,131 @@
 page {
-	padding-bottom: 240rpx;
+  padding-bottom: 240rpx;
 }
-.swiper-wrap{
-	display: flex;
-	flex-direction: column;
-	height: calc(82vh - var(--window-top));
-	width: 100%;
-	.swiper-box {
-		flex: 1;
-	}
-	/deep/ .uni-swiper-slides{
-		bottom: 20rpx;
-	}
+.swiper-wrap {
+  display: flex;
+  flex-direction: column;
+  height: calc(82vh - var(--window-top));
+  width: 100%;
+  .swiper-box {
+    flex: 1;
+  }
+  /deep/ .uni-swiper-slides {
+    bottom: 20rpx;
+  }
 }
-.page-box{
-	margin: 25rpx 40rpx;
-	.pay{
-		overflow: hidden;
-		margin-bottom: 20rpx;
-		background-color: #fff;
-		border-radius: 15rpx;
-		.pay-top{
-			margin-bottom: 20rpx;
-			padding: 25rpx 40rpx;
-			border-bottom: 1px solid #DFDFDF;
-			.car{
-				font-size: 32rpx;
-				font-weight: 600;
-				color: #3A3A3A;
-				line-height: 45rpx;
-				letter-spacing: 1px
-			}
-			.addr{
-				color: #858585;
-				font-size: 26rpx;
-				line-height: 37rpx;
-			}
-			.pay-top-right{
-				padding: 0 15rpx;
-				height: 50rpx;
-				line-height: 48rpx;
-				border-radius: 5rpx;
-				border: 1px solid #FA6400;
-				color: #FA6400;
-			}
-		}
-		.pay-center{
-			padding: 0 40rpx 25rpx;
-			border-bottom: 1px solid #DFDFDF;
-			.pay-center-item{
-				margin-bottom: 9rpx;
-				font-size: 26rpx;
-				font-weight: 400;
-				color: #595959;
-				line-height: 37rpx;
-				letter-spacing: 1px;
-			}
-		}
-		.u-cell_title{
-			color: "#008CFF" ;
-		}
-	}
+.page-box {
+  margin: 25rpx 40rpx;
+  .pay {
+    overflow: hidden;
+    margin-bottom: 20rpx;
+    background-color: #fff;
+    border-radius: 15rpx;
+    .pay-top {
+      margin-bottom: 20rpx;
+      padding: 25rpx 40rpx;
+      border-bottom: 1px solid #dfdfdf;
+      .car {
+        font-size: 32rpx;
+        font-weight: 600;
+        color: #3a3a3a;
+        line-height: 45rpx;
+        letter-spacing: 1px;
+      }
+      .addr {
+        color: #858585;
+        font-size: 26rpx;
+        line-height: 37rpx;
+      }
+      .pay-top-right {
+        padding: 0 15rpx;
+        height: 50rpx;
+        line-height: 48rpx;
+        border-radius: 5rpx;
+        border: 1px solid #fa6400;
+        color: #fa6400;
+      }
+    }
+    .pay-center {
+      padding: 0 40rpx 25rpx;
+      border-bottom: 1px solid #dfdfdf;
+      .pay-center-item {
+        margin-bottom: 9rpx;
+        font-size: 26rpx;
+        font-weight: 400;
+        color: #595959;
+        line-height: 37rpx;
+        letter-spacing: 1px;
+      }
+    }
+    .u-cell_title {
+      color: '#008CFF';
+    }
+  }
 }
-.bottom{
-	background-color: #FFFFFF;
-	height: 240rpx;
-	width: 100%;
-	position: fixed;
-	z-index: 1000;
-	bottom: 0;
+.bottom {
+  background-color: #ffffff;
+  height: 240rpx;
+  width: 100%;
+  position: fixed;
+  z-index: 1000;
+  bottom: 0;
 }
-.bottom-total{
-	font-size: 32rpx;
-	border-radius: 6rpx;
-	width: 710rpx;
-	text-align: center;
-	padding-top: 16rpx;
-	background-color: #E4F3FF;
-	height: 72rpx;
-	margin: 40rpx 20rpx;
-	.total{
-		color: #3397FA;
-	}
+.bottom-total {
+  font-size: 32rpx;
+  border-radius: 6rpx;
+  width: 710rpx;
+  text-align: center;
+  padding-top: 16rpx;
+  background-color: #e4f3ff;
+  height: 72rpx;
+  margin: 40rpx 20rpx;
+  .total {
+    color: #3397fa;
+  }
 }
-.button-wrap{
-	height: 120rpx;
-	.button{
-		position: fixed;
-		left: 20rpx;
-		bottom: 10rpx;
-		right: 20rpx;
-		z-index: 999;
-	}
+.button-wrap {
+  height: 120rpx;
+  .button {
+    position: fixed;
+    left: 20rpx;
+    bottom: 10rpx;
+    right: 20rpx;
+    z-index: 999;
+  }
 }
 .pay-tips {
-	width: calc(100% - 34rpx);
-	margin: 23rpx auto;
-	border-top: solid 1px #979797;
-	padding: 38rpx 0;
-	color: #5F5F5F;
-	text {
-		color: #3397FA;
-		padding: 0 10rpx;
-	}
+  width: calc(100% - 34rpx);
+  margin: 23rpx auto;
+  border-top: solid 1px #979797;
+  padding: 38rpx 0;
+  color: #5f5f5f;
+  text {
+    color: #3397fa;
+    padding: 0 10rpx;
+  }
 }
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 34rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
-}
+  width: calc(100% - 34rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
+}

+ 102 - 97
pages/payPage/payPage.scss

@@ -1,98 +1,103 @@
-.order-info{
-	margin-top: 50rpx;
-	margin-bottom: 75rpx;
-	.order-info-top{
-		position: relative;
-		border-top-left-radius: 20rpx;
-		border-top-right-radius: 20rpx;
-		color: #fff;
-		padding: 35rpx 40rpx;
-		background: linear-gradient(135deg, #00BFFF 0%, #008DFF 100%);
-		.addr{
-			margin-bottom: 16rpx;
-			.addr-text{
-				margin-left: 17rpx;
-				font-size: 24rpx;
-				font-weight: 400;
-			}
-		}
-		.car{
-			.car-no{
-				font-size: 40rpx;
-				font-weight: 500;
-				color: #FFFFFF;
-				letter-spacing: 1px;
-				line-height: 56rpx;
-				margin-right: 13rpx;
-			}
-			.car-type{
-				font-size: 24rpx;
-			}
-		}
-		.time{
-			font-size: 22rpx;
-			font-weight: 400;
-			color: #CDECFF;
-			line-height: 30rpx;
-			margin-bottom: 3rpx;
-		}
-		.duration{
-			margin-top: 17rpx;
-			font-size: 30rpx;
-			font-weight: 400;
-			color: #FFFFFF;
-			line-height: 42rpx;
-			letter-spacing: 1px;
-		}
-		.total-amount{
-			position: absolute;
-			right: 40rpx;
-			bottom: 25rpx;
-			font-size: 60rpx;
-			font-weight: 500;
-			color: #FFFFFF;
-			letter-spacing: 2rpx;
-		}
-	}
-	.order-info-bottom{
-		padding-top: 44rpx;
-		padding-bottom: 56rpx;
-		background: #FFFFFF;
-		border-bottom-left-radius: 20rpx;
-		border-bottom-right-radius: 20rpx;
-		box-shadow: 0px 6rpx 14rpx 0px rgba(200, 200, 200, 0.5);
-		.u-cell{padding-left: 40rpx;padding-right: 40rpx;}
-		/deep/ .u-iconfont{color: #D8D8D8;}
-		.pay-amount{
-			border-top: 1px solid #CACACA;
-			padding-top: 33rpx;
-			padding: 33rpx 40rpx 9rpx;
-			color: #FF751D;
-			.title{
-				font-size: 30rpx;
-				font-weight: 600;
-				color: #FF751D;
-				line-height: 42rpx;
-				letter-spacing: 1px;
-			}
-			.amount{
-				font-size: 36rpx;
-				font-weight: 600;
-				color: #FF8233;
-				line-height: 33rpx;
-				letter-spacing: 1px;
-				.rmb{
-					font-size: 24rpx;
-					margin-right: 5rpx;
-				}
-			}
-		}
-		.tip{
-			font-size: 22rpx;
-			font-weight: 400;
-			color: #999999;
-			line-height: 30rpx;
-			padding: 0 40rpx;
-		}
-	}
+.order-info {
+  margin-top: 50rpx;
+  margin-bottom: 75rpx;
+  .order-info-top {
+    position: relative;
+    border-top-left-radius: 20rpx;
+    border-top-right-radius: 20rpx;
+    color: #fff;
+    padding: 35rpx 40rpx;
+    background: linear-gradient(135deg, #00bfff 0%, #008dff 100%);
+    .addr {
+      margin-bottom: 16rpx;
+      .addr-text {
+        margin-left: 17rpx;
+        font-size: 24rpx;
+        font-weight: 400;
+      }
+    }
+    .car {
+      .car-no {
+        font-size: 40rpx;
+        font-weight: 500;
+        color: #ffffff;
+        letter-spacing: 1px;
+        line-height: 56rpx;
+        margin-right: 13rpx;
+      }
+      .car-type {
+        font-size: 24rpx;
+      }
+    }
+    .time {
+      font-size: 22rpx;
+      font-weight: 400;
+      color: #cdecff;
+      line-height: 30rpx;
+      margin-bottom: 3rpx;
+    }
+    .duration {
+      margin-top: 17rpx;
+      font-size: 30rpx;
+      font-weight: 400;
+      color: #ffffff;
+      line-height: 42rpx;
+      letter-spacing: 1px;
+    }
+    .total-amount {
+      position: absolute;
+      right: 40rpx;
+      bottom: 25rpx;
+      font-size: 60rpx;
+      font-weight: 500;
+      color: #ffffff;
+      letter-spacing: 2rpx;
+    }
+  }
+  .order-info-bottom {
+    padding-top: 44rpx;
+    padding-bottom: 56rpx;
+    background: #ffffff;
+    border-bottom-left-radius: 20rpx;
+    border-bottom-right-radius: 20rpx;
+    box-shadow: 0px 6rpx 14rpx 0px rgba(200, 200, 200, 0.5);
+    .u-cell {
+      padding-left: 40rpx;
+      padding-right: 40rpx;
+    }
+    /deep/ .u-iconfont {
+      color: #d8d8d8;
+    }
+    .pay-amount {
+      border-top: 1px solid #cacaca;
+      padding-top: 33rpx;
+      padding: 33rpx 40rpx 9rpx;
+      color: #ff751d;
+      .title {
+        font-size: 30rpx;
+        font-weight: 600;
+        color: #ff751d;
+        line-height: 42rpx;
+        letter-spacing: 1px;
+      }
+      .amount {
+        font-size: 36rpx;
+        font-weight: 600;
+        color: #ff8233;
+        line-height: 33rpx;
+        letter-spacing: 1px;
+        .rmb {
+          font-size: 24rpx;
+          margin-right: 5rpx;
+        }
+      }
+    }
+    .tip {
+      font-size: 22rpx;
+      font-weight: 400;
+      color: #999999;
+      line-height: 30rpx;
+      padding: 0 40rpx;
+    }
+  }
 }

+ 149 - 142
pages/payPage/payPage.vue

@@ -1,150 +1,157 @@
 <template>
-	<view class="wrap">
-		<view class="order-info">
-			<view class="order-info-top">
-				<view class="addr u-flex">
-					<u-icon name="map-fill" color="#fff" size="28"></u-icon>
-					<view class="addr-text">{{orderInfo.roadName}}</view>
-				</view>
-				<view class="car u-flex">
-					<view class="car-no">{{orderInfo.vehicleNo}}</view>
-					<view class="car-type">临时车</view>
-				</view>
-				<view class="time in-time">进场时间:{{orderInfo.inTime}}</view>
-				<view class="time out-time">进场时间:{{orderInfo.outTime}}</view>
-				<view class="duration">已停放 {{orderInfo.duration}}</view>
-				<view class="total-amount">¥{{orderInfo.totalAmount}}</view>
-			</view>
-			<view class="order-info-bottom">
-				<u-cell-item 
-				center 
-				:border-bottom="false" 
-				:value="orderInfo.preferentialAmount" 
-				:title-style="{color:'#8A8A8A'}"
-				:icon-style="{color:'#D8D8D8'}"
-				title="已优惠"></u-cell-item>
-				<view class="pay-amount u-flex u-row-between">
-					<view class="title">应付金额</view>
-					<view class="amount"><span class="rmb">¥</span>{{orderInfo.payAmount}}</view>
-				</view>
-				<view class="tip">停车费不超过30元,可先离场后在付费</view>
-			</view>
-		</view>
-		<view class="bottom-btn static" @click="handlewxpay">去支付</view>
-		
-		<u-toast ref="uToast" />
-	</view>
+  <view class="wrap">
+    <view class="order-info">
+      <view class="order-info-top">
+        <view class="addr u-flex">
+          <u-icon name="map-fill" color="#fff" size="28"></u-icon>
+          <view class="addr-text">{{ orderInfo.roadName }}</view>
+        </view>
+        <view class="car u-flex">
+          <view class="car-no">{{ orderInfo.vehicleNo }}</view>
+          <view class="car-type">临时车</view>
+        </view>
+        <view class="time in-time">进场时间:{{ orderInfo.inTime }}</view>
+        <view class="time out-time">进场时间:{{ orderInfo.outTime }}</view>
+        <view class="duration">已停放 {{ orderInfo.duration }}</view>
+        <view class="total-amount">¥{{ orderInfo.totalAmount }}</view>
+      </view>
+      <view class="order-info-bottom">
+        <u-cell-item
+          center
+          :border-bottom="false"
+          :value="orderInfo.preferentialAmount"
+          :title-style="{ color: '#8A8A8A' }"
+          :icon-style="{ color: '#D8D8D8' }"
+          title="已优惠"
+        ></u-cell-item>
+        <view class="pay-amount u-flex u-row-between">
+          <view class="title">应付金额</view>
+          <view class="amount"><span class="rmb">¥</span>{{ orderInfo.payAmount }}</view>
+        </view>
+        <view class="tip">停车费不超过30元,可先离场后在付费</view>
+      </view>
+    </view>
+    <view class="bottom-btn static" @click="handlewxpay">去支付</view>
+
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import getUrlParams from "../../utils/getUrlParams.js";
-	export default{
-		data(){
-			return{
-				orderId:null,
-				orderInfo:[],
-				
-			}
-		},
-		onLoad(){
-			let locationLocaturl = window.location.hash;
-			this.orderId = getUrlParams(locationLocaturl,"orderId"); // 截取orderId
-			console.log('this.orderId',this.orderId);
-			this.handleGetOrderinfo(this.orderId);
-			
-		},
-		methods:{
-			handleGetOrderinfo(orderId){
-				this.$u.api.getOrderinfo({id:orderId})
-				.then(res=>{
-					// this.$refs.uToast.show({
-					// 	title: res.msg,
-					// 	type: 'success',
-					// });
-					this.orderInfo = res.data;
-					console.log('handleGetOrderinfo',JSON.parse(JSON.stringify(res)));
-				}).catch(err=>{
-					this.$refs.uToast.show({
-						title: err.msg,
-						type: 'error',
-					});
-					console.log('handleGetOrderinfo ',err)
-				});
-				
-			},
-			getCode () {
-				var local = window.location.href // 获取页面url
-				let locationLocaturl = window.location.search;
-				this.code = getUrlParams(locationLocaturl,"code"); // 截取code
-				if (this.code == null || this.code === '') { // 如果没有code,则去请求
-					window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`
-				} else {
-					this.handleGetWXInfo(this.code) //把code传给后台获取用户信息
-				}
-			},
-			handleGetWXInfo (code) { // 通过code获取 openId等用户信息,/api/user/wechat/login 为后台接口
-				let _this = this
-				this.$u.api.getWXInfo(code).then((res) => {
-					if (res.code === 200 ) {
-						this.$u.vuex('vuex_wxinfo',res.data);
-						// 继续支付
-					}
-				}).catch((err) => {
-					this.$refs.uToast.show({
-						title: err.msg,
-						type: 'error',
-					});
-				})
-			},			
-			handlewxpay(){;
-				if(!this.$store.state.vuex_wxinfo.openId){ // 如果微信openId,则需用code去后台获取
-					this.$refs.uToast.show({
-						title: '请登录后重试!',
-						type: 'info',
-						// url: '/pages/user/index'
-					});
-					this.getCode();
-				} else {
-					// 别的业务逻辑
-					this.getWXPay();
-				}
-			},
-			async getWXPay(id){
-				let params = {
-					orderId:this.orderId,
-					openid:this.$store.state.vuex_wxinfo.openId,
-					tradeType:"test"
-				};
-				await this.$wxApi.config();
-				this.$pay.wxPay(params).then(res =>{
-					console.log('wxPay',res.code);
-					if(res.code == 0){
-						// 成功
-						this.$u.route({
-							url:'pages/index/index',
-							// params: {
-							// 	keyword: this.keyword
-							// }
-						});
-					}else if(res.code == 1){
-						// 取消
-						// uni.redirectTo({
-						// 	url: '/pages/userCenter/myOrder/myOrder'
-						// })
-					}else if(res.code == 2){
-						this.$refs.uToast.show({
-							title: '支付失败,请检查!',
-							type: 'error',
-							// url: '/pages/user/index'
-						});
-					}
-				});
-			},
-			
-		}
-	}
+import getUrlParams from '../../utils/getUrlParams.js';
+export default {
+  data() {
+    return {
+      orderId: null,
+      orderInfo: []
+    };
+  },
+  onLoad() {
+    let locationLocaturl = window.location.hash;
+    this.orderId = getUrlParams(locationLocaturl, 'orderId'); // 截取orderId
+    console.log('this.orderId', this.orderId);
+    this.handleGetOrderinfo(this.orderId);
+  },
+  methods: {
+    handleGetOrderinfo(orderId) {
+      this.$u.api
+        .getOrderinfo({ id: orderId })
+        .then((res) => {
+          // this.$refs.uToast.show({
+          // 	title: res.msg,
+          // 	type: 'success',
+          // });
+          this.orderInfo = res.data;
+          console.log('handleGetOrderinfo', JSON.parse(JSON.stringify(res)));
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: err.msg,
+            type: 'error'
+          });
+          console.log('handleGetOrderinfo ', err);
+        });
+    },
+    getCode() {
+      var local = window.location.href; // 获取页面url
+      let locationLocaturl = window.location.search;
+      this.code = getUrlParams(locationLocaturl, 'code'); // 截取code
+      if (this.code == null || this.code === '') {
+        // 如果没有code,则去请求
+        window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(
+          local
+        )}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`;
+      } else {
+        this.handleGetWXInfo(this.code); //把code传给后台获取用户信息
+      }
+    },
+    handleGetWXInfo(code) {
+      // 通过code获取 openId等用户信息,/api/user/wechat/login 为后台接口
+      let _this = this;
+      this.$u.api
+        .getWXInfo(code)
+        .then((res) => {
+          if (res.code === 200) {
+            this.$u.vuex('vuex_wxinfo', res.data);
+            // 继续支付
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: err.msg,
+            type: 'error'
+          });
+        });
+    },
+    handlewxpay() {
+      if (!this.$store.state.vuex_wxinfo.openId) {
+        // 如果微信openId,则需用code去后台获取
+        this.$refs.uToast.show({
+          title: '请登录后重试!',
+          type: 'info'
+          // url: '/pages/user/index'
+        });
+        this.getCode();
+      } else {
+        // 别的业务逻辑
+        this.getWXPay();
+      }
+    },
+    async getWXPay(id) {
+      let params = {
+        orderId: this.orderId,
+        openid: this.$store.state.vuex_wxinfo.openId,
+        tradeType: 'test'
+      };
+      await this.$wxApi.config();
+      this.$pay.wxPay(params).then((res) => {
+        console.log('wxPay', res.code);
+        if (res.code == 0) {
+          // 成功
+          this.$u.route({
+            url: 'pages/index/index'
+            // params: {
+            // 	keyword: this.keyword
+            // }
+          });
+        } else if (res.code == 1) {
+          // 取消
+          // uni.redirectTo({
+          // 	url: '/pages/userCenter/myOrder/myOrder'
+          // })
+        } else if (res.code == 2) {
+          this.$refs.uToast.show({
+            title: '支付失败,请检查!',
+            type: 'error'
+            // url: '/pages/user/index'
+          });
+        }
+      });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import "./payPage.scss";
+@import './payPage.scss';
 </style>

+ 52 - 54
pages/paymentMethod/jumpMiddle.vue

@@ -1,60 +1,58 @@
 <template>
-	<view>
-		<a ref="payUrlRef" :href="jumpUrl"></a>
-	</view>
+  <view>
+    <a ref="payUrlRef" :href="jumpUrl"></a>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				jumpUrl: "",
-			}
-		},
-		onload() {
-			let url = localStorage.getItem('jumpUrl');
-			// let url = this.cookie.get("jumpUrl");
-			if(url){
-				this.jumpUrl = url;
-			}else{
-				this.jumpUrl = 'https://h5.pdzhtc.com';
-			}
-			this.getOrderId()
-		},
-		mounted() {
-			this.$refs.payUrlRef.click();
-		},
-		methods: {
-			getOrderId(id) {
-				const localToken = JSON.parse(localStorage.getItem('lifeData') ?? '{}')
-				const token = localToken?.data?.vuex_token
-				$.ajax({
-					//请求方式
-					type : "get",
-					//请求地址
-					url : baseUrl + '/client/orderinfo/orderListByPoly/' + id,
-					// token
-					beforeSend: function(request) {
-						request.setRequestHeader("Authorization", 'Bearer ' + token);
-					},
-					//请求成功
-					success: function(result) {
-							if (result.code === 200) {
-								this.jumpUrl = result?.data?.jumpUrl ?? 'https://h5.pdzhtc.com'
-							} else {
-								alert(result.msg)
-							}
-					},
-					//请求失败,包含具体的错误信息
-					error: function(e){
-							alert('程序错误!')
-					}
-			});
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      jumpUrl: ''
+    };
+  },
+  onload() {
+    let url = localStorage.getItem('jumpUrl');
+    // let url = this.cookie.get("jumpUrl");
+    if (url) {
+      this.jumpUrl = url;
+    } else {
+      this.jumpUrl = 'https://h5.pdzhtc.com';
+    }
+    this.getOrderId();
+  },
+  mounted() {
+    this.$refs.payUrlRef.click();
+  },
+  methods: {
+    getOrderId(id) {
+      const localToken = JSON.parse(localStorage.getItem('lifeData') ?? '{}');
+      const token = localToken?.data?.vuex_token;
+      $.ajax({
+        //请求方式
+        type: 'get',
+        //请求地址
+        url: baseUrl + '/client/orderinfo/orderListByPoly/' + id,
+        // token
+        beforeSend: function (request) {
+          request.setRequestHeader('Authorization', 'Bearer ' + token);
+        },
+        //请求成功
+        success: function (result) {
+          if (result.code === 200) {
+            this.jumpUrl = result?.data?.jumpUrl ?? 'https://h5.pdzhtc.com';
+          } else {
+            alert(result.msg);
+          }
+        },
+        //请求失败,包含具体的错误信息
+        error: function (e) {
+          alert('程序错误!');
+        }
+      });
+    }
+  }
+};
 </script>
 
-<style>
-
-</style>
+<style></style>

+ 74 - 74
pages/paymentMethod/paymentMethod.scss

@@ -1,81 +1,81 @@
 .pay-way {
-	display: flex;
-	justify-content: space-between;
-	width: calc(100% - 34rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto;
-	padding: 38rpx 86rpx;
-	.pay-way-item {
-		text-align: center;
-		font-size: 30rpx;
-		color: #5F5F5F;
-		image {
-			width: 143rpx;
-			height: 143rpx;
-		}
-	}
+  display: flex;
+  justify-content: space-between;
+  width: calc(100% - 34rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto;
+  padding: 38rpx 86rpx;
+  .pay-way-item {
+    text-align: center;
+    font-size: 30rpx;
+    color: #5f5f5f;
+    image {
+      width: 143rpx;
+      height: 143rpx;
+    }
+  }
 }
 .pay-way-new {
-	display: flex;
-	justify-content: space-around;
-	width: calc(100% - 60rpx);
-	border-top: solid 1px #979797;
-	margin: 23rpx auto 0;
-	padding: 36rpx 0 10rpx;
-	.pay-way-item {
-		width: calc(33% - 9rpx);
-		border-radius: 20rpx;
-		text-align: center;
-		padding: 30rpx 0;
-		image {
-			width: 110rpx;
-			height: 110rpx;
-		}
-		.title {
-			font-size: 28rpx;
-			font-weight: 400;
-			font-family: 'PingFangSC-Regular, PingFang SC';
-			color: #fff;
-			margin: 10rpx 0;
-		}
-		.subtitle {
-			font-size: 14rpx;
-			font-weight: 400;
-			font-family: 'PingFangSC-Regular, PingFang SC';
-			color: #fff;
-			opacity: 0.73;
-		}
-	}
-	.pay-way-item-hy {
-		background: linear-gradient(153deg, #FA9460 0%, #FF5065 100%)
-	}
-	.pay-way-item-wx {
-		background: linear-gradient(155deg, #5EE3A6 0%, #3EB9C8 100%);
-	}
-	.pay-way-item-jh {
-		background: linear-gradient(155deg, #5AA6FF 0%, #C782FF 100%);
-	}
+  display: flex;
+  justify-content: space-around;
+  width: calc(100% - 60rpx);
+  border-top: solid 1px #979797;
+  margin: 23rpx auto 0;
+  padding: 36rpx 0 10rpx;
+  .pay-way-item {
+    width: calc(33% - 9rpx);
+    border-radius: 20rpx;
+    text-align: center;
+    padding: 30rpx 0;
+    image {
+      width: 110rpx;
+      height: 110rpx;
+    }
+    .title {
+      font-size: 28rpx;
+      font-weight: 400;
+      font-family: 'PingFangSC-Regular, PingFang SC';
+      color: #fff;
+      margin: 10rpx 0;
+    }
+    .subtitle {
+      font-size: 14rpx;
+      font-weight: 400;
+      font-family: 'PingFangSC-Regular, PingFang SC';
+      color: #fff;
+      opacity: 0.73;
+    }
+  }
+  .pay-way-item-hy {
+    background: linear-gradient(153deg, #fa9460 0%, #ff5065 100%);
+  }
+  .pay-way-item-wx {
+    background: linear-gradient(155deg, #5ee3a6 0%, #3eb9c8 100%);
+  }
+  .pay-way-item-jh {
+    background: linear-gradient(155deg, #5aa6ff 0%, #c782ff 100%);
+  }
 }
 .pay-way-subtitle {
-	display: flex;
-	justify-content: space-around;
-	width: calc(100% - 60rpx);
-	margin: 0 auto 60rpx;
-	&-item {
-		width: calc(33% - 9rpx);
-		border-radius: 20rpx;
-		text-align: center;
-		font-size: 20rpx;
-		font-weight: 400;
-		font-family: 'PingFangSC-Regular, PingFang SC';
-		opacity: 0.73;
-	}
+  display: flex;
+  justify-content: space-around;
+  width: calc(100% - 60rpx);
+  margin: 0 auto 60rpx;
+  &-item {
+    width: calc(33% - 9rpx);
+    border-radius: 20rpx;
+    text-align: center;
+    font-size: 20rpx;
+    font-weight: 400;
+    font-family: 'PingFangSC-Regular, PingFang SC';
+    opacity: 0.73;
+  }
 }
 .pay-way-close-btn {
-	width: calc(100% - 80rpx);
-	margin: 0 auto 68rpx;
-	border: none;
-	background-color: #3397FA;
-	color: #fff;
-	border-radius: 10rpx;
-}
+  width: calc(100% - 80rpx);
+  margin: 0 auto 68rpx;
+  border: none;
+  background-color: #3397fa;
+  color: #fff;
+  border-radius: 10rpx;
+}

+ 9 - 9
pages/paymentMethod/paymentMethod.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-01 11:45:20
  * @LastEditors: 空白格
- * @LastEditTime: 2022-09-01 09:54:36
+ * @LastEditTime: 2022-10-09 13:54:07
  * @FilePath: \parking_h5\pages\paymentMethod\paymentMethod.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved. 
 -->
@@ -98,11 +98,11 @@ export default {
       type: String,
       default: undefined
     },
-		// 车牌号
-		vehicleNo: {
-			type: String,
-			default: undefined
-		},
+    // 车牌号
+    vehicleNo: {
+      type: String,
+      default: undefined
+    },
     // 跳转页面
     jumpUrl: {
       type: String,
@@ -136,7 +136,7 @@ export default {
         payeeId: this.payeeId,
         payeeName: this.payeeName,
         pursueType: this.pursueType,
-				vehicleNo: this.vehicleNo,
+        vehicleNo: this.vehicleNo,
         sanPay: this.sanPay
       };
       if (this.exportFlag == true) {
@@ -205,7 +205,7 @@ export default {
         deviceNo: this.deviceNo || undefined,
         payeeId: this.payeeId || undefined,
         payeeName: this.payeeName || undefined,
-				vehicleNo: this.vehicleNo,
+        vehicleNo: this.vehicleNo,
         sanPay: this.sanPay
       };
       if (this.exportFlag) {
@@ -276,7 +276,7 @@ export default {
         payeeId: this.payeeId,
         payeeName: this.payeeName,
         pursueType: this.pursueType,
-				vehicleNo: this.vehicleNo,
+        vehicleNo: this.vehicleNo,
         sanPay: this.sanPay
       };
       if (this.exportFlag) {

+ 54 - 53
pages/privacyPolicy/privacyPolicy.vue

@@ -1,64 +1,65 @@
 <!-- ============================= 隐私政策/用户服务条款 ============================= -->
 <template>
-	<view class="u-content">
-		<u-parse :html="content"></u-parse>
-		<u-toast ref="uToast" />
-	</view>
+  <view class="u-content">
+    <u-parse :html="content"></u-parse>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				content: ''
-			}
-		},
-		onLoad(query) {
-			const termsType = query?.termsType
-			if (termsType) {
-				switch (Number(termsType)) {
-					case 1:
-						uni.setNavigationBarTitle({
-							title: '用户服务条款'
-						})
-						break
-					case 2:
-						uni.setNavigationBarTitle({
-							title: '隐私政策'
-						})
-						break
-				}
-				this.getSysterms(termsType)
-			}
-		},
-		methods: {
-			getSysterms(termsType) {
-				this.$u.api.getSysterms({
-						termsType: Number(termsType)
-					})
-					.then(res => {
-						if (res.code === 200) {
-							this.content = res.data?.content
-						} else {
-							this.$refs.uToast.show({
-								title: res.msg,
-								type: 'error',
-							})
-						}
-					})
-					.catch(err => {
-						this.$refs.uToast.show({
-							title: '系统错误!',
-							type: 'error',
-						})
-					})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      content: ''
+    };
+  },
+  onLoad(query) {
+    const termsType = query?.termsType;
+    if (termsType) {
+      switch (Number(termsType)) {
+        case 1:
+          uni.setNavigationBarTitle({
+            title: '用户服务条款'
+          });
+          break;
+        case 2:
+          uni.setNavigationBarTitle({
+            title: '隐私政策'
+          });
+          break;
+      }
+      this.getSysterms(termsType);
+    }
+  },
+  methods: {
+    getSysterms(termsType) {
+      this.$u.api
+        .getSysterms({
+          termsType: Number(termsType)
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.content = res.data?.content;
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.$refs.uToast.show({
+            title: '系统错误!',
+            type: 'error'
+          });
+        });
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
 .u-content {
-	padding: 20rpx;
+  padding: 20rpx;
 }
 </style>

+ 270 - 257
pages/roadGateSystem/roadGateSystem.vue

@@ -1,265 +1,278 @@
 <template>
-	<!-- 道闸 -->
-	<view class="parking-lock">
-		<!-- 道闸支付 -->
-		<template v-if="parkingLockStatus === 1">
-			<view class="parking-lock-pay">
-				<view class="parking-lock-title">支付停车费</view>
-				<view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
-				<view class="parking-lock-info">
-					<view class="parking-lock-info-item">
-						<view>车牌号</view>
-						<view class="weight">{{ orderInfo.vehicleNo }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>停车场名称</view>
-						<view>{{orderInfo.roadName }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场车道</view>
-						<view>{{'入口1'}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>入场时间</view>
-						<view>{{orderInfo.inTime}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>出场车道</view>
-						<view>{{'出口1'}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>出场时间</view>
-						<view>{{orderInfo.outTime}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>免费时长</view>
-						<!-- <view>{{ orderInfo.freeDuration || '0天0时15分0秒' }}</view> -->
-						<view>{{ '0天0时15分0秒' }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>计费时长</view>
-						<view>{{orderInfo.calcDuration || 0}}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>累计停车时长</view>
-						<view>{{ orderInfo.duration || 0 }}</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>应缴金额</view>
-						<view class="really-money">{{ orderInfo.payAmount || 0 }} 元</view>
-					</view>
-					<view class="parking-lock-info-item">
-						<view>订单编号</view>
-						<view>{{ orderInfo.orderId }}</view>
-					</view>
-				</view>
-				<view class="parking-lock-pay-btn" v-if="is_pay">
-					<button type="default" @click="payMoney">立即支付</button>
-				</view>
-			</view>
-		</template>
-		<template v-else-if="parkingLockStatus === 2">
-			<view class="parking-lock-pay">
-				<view class="parking-lock-tips">{{ tipsMsg }}</view>
-			</view>
-		</template>
-		<!-- 支付方式 -->
-		<PaymentMethod :payWayPop="payWayPop" :curOrderList="[orderId]" :jumpUrl="jumpUrl" :payeeId="payeeId"
-			:payeeName="payeeName" :vehicleNo="orderInfo.vehicleNo" @closePaymentMethod="closePaymentMethod">
-		</PaymentMethod>
-		<u-popup v-model="show" mode="center" border-radius="14" width="200rpx" height="200rpx">
-			<view class="loadingSelect">订单查询中...</view>
-			<view class="spinner">
-				<view class="rect1"></view>
-				<view class="rect2"></view>
-				<view class="rect3"></view>
-				<view class="rect4"></view>
-				<view class="rect5"></view>
-			</view>
-		</u-popup>
-		<u-toast ref="uToast" />
-	</view>
+  <!-- 道闸 -->
+  <view class="parking-lock">
+    <!-- 道闸支付 -->
+    <template v-if="parkingLockStatus === 1">
+      <view class="parking-lock-pay">
+        <view class="parking-lock-title">支付停车费</view>
+        <view class="parking-lock-tips">请您确认停车费用,确认后请支付费用,结束停车。谢谢您的使用!</view>
+        <view class="parking-lock-info">
+          <view class="parking-lock-info-item">
+            <view>车牌号</view>
+            <view class="weight">{{ orderInfo.vehicleNo }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>停车场名称</view>
+            <view>{{ orderInfo.roadName }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场车道</view>
+            <view>{{ '入口1' }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>入场时间</view>
+            <view>{{ orderInfo.inTime }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>出场车道</view>
+            <view>{{ '出口1' }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>出场时间</view>
+            <view>{{ orderInfo.outTime }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>免费时长</view>
+            <!-- <view>{{ orderInfo.freeDuration || '0天0时15分0秒' }}</view> -->
+            <view>{{ '0天0时15分0秒' }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>计费时长</view>
+            <view>{{ orderInfo.calcDuration || 0 }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>累计停车时长</view>
+            <view>{{ orderInfo.duration || 0 }}</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>应缴金额</view>
+            <view class="really-money">{{ orderInfo.payAmount || 0 }} 元</view>
+          </view>
+          <view class="parking-lock-info-item">
+            <view>订单编号</view>
+            <view>{{ orderInfo.orderId }}</view>
+          </view>
+        </view>
+        <view class="parking-lock-pay-btn" v-if="is_pay">
+          <button type="default" @click="payMoney">立即支付</button>
+        </view>
+      </view>
+    </template>
+    <template v-else-if="parkingLockStatus === 2">
+      <view class="parking-lock-pay">
+        <view class="parking-lock-tips">{{ tipsMsg }}</view>
+      </view>
+    </template>
+    <!-- 支付方式 -->
+    <PaymentMethod
+      :payWayPop="payWayPop"
+      :curOrderList="[orderId]"
+      :jumpUrl="jumpUrl"
+      :payeeId="payeeId"
+      :payeeName="payeeName"
+      :vehicleNo="orderInfo.vehicleNo"
+      @closePaymentMethod="closePaymentMethod"
+    >
+    </PaymentMethod>
+    <u-popup v-model="show" mode="center" border-radius="14" width="200rpx" height="200rpx">
+      <view class="loadingSelect">订单查询中...</view>
+      <view class="spinner">
+        <view class="rect1"></view>
+        <view class="rect2"></view>
+        <view class="rect3"></view>
+        <view class="rect4"></view>
+        <view class="rect5"></view>
+      </view>
+    </u-popup>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import getUrlParams from "../../utils/getUrlParams.js";
-	import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue'
-	export default {
-		components: {
-			PaymentMethod
-		},
-		data() {
-			return {
-				// 车位锁状态 1:需支付 2:查询失败返回提醒
-				parkingLockStatus: 0,
-				// 支付方式选择弹框
-				payWayPop: false,
-				// 订单编号
-				orderList: [],
-				// 提示信息
-				tipsMsg: null,
-				// 轮询
-				timer: null,
-				// 订单信息
-				orderInfo: {},
-				// 订单id
-				orderId: null,
-				// 重定向地址
-				jumpUrl: location.href + '&isBack=1',
-				show: true,
-				isBack: '',
-				polyOrderId: '',
-				// 地磁
-				spaceId: '',
-				payeeId: '',
-				payeeName: '',
-				is_pay: false
-			}
-		},
-		onLoad(page) {
-			if (page.orderId) {
-				this.orderId = page?.orderId
-				this.spaceId = page?.spaceId
-				this.payeeId = page?.payeeId
-				this.polyOrderId = page?.polyOrderId
-				this.isBack = page?.isBack
-			} else {
-				this.tipsMsg = page.msg || '参数丢失!';
-				// this.parkingLockStatus = 2
-				uni.showModal({
-					title: '提示',
-					content: (page.msg || '参数丢失') + ',返回首页',
-					showCancel: false,
-					success: (res) => {
-						if (res.confirm) {
-							uni.switchTab({
-								url: '/pages/index/index'
-							})
-						}
-					}
-				});
-			}
-		},
-		onShow() {
-			if (this.orderId) {
-				this.getOrderDetails(this.spaceId, this.orderId, this.payeeId)
-				if (this.polyOrderId && this.isBack == 1) {
-					this.timer = setInterval(() => {
-						this.show = true
-						this.handlePayStatus(this.polyOrderId)
-					}, 1000)
-				}
-			} else {
-				this.show = false
-			}
-		},
-		onUnload() {
-			if (this.timer) {
-				clearInterval(this.timer)
-			}
-		},
-		methods: {
-			/**
-			 * 反复查询支付状态
-			 * @param { String } orderId
-			 */
-			handlePayStatus(orderId) {
-				this.$u.api.getOrderInfo({
-					orderId
-				}).then(res => {
-					if (res.code === 200) {
-						if (res.data.payStatus === 1 || res.data.payStatus === 3) {
-							this.show = false
-							clearInterval(this.timer);
-							this.is_pay = false
-							uni.showModal({
-								title: '提示',
-								content: '支付成功,返回首页',
-								showCancel: false,
-								success: (res) => {
-									if (res.confirm) {
-										uni.switchTab({
-											url: '/pages/index/index'
-										})
-									}
-								}
-							});
-						} else if (res.data.payStatus === 2) {
-							this.is_pay = true
-						}
-					} else {
-						this.show = false
-						clearInterval(this.timer);
-						this.$refs.uToast.show({
-							title: res.msg,
-							type: 'error',
-						});
-					}
-				}).catch(() => {
-					this.show = false
-					clearInterval(this.timer);
-				})
-			},
-			/**
-			 * 立即支付
-			 */
-			payMoney() {
-				this.payWayPop = true
-			},
-			/**
-			 * 查询订单信息
-			 * @param { String } spaceId 车位ID
-			 * @param { String } orderId 订单id
-			 * @param { String } payeeId 收费员ID
-			 */
-			getOrderDetails(spaceId, orderId, payeeId) {
-				this.$u.api.geomaLockDetailsApi({
-					spaceId,
-					orderId,
-					payeeId
-				}).then(res => {
-					if (res.code === 200 && res.data.id) {
-						this.payeeName = res.data.payeeName
-						this.parkingLockStatus = 1
-						this.orderInfo = res.data
-						this.show = false
-						if (res.data.payStatus == 0 || res.data.payStatus == 2) {
-							this.is_pay = true
-						} else if (res.data.payStatus == 1) {
-							this.is_pay = false
-							uni.showModal({
-								title: '提示',
-								content: '订单已支付,返回首页',
-								showCancel: false,
-								success: function(res) {
-									if (res.confirm) {
-										uni.switchTab({
-											url: '/pages/index/index'
-										})
-									}
-								}
-							});
-						}
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '订单无数据',
-							type: 'error',
-						});
-					}
-				}).catch(err => {
-					this.show = false
-				})
-			},
-			/**
-			 * 关闭支付弹框
-			 */
-			closePaymentMethod() {
-				this.payWayPop = false
-			}
-		}
-	}
+import getUrlParams from '../../utils/getUrlParams.js';
+import PaymentMethod from '@/pages/paymentMethod/paymentMethod.vue';
+export default {
+  components: {
+    PaymentMethod
+  },
+  data() {
+    return {
+      // 车位锁状态 1:需支付 2:查询失败返回提醒
+      parkingLockStatus: 0,
+      // 支付方式选择弹框
+      payWayPop: false,
+      // 订单编号
+      orderList: [],
+      // 提示信息
+      tipsMsg: null,
+      // 轮询
+      timer: null,
+      // 订单信息
+      orderInfo: {},
+      // 订单id
+      orderId: null,
+      // 重定向地址
+      jumpUrl: location.href + '&isBack=1',
+      show: true,
+      isBack: '',
+      polyOrderId: '',
+      // 地磁
+      spaceId: '',
+      payeeId: '',
+      payeeName: '',
+      is_pay: false
+    };
+  },
+  onLoad(page) {
+    if (page.orderId) {
+      this.orderId = page?.orderId;
+      this.spaceId = page?.spaceId;
+      this.payeeId = page?.payeeId;
+      this.polyOrderId = page?.polyOrderId;
+      this.isBack = page?.isBack;
+    } else {
+      this.tipsMsg = page.msg || '参数丢失!';
+      // this.parkingLockStatus = 2
+      uni.showModal({
+        title: '提示',
+        content: (page.msg || '参数丢失') + ',返回首页',
+        showCancel: false,
+        success: (res) => {
+          if (res.confirm) {
+            uni.switchTab({
+              url: '/pages/index/index'
+            });
+          }
+        }
+      });
+    }
+  },
+  onShow() {
+    if (this.orderId) {
+      this.getOrderDetails(this.spaceId, this.orderId, this.payeeId);
+      if (this.polyOrderId && this.isBack == 1) {
+        this.timer = setInterval(() => {
+          this.show = true;
+          this.handlePayStatus(this.polyOrderId);
+        }, 1000);
+      }
+    } else {
+      this.show = false;
+    }
+  },
+  onUnload() {
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+  },
+  methods: {
+    /**
+     * 反复查询支付状态
+     * @param { String } orderId
+     */
+    handlePayStatus(orderId) {
+      this.$u.api
+        .getOrderInfo({
+          orderId
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            if (res.data.payStatus === 1 || res.data.payStatus === 3) {
+              this.show = false;
+              clearInterval(this.timer);
+              this.is_pay = false;
+              uni.showModal({
+                title: '提示',
+                content: '支付成功,返回首页',
+                showCancel: false,
+                success: (res) => {
+                  if (res.confirm) {
+                    uni.switchTab({
+                      url: '/pages/index/index'
+                    });
+                  }
+                }
+              });
+            } else if (res.data.payStatus === 2) {
+              this.is_pay = true;
+            }
+          } else {
+            this.show = false;
+            clearInterval(this.timer);
+            this.$refs.uToast.show({
+              title: res.msg,
+              type: 'error'
+            });
+          }
+        })
+        .catch(() => {
+          this.show = false;
+          clearInterval(this.timer);
+        });
+    },
+    /**
+     * 立即支付
+     */
+    payMoney() {
+      this.payWayPop = true;
+    },
+    /**
+     * 查询订单信息
+     * @param { String } spaceId 车位ID
+     * @param { String } orderId 订单id
+     * @param { String } payeeId 收费员ID
+     */
+    getOrderDetails(spaceId, orderId, payeeId) {
+      this.$u.api
+        .geomaLockDetailsApi({
+          spaceId,
+          orderId,
+          payeeId
+        })
+        .then((res) => {
+          if (res.code === 200 && res.data.id) {
+            this.payeeName = res.data.payeeName;
+            this.parkingLockStatus = 1;
+            this.orderInfo = res.data;
+            this.show = false;
+            if (res.data.payStatus == 0 || res.data.payStatus == 2) {
+              this.is_pay = true;
+            } else if (res.data.payStatus == 1) {
+              this.is_pay = false;
+              uni.showModal({
+                title: '提示',
+                content: '订单已支付,返回首页',
+                showCancel: false,
+                success: function (res) {
+                  if (res.confirm) {
+                    uni.switchTab({
+                      url: '/pages/index/index'
+                    });
+                  }
+                }
+              });
+            }
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg || '订单无数据',
+              type: 'error'
+            });
+          }
+        })
+        .catch((err) => {
+          this.show = false;
+        });
+    },
+    /**
+     * 关闭支付弹框
+     */
+    closePaymentMethod() {
+      this.payWayPop = false;
+    }
+  }
+};
 </script>
 
 <style lang="scss" scoped>
-	@import './roadGateSystem.scss';
+@import './roadGateSystem.scss';
 </style>

+ 86 - 84
pages/wechatLogin/wechatLogin.vue

@@ -1,90 +1,92 @@
 <template>
-	<view>
-		<u-toast ref="uToast" />
-	</view>
+  <view>
+    <u-toast ref="uToast" />
+  </view>
 </template>
 
 <script>
-	import getUrlParams from "./../../utils/getUrlParams.js";
-	export default {
-		data() {
-			return {
-				backUrl: '',
-				code: ''
-			}
-		},
-		onLoad(page) {
-			let local = window.location.href;
-			let locationLocaturl = window.location.search;
-			// 微信返回的回调地址
-			let backUrl = local.split('backUrl=')[1]
-			if (backUrl) {
-				this.backUrl = decodeURIComponent(backUrl)
-			}
-			console.log('backUrl', decodeURIComponent(backUrl))
-			let code = getUrlParams(locationLocaturl, "code")
-			console.log('code', code)
-			if (code) {
-				this.code = code
-				this.handleGetWXInfo(this.code)
-			} else {
-				window.location.href =
-					`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`
-			}
-		},
-		methods: {
-			// 通过code获取 openId等用户信息
-			handleGetWXInfo(code) {
-				uni.showLoading({
-					title: '加载中'
-				})
-				this.$u.api.getWXInfo(code).then((res) => {
-					if (res.code === 200) {
-						this.$u.vuex('vuex_wxinfo', res.data);
-						this.getToken(res.data.openId)
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '获取用户信息失败!',
-							type: 'error'
-						});
-						uni.hideLoading()
-					}
-				}).catch((err) => {
-					uni.hideLoading()
-				})
-			},
-			/**
-			 * 通过openId获取token
-			 * @param {Object} openId
-			 */
-			getToken(openId) {
-				this.$u.api.codeV2Api.sendSmsCodeV2api({ openId }).then(res => {
-					if (res.code === 200) {
-						this.$u.vuex('vuex_user', res.data);
-						this.$u.vuex('vuex_token', res.data.accessToken);
-						this.$u.vuex('vuex_hasLogin', true);
-						if (res.data.needVerify) {
-							localStorage.setItem('backUrl', this.backUrl)
-							this.$u.route({
-								url: 'pages/center/phoneLogin/phoneLogin'
-							})
-						} else {
-							location.href = this.backUrl
-						}
-						uni.hideLoading()
-					} else {
-						this.$refs.uToast.show({
-							title: res.msg || '获取用户信息失败!',
-							type: 'error'
-						});
-						uni.hideLoading()
-					}
-				})
-			}
-		}
-	}
+import getUrlParams from './../../utils/getUrlParams.js';
+export default {
+  data() {
+    return {
+      backUrl: '',
+      code: ''
+    };
+  },
+  onLoad(page) {
+    let local = window.location.href;
+    let locationLocaturl = window.location.search;
+    // 微信返回的回调地址
+    let backUrl = local.split('backUrl=')[1];
+    if (backUrl) {
+      this.backUrl = decodeURIComponent(backUrl);
+    }
+    console.log('backUrl', decodeURIComponent(backUrl));
+    let code = getUrlParams(locationLocaturl, 'code');
+    console.log('code', code);
+    if (code) {
+      this.code = code;
+      this.handleGetWXInfo(this.code);
+    } else {
+      window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(
+        local
+      )}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`;
+    }
+  },
+  methods: {
+    // 通过code获取 openId等用户信息
+    handleGetWXInfo(code) {
+      uni.showLoading({
+        title: '加载中'
+      });
+      this.$u.api
+        .getWXInfo(code)
+        .then((res) => {
+          if (res.code === 200) {
+            this.$u.vuex('vuex_wxinfo', res.data);
+            this.getToken(res.data.openId);
+          } else {
+            this.$refs.uToast.show({
+              title: res.msg || '获取用户信息失败!',
+              type: 'error'
+            });
+            uni.hideLoading();
+          }
+        })
+        .catch((err) => {
+          uni.hideLoading();
+        });
+    },
+    /**
+     * 通过openId获取token
+     * @param {Object} openId
+     */
+    getToken(openId) {
+      this.$u.api.codeV2Api.sendSmsCodeV2api({ openId }).then((res) => {
+        if (res.code === 200) {
+          this.$u.vuex('vuex_user', res.data);
+          this.$u.vuex('vuex_token', res.data.accessToken);
+          this.$u.vuex('vuex_hasLogin', true);
+          if (res.data.needVerify) {
+            localStorage.setItem('backUrl', this.backUrl);
+            this.$u.route({
+              url: 'pages/center/phoneLogin/phoneLogin'
+            });
+          } else {
+            location.href = this.backUrl;
+          }
+          uni.hideLoading();
+        } else {
+          this.$refs.uToast.show({
+            title: res.msg || '获取用户信息失败!',
+            type: 'error'
+          });
+          uni.hideLoading();
+        }
+      });
+    }
+  }
+};
 </script>
 
-<style>
-
-</style>
+<style></style>

+ 105 - 109
utils/filter.js

@@ -1,139 +1,135 @@
-import Vue from 'vue'
+import Vue from 'vue';
 
 // 保留两位小数
-Vue.filter('keepTwoNum', function(val) {
-	let value = Number(val)
-	return value.toFixed(2)
+Vue.filter('keepTwoNum', function (val) {
+  let value = Number(val);
+  return value.toFixed(2);
 });
 
 // 格式化数字三位加一逗号
-Vue.filter('NumFormat', function(value) {
-	if (!value) return '';
-	/*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1 */
-	/*后来改成了 Number(value)|0,但是输入超过十一位就为负数了 */
-	var intPart = Number(value) - Number(value) % 1; // 获取整数部分
-	var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
-	return intPartFormat;
-
+Vue.filter('NumFormat', function (value) {
+  if (!value) return '';
+  /*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1 */
+  /*后来改成了 Number(value)|0,但是输入超过十一位就为负数了 */
+  var intPart = Number(value) - (Number(value) % 1); // 获取整数部分
+  var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
+  return intPartFormat;
 });
 
 //链接加时间戳
-Vue.filter("timestamp", function(link) {
-	return link + '?t=' + new Date().getTime();
+Vue.filter('timestamp', function (link) {
+  return link + '?t=' + new Date().getTime();
 });
 
 //截取第一张照片且判断是否有图片,没有图片输入默认图片
-Vue.filter("firstImg",function(arr,sizeType,imgType){
-	//图片类型判断
-	if(arr){
-		if(arr instanceof Array){
-			img = arr[0]
-		}else{
-			img = arr.split(',')[0]
-		}
-	}else if(!arr){
-		//如果没有图片则随机输出一张
-		// if(imgType === 'farmer'){
-		// 	const farmerList = ['carbon2/farmer/1.png','carbon2/farmer/2.png']
-		// 	img = farmerList[Math.floor(Math.random() * farmerList.length)];
-		// }
-		// img = '/static/img/inbuild.png'
-	}
-	// return config.imgUrl + img;
-	return img;
+Vue.filter('firstImg', function (arr, sizeType, imgType) {
+  //图片类型判断
+  if (arr) {
+    if (arr instanceof Array) {
+      img = arr[0];
+    } else {
+      img = arr.split(',')[0];
+    }
+  } else if (!arr) {
+    //如果没有图片则随机输出一张
+    // if(imgType === 'farmer'){
+    // 	const farmerList = ['carbon2/farmer/1.png','carbon2/farmer/2.png']
+    // 	img = farmerList[Math.floor(Math.random() * farmerList.length)];
+    // }
+    // img = '/static/img/inbuild.png'
+  }
+  // return config.imgUrl + img;
+  return img;
 });
 
 //七牛云压缩图片
-Vue.filter("miniImg",function(img,quality){
-	return img+'?imageMogr2/quality/'+quality
+Vue.filter('miniImg', function (img, quality) {
+  return img + '?imageMogr2/quality/' + quality;
 });
 
 //单位米m转换为单位千米km,提醒:传递参数不要带引号,如kmUnit('100')会返回0m。
-Vue.filter("kmUnit", function(m) {
-	var v;
-	if (typeof m === 'number' && !isNaN(m)) {
-		if (m >= 1000) {
-			v = (m / 1000).toFixed(2) + 'km'
-		} else {
-			v = m + 'm'
-		}
-	} else {
-		v = '0m'
-	}
-	return v;
+Vue.filter('kmUnit', function (m) {
+  var v;
+  if (typeof m === 'number' && !isNaN(m)) {
+    if (m >= 1000) {
+      v = (m / 1000).toFixed(2) + 'km';
+    } else {
+      v = m + 'm';
+    }
+  } else {
+    v = '0m';
+  }
+  return v;
 });
 
 // 订单状态
-Vue.filter("filterOrderStatus", function(status) {
-	status = Number(status);
-	switch (status) {
-		case 1:
-			return '停放中'
-			break;
-		case 2:
-			return '欠费未缴'
-			break;
-		case 3:
-			return '欠费'
-			break;
-		case 4:
-			return '已完成'
-			break;
-		default:
-			return '未知'
-			break;
-	}
-
+Vue.filter('filterOrderStatus', function (status) {
+  status = Number(status);
+  switch (status) {
+    case 1:
+      return '停放中';
+      break;
+    case 2:
+      return '欠费未缴';
+      break;
+    case 3:
+      return '欠费';
+      break;
+    case 4:
+      return '已完成';
+      break;
+    default:
+      return '未知';
+      break;
+  }
 });
 
 // 支付状态
-Vue.filter("filterPayStatus", function(status) {
-	status = Number(status);
-	switch (status) {
-		case 0:
-			return '未支付'
-			break;
-		case 1:
-			return '已支付'
-			break;
-		case 2:
-			return '支付中'
-			break;
-		case 3:
-			return '支付失败'
-			break;
-		default:
-			return '未知'
-			break;
-	}
-
+Vue.filter('filterPayStatus', function (status) {
+  status = Number(status);
+  switch (status) {
+    case 0:
+      return '未支付';
+      break;
+    case 1:
+      return '已支付';
+      break;
+    case 2:
+      return '支付中';
+      break;
+    case 3:
+      return '支付失败';
+      break;
+    default:
+      return '未知';
+      break;
+  }
 });
 
 // 汽车类型
-Vue.filter("energyTpye", function(value) {
-	status = Number(value);
-	switch (value) {
-		case 1:
-			return '汽油车'
-			break;
-		case 2:
-			return '新能源'
-			break;
-		default:
-			return '汽油车'
-			break;
-	}
-
+Vue.filter('energyTpye', function (value) {
+  status = Number(value);
+  switch (value) {
+    case 1:
+      return '汽油车';
+      break;
+    case 2:
+      return '新能源';
+      break;
+    default:
+      return '汽油车';
+      break;
+  }
 });
 
 // 免费时长
-Vue.filter("freeDuration", function(value){
-	console.log(value);
-	let createTime = new Date(value).valueOf(),
-	freeTime = new Date('2022-06-20 00:00:00').valueOf(),
-	freeTxt = '0天0时15分0秒'
-	if (createTime > freeTime) {
-		freeTxt = '0天0时15分0秒'
-	}
-	return freeTxt
+Vue.filter('freeDuration', function (value) {
+  console.log(value);
+  let createTime = new Date(value).valueOf(),
+    freeTime = new Date('2022-06-20 00:00:00').valueOf(),
+    freeTxt = '0天0时15分0秒';
+  if (createTime > freeTime) {
+    freeTxt = '0天0时15分0秒';
+  }
+  return freeTxt;
 });

+ 28 - 29
utils/getUrlParams.js

@@ -6,35 +6,34 @@ let locationLocaturl = window.location.search;
 let openId = getUrlParams(locationLocaturl,"openId");
 */
 function getUrlParams(url, fkey) {
-	if (decodeURIComponent(url).indexOf('?') > -1) {
-		var result = [];
-		var urlParamsArr = decodeURIComponent(url).split('?');
-		urlParamsArr.shift();
-		let newUrlParamsArr = urlParamsArr.join('&').split('&');
-		for (var i = 0; i < newUrlParamsArr.length; i++) {
-			var paramKey = newUrlParamsArr[i].split('=')[0];
-			var paramValue = newUrlParamsArr[i].split('=')[1];
-			result.push({
-				key: paramKey,
-				value: paramValue
-			});
-		}
+  if (decodeURIComponent(url).indexOf('?') > -1) {
+    var result = [];
+    var urlParamsArr = decodeURIComponent(url).split('?');
+    urlParamsArr.shift();
+    let newUrlParamsArr = urlParamsArr.join('&').split('&');
+    for (var i = 0; i < newUrlParamsArr.length; i++) {
+      var paramKey = newUrlParamsArr[i].split('=')[0];
+      var paramValue = newUrlParamsArr[i].split('=')[1];
+      result.push({
+        key: paramKey,
+        value: paramValue
+      });
+    }
 
-		if (fkey) {
-			let keyArr = result.find(function(result) {
-				return result.key === fkey;
-			});
-			if (!!keyArr) {
-				let fkeyValue = keyArr.value;
-				return fkeyValue;
-			} else {
-				return false;
-			}
-
-		} else {
-			return result;
-		}
-	}
+    if (fkey) {
+      let keyArr = result.find(function (result) {
+        return result.key === fkey;
+      });
+      if (!!keyArr) {
+        let fkeyValue = keyArr.value;
+        return fkeyValue;
+      } else {
+        return false;
+      }
+    } else {
+      return result;
+    }
+  }
 }
 
-export default getUrlParams
+export default getUrlParams;

+ 8 - 8
utils/judgEnvironment.js

@@ -2,11 +2,11 @@
  * 判断当前浏览器环境是不是微信
  */
 export function getEnvIsWx() {
-	let en = window.navigator.userAgent.toLowerCase()
-	// 匹配en中是否含有MicroMessenger字符串,有则是微信浏览器
-	if (en.match(/MicroMessenger/i) == 'micromessenger') {
-		return true
-	} else {
-		return false
-	}
-}
+  let en = window.navigator.userAgent.toLowerCase();
+  // 匹配en中是否含有MicroMessenger字符串,有则是微信浏览器
+  if (en.match(/MicroMessenger/i) == 'micromessenger') {
+    return true;
+  } else {
+    return false;
+  }
+}