Browse Source

扫码修改

a1140836302 2 years ago
parent
commit
a2bb0685d3
100 changed files with 2932 additions and 1830 deletions
  1. 1 1
      App.vue
  2. 4 0
      common/http.js
  3. 62 27
      components/scan-info/scan-info.vue
  4. 2 10
      components/sub-title/sub-title.vue
  5. 137 105
      components/tab-bar/tab-bar.vue
  6. 61 41
      components/top-box/top-box.vue
  7. 1 4
      main.js
  8. 34 16
      pages.json
  9. 20 17
      pages/index/index.vue
  10. 407 0
      pages/powerExchange/index.vue
  11. 45 332
      pages/powerchange/index.vue
  12. 58 0
      pages/public/404.vue
  13. 17 2
      pages/public/login.vue
  14. 25 0
      pages/ucenter/about.vue
  15. 2 2
      pages/ucenter/car.vue
  16. 58 43
      pages/ucenter/car_show.vue
  17. 174 132
      pages/ucenter/index.vue
  18. 45 20
      pages/ucenter/record.vue
  19. 2 2
      pages/ucenter/record_show.vue
  20. 86 27
      pages/ucenter/set_avatar.vue
  21. BIN
      static/404.png
  22. BIN
      static/about.png
  23. BIN
      static/bbg.png
  24. BIN
      static/code.jpg
  25. BIN
      static/edit.png
  26. BIN
      static/ibg.png
  27. BIN
      static/pic.jpg
  28. BIN
      static/tabbar/menu-1.png
  29. BIN
      static/tabbar/menu-2.png
  30. BIN
      static/ucenter/dayu.png
  31. BIN
      static/ucenter/icon10.png
  32. 1 1
      uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue
  33. 9 4
      uni_modules/uni-steps/components/uni-steps/uni-steps.vue
  34. 8 8
      uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue
  35. 24 0
      uni_modules/zb-tooltip/changelog.md
  36. 290 0
      uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue
  37. 83 0
      uni_modules/zb-tooltip/package.json
  38. 30 0
      uni_modules/zb-tooltip/readme.md
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  42. 1 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/empty-box/empty-box.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/scan-info/scan-info.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/sub-title/sub-title.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/tab-bar/tab-bar.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/top-box/top-box.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/powerExchange/index.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/powerchange/index.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/public/404.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/public/login.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/scan/index.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/about.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/car.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/car_show.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/index.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/record.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/record_show.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/set_avatar.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/userAgreement/index.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-steps/components/uni-steps/uni-steps.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map
  69. 8 6
      unpackage/dist/dev/mp-weixin/app.json
  70. 20 23
      unpackage/dist/dev/mp-weixin/common/main.js
  71. 1 1
      unpackage/dist/dev/mp-weixin/common/main.wxss
  72. 2 2
      unpackage/dist/dev/mp-weixin/common/runtime.js
  73. 229 224
      unpackage/dist/dev/mp-weixin/common/vendor.js
  74. 86 50
      unpackage/dist/dev/mp-weixin/components/scan-info/scan-info.js
  75. 3 1
      unpackage/dist/dev/mp-weixin/components/scan-info/scan-info.wxss
  76. 31 35
      unpackage/dist/dev/mp-weixin/components/sub-title/sub-title.js
  77. 1 1
      unpackage/dist/dev/mp-weixin/components/sub-title/sub-title.wxml
  78. 74 51
      unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.js
  79. 1 1
      unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.wxml
  80. 0 3
      unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.wxss
  81. 39 32
      unpackage/dist/dev/mp-weixin/components/top-box/top-box.js
  82. 1 1
      unpackage/dist/dev/mp-weixin/components/top-box/top-box.wxml
  83. 34 23
      unpackage/dist/dev/mp-weixin/components/top-box/top-box.wxss
  84. 32 33
      unpackage/dist/dev/mp-weixin/pages/index/index.js
  85. 1 1
      unpackage/dist/dev/mp-weixin/pages/index/index.json
  86. 0 0
      unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  87. 15 10
      unpackage/dist/dev/mp-weixin/pages/index/index.wxss
  88. 251 179
      unpackage/dist/dev/mp-weixin/pages/powerExchange/index.js
  89. 9 0
      unpackage/dist/dev/mp-weixin/pages/powerExchange/index.json
  90. 0 0
      unpackage/dist/dev/mp-weixin/pages/powerExchange/index.wxml
  91. 51 21
      unpackage/dist/dev/mp-weixin/pages/powerExchange/index.wxss
  92. 63 293
      unpackage/dist/dev/mp-weixin/pages/powerchange/index.js
  93. 2 6
      unpackage/dist/dev/mp-weixin/pages/powerchange/index.json
  94. 0 0
      unpackage/dist/dev/mp-weixin/pages/powerchange/index.wxml
  95. 181 0
      unpackage/dist/dev/mp-weixin/pages/public/404.js
  96. 1 1
      unpackage/dist/dev/mp-weixin/pages/public/404.json
  97. 1 0
      unpackage/dist/dev/mp-weixin/pages/public/404.wxml
  98. 55 0
      unpackage/dist/dev/mp-weixin/pages/public/404.wxss
  99. 53 38
      unpackage/dist/dev/mp-weixin/pages/public/login.js
  100. 0 0
      unpackage/dist/dev/mp-weixin/pages/scan/index.wxml

+ 1 - 1
App.vue

@@ -15,7 +15,7 @@
 <style lang="scss">
 	/*每个页面公共css */
 	page{
-		background-color: #f8f9fb;
+		background: linear-gradient(180deg, #FFFFFF 0%, #F8F9FB 100%);
 		// background-color: #d5f1da;
 		max-width: 750rpx;
 		color: #1d2129;

+ 4 - 0
common/http.js

@@ -45,6 +45,10 @@ export function exchangeRecordShow(id){
 export function exchangeHistoryCar(){
 	return request.post("/inquire/exchangeHistorical")
 }
+//个人中心获取所有车辆列表
+export function userCarList(){
+	return request.post("/inquire/vehInfo")
+}
 //个人中心我的车辆详情
 export function exchangeCarDetail(plate){
 	return request.post(`/inquire/vehDetail?plate=${plate}`)

+ 62 - 27
components/scan-info/scan-info.vue

@@ -70,8 +70,9 @@
 				</view>
 			</view>
 		</view>
-		<button type="primary" @click="swapSubmit" class="submit" :disabled="swapConfirmDTO.swapState==2" :loading="swapConfirmDTO.swapState==2">
-		{{swapConfirmDTO.swapState==1?'确认换电':'换电进行中'}}</button>
+		<button type="primary" @click="swapSubmit" class="submit" :disabled="swapConfirmDTO.swapState==2"
+			:loading="swapConfirmDTO.swapState==2">
+			{{swapConfirmDTO.swapState==1?'确认换电':'换电进行中'}}</button>
 	</view>
 </template>
 
@@ -96,6 +97,7 @@
 		mounted() {
 			this.drawProgressbg();
 			this.$bus.$on('OndrawCircle', this.drawCircle) //参数为1-100
+			// this.drawCircle(10)
 			this.drawLine();
 		},
 		methods: {
@@ -134,32 +136,63 @@
 				ctx.draw();
 			},
 			drawCircle(step) {
-				var ctx = uni.createCanvasContext('cpbar', this);
+				//清除上一次的定时器
+				if (this.angleTimer != null) {
+					clearInterval(this.angleTimer)
+					this.angleTimer = null
+				}
+				let ctx = uni.createCanvasContext('cpbar', this);
 				// 进度条的渐变(中心x坐标-半径-边宽,中心Y坐标,中心x坐标+半径+边宽,中心Y坐标)
-				var gradient = ctx.createLinearGradient(0, 0, 130, 0);
-				
-				let increase = 0.05;
+				let gradient = ctx.createLinearGradient(0, 0, 130, 0);
+
+				ctx.setLineCap('square');
+				let interval = 0.05;
 				let end = (step / 100) * 2 * Math.PI - Math.PI / 2; // 最后的角度
-				let current = -Math.PI / 2; // 起始角度
-				let timer = setInterval(() => {
-					gradient.addColorStop('0', '#58be6b');
-					gradient.addColorStop('1.0', '#58be6b');
-					ctx.setLineWidth(12);
-					ctx.setStrokeStyle(gradient);
-					ctx.setLineCap('square');
-					ctx.beginPath();
-					// 参数step 为绘制的百分比
-					if (current < end) {
-						current = current + increase;
-					}
-					if (current >= end) {
-						current = end;
-						clearInterval(timer);
-					}
-					ctx.arc(110, 110, 70, -Math.PI / 2, current, false);
-					ctx.stroke();
-					ctx.draw();
-				}, 20);
+				let current = this.currentAngle == null ? -Math.PI / 2 : this.currentAngle; // 起始角度 上次结束或者-90
+				this.currentAngle = end //保存上次的角度
+
+				if (end > current) {
+					//递增情况
+					this.angleTimer = setInterval(() => {
+						gradient.addColorStop('0', '#58be6b');
+						gradient.addColorStop('1.0', '#58be6b');
+						ctx.setLineWidth(12);
+						ctx.setStrokeStyle(gradient);
+						ctx.beginPath();
+						if (current < end) {
+							current += interval
+						}
+						if (current >= end) {
+							current = end
+							clearInterval(this.angleTimer)
+							this.angleTimer = null
+						}
+						ctx.arc(110, 110, 70, -Math.PI / 2, current, false)
+						ctx.stroke()
+						ctx.draw()
+					}, 20)
+
+				} else if (end < current) {
+					//递减情况
+					this.angleTimer = setInterval(() => {
+						ctx.beginPath();
+						gradient.addColorStop('0', '#58be6b');
+						gradient.addColorStop('1.0', '#58be6b');
+						ctx.setLineWidth(12);
+						ctx.setStrokeStyle(gradient);
+						if (current > end) {
+							current -= interval
+						}
+						if (current <= end) {
+							current = end
+							clearInterval(this.angleTimer)
+							this.angleTimer = null
+						}
+						ctx.arc(110, 110, 70, -Math.PI / 2, current, false)
+						ctx.stroke()
+						ctx.draw()
+					}, 20)
+				} else {return}//相等
 			},
 			drawLine() {
 				var context = uni.createCanvasContext("cpline", this);
@@ -174,7 +207,7 @@
 					context.beginPath();
 					context.setLineWidth(lineWidth);
 					context.setStrokeStyle("#FFFFFF");
-
+					let n = 0
 					x = x0 - r * Math.sin(((6 * (i + 1) - 3) * Math.PI) / 180);
 					y = y0 - r * Math.cos(((6 * (i + 1) - 3) * Math.PI) / 180);
 
@@ -220,10 +253,12 @@
 		position: absolute;
 		width: 220px;
 		height: 220px;
+		z-index: 99;
 	}
 
 	.progress_line {
 		position: absolute;
+		z-index: 999;
 		width: 220px;
 		height: 220px;
 	}

+ 2 - 10
components/sub-title/sub-title.vue

@@ -1,22 +1,14 @@
 <template>
 	<view class="list">
 		<view>{{descript}}:</view>
-		<view>{{value || '-'}}{{unit || ''}}</view>
+		<view>{{values || '-'}}{{unit || ''}}</view>
 	</view>
 </template>
 
 <script>
 	export default {
-		props:['descript','value','unit'],
+		props:['descript','values','unit'],
 		name:'sub-title',
-		data() {
-			return {
-				
-			}
-		},
-		methods: {
-			
-		}
 	}
 </script>
 

+ 137 - 105
components/tab-bar/tab-bar.vue

@@ -1,144 +1,176 @@
-<template>
-	<view class="footer">
-		<view class="index" @click="swithTab(1)">
-			<view><image :src="currentPage === 1?'../../static/tabbar/menu-1.png':'../../static/tabbar/menu-1-active.png'"></image></view>
-			<view :class="[currentPage === 1?'current':'']">首页</view>
+<template>
+	<view class="tab-bar">
+		<view class="footer">
+			<view class="index" @click="swithTab(1)">
+				<view>
+					<image
+						:src="currentPage === 1?'../../static/tabbar/menu-1.png':'../../static/tabbar/menu-1-active.png'">
+					</image>
+				</view>
+				<view :class="[currentPage === 1?'current':'']">首页</view>
+			</view>
+			<view class="scan" @click="swithTab(2)">
+				<view>
+					<image src="../../static/tabbar/menu-2.png"></image>
+				</view>
+				<view class="hover">扫码换电</view>
+			</view>
+			<view class="index" @click="swithTab(3)">
+				<view>
+					<image
+						:src="currentPage === 3?'../../static/tabbar/menu-3-active.png':'../../static/tabbar/menu-3.png'">
+					</image>
+				</view>
+				<view :class="[currentPage === 3?'current':'']">我的</view>
+			</view>
 		</view>
-		<view class="scan" @click="swithTab(2)">
-			<view><image src="../../static/tabbar/menu-2.png"></image></view>
-			<view class="hover">扫码换电</view>
-		</view>
-		<view class="index" @click="swithTab(3)">
-			<view><image :src="currentPage === 3?'../../static/tabbar/menu-3-active.png':'../../static/tabbar/menu-3.png'"></image></view>
-			<view :class="[currentPage === 3?'current':'']">我的</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"tab-bar",
-		data() {
-			return {
-				currentPage:0,
-				stationCode:null,
-			};
+		<view class="bottom" v-if="plat.startsWith('iPhone X')"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "tab-bar",
+		data() {
+			return {
+				currentPage: 0,
+				stationCode: null,
+				plat:uni.getSystemInfoSync().model
+			};
 		},
 		mounted() {
 			this.getRoute()
 		},
-		methods:{
-			swithTab(num){
-				if(num === 1){
+		methods: {
+			swithTab(num) {
+				if (num === 1) {
 					uni.switchTab({
 						url: '/pages/index/index',
 					});
-				}else if(num === 2){
-					if(this.$storage.getJson("token")){
+				} else if (num === 2) {
+					if (this.$storage.getJson("token")) {
 						let stationCode='st001'
-						this.$http.getStationExchange({stationCode:stationCode}).then(res=>{
-							if(res.code === 0 && res.data){
-								uni.navigateTo({
-									url:'/pages/powerchange/index?stationCode='+stationCode+'&exchangeNo='+res.data
-								})
-							}else{
-								that.$utils.msg(res.msg)
-							}
-						})	
-						// let that=this
+						uni.navigateTo({
+							url:'/pages/powerchange/index?stationCode='+stationCode
+						})
+						// let that = this
 						// uni.scanCode({
-						// 	success: function (res) {
-						// 		that.stationCode=res.result.split("=")[1]
-						// 		that.$http.getStationExchange({stationCode:that.stationCode}).then(res=>{
-						// 			if(res.code === 0 && res.data){
+						// 	success: function(res) {
+						// 		const url = res.result
+						// 		if (url.startsWith('https://zk.li-ai.com.cn/?station_code=')) {
+						// 			const parts = url.split("=")
+						// 			if (parts.length === 2) {
+						// 				that.stationCode = parts[1]
+						// 				uni.navigateTo({
+						// 					url: '/pages/powerchange/index?stationCode=' +that.stationCode
+						// 				})
+						// 			} else {
 						// 				uni.navigateTo({
-						// 					url:'/pages/powerchange/index?stationCode='+that.stationCode+'&exchangeNo='+res.data
+						// 					url: '/pages/public/404?error=' + '站点编号错误!!'
 						// 				})
-						// 			}else{
-						// 				that.$utils.msg(res.msg)
 						// 			}
-						// 		})	
-						// 	}
-						// });	
-						
-					}else{
+						// 		} else {
+						// 			uni.navigateTo({
+						// 				url: '/pages/public/404?error=' + '二维码链接错误!!'
+						// 			})
+						// 		}
+						// 	},
+						// });
+					} else {
 						uni.navigateTo({
 							url: '/pages/public/login',
 						});
 					}
-				}else{
-					if(this.$storage.getJson("token")){
+				} else {
+					if (this.$storage.getJson("token")) {
 						uni.switchTab({
 							url: '/pages/ucenter/index',
 						});
-					}else{
+					} else {
 						uni.navigateTo({
 							url: '/pages/public/login',
 						});
 					}
 				}
 			},
-			getRoute(){
+			getRoute() {
 				let curPage = getCurrentPages();
 				let route = curPage[curPage.length - 1].route
-				if(route === 'pages/index/index'){
-					this.currentPage=1
-				}else if(route === 'pages/ucenter/index'){
-					this.currentPage=3
+				if (route === 'pages/index/index') {
+					this.currentPage = 1
+				} else if (route === 'pages/ucenter/index') {
+					this.currentPage = 3
 				}
 			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.footer{
-		width: 100%;
-		height: 106rpx;
-		background-image: url(~@/static/bbg.png);
-		background-size: 100% 100%;
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.tab-bar{
+		display: flex;
+		flex-direction: column;
 		position: fixed;
 		left: 0;
 		right: 0;
-		bottom: 0;
-		display: flex;
-		justify-content: space-around;
-		padding-top: 15rpx;
-		box-sizing: border-box;
-		font-size: 26rpx;
-		image{
-			width: 39rpx;
-			height: 39rpx;
-		}
-		.index{
-			width: 300rpx;
-			text-align: center;
+		bottom: 0rpx;
+		.bottom{
+			background-color: #fff;
+			height: 48rpx;
+			display: block;
 		}
-		.scan{
-			position: relative;
+		.footer {
+			width: 100%;
+			height: 106rpx;
+			background-image: url(~@/static/bbg.png);
+			background-size: 100% 100%;
 			display: flex;
-			flex: 1;
-			text-align: center;
-			view:first-child{
-				position: absolute;
-				bottom: 30rpx;
-				width: 100%;
+			justify-content: space-around;
+			padding-top: 15rpx;
+			font-size: 26rpx;
+			box-sizing: border-box;
+			image {
+				width: 39rpx;
+				height: 39rpx;
 			}
-			view:last-child{
-				position: absolute;
-				bottom: 6rpx;
-				width: 100%;
+		
+			.index {
+				width: 240rpx;
+				text-align: center;
 			}
-			image{
-				width: 106rpx;
-				height: 106rpx;
+		
+			.scan {
+				position: relative;
+				display: flex;
+				flex: 1;
+				text-align: center;
+		
+				view:first-child {
+					position: absolute;
+					bottom: 30rpx;
+					width: 100%;
+				}
+		
+				view:last-child {
+					position: absolute;
+					bottom: 6rpx;
+					width: 100%;
+				}
+		
+				image {
+					width: 100rpx;
+					height: 100rpx;
+				}
+			}
+		
+			.hover {
+				color: #58be6b;
+			}
+		
+			.current {
+				color: #959ea8;
 			}
 		}
-		.hover{
-			color: #58be6b;
-		}
-		.current{
-			color: #959ea8;
-		}
-	}
-</style>
+	}
+	
+</style>

+ 61 - 41
components/top-box/top-box.vue

@@ -5,18 +5,23 @@
 			<view class="context">您好,请授权登录</view>
 		</view>
 		<view class="login" @click="getnickName" v-else>
-			<view class="avatar"><image :src="userinfo.avatar ? userinfo.avatar : defaultimg"></image></view>
+			<view class="avatar">
+				<image :src="userinfo.avatar ? userinfo.avatar : defaultimg"></image>
+			</view>
+			<image src="../../static/edit.png" v-if="keys==2" class="edit"></image>
 			<view class="info">
-				<view class="name">{{userinfo.nickName || '小狸'}}</view>
+				<view class="top">
+					<view class="name">{{userinfo.nickName || '小狸'}}</view>
+					<view class="join">
+						<image src="../../static/ucenter/icon1.png"></image>
+						<view class="days">已加入{{days}}天</view>
+					</view>
+				</view>
 				<view class="phone">
 					<view><image src="../../static/ucenter/icon2.png"></image></view>
 					<view>{{userinfo.telephone}}</view>
 				</view>
 			</view>
-			<view class="join">
-				<image src="../../static/ucenter/icon1.png"></image>
-				<view class="days">已加入{{days}}天</view>
-			</view>
 		</view>
 	</view>
 </template>
@@ -24,15 +29,17 @@
 <script>
 	export default {
 		name:"top-box",
-		props:['userinfo','days'],
+		props:['userinfo','days','keys'],
 		data(){
 			return{
 				defaultimg:'../../static/no-login.png',
+				editLogo:'../../static/edit-logo.png'
 			}
 		},
 		methods:{
 			getnickName(){
-				if(this.$store.state.users.avatar == null){
+				// this.$store.state.users.avatar == null && 
+				if(this.keys ==2){
 					uni.navigateTo({
 						url:'/pages/ucenter/set_avatar'
 					})
@@ -66,23 +73,59 @@
 	.login{
 		margin-top: 15rpx;
 		display: flex;
-		.avatar image{
-			width: 110rpx;
-			height: 110rpx;
-			margin: 0 30rpx;
-			border-radius: 50%;
+		position: relative;
+		.avatar{
+			image:first-child{
+				width: 110rpx;
+				height: 110rpx;
+				margin-left: 30rpx;
+				margin-right: 10rpx;
+				border-radius: 50%;
+			}
+		}
+		.edit{
+			width: 36rpx;
+			height: 36rpx;
+			position:absolute;
+			left: 100rpx;
+			bottom: 5rpx;
 		}
 		.info{
 			display: flex;
 			flex-direction: column;
 			height: 100rpx;
-			justify-content: space-around;
+			justify-content:space-between;
 			padding-top: 10rpx;
 			margin-left: 5rpx;
-			.name{
-				color: #1d2129;
-				font-size: 36rpx;
-				font-weight: bold;
+			.top{
+				display: flex;
+				.join{
+					display: flex;
+					margin-left: 12rpx;
+					position: relative;
+					image{
+						width: 42rpx;
+						height: 48rpx;
+						position: absolute;
+					}
+					.days{
+						background-color: #f5f5f5;
+						height: 44rpx;
+						padding: 0 20rpx;
+						margin-left: 20rpx;
+						margin-top: 5rpx;
+						border-top-right-radius:20rpx;
+						border-bottom-right-radius:20rpx;
+						font-size: 24rpx;
+						color: #86909c;
+						line-height: 44rpx;
+					}
+				}
+				.name{
+					color: #1d2129;
+					font-size: 36rpx;
+					font-weight: bold;
+				}
 			}
 			.phone{
 				display: flex;
@@ -95,28 +138,5 @@
 				}
 			}
 		}
-		.join{
-			display: flex;
-			padding-top: 15rpx;
-			margin-left: 20rpx;
-			position: relative;
-			image{
-				width: 42rpx;
-				height: 48rpx;
-				position: absolute;
-			}
-			.days{
-				background-color: #f5f5f5;
-				height: 44rpx;
-				padding: 0 20rpx;
-				margin-left: 20rpx;
-				margin-top: 5rpx;
-				border-top-right-radius:20rpx;
-				border-bottom-right-radius:20rpx;
-				font-size: 24rpx;
-				color: #86909c;
-				line-height: 44rpx;
-			}
-		}
 	}
 </style>

+ 1 - 4
main.js

@@ -14,13 +14,10 @@ Vue.prototype.$http = http
 Vue.prototype.$store = store
 Vue.prototype.$storage = storage
 Vue.prototype.$moment = moment
+Vue.prototype.$bus = new Vue()
 
 App.mpType = 'app'
-
 const app = new Vue({
     ...App,
-	beforeCreate() {
-		Vue.prototype.$bus = this;
-	}
 })
 app.$mount()

+ 34 - 16
pages.json

@@ -1,20 +1,28 @@
 {
 	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
+			"lazyCodeLoading": "requiredComponents",
 			"path": "pages/index/index",
 			"style": {
 				"navigationBarTitleText": "智小狸",
-				"enablePullDownRefresh":true
+				"enablePullDownRefresh":false
 			}
 		},
 		{
-		    "path" : "pages/powerchange/index",
+		    "path" : "pages/public/404",
 		    "style" :                                                                                    
 		    {
-		        "navigationBarTitleText": "换电流程",
+		        "navigationBarTitleText": "",
+		        "enablePullDownRefresh": false
+		    }
+		},
+		{
+		    "path" : "pages/ucenter/about",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "关于我们",
 		        "enablePullDownRefresh": false
 		    }
-		    
 		},
 		{
 		    "path" : "pages/ucenter/record",
@@ -47,28 +55,28 @@
 		    "path" : "pages/ucenter/index",
 		    "style" :                                                                                    
 		    {
-		        "navigationBarTitleText": "个人中心",
+		        "navigationBarTitleText": "我的",
 		        "enablePullDownRefresh": false
 		    }
 		    
 		},
 		{
-	        "path" : "pages/ucenter/car",
-	        "style" :                                                                                    
-	        {
-	            "navigationBarTitleText": "我的车辆",
-	            "enablePullDownRefresh": false
-	        }
-	    },
-		{
-		    "path" : "pages/scan/index",
+		    "path" : "pages/powerExchange/index",
 		    "style" :                                                                                    
 		    {
-		        "navigationBarTitleText": "确认换电信息",
+		        "navigationBarTitleText": "换电流程",
 		        "enablePullDownRefresh": false
 		    }
 		    
 		},
+		{
+	        "path" : "pages/ucenter/car",
+	        "style" :                                                                                    
+	        {
+	            "navigationBarTitleText": "换电历史车辆",
+	            "enablePullDownRefresh": false
+	        }
+	    },
 		{
 	        "path" : "pages/ucenter/set_avatar",
 	        "style" :                                                                                    
@@ -96,11 +104,20 @@
             }
             
         }
+        ,{
+            "path" : "pages/powerchange/index",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",
-		"navigationBarBackgroundColor": "#F8F8F8",
+		"navigationBarBackgroundColor": "#FFFFFF",
 		"backgroundColor": "#F8F8F8"
 	},
 	"uniIdRouter": {},
@@ -108,6 +125,7 @@
 		"custom": true, 
 		"color": "#333",
 		"selectedColor": "#6dc67d",
+		"backgroundColor": "#FFF",
 		"list": [{
 				"pagePath": "pages/index/index",
 				"iconPath": "static/tabbar/menu-1.png",

+ 20 - 17
pages/index/index.vue

@@ -1,10 +1,10 @@
 <template>
 	<view class="main">
-		<top-box :userinfo="userinfo" :days="days" key="1"></top-box>
+		<top-box :userinfo="userinfo" :days="days" keys="1"></top-box>
 		<view class="main-box">
 			<view class="carinfo">
 				<view class="norecord" v-if="noData">{{noData}}</view>
-				<uni-swiper-dot :info="datalist" :current="current" field="content" mode="default"
+				<uni-swiper-dot :info="datalist" :current="current" field="content" mode="indexes"
 					:dots-styles="dotsStyles">
 					<swiper class="swiper-box" @change="change">
 						<swiper-item v-for="(item ,index) in datalist" :key="index">
@@ -30,7 +30,7 @@
 											<view class="blue" :style="'width:'+item.soc+'%'">
 												<!-- (进度条显示的图片  样式:根据父元素进行相对定位 ,本身绝对定位 ) -->
 												<text class="protext" :style="'left:'+item.soc+'%'"></text>
-												<view class="pronumber" :style="'left:'+(item.soc-6)+'%'">
+												<view class="pronumber" :style="'left:'+(item.soc-3)+'%'">
 													{{item.soc || 0}}%
 												</view>
 											</view>
@@ -147,7 +147,6 @@
 					empty:'暂无相关数据'
 				},
 				noposition:null,
-				defaultimg:'this.src="'+require('../../static/pic.jpg')+'"',
 				days:0,
 				Authorize:false,
 			}
@@ -195,14 +194,14 @@
 				})
 			},
 			reloadList(){
-				this.mescroll.resetUpScroll();
+				this.canReset && this.mescroll.resetUpScroll()
+				this.canReset && this.mescroll.scrollTo(0,0)
+				this.canReset = true
 			},
 			//获取换电站信息
 			upCallback(page) {
 				if(this.Authorize==true){
-					if(page.num){
-						this.params.page=page.num
-					}
+					this.params.page=page.num
 					this.params.pageSize=page.size
 					this.$http.homeStation(this.params).then(res => {
 						// console.log(res.data)
@@ -269,7 +268,7 @@
 						that.params.lng = res.longitude
 						that.Authorize=true
 						that.noposition=null
-						that.upCallback(that.upOption.page)
+						that.mescroll.resetUpScroll()
 						console.log(res, 'getLocation')
 						
 					},
@@ -359,6 +358,7 @@
 	}
 	.main-box {
 		padding: 0 30rpx;
+		background: linear-gradient(180deg, #FFFFFF 0%, #F8F9FB 100%);
 		.carinfo {
 			width: 100%;
 			height: 350rpx;
@@ -400,9 +400,11 @@
 
 					view:last-child {
 						width: 280rpx;
-						text-align: right;
+						text-align: left;
+						padding-left: 10rpx;
 						color: #6cc57d;
 						font-size: 30rpx;
+						padding-top: 2rpx;
 					}
 				}
 
@@ -417,16 +419,17 @@
 
 					view:first-child {
 						font-weight: 600;
-						font-size: 32rpx;
+						font-size: 36rpx;
 						padding-right: 15rpx;
 					}
 				}
 
 				.battery-soc {
 					display: flex;
-
+					margin-bottom: 22rpx;
 					view:first-child {
-						width: 138rpx;
+						width: 105rpx;
+						font-size: 22rpx;
 					}
 
 					view:last-child {
@@ -435,7 +438,7 @@
 						.strip {
 							/* 父元素相对定位 */
 							position: relative;
-							width: 480rpx;
+							width: 525rpx;
 							height: 18rpx;
 							background-color: #fff;
 							top: 10rpx;
@@ -481,7 +484,6 @@
 					view>view:last-child {
 						color: #939da7;
 						font-size: 26rpx;
-						margin-top: 8rpx;
 					}
 				}
 			}
@@ -492,8 +494,8 @@
 			padding: 0 20rpx;
 			box-sizing: border-box;
 			display: flex;
-			margin: 30rpx 0;
-
+			margin: 24rpx 0;
+			
 			image {
 				width: 9rpx;
 				height: 39rpx;
@@ -516,6 +518,7 @@
 			width: 690rpx;
 			box-sizing: border-box;
 			border-radius: 25rpx;
+			box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226,226,226,0.25);
 			background-color: #fff;
 			padding: 20rpx 30rpx;
 			display: flex;

+ 407 - 0
pages/powerExchange/index.vue

@@ -0,0 +1,407 @@
+<template>
+	<view>
+		<scan-info 
+			:swapInfoDTO="swapInfoDTO" 
+			:swapConfirmDTO="swapConfirmDTO" 
+			@sendExchangeMsg="sendExchangeMsg"
+			:exchangeNo="exchangeNo"
+			v-show="pageState===2">
+		</scan-info>
+		<view class="swapinfo" v-show="pageState===1">
+			<view class="header">
+				<view @click="getTab(1)" :class="{'active':currentTab===1}">换电流程</view>
+				<view @click="getTab(2)" :class="{'active':currentTab===2}">车辆信息</view>
+				<view @click="getTab(3)" :class="{'active':currentTab===3}">电池信息</view>
+			</view>
+			<view class="changeProcess" v-show="currentTab===1">
+				<view class="changeCurrent">
+					<view class="info">
+						<view>
+							<image src="../../static/icon7.png"></image>
+						</view>
+						<view>{{currentDescript || '-'}}</view>
+					</view>
+					<view class="times">
+						{{currentTime || '-'}} | {{plate || '-'}}
+					</view>
+				</view>
+				<view class="timeline">
+					<view class="timeinfo">
+						<view class="list" v-for="(item,index) in swapStepList" :key="index">
+							<view>{{$moment(item.seqTime).format("YYYY-MM-DD")}}</view>
+							<view>{{$moment(item.seqTime).format("HH:mm:ss")}}</view>
+						</view>
+					</view>
+					<view class="line">
+						<uni-steps :options="swapStepList" :active="step" direction="column"></uni-steps>
+					</view>
+				</view>
+			</view>
+			<view class="changeCar" v-show="currentTab===2">
+				<view class="ban">
+					<image src="../../static/car-info.png"></image>
+				</view>
+				<view class="info-box">
+					<sub-title descript="车牌" :values="swapInfoDTO.plate"></sub-title>
+					<sub-title descript="VIN码" :values="swapInfoDTO.vin"></sub-title>
+					<sub-title descript="累计里程" :values="swapInfoDTO.mileage" unit="km"></sub-title>
+					<sub-title descript="累计换电" :values="times" unit="次"></sub-title>
+					<sub-title descript="解锁状态" :values="swapInfoDTO.lockState===1?'已解锁':'已上锁'"></sub-title>
+					<sub-title descript="上电状态" :values="swapInfoDTO.powerOnState===0?'已下电':'未下电'"></sub-title>
+				</view>
+			</view>
+			<view class="changeBattery" v-show="currentTab===3">
+				<view class="ban">
+					<image src="../../static/battery-info.png"></image>
+				</view>
+				<view class="info-box">
+					<sub-title descript="车辆电池编号" :values="swapInfoDTO.vehSn"></sub-title>
+					<sub-title descript="车辆电池SOC" :values="swapInfoDTO.vehSoc" unit="%"></sub-title>
+					<view class="list">
+						<view>换电电池编号:</view>
+						<view v-if="swapInfoDTO" @click="showBattery">{{swapInfoDTO.swapSn | fiterBattery}}</view>
+					</view>
+					<sub-title descript="换电电池SOC" :values="swapInfoDTO.swapSoc" unit="%"></sub-title>
+					<sub-title descript="换电量" :values="swapInfoDTO.swapCapacity" unit="(kW/h)"></sub-title>
+					<sub-title descript="累计里程" :values="swapInfoDTO.mileage" unit="km"></sub-title>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				swapStepList: [],
+				step: 0,
+				currentDescript: '',
+				currentTime: '',
+				plate: '',
+				swapInfoDTO: null,
+				swapConfirmDTO: null,
+				currentTab: 1, //当前tab
+				swapState: -1,
+				ws: null,
+				timer: null,
+				exchangeNo: null,
+				times: 0, //累计换电次数,
+				getStationCode:null,
+			}
+		},
+		mounted() {
+			this.$bus.$on('sendMsg2', this.sendExchangeMsg)
+			if(this.getStationCode && this.exchangeNo){
+				this.InitWs(this.exchangeNo, this.getStationCode)
+			}
+		},
+		onLoad(options) {
+			if (options.exchangeNo && options.stationCode) {
+				this.getStationCode=options.stationCode
+				this.exchangeNo = options.exchangeNo
+			} else {
+				this.$utils.msg('参数丢失!')
+			}
+
+		},
+		filters:{
+			fiterBattery:function(val){
+				if(!val){
+					return '-'
+				}else{
+					return val.substring(0,4)+'****'+val.substring(val.length-4)
+				}
+			},
+		},
+		onUnload() {
+			console.log('onUnload')
+			clearInterval(this.timer)
+			this.timer = null
+			this.ws.close()
+			uni.redirectTo({
+				url: '/pages/index/index'
+			})
+		},
+		computed: {
+			pageState() {
+				if (this.swapState === -1) {
+					return 0
+				} else if (this.swapState === 1) {
+					return 1
+				} else {
+					return 2
+				}
+			}
+		},
+		watch: {
+			pageState(val) {
+				if (val === 0) {
+					uni.showLoading({
+						title: ''
+					});
+				} else {
+					uni.hideLoading();
+				}
+			}
+		},
+		methods: {
+			//显示电池编号
+			showBattery(){
+				
+			},
+			//切换tab
+			getTab(num) {
+				if (num === 2) {
+					this.currentTab = 2
+					this.$http.getExchangeTimes(this.swapInfoDTO.vin).then(res => {
+						this.times = res.data
+					})
+				} else if (num === 3) {
+					this.currentTab = 3
+				} else {
+					this.currentTab = 1
+				}
+			},
+			//判断websocket是否链接上
+			InitWs(exchangeNo, stationCode) {
+				if (exchangeNo && stationCode) {
+					if (this.ws != null) {
+						this.ws.close()
+						this.ws = null
+					}
+					if (this.timer != null) {
+						clearInterval(this.timer)
+						this.timer = null
+					}
+					let users = this.$storage.getJson("users");
+					let token = this.$storage.getJson("token");
+					if (users == null || token == null) {
+						navigateTo("public/login");
+						return false;
+					}
+					this.ws = uni.connectSocket({
+						url: this.$config.web_socket_url + stationCode + '/' + token,
+						header: {
+							'content-type': 'application/json'
+						},
+						complete: () => {}
+					})
+					this.ws.onOpen(() => {
+						let msg = {
+							type: "subscribeExchange",
+							payLoad: {
+								exchangeNo: exchangeNo
+							}
+						}
+						this.ws.send({
+							data: JSON.stringify(msg)
+						})
+					})
+					this.ws.onMessage((res) => {
+						let data = JSON.parse(res.data)
+						console.log(data)
+						if (data.type === 'subscribe') {
+							if (data.state === 0) {
+								console.log('订阅成功')
+							} else {
+								this.$utils.msg('订阅失败')
+							}
+						} else if (data.type === 'swapInfo') {
+							this.swapConfirmDTO = data.swapConfirmDTO
+							this.swapInfoDTO = data.swapInfoDTO
+							this.swapState = data.swapConfirmDTO.swapState
+							data.swapStepList.reverse()
+							this.currentDescript = data.swapStepList[0].description,
+							this.currentTime = data.swapStepList[0].seqTime,
+							this.plate = data.swapConfirmDTO.plate
+							this.swapStepList.unshift(...data.swapStepList)
+							this.step = 0
+							this.$bus.$emit('OndrawCircle', Math.ceil((data.swapConfirmDTO.vehSoc) * 1))
+						} else if (data.type === 'startReply') {
+							if (data.state === 0) {
+								this.swapState = 2
+								console.log('站控已启动')
+							} else {
+								this.$utils.msg('站控启动失败')
+							}
+						}
+					})
+					// 监听WebSocket关闭事件
+					this.ws.onClose(() => {
+						console.log('WebSocket连接已关闭!');
+					})
+					this.ws.onError(() => {
+						console.log("WebSocket连接错误")
+					})
+					if (this.timer == null) {
+						this.timer = setInterval(() => {
+							if (this.ws.readyState != 1) {
+								clearInterval(this.timer)
+								this.timer = null
+								this.ws.close()
+								this.InitWs(exchangeNo, stationCode)
+							}
+						}, 2000)
+					}
+				} else {
+					uni.switchTab({
+						url: '/pages/index/index'
+					})
+				}
+			},
+			sendExchangeMsg(msg) {
+				this.ws.send(msg)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.list {
+		width: 100%;
+		display: flex;
+		height: 100rpx;
+		justify-content: space-between;
+		font-size: 30rpx;
+		view:first-child {
+			color: #86909c;
+		}
+		view:last-child {
+			color: #1d2129;
+		}
+	}
+	.swapinfo {
+
+		//顶部
+		.header {
+			display: flex;
+			padding: 30rpx;
+			width: 690rpx;
+			color: #86909c;
+			font-size: 32rpx;
+			justify-content: space-around;
+
+			.active {
+				color: #1d2129;
+				font-weight: bold;
+				position: relative;
+			}
+
+			.active::after {
+				content: '';
+				background-image: url('@/static/line.png');
+				background-size: 100% 100%;
+				width: 52rpx;
+				height: 9rpx;
+				position: absolute;
+				bottom: -25rpx;
+				left: 32%;
+			}
+		}
+
+		//换电流程
+		.changeProcess {
+			padding-bottom: 20rpx;
+
+			.timeline {
+				display: flex;
+				box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226, 226, 226, 0.25);
+				border-radius: 24rpx;
+				background-color: #fff;
+				margin: 30rpx;
+				padding: 29rpx;
+				opacity: 1;
+
+				.timeinfo {
+					display: flex;
+					flex-direction: column;
+					text-align: right;
+
+					.list {
+						display: flex;
+						flex-direction: column;
+						width: 100%;
+						height: 102rpx;
+						color: #c9cdd4;
+						font-size: 28rpx;
+
+						view:first-child {
+							color: #86909c;
+						}
+					}
+				}
+
+				.line {
+					flex: 1;
+				}
+			}
+
+			.changeCurrent {
+				width: 690rpx;
+				margin: 30rpx auto;
+				height: 180rpx;
+				background-image: url('@/static/change-bg.png');
+				background-size: 100% 100%;
+				padding: 25rpx;
+				box-sizing: border-box;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-around;
+
+				.info {
+					display: flex;
+					color: #fff;
+					font-size: 30rpx;
+					font-weight: bold;
+					line-height: 36rpx;
+
+					image {
+						width: 60rpx;
+						height: 60rpx;
+						padding-right: 25rpx;
+					}
+
+					view:last-child {
+						padding-top: 12rpx;
+					}
+				}
+
+				.times {
+					color: #ededed;
+					text-indent: 10rpx;
+				}
+			}
+		}
+
+		//换电流程车和电池信息
+		.changeCar,
+		.changeBattery {
+			width: 690rpx;
+			margin: 30rpx 30rpx;
+			padding: 15rpx 0rpx;
+			box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226, 226, 226, 0.25);
+			border-radius: 24rpx;
+			opacity: 1;
+			background-color: #fff;
+
+			.ban {
+				width: 547rpx;
+				height: 298rpx;
+				margin: 70rpx auto;
+
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.info-box {
+				width: 587rpx;
+				margin: 0 auto;
+				display: flex;
+				flex-direction: column;
+			}
+		}
+	}
+</style>

+ 45 - 332
pages/powerchange/index.vue

@@ -1,340 +1,53 @@
-<template>
-	<view>
-		<scan-info :swapInfoDTO="swapInfoDTO" :swapConfirmDTO="swapConfirmDTO" :exchangeNo="exchangeNo"
-			v-show="pageState===1">
-		</scan-info>
-		<view class="swapinfo" v-show="pageState===2">
-			<view class="header">
-				<view @click="getTab(1)" :class="{'active':currentTab===1}">换电流程</view>
-				<view @click="getTab(2)" :class="{'active':currentTab===2}">车辆信息</view>
-				<view @click="getTab(3)" :class="{'active':currentTab===3}">电池信息</view>
-			</view>
-			<view class="changeProcess" v-show="currentTab===1">
-				<view class="changeCurrent">
-					<view class="info">
-						<view>
-							<image src="../../static/icon7.png"></image>
-						</view>
-						<view>{{currentDescript || '-'}}</view>
-					</view>
-					<view class="times">
-						{{currentTime || '-'}} | {{plate || '-'}}
-					</view>
-				</view>
-				<view class="timeline">
-					<view class="timeinfo">
-						<view class="list" v-for="(item,index) in swapStepList" :key="index">
-							<view>{{$moment(item.seqTime).format("YYYY-MM-DD")}}</view>
-							<view>{{$moment(item.seqTime).format("HH:mm:ss")}}</view>
-						</view>
-					</view>
-					<view class="line">
-						<uni-steps :options="swapStepList" :active="step" direction="column"></uni-steps>
-					</view>
-				</view>
-			</view>
-			<view class="changeCar" v-show="currentTab===2">
-				<view class="ban">
-					<image src="../../static/car-info.png"></image>
-				</view>
-				<view class="info-box">
-					<sub-title descript="车牌" :value="swapInfoDTO.plate"></sub-title>
-					<sub-title descript="VIN码" :value="swapInfoDTO.vin"></sub-title>
-					<sub-title descript="累计里程" :value="swapInfoDTO.mileage" unit="km"></sub-title>
-					<sub-title descript="累计换电" :value="times" unit="次"></sub-title>
-					<sub-title descript="解锁状态" :value="swapInfoDTO.lockState===1?'已解锁':'已上锁'"></sub-title>
-					<sub-title descript="上电状态" :value="swapInfoDTO.powerOnState===0?'已下电':'未下电'"></sub-title>
-				</view>
-			</view>
-			<view class="changeBattery" v-show="currentTab===3">
-				<view class="ban">
-					<image src="../../static/battery-info.png"></image>
-				</view>
-				<view class="info-box">
-					<sub-title descript="车辆电池编号" :value="swapInfoDTO.vehSn"></sub-title>
-					<sub-title descript="车辆电池SOC" :value="swapInfoDTO.vehSoc" unit="%"></sub-title>
-					<sub-title descript="换电电池编号" :value="swapInfoDTO.swapSn"></sub-title>
-					<sub-title descript="换电电池SOC" :value="swapInfoDTO.swapSoc" unit="%"></sub-title>
-					<sub-title descript="换电量" :value="swapInfoDTO.swapCapacity" unit="(kW/h)"></sub-title>
-					<sub-title descript="累计里程" :value="swapInfoDTO.mileage" unit="km"></sub-title>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				swapStepList: [],
-				step: 0,
-				currentDescript: '',
-				currentTime: '',
-				plate: '',
-				swapInfoDTO: null,
-				swapConfirmDTO: null,
-				currentTab: 1, //当前tab
-				swapState: -1,
-				ws: null,
-				timer: null,
-				exchangeNo: null,
-				times: 0, //累计换电次数
-			}
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				getstationCode:null,
+			}
 		},
 		mounted() {
-
+			this.getPamars()
 		},
 		onLoad(options) {
-			this.InitWs(options.exchangeNo, options.stationCode)
-			this.exchangeNo = options.exchangeNo
-		},
-		onUnload() {
-			console.log('onUnload')
-			clearInterval(this.timer)
-			this.timer = null
-			this.ws.close()
-			uni.redirectTo({
-				url: '/pages/index/index'
-			})
-		},
-		computed: {
-			pageState() {
-				if (this.swapState === -1) {
-					return 0
-				} else if (this.swapState === 1) {
-					return 1
-				} else {
-					return 2
-				}
-			}
-		},
-		methods: {
-			//切换tab
-			getTab(num) {
-				if (num === 2) {
-					this.currentTab = 2
-					this.$http.getExchangeTimes(this.swapInfoDTO.vin).then(res => {
-						this.times = res.data
-					})
-				} else if (num === 3) {
-					this.currentTab = 3
-				} else {
-					this.currentTab = 1
-				}
-			},
-			//判断websocket是否链接上
-			InitWs(exchangeNo, stationCode) {
-				if (exchangeNo && stationCode) {
-					if (this.ws != null) {
-						this.ws.close()
-						this.ws = null
-					}
-					if (this.timer != null) {
-						clearInterval(this.timer)
-						this.timer = null
-					}
-					let users = this.$storage.getJson("users");
-					let token = this.$storage.getJson("token");
-					if (users == null || token == null) {
-						navigateTo("public/login");
-						return false;
-					}
-					this.ws = uni.connectSocket({
-						url: this.$config.web_socket_url + stationCode + '/' + token,
-						header: {
-							'content-type': 'application/json'
-						},
-						complete: () => {}
-					})
-					this.ws.onOpen(() => {
-						let msg = {
-							type: "subscribeExchange",
-							payLoad: {
-								exchangeNo: exchangeNo
-							}
-						}
-						this.ws.send({
-							data: JSON.stringify(msg)
-						})
-						this.$bus.$on('sendMsg2', this.sendExchangeMsg)
-					})
-					this.ws.onMessage((res) => {
-						let data = JSON.parse(res.data)
-						console.log(data)
-						if (data.type === 'subscribe') {
-							if (data.state === 0) {
-								console.log('订阅成功')
-							} else {
-								this.$utils.msg('订阅失败')
-							}
-						} else if (data.type === 'swapInfo') {
-							this.swapConfirmDTO = data.swapConfirmDTO
-							this.swapInfoDTO = data.swapInfoDTO
-							this.swapState = data.swapConfirmDTO.swapState
-							this.currentDescript = data.swapStepList.slice(-1)[0].description,
-								this.currentTime = data.swapStepList.slice(-1)[0].seqTime,
-								this.plate = data.swapConfirmDTO.plate
-							this.swapStepList.push(...data.swapStepList)
-							this.step = this.swapStepList.length - 1
-							this.$bus.$emit('OndrawCircle', Math.ceil((data.swapConfirmDTO.vehSoc) * 1))
-						} else if (data.type === 'startReply') {
-							if (data.state === 0) {
-								this.swapState = 2
-								console.log('站控已启动')
-							} else {
-								this.$utils.msg('站控启动失败')
-							}
+			if(options.stationCode){
+				this.getstationCode=options.stationCode
+			}
+			if((decodeURIComponent(options.q)).split("=")[1]){
+				this.getstationCode = (decodeURIComponent(options.q)).split("=")[1]
+			}
+		},
+		methods: {
+			getPamars(){
+				if(this.$storage.getJson("token")){
+					this.$http.getStationExchange({
+						stationCode: this.getstationCode
+					}).then(res => {
+						if (res.code === 0 && res.data) {
+							uni.redirectTo({
+								url: '/pages/powerExchange/index?stationCode=' +this.getstationCode + '&exchangeNo=' + res.data
+							})
+						} else {
+							uni.navigateTo({
+								url: '/pages/public/404?error=' + res.msg
+							})
 						}
 					})
-					// 监听WebSocket关闭事件
-					this.ws.onClose(() => {
-						console.log('WebSocket连接已关闭!');
-					})
-					this.ws.onError(() => {
-						console.log("WebSocket连接错误")
-					})
-					if (this.timer == null) {
-						this.timer = setInterval(() => {
-							if (this.ws.readyState != 1) {
-								clearInterval(this.timer)
-								this.timer = null
-								this.ws.close()
-								this.InitWs(exchangeNo, stationCode)
-							}
-						}, 2000)
-					}
 				}else{
-					uni.switchTab({
-						url:'/pages/index/index'
-					})
-				}
-			},
-			sendExchangeMsg(msg) {
-				this.ws.send(msg)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.swapinfo {
-
-		//顶部
-		.header {
-			display: flex;
-			padding: 30rpx;
-			width: 690rpx;
-			color: #86909c;
-			font-size: 32rpx;
-			justify-content: space-around;
-
-			.active {
-				color: #1d2129;
-				font-weight: bold;
-				position: relative;
-			}
-
-			.active::after {
-				content: '';
-				background-image: url('@/static/line.png');
-				background-size: 100% 100%;
-				width: 52rpx;
-				height: 9rpx;
-				position: absolute;
-				bottom: -25rpx;
-				left: 32%;
-			}
-		}
-
-		//换电流程
-		.changeProcess {
-			.timeline {
-				padding: 0 58rpx;
-				display: flex;
-				margin-top: 60rpx;
-
-				.timeinfo {
-					display: flex;
-					flex-direction: column;
-					text-align: right;
-
-					.list {
-						display: flex;
-						flex-direction: column;
-						width: 100%;
-						height: 102rpx;
-						color: #c9cdd4;
-						font-size: 28rpx;
-
-						view:first-child {
-							color: #86909c;
-						}
-					}
-				}
-
-				.line {
-					flex: 1;
-				}
-			}
-
-			.changeCurrent {
-				width: 690rpx;
-				margin: 30rpx auto;
-				height: 180rpx;
-				background-image: url('@/static/change-bg.png');
-				background-size: 100% 100%;
-				padding: 25rpx;
-				box-sizing: border-box;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-around;
-
-				.info {
-					display: flex;
-					color: #fff;
-					font-size: 30rpx;
-					font-weight: bold;
-					line-height: 36rpx;
-
-					image {
-						width: 60rpx;
-						height: 60rpx;
-						padding-right: 25rpx;
-					}
-
-					view:last-child {
-						padding-top: 12rpx;
-					}
-				}
-
-				.times {
-					color: #ededed;
-					text-indent: 10rpx;
-				}
-			}
-		}
-
-		//换电流程车和电池信息
-		.changeCar,
-		.changeBattery {
-			.ban {
-				width: 547rpx;
-				height: 298rpx;
-				margin: 70rpx auto;
-
-				image {
-					width: 100%;
-					height: 100%;
-				}
-			}
-
-			.info-box {
-				width: 587rpx;
-				margin: 0 auto;
-				display: flex;
-				flex-direction: column;
-			}
-		}
-	}
+					uni.navigateTo({
+						url: '/pages/public/login?topage='+this.getstationCode,
+					});
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+
 </style>

+ 58 - 0
pages/public/404.vue

@@ -0,0 +1,58 @@
+<template>
+	<view>
+		<view class="main">
+			<view><image src="../../static/404.png"></image></view>
+			<view class="tip">{{ErrorTip}}</view>
+			<view><button type="primary" @click="goHome" class="index">返回首页</button></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data(){
+			return{
+				ErrorTip:''
+			}
+		},
+		methods: {
+			goHome(){
+				this.$utils.switchTab("index/index");
+			}
+		},
+		onLoad(options) {
+			this.ErrorTip=options.error
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.main{
+		width: 563rpx;
+		display: flex;
+		flex-direction: column;
+		margin: 0 auto;
+		text-align: center;
+		font-size: 32rpx;
+		color: #1D2129;
+		padding-top: 100rpx;
+		image{
+			width: 563rpx;
+		}
+		.tip{
+			margin-bottom: 60rpx;
+		}
+		.index{
+			width: 400rpx;
+			height: 88rpx;
+			background: #58BE6B;
+			border-radius: 58rpx 58rpx 58rpx 58rpx;
+			opacity: 1;
+			font-size: 32rpx;
+			color: #fff;
+			font-weight: 600;
+			line-height: 88rpx;
+			font-family: Noto Sans SC-Regular, Noto Sans SC;
+		}
+	}
+</style>

+ 17 - 2
pages/public/login.vue

@@ -33,11 +33,20 @@
 					code:null,
 					encryptedData:null,
 					iv:null,
-				}
+				},
+				jumpPage:null,
 			}
 		},
+		onShow() {
+			if(this.$storage.getJson("token")){
+				this.onGoHome()
+			}
+		},
 		onLoad(option) {
 			this.options=option.item
+			if(option.topage){
+				this.jumpPage=option.topage
+			}
 		},
 		methods: {
 			getPhoneNumber(e){
@@ -56,7 +65,13 @@
 							that.$store.commit("UPDATEMOBILE",res.data.mobile);
 							that.$store.commit("UPDATEUSERS",res.data);
 							that.$storage.setJson("token",res.data.token)
-							that.$utils.switchTab('ucenter/index');
+							if(that.jumpPage){
+								uni.navigateTo({
+									url:'/pages/powerchange/index?stationCode='+that.jumpPage
+								})
+							}else{
+								that.$utils.switchTab('ucenter/index');
+							}
 							that.isSubmit = false;
 						}else{
 							that.$utils.msg(res.msg);

+ 25 - 0
pages/ucenter/about.vue

@@ -0,0 +1,25 @@
+<template>
+	<view class="about">
+		<image src="../../static/about.png"></image>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.about image{
+		width: 750rpx;
+		height: 1938rpx;
+	}
+</style>

+ 2 - 2
pages/ucenter/car.vue

@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<view class="car-box">
-			<uni-swiper-dot :info="datalist" :current="current" field="content" mode="default" :dots-styles="dotsStyles">
+			<uni-swiper-dot :info="datalist" :current="current" field="content" mode="indexes" :dots-styles="dotsStyles">
 				<swiper class="swiper-box" @change="change">
 					<swiper-item v-for="(item ,index) in datalist" 
 						:key="item.id"
@@ -93,7 +93,7 @@
 					justify-content: space-between;
 					view:first-child{
 						padding-top: 40rpx;
-						font-size: 30rpx;
+						font-size: 44rpx;
 						font-weight: bold;
 					}
 					image{

+ 58 - 43
pages/ucenter/car_show.vue

@@ -20,20 +20,20 @@
 				</view>
 				<view class="battery-info">
 					<view>
-						<view>{{item.vehDataVo.battDistance || '-'}}CM</view>
-						<view>前端电池距离</view>
+						<view>{{item.vehDataVo.battDistance || '-'}}</view>
+						<view>前端电池距离cm</view>
 					</view>
 					<view>
-						<view>{{item.vehDataVo.totalMileage || '-'}}km</view>
-						<view>累计里程</view>
+						<view>{{item.vehDataVo.totalMileage || '-'}}</view>
+						<view>里程km</view>
 					</view>
 					<view>
-						<view>{{item.vehDataVo.totalExchangeCnt || '-'}}</view>
-						<view>累计换电次数</view>
+						<view>{{item.vehDataVo.totalExchangeCnt || '-'}}</view>
+						<view>换电次数</view>
 					</view>
 					<view>
-						<view>{{item.vehDataVo.totalExchangePower || '-'}}kW/h</view>
-						<view>累计换电量</view>
+						<view>{{item.vehDataVo.totalExchangePower || '-'}}</view>
+						<view>换电量kW/h</view>
 					</view>
 				</view>
 			</view>
@@ -51,27 +51,27 @@
 							<view class="blue" :style="'width:'+item.vehStatusVo.soc+'%'"> 
 								<!-- (进度条显示的图片  样式:根据父元素进行相对定位 ,本身绝对定位 ) -->
 								<text class="protext" :style="'left:'+item.vehStatusVo.soc+'%'"></text>
-								<view class="pronumber" :style="'left:'+(item.vehStatusVo.soc-6)+'%'">{{item.vehStatusVo.soc}}%</view>
+								<view class="pronumber" :style="'left:'+(item.vehStatusVo.soc-3)+'%'">{{item.vehStatusVo.soc}}%</view>
 							</view>
 						</view>
 					</view>
 				</view>
 				<view class="battery-info">
 					<view>
-						<view>{{item.vehStatusVo.drivingMileage || '-'}}KM</view>
-						<view>已行驶里程</view>
+						<view>{{item.vehStatusVo.drivingMileage || '-'}}</view>
+						<view>已行驶里程km</view>
 					</view>
 					<view>
-						<view>{{item.vehStatusVo.remainderMileage || '-'}}km</view>
-						<view>预计剩余里程</view>
+						<view>{{item.vehStatusVo.remainderMileage || '-'}}</view>
+						<view>预计剩余里程km</view>
 					</view>
 					<view>
-						<view>{{item.vehStatusVo.voltage || '-'}}V</view>
-						<view>电压</view>
+						<view>{{item.vehStatusVo.voltage || '-'}}</view>
+						<view>电压V</view>
 					</view>
 					<view>
-						<view>{{item.vehStatusVo.current || '-'}}A</view>
-						<view>电流</view>
+						<view>{{item.vehStatusVo.current || '-'}}</view>
+						<view>电流A</view>
 					</view>
 				</view>
 			</view>
@@ -81,10 +81,10 @@
 					<view><navigator :url="'record?plate='+item.vehDataVo.plate">更多</navigator></view>
 				</view>
 				<view class="title">
-					<view><text>{{item.exchangeList.month || '-'}}</text>月/{{item.exchangeList.year || '-'}}</view>
+					<view><text class="left">{{item.exchangeList.month || '-'}}</text><text class="right">月/{{item.exchangeList.year || '-'}}</text></view>
 					<view class="money">
-						<view>换电量 {{item.exchangeList.exchangePower || '-'}}(kW/h)</view>
-						<view>换电费用 {{item.exchangeList.powerFee || '-'}}元</view>
+						<view class="Exchangelist"><view class="unit">换电量</view> <view class="value">{{item.exchangeList.exchangePower || '-'}}(kW/h)</view></view>
+						<view class="Exchangelist"><view class="unit">换电费用</view> <view class="value">{{item.exchangeList.powerFee || '-'}}元</view></view>
 					</view>
 				</view>
 				<view class="list">
@@ -158,24 +158,26 @@
 		border-top-right-radius: 35rpx;
 		position: relative;
 		top: -40rpx;
-		background-color: #f8f9fb;
-		padding: 0 23rpx;
+		background-color: #FBFDFF;
+		padding: 0 30rpx;
 		box-sizing: border-box;
 		display: flex;
 		flex-direction: column;
 		.category{
 			font-weight: bold;
 			font-size: 32rpx;
-			margin: 28rpx 0rpx;
+			margin: 20rpx 0rpx;
 			text-indent: 1em;
 		}
 		.show{
-			width: 704rpx;
+			width: 690rpx;
 			height: 375rpx;
-			padding: 32rpx;
+			background: #F2F4F7;
+			box-shadow: 0rpx 0rpx 10rpx 0rpx #DAE1EC;
+			border-radius: 24rpx;
+			opacity: 1;
+			padding: 32rpx 26rpx;
 			box-sizing: border-box;
-			background-image: url(~@/static/ibg.png);
-			background-size: 100% 100%;
 			display: flex;
 			flex-direction:column;
 			.plate-number{
@@ -188,7 +190,7 @@
 				}
 				view:first-child{
 					font-weight: 600;
-					font-size: 32rpx;
+					font-size: 36rpx;
 					padding-right: 15rpx;
 				}
 				
@@ -197,12 +199,11 @@
 				display: flex;
 				justify-content: space-between;
 				font-weight: bold;
-				font-size: 32rpx;
-				margin: 30rpx 0;
+				font-size: 26rpx;
+				margin: 20rpx 0;
 				.title{
 					text-align: center;
 					color: #86909c;
-					font-size: 28rpx;
 					font-weight: normal;
 				}
 			}
@@ -211,14 +212,15 @@
 				margin-top: 30rpx;
 				margin-bottom: 60rpx;
 				view:first-child{
-					width: 138rpx;
+					width: 105rpx;
+					font-size: 22rpx;
 				}
 				view:last-child{
 					flex: 1;
 					.strip {
 						/* 父元素相对定位 */
 						position: relative;
-						width: 480rpx;
+						width: 525rpx;
 						height: 18rpx;
 						background-color: #fff;
 						top: 10rpx;
@@ -257,21 +259,20 @@
 				}
 				view > view:last-child{
 					color: #939da7;
-					font-size: 28rpx;
-					margin-top: 8rpx;
+					font-size: 24rpx;
+					margin-top: 3rpx;
 				}
 			}
 		}
 		.records{
 			width: 690rpx;
-			padding: 0 7rpx;
 			display: flex;
 			flex-direction: column;
 			.top{
 				display: flex;
 				flex-direction: row;
 				padding: 0 5rpx;
-				margin: 28rpx 0rpx;
+				margin: 20rpx 0rpx;
 				justify-content: space-between;
 				font-size: 32rpx;
 				font-weight: bold;
@@ -286,18 +287,33 @@
 				background-image:url('https://xcx.xnymzx.com/zkstation/bgr.png');
 				background-size: 100% 100%;
 				display: flex;
-				padding: 20rpx 30rpx;
+				padding: 0rpx 30rpx;
 				box-sizing: border-box;
 				font-size: 30rpx;
 				font-weight: bold;
 				flex-direction: column;
-				justify-content: space-around;
 				.money{
 					display: flex;
 					justify-content: space-between;
+					line-height: 60rpx;
+					.Exchangelist{
+						display: flex;
+						.unit{
+							font-size: 24rpx;
+							font-weight: 600;
+						}
+						.value{
+							font-size: 30rpx;
+							font-weight: 600;
+							padding-left: 8rpx;
+						}
+					}
+				}
+				.left{
+					font-size: 80rpx;
 				}
-				text{
-					font-size: 45rpx;
+				.right{
+					color: #505968;
 				}
 			}
 			.list{
@@ -312,8 +328,7 @@
 				flex-direction: column;
 				.info{
 					width: 100%;
-					margin-top: 30rpx;
-					margin-bottom: 20rpx;
+					margin: 30rpx 0rpx;
 				}
 				.norecord{
 					text-align: center;

+ 174 - 132
pages/ucenter/index.vue

@@ -1,223 +1,259 @@
-<template>
+<template>
 	<view>
-		<top-box :userinfo="userinfo" :days="days" key="2"></top-box>
+		<top-box :userinfo="userinfo" :days="days" keys="2"></top-box>
 		<view class="ucenter">
 			<view class="mydata">我的数据(累计)</view>
 			<view class="data-box">
 				<view class="datashow">
-					<view class="icon"><image src="../../static/ucenter/icon3.png"></image></view>
+					<view class="icon">
+						<image src="../../static/ucenter/icon3.png"></image>
+					</view>
 					<view class="num">{{ucenter.exchangeCnt || '-'}}</view>
 					<view>换电次数<text>/次</text></view>
 				</view>
 				<view class="datashow">
-					<view class="icon"><image src="../../static/ucenter/icon4.png"></image></view>
-					<view class="num">{{(ucenter.exchangePower*1).toFixed(1) || '-'}}</view>
+					<view class="icon">
+						<image src="../../static/ucenter/icon4.png"></image>
+					</view>
+					<view class="num">{{(ucenter.exchangePower*1).toFixed(2) || '-'}}</view>
 					<view class="unit">换电量<text>/(kW/h)</text></view>
 				</view>
 				<view class="datashow">
-					<view class="icon"><image src="../../static/ucenter/icon5.png"></image></view>
-					<view class="num">{{(ucenter.powerFee*1).toFixed(1) || '-'}}</view>
+					<view class="icon">
+						<image src="../../static/ucenter/icon5.png"></image>
+					</view>
+					<view class="num">{{(ucenter.powerFee*1).toFixed(2) || '-'}}</view>
 					<view class="unit">预估费用<text>/元</text></view>
 				</view>
 			</view>
 			<view class="common">
 				<view class="title">常用功能</view>
-				<view class="list" @click="getqrcode">
+				<!-- <view class="list" @click="getqrcode">
 					<view><image src="../../static/ucenter/icon6.png"></image></view>
 					<view>下载换电二维码</view>
 					<view>></view>
-				</view>
+				</view> -->
 				<view class="list" @click="toCar">
-					<view><image src="../../static/ucenter/icon7.png"></image></view>
+					<view>
+						<image src="../../static/ucenter/icon7.png"></image>
+					</view>
 					<view>我的车辆</view>
-					<view>></view>
+					<view><image src="../../static/ucenter/dayu.png"></image></view>
 				</view>
 				<view class="list" @click="toRecord">
-					<view><image src="../../static/ucenter/icon8.png"></image></view>
+					<view>
+						<image src="../../static/ucenter/icon8.png"></image>
+					</view>
 					<view>换电记录</view>
-					<view>></view>
+					<view><image src="../../static/ucenter/dayu.png"></image></view>
 				</view>
 				<view class="list" @click="contact">
-					<view><image src="../../static/ucenter/icon9.png"></image></view>
+					<view>
+						<image src="../../static/ucenter/icon9.png"></image>
+					</view>
 					<view>联系客服</view>
-					<view>></view>
+					<view><image src="../../static/ucenter/dayu.png"></image></view>
+				</view>
+				<view class="list" @click="goAbout">
+					<view><image src="../../static/ucenter/icon10.png"></image></view>
+					<view>关于我们</view>
+					<view><image src="../../static/ucenter/dayu.png"></image></view>
 				</view>
 			</view>
 		</view>
 		<uni-popup ref="popup" background-color="#fff" type="bottom">
 			<view class="popuplist">
-				<view><image src="../../static/code.jpg"></image></view>
+				<view>
+					<image src="../../static/code.jpg"></image>
+				</view>
 				<view><text>车牌:</text> 渝AUU998</view>
 				<view><text>车辆识别码:</text> LSPR********8273</view>
 				<view>保存至相册</view>
 			</view>
-		</uni-popup>
-		<tab-bar></tab-bar>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				qrcode:'../../static/code.jpg',
-				token:this.$store.state.users.token,
-				userinfo:this.$store.state.users,
-				serviceTel:null,//客服电话
-				ucenter:{},
-				days:0,
-			}
+		</uni-popup>
+		<tab-bar></tab-bar>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				qrcode: '../../static/code.jpg',
+				token: this.$store.state.users.token,
+				userinfo: this.$store.state.users,
+				serviceTel: null, //客服电话
+				ucenter: {},
+				days: 0,
+			}
 		},
 		onShow() {
-			// this.$store.dispatch("usersStatus").then(()=>{
-			// 	//微信用户第二次登录
-			// 	this.isAuthShow = false;
-			// 	this.token=this.$store.state.users.token
-			// 	this.userinfo=this.$store.state.users
-			// }).catch(()=>{
-			// 	//微信用户首次登录
-			// 	this.isAuthShow = true;
-			// });
-		},
-		mounted() {
 			this.getServiceTel()
 			this.getUcenterData()
 			this.getUserDays()
-		},
+		},
 		methods: {
 			//获取加入天数
-			getUserDays(){
-				this.$http.getDays().then(res=>{
-					if(res.code === 0){
-						this.days=res.data
-					}else{
+			getUserDays() {
+				this.$http.getDays().then(res => {
+					if (res.code === 0) {
+						this.days = res.data
+					} else {
 						this.$utils.msg(res.msg);
 					}
 				})
 			},
-			getUcenterData(){
-				this.$http.ucenterData().then(rs=>{
-					console.log(rs)
-					if(rs.code === 0){
-						this.ucenter=rs.data
-					}else{
+			getUcenterData() {
+				this.$http.ucenterData().then(rs => {
+					if (rs.code === 0) {
+						this.ucenter = rs.data
+					} else {
 						this.$utils.msg(rs.msg);
 					}
-				}).catch(error=>{
+				}).catch(error => {
 					this.$utils.msg(error);
 				});
 			},
 			//获取客服电话
-			getServiceTel(){
-				this.$http.getService().then(rs=>{
-					if(rs.code === 0){
-						this.serviceTel=rs.data
-					}else{
+			getServiceTel() {
+				this.$http.getService().then(rs => {
+					if (rs.code === 0) {
+						this.serviceTel = rs.data
+					} else {
 						this.$utils.msg(rs.msg);
 					}
-				}).catch(error=>{
+				}).catch(error => {
 					this.$utils.msg(error);
 				});
 			},
 			//更新头部信息
-			updatetopinfo(data){
-				if(this.$storage.getJson("token") && this.$store.state.users){
-					this.token=data.token
-					this.userinfo=data
+			updatetopinfo(data) {
+				if (this.$storage.getJson("token") && this.$store.state.users) {
+					this.token = data.token
+					this.userinfo = data
 				}
 			},
-			//联系电话
-			contact(){
-				let that=this;
-				uni.showActionSheet({
-					itemList: [`呼叫:${that.serviceTel}`],
-					success: function (res) {
-						if(!res.tapIndex){
-							uni.makePhoneCall({
-								phoneNumber:that.serviceTel,
-							})
-						}
-					},
-				});
+			//关于我们
+			goAbout(){
+				uni.navigateTo({
+					url:'/pages/ucenter/about'
+				})
+			},
+			//联系电话
+			contact() {
+				let that = this;
+				const modelPhone = uni.getSystemInfoSync();
+				if (modelPhone.platform == 'ios') {
+					uni.makePhoneCall({
+						phoneNumber: that.serviceTel,
+					})
+				}else{
+					uni.showActionSheet({
+						itemList: [`呼叫:${that.serviceTel}`],
+						success: function(res) {
+							if (!res.tapIndex) {
+								uni.makePhoneCall({
+									phoneNumber: that.serviceTel,
+								})
+							}
+						},
+					});
+				}
 			},
 			//保存二维码到相册
-			getqrcode(){
+			getqrcode() {
 				this.$refs.popup.open('bottom')
 			},
-			toCar(){
+			toCar() {
 				uni.navigateTo({
-					url:'../ucenter/car'
+					url: '../ucenter/car'
 				})
 			},
-			toRecord(){
+			toRecord() {
 				uni.navigateTo({
-					url:'../ucenter/record'
+					url: '../ucenter/record'
 				})
-			}
-		}
-	}
-</script>
-
+			}
+		}
+	}
+</script>
+
 <style lang="scss" scoped>
-	.popuplist{
+	.popuplist {
 		display: flex;
 		flex-direction: column;
 		text-align: center;
-		image{
+
+		image {
 			width: 347rpx;
 			height: 347rpx;
 			margin-top: 20rpx;
 		}
-		text{
+
+		text {
 			color: #888e9c;
 		}
-		view{
+
+		view {
 			margin-top: 15rpx;
 		}
-		view:last-child{
+
+		view:last-child {
 			padding: 25rpx 0;
 			border-top: 10rpx solid rgba(149, 150, 151, 0.5);
 		}
-	}
-	.ucenter{
+	}
+
+	.ucenter {
 		padding: 0 30rpx;
-		.mydata{
+
+		.mydata {
 			color: #1d2129;
 			font-size: 32rpx;
 			font-weight: bold;
 			margin: 40rpx 0;
-			text-indent:10rpx;
+			text-indent: 10rpx;
 		}
-		.data-box{
+
+		.data-box {
 			display: flex;
 			justify-content: space-between;
-			background-color: #fff;
-			padding: 25rpx;
-			box-sizing: border-box;
-			border-radius: 30rpx;
-			.icon{
-				height: 100rpx;
-			}
-			.num{
-				color: #1d2129;
-				font-weight: bold;
-				font-size: 32rpx;
-				height: 50rpx;
-			}
-			.unit{
-				color: #666666;
-				font-size: 30rpx;
-			}
-			image{
-				width: 80rpx;
-				height: 80rpx;
-			}
-			text{
-				color: #86909c;
-				font-size: 28rpx;
+
+			.datashow {
+				background-color: #fff;
+				box-sizing: border-box;
+				border-radius: 25rpx;
+				box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226,226,226,0.25);
+				padding: 25rpx;
+				.icon {
+					height: 100rpx;
+				}
+
+				.num {
+					color: #1d2129;
+					font-weight: bold;
+					font-size: 32rpx;
+					height: 50rpx;
+				}
+
+				.unit {
+					color: #666666;
+					font-size: 30rpx;
+				}
+
+				image {
+					width: 60rpx;
+					height: 60rpx;
+				}
+
+				text {
+					color: #86909c;
+					font-size: 28rpx;
+				}
 			}
 		}
-		.common{
+
+		.common {
 			display: flex;
 			margin-top: 20rpx;
 			background-color: #fff;
@@ -226,34 +262,40 @@
 			border-radius: 30rpx;
 			flex-direction: column;
 			height: 518rpx;
-			justify-content:space-between;
-			.title{
+			justify-content: space-around;
+
+			.title {
 				color: #1d2129;
 				font-size: 32rpx;
 				font-weight: bold;
 			}
-			.list{
+
+			.list {
 				display: flex;
-				image{
+
+				image {
 					width: 36rpx;
 					height: 36rpx;
 				}
-				view:first-child{
+
+				view:first-child {
 					width: 56rpx;
 					padding-top: 5rpx;
 				}
-				view:nth-child(2){
+
+				view:nth-child(2) {
 					color: #1d2129;
 					font-size: 30rpx;
 					font-weight: 500;
 					width: 558rpx;
 				}
-				view:last-child{
+
+				view:last-child {
 					color: #959ea8;
 					font-weight: bold;
 					font-size: 32rpx;
 				}
 			}
 		}
-	}
+	}
 </style>

+ 45 - 20
pages/ucenter/record.vue

@@ -6,10 +6,10 @@
 					<view>{{suredate}}</view>
 					<view :class="[dateup?'up':'arrow']"></view>
 				</view>
-				<picker @change="bindPickerChange" :range="plateList">
+				<picker @change="bindPickerChange" :range="plateList" :disabled="plateList.length==1">
 					<view class="allcar">
 						<view>{{carName}}</view>
-						<view :class="[carup?'up':'arrow']"></view>
+						<view :class="[carup?'up':'arrow']" v-show="plateList.length>1"></view>
 					</view>
 				</picker>
 			</view>
@@ -32,12 +32,24 @@
 						</view>
 						<view class="second">
 							<view>{{data.createTime}}</view>
-							<view>换电量{{data.exchangePower}}(kW.h)</view>
+							<view>换电量{{data.exchangePower}}(kW/h)</view>
 						</view>
 					</view>
 				</view>
 			</view>
-			<view class="norecord" v-if="datalist.length === 0 || datalist[0].list.length === 0">暂无记录</view>
+			<view class="month" v-if="datalist.length === 0 || datalist[0].list.length === 0">
+				<view class="title">
+					<view>共0次换电记录</view>				
+					<view class="money">
+						<view>换电量 0.00(kW/h)</view>
+						<view>换电费用 0.00元</view>
+					</view>
+				</view>
+				<view class="list">
+					<view class="norecord">暂无记录</view>
+				</view>
+			</view>
+			
 		</view>
 		<uni-popup ref="popup" background-color="#fff" type="bottom">
 			<view class="datebox">
@@ -121,7 +133,7 @@
 				datalist: [], //数据列表
 				dateup: 0,
 				carup: 0,
-				plateList: ['全部车辆', '渝AUU988', '渝AUU923', '渝AUU944', '渝AUU900', '渝AUU911'], //车辆弹窗数据
+				plateList: ['全部车辆'], //车辆弹窗数据
 				carName: '全部车辆', //右上角车辆选择
 				//自定义日期控件开始
 				years,
@@ -146,6 +158,7 @@
 		},
 		mounted() {
 			this.getExchangeRecord()
+			this.getUserCarList()
 		},
 		onLoad(option) {
 			if (option.plate) {
@@ -153,6 +166,18 @@
 			}
 		},
 		methods: {
+			//获取个人所有车辆列表
+			getUserCarList(){
+				this.$http.userCarList().then(res=>{
+					if(res.code ==0){
+						if(res.data.length > 0){
+							this.plateList=this.plateList.concat(res.data)
+						}
+					}else{
+						this.$utils.msg(rs.msg)
+					}
+				})
+			},
 			//获取换电记录列表
 			getExchangeRecord() {
 				let monthDay = ''
@@ -198,13 +223,13 @@
 				const val = e.detail.value
 				if (this.visible) {
 					this.middledate = null
-					this.middledate = this.years[val[0]] + '-' + this.months[val[1]]
+					this.middledate = this.years[val[0]] + '.' + this.months[val[1]]
 				} else {
 					this.middledate = null
 					if (this.isinput === 0) {
-						this.beginDate = this.years[val[0]] + '-' + this.months[val[1]] + '-' + this.days[val[2]]
+						this.beginDate = this.years[val[0]] + '.' + this.months[val[1]] + '.' + this.days[val[2]]
 					} else if (this.isinput === 1) {
-						this.endDate = this.years[val[0]] + '-' + this.months[val[1]] + '-' + this.days[val[2]]
+						this.endDate = this.years[val[0]] + '.' + this.months[val[1]] + '.' + this.days[val[2]]
 					}
 				}
 			},
@@ -217,9 +242,9 @@
 					this.beginDate = null
 					this.endDate = null
 					if (this.middledate) {
-						this.suredate = this.$moment(this.middledate).format('YYYY-MM')
+						this.suredate = this.$moment(this.middledate,'YYYY.MM').format('YYYY.MM')
 					} else {
-						this.suredate = this.$moment().format('YYYY-MM');
+						this.suredate = this.$moment().format('YYYY.MM');
 					}
 					this.$refs.popup.close()
 				} else {
@@ -246,7 +271,7 @@
 								} else if (diffmonth > 6) {
 									this.$utils.msg('日期范围不能超过半年')
 								} else {
-									this.suredate = this.$moment(this.beginDate).format('YYYY-MM-DD') + ' — ' + this.$moment(this.endDate).format('YYYY-MM-DD')
+									this.suredate = this.$moment(this.beginDate,'YYYY.MM.DD').format('YYYY.MM.DD') + ' - ' + this.$moment(this.endDate,'YYYY.MM.DD').format('YYYY.MM.DD')
 									this.type = 4
 									this.$refs.popup.close()
 								}
@@ -282,9 +307,9 @@
 					this.endDate = null
 				}
 				if (d === 0) {
-					this.beginDate = this.$moment().format('YYYY-MM-DD')
+					this.beginDate = this.$moment().format('YYYY.MM.DD')
 				} else {
-					this.endDate = this.$moment().format('YYYY-MM-DD')
+					this.endDate = this.$moment().format('YYYY.MM.DD')
 				}
 				this.isinput = d
 				this.isnum = null
@@ -297,14 +322,14 @@
 				this.isinput = 2
 				if (num === 0) {
 					this.beginDate = this.$moment().month(this.$moment().month() - 1).startOf('month').format(
-					'YYYY-MM-DD');
-					this.endDate = this.$moment().month(this.$moment().month() - 1).endOf('month').format('YYYY-MM-DD');
+					'YYYY.MM.DD');
+					this.endDate = this.$moment().month(this.$moment().month() - 1).endOf('month').format('YYYY.MM.DD');
 				} else if (num === 1) {
-					this.beginDate = this.$moment().month(this.$moment().month() - 3).format('YYYY-MM-DD');
-					this.endDate = this.$moment().format('YYYY-MM-DD');
+					this.beginDate = this.$moment().month(this.$moment().month() - 3).format('YYYY.MM.DD');
+					this.endDate = this.$moment().format('YYYY.MM.DD');
 				} else {
-					this.beginDate = this.$moment().month(this.$moment().month() - 6).format('YYYY-MM-DD');
-					this.endDate = this.$moment().format('YYYY-MM-DD');
+					this.beginDate = this.$moment().month(this.$moment().month() - 6).format('YYYY.MM.DD');
+					this.endDate = this.$moment().format('YYYY.MM.DD');
 				}
 			}
 		}
@@ -485,7 +510,7 @@
 		.norecord {
 			text-align: center;
 			color: #939da7;
-			line-height: 400rpx;
+			line-height: 180rpx;
 		}
 
 		.month {

+ 2 - 2
pages/ucenter/record_show.vue

@@ -177,8 +177,8 @@
 					color: #1d2129;
 					margin: 30rpx 0;
 					view:first-child{
-						color: #86909c;
-						font-weight: bold;
+						font-weight: 400;
+						color: #86909C;
 					}
 				}
 			}

+ 86 - 27
pages/ucenter/set_avatar.vue

@@ -1,18 +1,31 @@
 <template>
 	<view class="containar">
-		<view class="avatarUrl">
-			<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
-				<image :src="avatarUrl?avatarUrl:'../../static/ucenter/big-avatar.png'" class="refreshIcon"></image>
-			</button>
+		<view class="infoList">
+			<text>头像</text>
+			<view class="avatarUrl">
+				<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
+					<image :src="avatarUrl?avatarUrl:'../../static/ucenter/big-avatar.png'" class="refreshIcon"></image>
+				</button>
+				<view class="dayu" style="line-height: 110rpx;"><image src="../../static/ucenter/dayu.png"></image></view>
+			</view>
+			
 		</view>
-		<view class="nickname">
-			<text>昵称:</text>
+		<view class="infoList">
+			<text style="width: 400rpx;">昵称</text>
 			<input type="nickname" class="weui-input" maxlength="10" :value="nickName" @blur="bindblur" placeholder="请输入昵称"
 				@input="bindinput" />
+			<view class="dayu" style="padding-top: 10rpx;"><image src="../../static/ucenter/dayu.png"></image></view>
+		</view>
+		<view class="infoList">
+			<text>手机号码</text>
+			<view class="lastText">{{userinfo.telephone}} 不可修改</view>
+		</view>
+		<view class="infoList">
+			<text>加入智小狸</text>
+			<view class="lastText">{{days}}天</view>
 		</view>
-
 		<view class="btn">
-			<view class="btn-sub" @click="onSubmit">保存</view>
+			<view class="btn-sub" @click="onSubmit">保存信息</view>
 		</view>
 	</view>
 </template>
@@ -25,10 +38,35 @@
 				avatarUrl: '',
 				nickName: '小狸',
 				imgBase:'',
+				days:null,
+				userinfo: this.$store.state.users,
 			};
 		},
+		onShow() {
+			this.getUserDays()
+			this.getUseravatar()
+			
+		},
 		onLoad(option) {},
 		methods: {
+			getUseravatar(){
+				if(this.$store.state.users.nickName){
+					this.nickName=this.$store.state.users.nickName
+				}
+				if(this.$store.state.users.avatar){
+					this.avatarUrl=this.$store.state.users.avatar
+				}
+			},
+			//获取加入天数
+			getUserDays() {
+				this.$http.getDays().then(res => {
+					if (res.code === 0) {
+						this.days = res.data
+					} else {
+						this.$utils.msg(res.msg);
+					}
+				})
+			},
 			bindblur(e) {
 				this.nickName = e.detail.value; // 获取微信昵称
 			},
@@ -58,7 +96,9 @@
 					this.$store.commit("UPDATEUSERS", this.$store.state.users)
 					this.$http.wxLogin(params).then(res=>{
 						if(res.code === 0){
-							uni.navigateBack({delta:1})
+							uni.switchTab({
+								url:'/pages/ucenter/index'
+							})
 						}else{
 							this.$utils.msg(res.msg);
 						}
@@ -75,45 +115,64 @@
 	.containar {
 		height: 100vh;
 		background: #fff;
+		display: flex;
+		flex-direction: column;
+		padding: 0 30rpx;
+		padding-top: 30rpx;
+		.infoList{
+			display: flex;
+			width: 100%;
+			justify-content: space-between;
+			border-bottom: #F2F3F5 solid 1px;
+			padding: 30rpx 0rpx;
+			align-items: center;
+			text{
+				font-weight: 600;
+				color: #1D2129;
+				line-height: 35rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC-Regular, PingFang SC;
+			}
+			.dayu image{
+				width: 36rpx;
+				height: 36rpx;
+			}
+			.lastText{
+				color: #C9CDD3;
+				padding-right: 35rpx;
+			}
+		}
 
 		.avatarUrl {
 			display: flex;
 			justify-content: center;
 			justify-items: center;
-			padding-top: 10vh;
 
 			button {
 				background: #fff;
 				line-height: 80rpx;
-				height: 150rpx;
-				width: 160rpx;
+				height: 110rpx;
 				margin: 0;
 				display: flex;
 				justify-content: center;
 				align-items: center;
-
+				border: none;
 				.refreshIcon {
 					height: 110rpx;
 					width: 110rpx;
 					border-radius: 50%;
 				}
 			}
+			button::after{
+				border: none;
+			}
 		}
 
-		.nickname {
-			background: #fff;
-			padding: 30rpx;
-			margin: 0rpx 20rpx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			margin-top: 50rpx;
-			border: #cccccc solid 1px;
-			border-radius: 10rpx;
-
-			.weui-input {
-				padding-left: 60rpx;
-			}
+		.weui-input {
+			padding-left: 60rpx;
+			color: #86909C;
+			font-weight: 500;
+			text-align: right;
 		}
 
 		.btn {

BIN
static/404.png


BIN
static/about.png


BIN
static/bbg.png


BIN
static/code.jpg


BIN
static/edit.png


BIN
static/ibg.png


BIN
static/pic.jpg


BIN
static/tabbar/menu-1.png


BIN
static/tabbar/menu-2.png


BIN
static/ucenter/dayu.png


BIN
static/ucenter/icon10.png


+ 1 - 1
uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue

@@ -38,7 +38,7 @@
 					<view class="upwarp-tip">{{ mescroll.optUp.textLoading }}</view>
 				</view>
 				<!-- 无数据 -->
-				<view v-if="upLoadType===2" class="upwarp-nodata">{{ mescroll.optUp.textNoMore }}</view>
+				<!-- <view v-if="upLoadType===2" class="upwarp-nodata">{{ mescroll.optUp.textNoMore }}</view> -->
 			</view>
 		</view>
 		

+ 9 - 4
uni_modules/uni-steps/components/uni-steps/uni-steps.vue

@@ -14,17 +14,17 @@
 					v-for="(item,index) in options" :key="index">
 					<view
 						:class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'':'uni-steps__row-line--before']"
-						:style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}">
+						:style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':stepColor}">
 					</view>
 					<view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']"
 						v-if="index === active">
 						<uni-icons :color="activeColor" :type="activeIcon" size="14"></uni-icons>
 					</view>
 					<view v-else :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']"
-						:style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
+						:style="{backgroundColor:index<active?activeColor:stepColor}"></view>
 					<view
 						:class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
-						:style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}">
+						:style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':stepColor}">
 					</view>
 				</view>
 			</view>
@@ -61,7 +61,12 @@
 			deactiveColor: {
 				// 未激活状态颜色
 				type: String,
-				default: '#86909c'
+				default: '#86909c',
+				// default: '#86909c'
+			},
+			stepColor:{
+				type: String,
+				default: '#58be6b'
 			},
 			active: {
 				// 当前步骤

+ 8 - 8
uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="uni-swiper__warp">
 		<slot />
-		<view v-if="mode === 'default' && info.length > 1" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
+		<view v-if="mode === 'default'" :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box" key='default'>
 			<view v-for="(item,index) in info" @click="clickItem(index)" :style="{
         'width': (index === current? dots.width*2:dots.width ) + 'px','height':dots.height/2 +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border-radius':'0px'}"
 			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-bar" />
@@ -19,10 +19,10 @@
 		<view v-if="mode === 'nav'" key='nav' :style="{'background-color':dotsStyles.backgroundColor,'bottom':'0'}" class="uni-swiper__dots-box uni-swiper__dots-nav">
 			<text :style="{'color':dotsStyles.color}" class="uni-swiper__dots-nav-item">{{ (current+1)+"/"+info.length +' ' +info[current][field] }}</text>
 		</view>
-		<view v-if="mode === 'indexes'" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
+		<view v-if="mode === 'indexes' && info.length > 1" key='indexes' :style="{'bottom':dots.bottom + 'px'}" class="uni-swiper__dots-box">
 			<view v-for="(item,index) in info" @click="clickItem(index)" :style="{
-        'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}"
-			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text">{{ index+1 }}</text></view>
+        'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor}"
+			 :key="index" class="uni-swiper__dots-item uni-swiper__dots-indexes"><text class="uni-swiper__dots-indexes-text"></text></view>
 		</view>
 	</view>
 </template>
@@ -81,7 +81,7 @@
 				dots: {
 					width: 10,
 					height: 6,
-					bottom:10,
+					bottom:5,
 					color: '#fff',
 					backgroundColor: 'rgba(0, 0, 0, .3)',
 					border: '1px rgba(0, 0, 0, .3) solid',
@@ -107,8 +107,8 @@
 		},
 		created() {
 			if (this.mode === 'indexes') {
-				this.dots.width = 12
-				this.dots.height = 12
+				this.dots.width = 8
+				this.dots.height = 8
 			}
 			this.dots = Object.assign(this.dots, this.dotsStyles)
 		},
@@ -133,7 +133,7 @@
 
 	.uni-swiper__dots-box {
 		position: absolute;
-		bottom: 10px;
+		bottom: 20px;
 		left: 0;
 		right: 0;
 		/* #ifndef APP-NVUE */

+ 24 - 0
uni_modules/zb-tooltip/changelog.md

@@ -0,0 +1,24 @@
+## 1.0.11(2023-01-29)
+优化点击,加入点击自己再次点击也会关闭
+## 1.0.10(2023-01-17)
+优化
+## 1.0.9(2023-01-17)
+增加注释
+## 1.0.8(2022-08-18)
+优化细节
+## 1.0.67(2022-05-09)
+修复安卓报错
+## 1.0.6(2022-05-07)
+修改默认展示
+## 1.0.5(2022-04-28)
+进行优化
+## 1.0.4(2022-04-27)
+进行优化
+## 1.0.3(2022-04-25)
+去掉多余得注释
+## 1.0.2(2022-04-25)
+增加自定义主题颜色
+## 1.0.1(2022-04-25)
+进行优化显示
+## 1.0.0(2022-04-24)
+初始化

+ 290 - 0
uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue

@@ -0,0 +1,290 @@
+<template>
+	<view class="zb-tooltip" :style="{
+		'--theme-bg-color':color
+	}">
+		<view  class="zb_tooltip_content" @click.stop="handleClick">
+			<slot></slot>
+			<view class="zb_tooltip__popper"
+        @click.stop="()=>{}"
+        :style="[style,{
+				visibility:isShow?'visible':'hidden',
+				color:color==='white'?'':'#fff',
+				boxShadow: color==='white'?'0 3px 6px -4px #0000001f, 0 6px 16px #00000014, 0 9px 28px 8px #0000000d':''
+			}]" >
+				<slot name="content">{{content}}</slot>
+				<view class="zb_popper__icon"  :style="[arrowStyle]" :class="[{
+					'zb_popper__up':placement.indexOf('bottom')===0,
+					'zb_popper__arrow':placement.indexOf('top')===0,
+					'zb_popper__right':placement.indexOf('right')===0,
+					'zb_popper__left':placement.indexOf('left')===0,
+				}]">
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		props:{
+			visible:Boolean,
+			color:{
+				type:String,
+				default:'#303133',
+			},
+			placement:{
+				type:String,
+				default:'top',
+			},
+			content:{
+				type:String,
+				default:''
+			},
+			show:{
+				type:Boolean,
+				default:false,
+			}
+		},
+
+		data() {
+			return {
+				isShow :this.visible,
+				title: 'Hello',
+				arrowLeft:0,
+				query:null,
+				style:{
+
+				},
+				arrowStyle:{}
+			}
+		},
+		onLoad() {
+
+		},
+		watch:{
+			isShow:{
+				handler(val){
+					this.$emit('update:visible', val)
+				},
+				immediate:true,
+			},
+			visible:{
+				 handler(val){
+					 if(val){
+						 this.$nextTick(()=>{
+							 this.getPosition()
+						 })
+					 }
+           this.isShow = val
+				 },
+				 immediate:true,
+			}
+		},
+		mounted(){
+			// #ifdef H5
+			window.addEventListener('click',()=>{
+				this.isShow = false
+			})
+			// #endif
+      this.getPosition()
+		},
+		methods: {
+			close(){
+				this.isShow = false
+			},
+			fixedWrap(){
+				this.isShow = false
+			},
+      async handleClick(){
+			  if(this.isShow){
+          return this.isShow = false
+        }
+        await this.getPosition()
+        this.isShow = true
+      },
+			getPosition(){
+			  return new Promise((resolve) => {
+          uni.createSelectorQuery().in(this).selectAll('.zb_tooltip_content,.zb_tooltip__popper').boundingClientRect(async (data)=>{
+            let {left,bottom,right,top,width,height} = data[0]
+            let obj1 = data[1]
+            let objStyle = {}
+            let objStyle1 = {}
+            switch(this.placement){
+              case 'top':
+                if(obj1.width > width){
+                  objStyle.left = `-${(obj1.width - width)/2}px`
+                }else{
+                  objStyle.left = `${Math.abs(obj1.width - width)/2}px`
+                }
+
+                objStyle.bottom =`${height+8}px`
+                objStyle1.left = (obj1.width/2-6)+'px'
+                break;
+              case 'top-start':
+                objStyle.left = `0px`
+                objStyle.bottom =`${height+8}px`
+                break;
+              case 'top-end':
+                objStyle.right = `0px`
+                objStyle.bottom =`${height+8}px`
+                objStyle1.right=`8px`
+                break;
+              case 'bottom':
+                if(obj1.width>width){
+                  objStyle.left = `-${(obj1.width - width)/2}px`
+                }else{
+                  objStyle.left = `${Math.abs(obj1.width - width)/2}px`
+                }
+                objStyle.top =`${height+8}px`
+                objStyle1.left = (obj1.width/2-6)+'px'
+                break;
+              case 'bottom-start':
+                objStyle.left = `0px`
+                objStyle.top =`${height+8}px`
+                objStyle1.left = `8px`
+                break;
+
+              case 'bottom-end':
+                objStyle.right = `0px`
+                objStyle.top =`${height+8}px`
+                objStyle1.right = `8px`
+                break;
+
+              case 'right':
+                objStyle.left = `${width+8}px`
+                if(obj1.height>height){
+                  objStyle.top =`-${(obj1.height - height)/2}px`
+                }else{
+                  objStyle.top =`${Math.abs((obj1.height - height)/2)}px`
+                }
+
+                objStyle1.top = `${obj1.height/2-6}px`
+                break;
+              case 'right-start':
+                objStyle.left = `${width+8}px`
+                objStyle.top =`0px`
+                objStyle1.top = `8px`
+                break;
+
+              case 'right-end':
+                objStyle.left = `${width+8}px`
+                objStyle.bottom =`0px`
+                objStyle1.bottom = `8px`
+                break;
+
+              case 'left':
+                objStyle.right = `${width+8}px`
+
+                if(obj1.height>height){
+                  objStyle.top =`-${(obj1.height - height)/2}px`
+                }else{
+                  objStyle.top =`${Math.abs((obj1.height - height)/2)}px`
+                }
+
+                objStyle1.top = `${obj1.height/2-6}px`
+                break;
+
+              case 'left-start':
+                objStyle.right = `${width+8}px`
+                objStyle.top =`0px`
+                objStyle1.top = `8px`
+                break;
+
+              case 'left-end':
+                objStyle.right = `${width+8}px`
+                objStyle.bottom =`0px`
+                objStyle1.bottom = `8px`
+                break;
+            }
+            this.style = objStyle
+            // 三角形箭头
+            this.arrowStyle = objStyle1
+            resolve()
+          }).exec()
+        })
+
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	$theme-bg-color: var(--theme-bg-color);
+
+	.zb-tooltip{
+		position: relative;
+
+	}
+	.zb_tooltip_content{
+		height: 100%;
+		/* float: left; */
+		position: relative;
+		display: inline-block;
+
+		// display: flex;
+		// flex-direction: row;
+		// align-items: center;
+		/* overflow: hidden; */
+	}
+	.zb_tooltip__popper{
+		/* transform-origin: center top; */
+		background: $theme-bg-color;
+
+		visibility: hidden;
+		// color:'#fff';
+		position: absolute;
+		    border-radius: 4px;
+			font-size: 12px;
+			padding: 10px;
+			min-width: 10px;
+			word-wrap: break-word;
+			display: inline-block;
+			white-space: nowrap;
+			z-index:9;
+	}
+	.zb_popper__icon{
+		width: 0;
+		height: 0;
+		z-index:9;
+		position: absolute;
+	}
+	.zb_popper__arrow{
+		bottom: -5px;
+		/* transform-origin: center top; */
+		border-left: 6px solid transparent;
+		    border-right: 6px solid transparent;
+		    border-top: 6px solid $theme-bg-color;
+
+	}
+	.zb_popper__right{
+		border-top: 6px solid transparent;
+		    border-bottom: 6px solid transparent;
+		    border-right: 6px solid $theme-bg-color;
+			left:-5px;
+	}
+
+	.zb_popper__left{
+		border-top: 6px solid transparent;
+		border-bottom: 6px solid transparent;
+		border-left: 6px solid $theme-bg-color;
+		right:-5px;
+	}
+
+	.zb_popper__up{
+		border-left: 6px solid transparent;
+		    border-right: 6px solid transparent;
+		    border-bottom: 6px solid $theme-bg-color;
+			top:-5px;
+	}
+	.fixed{
+		position: absolute;width: 100vw;
+		height:  100vh;
+		position: fixed;
+		left: 0;
+		top: 0;
+	pointer-events: auto;
+		background: red;
+		z-index:-1;
+	}
+</style>

+ 83 - 0
uni_modules/zb-tooltip/package.json

@@ -0,0 +1,83 @@
+{
+  "id": "zb-tooltip",
+  "displayName": "zb-tooltip (文字提示气泡框)",
+  "version": "1.0.11",
+  "description": "简单的文字提示气泡框,可以自定义皮肤颜色",
+  "keywords": [
+    "tooltip",
+    "tip",
+    "文字提示",
+    "气泡框",
+    "自定义皮肤颜色、Popover"
+],
+  "repository": "",
+"engines": {
+  },
+  "dcloudext": {
+    "category": [
+        "前端组件",
+        "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": ""
+  },
+  "uni_modules": {
+    "dependencies": [],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "Vue": {
+          "vue2": "y",
+          "vue3": "y"
+        },
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "u"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "y",
+          "联盟": "y"
+        }
+      }
+    }
+  }
+}

+ 30 - 0
uni_modules/zb-tooltip/readme.md

@@ -0,0 +1,30 @@
+## 介绍
+基于uni-app开发的一个普通的提示组件,功能点击提示
+
+
+## 友情链接
+#### vue-admin-perfect —— [企业级、通用型中后台前端解决方案 预览地址](http://182.61.5.190:8889/)
+#### vue-admin-perfect —— [企业级、通用型中后台前端解决方案(基于vue3.0+TS+Element-Plus  最新版,同时支持电脑,手机,平板)](https://github.com/zouzhibin/vue-admin-perfect)
+
+
+## Tooltip 属性
+| 参数 | 说明 | 类型 | 可选值 | 默认值 |
+| ------ | ------ | ------ | ------ | ------ |
+| visible | 是否显示 tooltip,支持 .sync 修饰符 | Boolean |visible.sync | false |
+| content | 显示的内容,也可以通过 slot#content | String |-- | ' ' |
+| color | 自定义主题颜色| String |'#303133' | '#303133' |
+| placement | Tooltip 的出现位置 | String |top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end | top |
+
+
+## Slot 插槽
+| 参数 | 说明 |
+| ------ | ------ |
+| content | 显示提示框得内容 |
+
+
+```
+因为uniapp 中小程序中没有window对象,需手动调用 关闭
+ 第一种办法关闭:this.$refs.tooltip.close()
+ 第二种办法关闭:visible.sync = false
+
+```

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


+ 1 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/empty-box/empty-box.js.map

@@ -0,0 +1 @@
+{"version":3,"sources":[],"names":[],"mappings":"","file":"components/empty-box/empty-box.js","sourceRoot":""}

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/scan-info/scan-info.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/sub-title/sub-title.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/tab-bar/tab-bar.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/top-box/top-box.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/powerExchange/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/powerchange/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/public/404.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/public/login.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/scan/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/about.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/car.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/car_show.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/record.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/record_show.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/ucenter/set_avatar.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/userAgreement/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-popup/components/uni-popup/uni-popup.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-steps/components/uni-steps/uni-steps.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-transition/components/uni-transition/uni-transition.js.map


+ 8 - 6
unpackage/dist/dev/mp-weixin/app.json

@@ -1,28 +1,31 @@
 {
   "pages": [
     "pages/index/index",
-    "pages/powerchange/index",
+    "pages/public/404",
+    "pages/ucenter/about",
     "pages/ucenter/record",
     "pages/ucenter/record_show",
     "pages/ucenter/car_show",
     "pages/ucenter/index",
+    "pages/powerExchange/index",
     "pages/ucenter/car",
-    "pages/scan/index",
     "pages/ucenter/set_avatar",
     "pages/userAgreement/index",
-    "pages/public/login"
+    "pages/public/login",
+    "pages/powerchange/index"
   ],
   "subPackages": [],
   "window": {
     "navigationBarTextStyle": "black",
     "navigationBarTitleText": "uni-app",
-    "navigationBarBackgroundColor": "#F8F8F8",
+    "navigationBarBackgroundColor": "#FFFFFF",
     "backgroundColor": "#F8F8F8"
   },
   "tabBar": {
     "custom": true,
     "color": "#333",
     "selectedColor": "#6dc67d",
+    "backgroundColor": "#FFF",
     "list": [
       {
         "pagePath": "pages/index/index",
@@ -47,6 +50,5 @@
     "getLocation",
     "chooseLocation"
   ],
-  "usingComponents": {},
-  "sitemapLocation": "sitemap.json"
+  "usingComponents": {}
 }

+ 20 - 23
unpackage/dist/dev/mp-weixin/common/main.js

@@ -1,9 +1,9 @@
 (global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/main"],{
 
 /***/ 0:
-/*!********************************!*\
-  !*** D:/xcx_zkstation/main.js ***!
-  \********************************/
+/*!************************************!*\
+  !*** D:/2023xcx_zkstation/main.js ***!
+  \************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -35,21 +35,18 @@ _vue.default.prototype.$http = http;
 _vue.default.prototype.$store = _store.default;
 _vue.default.prototype.$storage = _storage.default;
 _vue.default.prototype.$moment = _moment.default;
+_vue.default.prototype.$bus = new _vue.default();
 _App.default.mpType = 'app';
-var app = new _vue.default(_objectSpread(_objectSpread({}, _App.default), {}, {
-  beforeCreate: function beforeCreate() {
-    _vue.default.prototype.$bus = this;
-  }
-}));
+var app = new _vue.default(_objectSpread({}, _App.default));
 createApp(app).$mount();
 /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["createApp"]))
 
 /***/ }),
 
 /***/ 27:
-/*!********************************!*\
-  !*** D:/xcx_zkstation/App.vue ***!
-  \********************************/
+/*!************************************!*\
+  !*** D:/2023xcx_zkstation/App.vue ***!
+  \************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -87,9 +84,9 @@ component.options.__file = "App.vue"
 /***/ }),
 
 /***/ 28:
-/*!*********************************************************!*\
-  !*** D:/xcx_zkstation/App.vue?vue&type=script&lang=js& ***!
-  \*********************************************************/
+/*!*************************************************************!*\
+  !*** D:/2023xcx_zkstation/App.vue?vue&type=script&lang=js& ***!
+  \*************************************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -103,9 +100,9 @@ __webpack_require__.r(__webpack_exports__);
 /***/ }),
 
 /***/ 29:
-/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/xcx_zkstation/App.vue?vue&type=script&lang=js& ***!
-  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/2023xcx_zkstation/App.vue?vue&type=script&lang=js& ***!
+  \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
@@ -130,9 +127,9 @@ exports.default = _default;
 /***/ }),
 
 /***/ 30:
-/*!******************************************************************!*\
-  !*** D:/xcx_zkstation/App.vue?vue&type=style&index=0&lang=scss& ***!
-  \******************************************************************/
+/*!**********************************************************************!*\
+  !*** D:/2023xcx_zkstation/App.vue?vue&type=style&index=0&lang=scss& ***!
+  \**********************************************************************/
 /*! no static exports found */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
@@ -146,9 +143,9 @@ __webpack_require__.r(__webpack_exports__);
 /***/ }),
 
 /***/ 31:
-/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/xcx_zkstation/App.vue?vue&type=style&index=0&lang=scss& ***!
-  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/2023xcx_zkstation/App.vue?vue&type=style&index=0&lang=scss& ***!
+  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 

+ 1 - 1
unpackage/dist/dev/mp-weixin/common/main.wxss

@@ -26,7 +26,7 @@
 /* 文章场景相关 */
 /*每个页面公共css */
 page {
-  background-color: #f8f9fb;
+  background: linear-gradient(180deg, #FFFFFF 0%, #F8F9FB 100%);
   max-width: 750rpx;
   color: #1d2129;
 }

+ 2 - 2
unpackage/dist/dev/mp-weixin/common/runtime.js

@@ -105,11 +105,11 @@
 /******/
 /******/
 /******/ 		// mini-css-extract-plugin CSS loading
-/******/ 		var cssChunks = {"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body":1,"components/tab-bar/tab-bar":1,"components/top-box/top-box":1,"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot":1,"components/scan-info/scan-info":1,"components/sub-title/sub-title":1,"uni_modules/uni-steps/components/uni-steps/uni-steps":1,"uni_modules/uni-popup/components/uni-popup/uni-popup":1,"uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty":1,"uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1};
+/******/ 		var cssChunks = {"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body":1,"components/tab-bar/tab-bar":1,"components/top-box/top-box":1,"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot":1,"uni_modules/uni-popup/components/uni-popup/uni-popup":1,"components/scan-info/scan-info":1,"components/sub-title/sub-title":1,"uni_modules/uni-steps/components/uni-steps/uni-steps":1,"uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty":1,"uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1};
 /******/ 		if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
 /******/ 		else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
 /******/ 			promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
-/******/ 				var href = "" + ({"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body":"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body","components/tab-bar/tab-bar":"components/tab-bar/tab-bar","components/top-box/top-box":"components/top-box/top-box","uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot":"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot","components/scan-info/scan-info":"components/scan-info/scan-info","components/sub-title/sub-title":"components/sub-title/sub-title","uni_modules/uni-steps/components/uni-steps/uni-steps":"uni_modules/uni-steps/components/uni-steps/uni-steps","uni_modules/uni-popup/components/uni-popup/uni-popup":"uni_modules/uni-popup/components/uni-popup/uni-popup","uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty":"uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty","uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top":"uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons","uni_modules/uni-transition/components/uni-transition/uni-transition":"uni_modules/uni-transition/components/uni-transition/uni-transition"}[chunkId]||chunkId) + ".wxss";
+/******/ 				var href = "" + ({"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body":"uni_modules/mescroll-uni/components/mescroll-body/mescroll-body","components/tab-bar/tab-bar":"components/tab-bar/tab-bar","components/top-box/top-box":"components/top-box/top-box","uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot":"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot","uni_modules/uni-popup/components/uni-popup/uni-popup":"uni_modules/uni-popup/components/uni-popup/uni-popup","components/scan-info/scan-info":"components/scan-info/scan-info","components/sub-title/sub-title":"components/sub-title/sub-title","uni_modules/uni-steps/components/uni-steps/uni-steps":"uni_modules/uni-steps/components/uni-steps/uni-steps","uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty":"uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty","uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top":"uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top","uni_modules/uni-transition/components/uni-transition/uni-transition":"uni_modules/uni-transition/components/uni-transition/uni-transition","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons"}[chunkId]||chunkId) + ".wxss";
 /******/ 				var fullhref = __webpack_require__.p + href;
 /******/ 				var existingLinkTags = document.getElementsByTagName("link");
 /******/ 				for(var i = 0; i < existingLinkTags.length; i++) {

File diff suppressed because it is too large
+ 229 - 224
unpackage/dist/dev/mp-weixin/common/vendor.js


File diff suppressed because it is too large
+ 86 - 50
unpackage/dist/dev/mp-weixin/components/scan-info/scan-info.js


+ 3 - 1
unpackage/dist/dev/mp-weixin/components/scan-info/scan-info.wxss

@@ -42,10 +42,12 @@
 .progress_bar.data-v-584c29c2 {
   position: absolute;
   width: 220px;
-  height: 220px;
+  height: 220px;
+  z-index: 99;
 }
 .progress_line.data-v-584c29c2 {
   position: absolute;
+  z-index: 999;
   width: 220px;
   height: 220px;
 }

File diff suppressed because it is too large
+ 31 - 35
unpackage/dist/dev/mp-weixin/components/sub-title/sub-title.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/components/sub-title/sub-title.wxml

@@ -1 +1 @@
-<view class="list data-v-3e171d9c"><view class="data-v-3e171d9c">{{descript+":"}}</view><view class="data-v-3e171d9c">{{(value||'-')+(unit||'')}}</view></view>
+<view class="list data-v-3e171d9c"><view class="data-v-3e171d9c">{{descript+":"}}</view><view class="data-v-3e171d9c">{{(values||'-')+(unit||'')}}</view></view>

File diff suppressed because it is too large
+ 74 - 51
unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.wxml

@@ -1 +1 @@
-<view class="footer data-v-6dc8a5bc"><view data-event-opts="{{[['tap',[['swithTab',[1]]]]]}}" class="index data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="{{currentPage===1?'../../static/tabbar/menu-1.png':'../../static/tabbar/menu-1-active.png'}}" class="data-v-6dc8a5bc"></image></view><view class="{{['data-v-6dc8a5bc',currentPage===1?'current':'']}}">首页</view></view><view data-event-opts="{{[['tap',[['swithTab',[2]]]]]}}" class="scan data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="../../static/tabbar/menu-2.png" class="data-v-6dc8a5bc"></image></view><view class="hover data-v-6dc8a5bc">扫码换电</view></view><view data-event-opts="{{[['tap',[['swithTab',[3]]]]]}}" class="index data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="{{currentPage===3?'../../static/tabbar/menu-3-active.png':'../../static/tabbar/menu-3.png'}}" class="data-v-6dc8a5bc"></image></view><view class="{{['data-v-6dc8a5bc',currentPage===3?'current':'']}}">我的</view></view></view>
+<view class="tab-bar data-v-6dc8a5bc"><view class="footer data-v-6dc8a5bc"><view data-event-opts="{{[['tap',[['swithTab',[1]]]]]}}" class="index data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="{{currentPage===1?'../../static/tabbar/menu-1.png':'../../static/tabbar/menu-1-active.png'}}" class="data-v-6dc8a5bc"></image></view><view class="{{['data-v-6dc8a5bc',currentPage===1?'current':'']}}">首页</view></view><view data-event-opts="{{[['tap',[['swithTab',[2]]]]]}}" class="scan data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="../../static/tabbar/menu-2.png" class="data-v-6dc8a5bc"></image></view><view class="hover data-v-6dc8a5bc">扫码换电</view></view><view data-event-opts="{{[['tap',[['swithTab',[3]]]]]}}" class="index data-v-6dc8a5bc" bindtap="__e"><view class="data-v-6dc8a5bc"><image src="{{currentPage===3?'../../static/tabbar/menu-3-active.png':'../../static/tabbar/menu-3.png'}}" class="data-v-6dc8a5bc"></image></view><view class="{{['data-v-6dc8a5bc',currentPage===3?'current':'']}}">我的</view></view></view><block wx:if="{{$root.g0}}"><view class="bottom data-v-6dc8a5bc"></view></block></view>

File diff suppressed because it is too large
+ 0 - 3
unpackage/dist/dev/mp-weixin/components/tab-bar/tab-bar.wxss


File diff suppressed because it is too large
+ 39 - 32
unpackage/dist/dev/mp-weixin/components/top-box/top-box.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/components/top-box/top-box.wxml

@@ -1 +1 @@
-<view class="data-v-183afcac"><block wx:if="{{!userinfo.token}}"><view data-event-opts="{{[['tap',[['goLogin',['$event']]]]]}}" class="no-login data-v-183afcac" bindtap="__e"><view class="avatar data-v-183afcac"><image src="../../static/no-login.png" class="data-v-183afcac"></image></view><view class="context data-v-183afcac">您好,请授权登录</view></view></block><block wx:else><view data-event-opts="{{[['tap',[['getnickName',['$event']]]]]}}" class="login data-v-183afcac" bindtap="__e"><view class="avatar data-v-183afcac"><image src="{{userinfo.avatar?userinfo.avatar:defaultimg}}" class="data-v-183afcac"></image></view><view class="info data-v-183afcac"><view class="name data-v-183afcac">{{userinfo.nickName||'小狸'}}</view><view class="phone data-v-183afcac"><view class="data-v-183afcac"><image src="../../static/ucenter/icon2.png" class="data-v-183afcac"></image></view><view class="data-v-183afcac">{{userinfo.telephone}}</view></view></view><view class="join data-v-183afcac"><image src="../../static/ucenter/icon1.png" class="data-v-183afcac"></image><view class="days data-v-183afcac">{{"已加入"+days+"天"}}</view></view></view></block></view>
+<view class="data-v-183afcac"><block wx:if="{{!userinfo.token}}"><view data-event-opts="{{[['tap',[['goLogin',['$event']]]]]}}" class="no-login data-v-183afcac" bindtap="__e"><view class="avatar data-v-183afcac"><image src="../../static/no-login.png" class="data-v-183afcac"></image></view><view class="context data-v-183afcac">您好,请授权登录</view></view></block><block wx:else><view data-event-opts="{{[['tap',[['getnickName',['$event']]]]]}}" class="login data-v-183afcac" bindtap="__e"><view class="avatar data-v-183afcac"><image src="{{userinfo.avatar?userinfo.avatar:defaultimg}}" class="data-v-183afcac"></image></view><block wx:if="{{keys==2}}"><image class="edit data-v-183afcac" src="../../static/edit.png"></image></block><view class="info data-v-183afcac"><view class="top data-v-183afcac"><view class="name data-v-183afcac">{{userinfo.nickName||'小狸'}}</view><view class="join data-v-183afcac"><image src="../../static/ucenter/icon1.png" class="data-v-183afcac"></image><view class="days data-v-183afcac">{{"已加入"+days+"天"}}</view></view></view><view class="phone data-v-183afcac"><view class="data-v-183afcac"><image src="../../static/ucenter/icon2.png" class="data-v-183afcac"></image></view><view class="data-v-183afcac">{{userinfo.telephone}}</view></view></view></view></block></view>

+ 34 - 23
unpackage/dist/dev/mp-weixin/components/top-box/top-box.wxss

@@ -41,49 +41,45 @@
 }
 .login.data-v-183afcac {
   margin-top: 15rpx;
-  display: flex;
+  display: flex;
+  position: relative;
 }
-.login .avatar image.data-v-183afcac {
+.login .avatar image.data-v-183afcac:first-child {
   width: 110rpx;
   height: 110rpx;
-  margin: 0 30rpx;
+  margin-left: 30rpx;
+  margin-right: 10rpx;
   border-radius: 50%;
 }
+.login .edit.data-v-183afcac {
+  width: 36rpx;
+  height: 36rpx;
+  position: absolute;
+  left: 100rpx;
+  bottom: 5rpx;
+}
 .login .info.data-v-183afcac {
   display: flex;
   flex-direction: column;
   height: 100rpx;
-  justify-content: space-around;
+  justify-content: space-between;
   padding-top: 10rpx;
   margin-left: 5rpx;
 }
-.login .info .name.data-v-183afcac {
-  color: #1d2129;
-  font-size: 36rpx;
-  font-weight: bold;
-}
-.login .info .phone.data-v-183afcac {
-  display: flex;
-  font-size: 24rpx;
-  color: #86909c;
-  line-height: 36rpx;
-}
-.login .info .phone image.data-v-183afcac {
-  width: 36rpx;
-  height: 36rpx;
+.login .info .top.data-v-183afcac {
+  display: flex;
 }
-.login .join.data-v-183afcac {
+.login .info .top .join.data-v-183afcac {
   display: flex;
-  padding-top: 15rpx;
-  margin-left: 20rpx;
+  margin-left: 12rpx;
   position: relative;
 }
-.login .join image.data-v-183afcac {
+.login .info .top .join image.data-v-183afcac {
   width: 42rpx;
   height: 48rpx;
   position: absolute;
 }
-.login .join .days.data-v-183afcac {
+.login .info .top .join .days.data-v-183afcac {
   background-color: #f5f5f5;
   height: 44rpx;
   padding: 0 20rpx;
@@ -94,5 +90,20 @@
   font-size: 24rpx;
   color: #86909c;
   line-height: 44rpx;
+}
+.login .info .top .name.data-v-183afcac {
+  color: #1d2129;
+  font-size: 36rpx;
+  font-weight: bold;
+}
+.login .info .phone.data-v-183afcac {
+  display: flex;
+  font-size: 24rpx;
+  color: #86909c;
+  line-height: 36rpx;
+}
+.login .info .phone image.data-v-183afcac {
+  width: 36rpx;
+  height: 36rpx;
 }
 

File diff suppressed because it is too large
+ 32 - 33
unpackage/dist/dev/mp-weixin/pages/index/index.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.json

@@ -1,6 +1,6 @@
 {
   "navigationBarTitleText": "智小狸",
-  "enablePullDownRefresh": true,
+  "enablePullDownRefresh": false,
   "usingComponents": {
     "top-box": "/components/top-box/top-box",
     "uni-swiper-dot": "/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot",

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/index/index.wxml


+ 15 - 10
unpackage/dist/dev/mp-weixin/pages/index/index.wxss

@@ -41,7 +41,8 @@
   color: #979797;
 }
 .main-box.data-v-57280228 {
-  padding: 0 30rpx;
+  padding: 0 30rpx;
+  background: linear-gradient(180deg, #FFFFFF 0%, #F8F9FB 100%);
 }
 .main-box .carinfo.data-v-57280228 {
   width: 100%;
@@ -81,9 +82,11 @@
 }
 .main-box .swiper-box .swiper-item .plate view.data-v-57280228:last-child {
   width: 280rpx;
-  text-align: right;
+  text-align: left;
+  padding-left: 10rpx;
   color: #6cc57d;
-  font-size: 30rpx;
+  font-size: 30rpx;
+  padding-top: 2rpx;
 }
 .main-box .swiper-box .swiper-item .plate-number.data-v-57280228 {
   display: flex;
@@ -95,14 +98,16 @@
 }
 .main-box .swiper-box .swiper-item .plate-number view.data-v-57280228:first-child {
   font-weight: 600;
-  font-size: 32rpx;
+  font-size: 36rpx;
   padding-right: 15rpx;
 }
 .main-box .swiper-box .swiper-item .battery-soc.data-v-57280228 {
-  display: flex;
+  display: flex;
+  margin-bottom: 22rpx;
 }
 .main-box .swiper-box .swiper-item .battery-soc view.data-v-57280228:first-child {
-  width: 138rpx;
+  width: 105rpx;
+  font-size: 22rpx;
 }
 .main-box .swiper-box .swiper-item .battery-soc view.data-v-57280228:last-child {
   flex: 1;
@@ -110,7 +115,7 @@
 .main-box .swiper-box .swiper-item .battery-soc view:last-child .strip.data-v-57280228 {
   /* 父元素相对定位 */
   position: relative;
-  width: 480rpx;
+  width: 525rpx;
   height: 18rpx;
   background-color: #fff;
   top: 10rpx;
@@ -147,15 +152,14 @@
 }
 .main-box .swiper-box .swiper-item .battery-info view > view.data-v-57280228:last-child {
   color: #939da7;
-  font-size: 26rpx;
-  margin-top: 8rpx;
+  font-size: 26rpx;
 }
 .main-box .change-title.data-v-57280228 {
   width: 100%;
   padding: 0 20rpx;
   box-sizing: border-box;
   display: flex;
-  margin: 30rpx 0;
+  margin: 24rpx 0;
 }
 .main-box .change-title image.data-v-57280228 {
   width: 9rpx;
@@ -176,6 +180,7 @@
   width: 690rpx;
   box-sizing: border-box;
   border-radius: 25rpx;
+  box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226, 226, 226, 0.25);
   background-color: #fff;
   padding: 20rpx 30rpx;
   display: flex;

File diff suppressed because it is too large
+ 251 - 179
unpackage/dist/dev/mp-weixin/pages/powerExchange/index.js


+ 9 - 0
unpackage/dist/dev/mp-weixin/pages/powerExchange/index.json

@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "换电流程",
+  "enablePullDownRefresh": false,
+  "usingComponents": {
+    "scan-info": "/components/scan-info/scan-info",
+    "uni-steps": "/uni_modules/uni-steps/components/uni-steps/uni-steps",
+    "sub-title": "/components/sub-title/sub-title"
+  }
+}

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/powerExchange/index.wxml


+ 51 - 21
unpackage/dist/dev/mp-weixin/pages/powerchange/index.wxss → unpackage/dist/dev/mp-weixin/pages/powerExchange/index.wxss

@@ -24,7 +24,20 @@
 /* 垂直间距 */
 /* 透明度 */
 /* 文章场景相关 */
-.swapinfo .header.data-v-5cf41fe2 {
+.list.data-v-4e08b1e2 {
+  width: 100%;
+  display: flex;
+  height: 100rpx;
+  justify-content: space-between;
+  font-size: 30rpx;
+}
+.list view.data-v-4e08b1e2:first-child {
+  color: #86909c;
+}
+.list view.data-v-4e08b1e2:last-child {
+  color: #1d2129;
+}
+.swapinfo .header.data-v-4e08b1e2 {
   display: flex;
   padding: 30rpx;
   width: 690rpx;
@@ -32,12 +45,12 @@
   font-size: 32rpx;
   justify-content: space-around;
 }
-.swapinfo .header .active.data-v-5cf41fe2 {
+.swapinfo .header .active.data-v-4e08b1e2 {
   color: #1d2129;
   font-weight: bold;
   position: relative;
 }
-.swapinfo .header .active.data-v-5cf41fe2::after {
+.swapinfo .header .active.data-v-4e08b1e2::after {
   content: '';
   background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAAJCAYAAAB9nA+YAAAAAXNSR0IArs4c6QAAAhFJREFUSEvVk89Lk3Ecx9/v7/MsRz6gBykPgh467CAopGAUuMSDULI6mEIeBkGRXvoT/A86RBJB1KHDbEmBHnaoaQdJaIe8xA47GHiYsEBh1mzPvu941EHFxuahrM/x+/38eL8+PwgAkyszN2nRLzrPF0YebARv/4tNpu/0Uc40DDKJy/MLDIRPpWc/ABg4gshAeFkplxaTY09y/yLYROrWObotMRpME+yv6k6MPBzkRPrueQcmU0d4FtKypX2jwpe15I1k8SQAo0/j4TPd4WEjMwryKoBILR1l3x/k5NvZ+yTuNRIqwAcUTC8Dg3V8txvb77PZ1blVv1Hscf6jc1H37IVIBKdMHyyGwGBzOEDAbZhHesToSjzcCS8GKS5gtKnAo8wBJIGchBygTRpuEchLtlCpVHYht2jll0LWlIIQGXiWxgV9z3GcNkvTYYBOWXUR7BEPOt9zXA0QUjBKbOPT4Q1VbXzpdker58YkTBG4BDDcsCsn4HCwLYcQy1+L/uLS+ONCVcYvQD9ru/Yq3t7S1jpMaQxktN7e/kWe4J5XRab2d/fevb7+bKdW7bpAvzsH0zvdGrpopCEL9pLqBdjzh4C2BGUprlvyo77ZteSV+XwztZoGqpVs4sWMZ9srEccNdZO2ixZdADpBdADwBHoEwoCqq1sU6BMqQtwBFHQ5T4M8ZDbllz+X9vZz9brfDNAPGMDNC0qvb7QAAAAASUVORK5CYII=);
   background-size: 100% 100%;
@@ -47,17 +60,24 @@
   bottom: -25rpx;
   left: 32%;
 }
-.swapinfo .changeProcess .timeline.data-v-5cf41fe2 {
-  padding: 0 58rpx;
+.swapinfo .changeProcess.data-v-4e08b1e2 {
+  padding-bottom: 20rpx;
+}
+.swapinfo .changeProcess .timeline.data-v-4e08b1e2 {
   display: flex;
-  margin-top: 60rpx;
+  box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226, 226, 226, 0.25);
+  border-radius: 24rpx;
+  background-color: #fff;
+  margin: 30rpx;
+  padding: 29rpx;
+  opacity: 1;
 }
-.swapinfo .changeProcess .timeline .timeinfo.data-v-5cf41fe2 {
+.swapinfo .changeProcess .timeline .timeinfo.data-v-4e08b1e2 {
   display: flex;
   flex-direction: column;
   text-align: right;
 }
-.swapinfo .changeProcess .timeline .timeinfo .list.data-v-5cf41fe2 {
+.swapinfo .changeProcess .timeline .timeinfo .list.data-v-4e08b1e2 {
   display: flex;
   flex-direction: column;
   width: 100%;
@@ -65,13 +85,13 @@
   color: #c9cdd4;
   font-size: 28rpx;
 }
-.swapinfo .changeProcess .timeline .timeinfo .list view.data-v-5cf41fe2:first-child {
+.swapinfo .changeProcess .timeline .timeinfo .list view.data-v-4e08b1e2:first-child {
   color: #86909c;
 }
-.swapinfo .changeProcess .timeline .line.data-v-5cf41fe2 {
+.swapinfo .changeProcess .timeline .line.data-v-4e08b1e2 {
   flex: 1;
 }
-.swapinfo .changeProcess .changeCurrent.data-v-5cf41fe2 {
+.swapinfo .changeProcess .changeCurrent.data-v-4e08b1e2 {
   width: 690rpx;
   margin: 30rpx auto;
   height: 180rpx;
@@ -83,38 +103,48 @@
   flex-direction: column;
   justify-content: space-around;
 }
-.swapinfo .changeProcess .changeCurrent .info.data-v-5cf41fe2 {
+.swapinfo .changeProcess .changeCurrent .info.data-v-4e08b1e2 {
   display: flex;
   color: #fff;
   font-size: 30rpx;
   font-weight: bold;
   line-height: 36rpx;
 }
-.swapinfo .changeProcess .changeCurrent .info image.data-v-5cf41fe2 {
+.swapinfo .changeProcess .changeCurrent .info image.data-v-4e08b1e2 {
   width: 60rpx;
   height: 60rpx;
   padding-right: 25rpx;
 }
-.swapinfo .changeProcess .changeCurrent .info view.data-v-5cf41fe2:last-child {
+.swapinfo .changeProcess .changeCurrent .info view.data-v-4e08b1e2:last-child {
   padding-top: 12rpx;
 }
-.swapinfo .changeProcess .changeCurrent .times.data-v-5cf41fe2 {
+.swapinfo .changeProcess .changeCurrent .times.data-v-4e08b1e2 {
   color: #ededed;
   text-indent: 10rpx;
 }
-.swapinfo .changeCar .ban.data-v-5cf41fe2,
-.swapinfo .changeBattery .ban.data-v-5cf41fe2 {
+.swapinfo .changeCar.data-v-4e08b1e2,
+.swapinfo .changeBattery.data-v-4e08b1e2 {
+  width: 690rpx;
+  margin: 30rpx 30rpx;
+  padding: 15rpx 0rpx;
+  box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(226, 226, 226, 0.25);
+  border-radius: 24rpx;
+  opacity: 1;
+  background-color: #fff;
+}
+.swapinfo .changeCar .ban.data-v-4e08b1e2,
+.swapinfo .changeBattery .ban.data-v-4e08b1e2 {
   width: 547rpx;
   height: 298rpx;
   margin: 70rpx auto;
 }
-.swapinfo .changeCar .ban image.data-v-5cf41fe2,
-.swapinfo .changeBattery .ban image.data-v-5cf41fe2 {
+.swapinfo .changeCar .ban image.data-v-4e08b1e2,
+.swapinfo .changeBattery .ban image.data-v-4e08b1e2 {
   width: 100%;
   height: 100%;
 }
-.swapinfo .changeCar .info-box.data-v-5cf41fe2,
-.swapinfo .changeBattery .info-box.data-v-5cf41fe2 {
+.swapinfo .changeCar .info-box.data-v-4e08b1e2,
+.swapinfo .changeBattery .info-box.data-v-4e08b1e2 {
   width: 587rpx;
   margin: 0 auto;
   display: flex;

File diff suppressed because it is too large
+ 63 - 293
unpackage/dist/dev/mp-weixin/pages/powerchange/index.js


+ 2 - 6
unpackage/dist/dev/mp-weixin/pages/powerchange/index.json

@@ -1,9 +1,5 @@
 {
-  "navigationBarTitleText": "换电流程",
+  "navigationBarTitleText": "",
   "enablePullDownRefresh": false,
-  "usingComponents": {
-    "scan-info": "/components/scan-info/scan-info",
-    "uni-steps": "/uni_modules/uni-steps/components/uni-steps/uni-steps",
-    "sub-title": "/components/sub-title/sub-title"
-  }
+  "usingComponents": {}
 }

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/powerchange/index.wxml


File diff suppressed because it is too large
+ 181 - 0
unpackage/dist/dev/mp-weixin/pages/public/404.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/scan/index.json → unpackage/dist/dev/mp-weixin/pages/public/404.json

@@ -1,5 +1,5 @@
 {
-  "navigationBarTitleText": "确认换电信息",
+  "navigationBarTitleText": "",
   "enablePullDownRefresh": false,
   "usingComponents": {}
 }

+ 1 - 0
unpackage/dist/dev/mp-weixin/pages/public/404.wxml

@@ -0,0 +1 @@
+<view class="data-v-4a73c66a"><view class="main data-v-4a73c66a"><view class="data-v-4a73c66a"><image src="../../static/404.png" class="data-v-4a73c66a"></image></view><view class="tip data-v-4a73c66a">{{ErrorTip}}</view><view class="data-v-4a73c66a"><button class="index data-v-4a73c66a" type="primary" data-event-opts="{{[['tap',[['goHome',['$event']]]]]}}" bindtap="__e">返回首页</button></view></view></view>

+ 55 - 0
unpackage/dist/dev/mp-weixin/pages/public/404.wxss

@@ -0,0 +1,55 @@
+@charset "UTF-8";
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+/* 颜色变量 */
+/* 行为相关颜色 */
+/* 文字基本颜色 */
+/* 背景颜色 */
+/* 边框颜色 */
+/* 尺寸变量 */
+/* 文字尺寸 */
+/* 图片尺寸 */
+/* Border Radius */
+/* 水平间距 */
+/* 垂直间距 */
+/* 透明度 */
+/* 文章场景相关 */
+.main.data-v-4a73c66a {
+  width: 563rpx;
+  display: flex;
+  flex-direction: column;
+  margin: 0 auto;
+  text-align: center;
+  font-size: 32rpx;
+  color: #1D2129;
+  padding-top: 100rpx;
+}
+.main image.data-v-4a73c66a {
+  width: 563rpx;
+}
+.main .tip.data-v-4a73c66a {
+  margin-bottom: 60rpx;
+}
+.main .index.data-v-4a73c66a {
+  width: 400rpx;
+  height: 88rpx;
+  background: #58BE6B;
+  border-radius: 58rpx 58rpx 58rpx 58rpx;
+  opacity: 1;
+  font-size: 32rpx;
+  color: #fff;
+  font-weight: 600;
+  line-height: 88rpx;
+  font-family: Noto Sans SC-Regular, Noto Sans SC;
+}
+

File diff suppressed because it is too large
+ 53 - 38
unpackage/dist/dev/mp-weixin/pages/public/login.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/scan/index.wxml


Some files were not shown because too many files changed in this diff