Browse Source

修改支付问题和整理一些代码

CarlYang 3 years ago
parent
commit
3ea34590d2

+ 18 - 7
pages/applyRefund/applyRefund.vue

@@ -23,6 +23,7 @@
 						:header="{
 							Authorization: 'Bearer ' + vuex_token
 						}"
+						max-count="3"
 						ref="uUpload"
 						:action="action"></u-upload>
 				</view>
@@ -71,17 +72,22 @@
 		methods: {
 			submit() {
 				let files = [];
+				// 是否有未完成上传的图片标识
+				let isHas = false
 				this.$refs.uUpload.lists.forEach(item => {
-					const url = item?.response?.data?.url
-					if (url) {
-						files.push(url)
+					if (item.progress === 100) {
+						const url = item?.response?.data?.url
+						if (url) {
+							files.push(url)
+						}
+					} else {
+						isHas = true
 					}
 				})
 				this.refundForm.images = files
-				if (this.refundForm.refundReason && files.length > 0) {
+				if (this.refundForm.refundReason && !isHas) {
 					this.$u.api.updateOrderRefund(this.refundForm)
 						.then(res => {
-							console.log(res)
 							this.successPop = true
 							if (res.code === 200) {
 								setTimeout(() => {
@@ -108,9 +114,14 @@
 						title: '请填写申请退款原因',
 						type: 'warning'
 					})
-				} else if (files.length === 0) {
+				// } else if (files.length === 0) {
+				// 	this.$refs.uToast.show({
+				// 		title: '请至少选择一张图片',
+				// 		type: 'warning'
+				// 	})
+				} else  if (isHas) {
 					this.$refs.uToast.show({
-						title: '请至少选择一张图片',
+						title: '还有图片未完成上传,请稍等!',
 						type: 'warning'
 					})
 				}

+ 1 - 1
pages/applyRefundDetails/applyRefundAchieveDetails.vue

@@ -12,7 +12,7 @@
 			</view>
 			<view class="order-details-content-item">
 				<view>退款时间</view>
-				<view>{{details.applyTime}}</view>
+				<view>{{details.auditTime}}</view>
 			</view>
 			<view class="order-details-content-item">
 				<view>退款方式</view>

+ 2 - 1
pages/center/order/order.vue

@@ -38,6 +38,7 @@
 									<view class="order-center-item" v-if="orderItem.orderStatus !== 1">出场时间:{{orderItem.outTime}}</view>
 									<view class="order-center-item" v-if="orderItem.orderStatus !== 1">停留时间:{{orderItem.duration}}</view>
 									<view class="order-center-item">应付金额:<span class="pay-amount">{{orderItem.payAmount}}</span></view>
+									<view class="order-center-item" v-if="orderItem.actualAmount">实际金额:<span class="pay-amount">{{orderItem.actualAmount}}</span></view>
 								</view>
 								<view class="order-bottom">
 									<u-cell-item title="收费标准" @click.native.stop="jumpChargeStandard(orderItem)"></u-cell-item>
@@ -183,7 +184,7 @@ export default {
 		applyRefund(item) {
 			this.$u.route('pages/applyRefund/applyRefund', {
 				orderId: item.orderId,
-				payAmount: item.payAmount
+				payAmount: item.actualAmount
 			})
 		},
 		// 申请退款详情

+ 0 - 3
pages/center/phoneLogin/phoneLogin.vue

@@ -94,15 +94,12 @@ export default {
 							that.second=60;
 						}
 					}, 1000);
-					console.log('getcode res',res);
 					this.accessToken = res.data.accessToken;
 					this.$u.vuex('vuex_token', res.data.accessToken);
 					this.userId = res.data.userId;
 				}).catch(err=>{
-					console.log('err',err)
 					this.toastMsg = err.code + ":" + err.msg;
 					this.showToast();
-					console.log('getcode err',err)
 				});
 			}
 		},

+ 1 - 1
pages/handleMonthly/handleMonthly.vue

@@ -271,7 +271,7 @@
 					openid: this.$store.state.vuex_wxinfo.openId
 				};
 				await this.$wxApi.config();
-				this.$pay.wechatPay(params, '/monthpay/wechat', this.jumpUrl).then(res =>{
+				this.$pay.wechatPay(params, '/client/monthpay/wechat', this.jumpUrl).then(res =>{
 					switch (Number(res.code)) {
 						case 0: // 成功
 							//#ifdef H5

+ 88 - 73
pages/index/index.vue

@@ -55,7 +55,7 @@
 			</view>
 		</u-card>
 		
-		<view class="empty-data-box" v-if="!orderList||orderList.length<1">
+		<view class="empty-data-box" v-if="!orderList || orderList.length < 1">
 			<u-empty text="暂无停车信息" mode="list"></u-empty>
 		</view>
 		<template v-for="(item, index) in orderList">
@@ -174,12 +174,14 @@
 				city: '贵州省',
 				keyword:'',
 				bannerList:[
-					{image: '/static/img/index-banner01.png',title: ''}
+					{
+						image: require('@/static/img/index-banner01.png')
+					}
 				],
 				orderList:[],
 				cityOpen:false,
 				pendingOrder:[],
-				code:null,//微信code
+				code: null,//微信code
 				orderNav:'',//手动,无感
 				bindCarShow:false,//绑定车询问弹窗
 				showOrderDetails:false,//是否线上订单细节
@@ -201,7 +203,7 @@
 				contractStatus:'',
 				vehicleId:'',
 				recordList:[],
-				// 支付方式
+				// 支付方式弹框
 				payWayPop: false,
 				// 订单号
 				curOrderList: [],
@@ -223,8 +225,6 @@
 				//判断是否有这个对象
 					navigator.geolocation.getCurrentPosition(function(pos){
 						console.log("经度:"+pos.coords.longitude+"纬度:"+pos.coords.latitude);
-						// alert(latitude)
-						// alert(longitude)
 						that.latLongItude = {latitude: pos.coords.latitude,longitude:pos.coords.longitude};
 						that.latitude = pos.coords.latitude;
 						that.longitude = pos.coords.longitude;
@@ -255,8 +255,6 @@
 			},
 			// 通过经纬度获取地区详细信息
 			getCityNameByLonLat({longitude,latitude} = {}){
-				// alert(latitude)
-				// alert(longitude)
 				let that = this;
 				uni.showLoading({
 				    title: '加载中',
@@ -266,7 +264,6 @@
 				this.$jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+ str, {}).then(res=>{
 				  uni.hideLoading();
 				  if(res.status == 0){
-					  console.log(res.result.ad_info)
 					  if (res.result.ad_info) {
 						  that.city = res.result.ad_info.district
 					  }
@@ -275,7 +272,6 @@
 			},
 			// 轮播图点击
 			swiperClick(item) {
-				console.log(item)
 				this.$u.route({
 					url: 'pages/bannerDetails/bannerDetails',
 					params: {
@@ -283,35 +279,33 @@
 					}
 				})
 			},
+			// 切换无感和手动
 			orderNavclick(){
-				this.feePay()
-			},
-			feePay(){
 				this.$u.api.feePay({vehicleId: this.recordList[1]})
-				.then( res=>{
-					if(res.code == 200){
-						this.handleGetIndexData()
-					}
-				})
+					.then( res=>{
+						if(res.code == 200){
+							this.handleGetIndexData()
+						}
+					})
 			},
+			// 宫格菜单跳转
 			openPage(path) {
-				console.log('path',path);
 				this.$u.route({ 
 					url: path
 				})
 			},
 			// 搜索
 			handleSearch(){
-				console.log('this.keyword',this.keyword);
 				uni.reLaunch({
 				    url: `/pages/parkingLists/parkingLists?keyword=${this.keyword}`
 				})
 			},
+			// 城市选择
 			handleCitySelect(){
 				this.cityOpen = true;				
 			},
+			// 城市选择下拉变化
 			cityChange(e){
-				console.log('cityChange',e);
 				if (e.area) {
 					this.city = e.area.label;
 				} else if (e.city) {
@@ -320,54 +314,68 @@
 					this.city = e.province.label;
 				}
 			},
+			// 获取首页数据
 			handleGetIndexData(){
 				this.$u.api.getIndexData()
 				.then(res=>{
-					// 轮播
-					const bannerList = []
-					const banner = res.data?.advs
-					banner.forEach(item => {
-						const obj = {
-							image: item.bannerUrl,
-							id: item.id,
-							name: item.name,
-							content: item.content
-						}
-						bannerList.push(obj)
-					})
-					this.bannerList = bannerList
-					
-					if(res.data.vehicleList.length<1){
-						this.bindCarShow = true;
-					}
-					const enableFeepay=[]
-					res.data.orderList.forEach(item => {
-						if (item.enableFeepay) {
-							enableFeepay.push(item.enableFeepay);
-						} else {
-							enableFeepay.push(0);
+					if (res.code === 200) {
+						// 轮播
+						const bannerList = []
+						const banner = res.data?.advs
+						banner.forEach(item => {
+							const obj = {
+								image: item.bannerUrl,
+								id: item.id,
+								name: item.name,
+								content: item.content
+							}
+							bannerList.push(obj)
+						})
+						if (bannerList.length > 0) {
+							this.bannerList = bannerList
 						}
-						enableFeepay.push(item.vehicleId);
-						if (item.contractStatus) {
-							enableFeepay.push(item.contractStatus);
-						} else {
-							enableFeepay.push(0);
+						// 是否有绑定车牌: 没有则通过弹框去绑定
+						let vehicleList = res.data?.vehicleList??[]
+						if(vehicleList.length === 0){
+							this.bindCarShow = true;
 						}
-					})
-					this.recordList=enableFeepay;
-					// this.vehicleId=enableFeepay.vehicleId;
-					this.orderNav = enableFeepay[0];
-					this.contractStatus=enableFeepay[2];
-					console.log('recordList',this.recordList)
-					this.orderList = res.data.orderList;
-					const list = []
-					res.data.news.forEach(item => {
-						list.push(item.content)
-					})
-					this.noticeList = list;
+						// 无感和手动
+						const enableFeepay = []
+						res.data.orderList.forEach(item => {
+							if (item.enableFeepay) {
+								enableFeepay.push(item.enableFeepay);
+							} else {
+								enableFeepay.push(0);
+							}
+							enableFeepay.push(item.vehicleId);
+							if (item.contractStatus) {
+								enableFeepay.push(item.contractStatus);
+							} else {
+								enableFeepay.push(0);
+							}
+						})
+						this.recordList=enableFeepay;
+						this.orderNav = enableFeepay[0];
+						this.contractStatus=enableFeepay[2];
+						this.orderList = res.data.orderList;
+						// 消息提示
+						const newsList = []
+						const news = res.data?.news??[]
+						news.forEach(item => {
+							newsList.push(item.content)
+						})
+						this.noticeList = newsList;
+					} else {
+						this.$refs.uToast.show({
+							title: res.msg,
+							type: 'error'
+						})
+					}
 				}).catch(err=>{
-					// alert(err.msg);
-					console.log('getIndexData err',err)
+					this.$refs.uToast.show({
+						title: '系统异常',
+						type: 'error'
+					})
 				});
 			},
 			// 去支付,选择支付方式
@@ -375,20 +383,27 @@
 				this.payWayPop = true
 				this.curOrderList = []
 				this.curOrderList.push(orderId)
-			},			
+			},
+			// 获取路段详情
 			onRoadInfo(item){
-				this.$u.api.roadInfoById({id:item.roadId})
-				.then(res=>{
-					this.popupOrderDetails=res.data;
-					this.showOrderDetails = true;
-				}).catch(err=>{
-					// alert(err.msg);
-					console.log('getIndexData err',err)
-				});
+				this.$u.api.roadInfoById({
+					id:item.roadId,
+				})
+					.then(res=>{
+						this.popupOrderDetails=res.data;
+						this.showOrderDetails = true;
+					}).catch(err=>{
+						this.$refs.uToast.show({
+							title: '系统异常',
+							type: 'error'
+						})
+					});
 			},
+			// 关闭路段详情弹框
 			closeOrderDetails(){
 				this.showOrderDetails = false;
 			},
+			// 打电话
 			phoneCall(phone){
 				uni.makePhoneCall({
 				    phoneNumber: phone
@@ -410,7 +425,7 @@
 					}
 				})
 			},
-			// 关闭弹框
+			// 关闭支付弹框
 			closePaymentMethod() {
 				this.payWayPop = false
 			}

+ 98 - 96
pages/message/message.vue

@@ -1,11 +1,24 @@
 <template>
 	<view>
-		<u-navbar title-color="#fff" :custom-back="customBack" :border-bottom="false" back-icon-color="#CCE8FF" :background="{background: '#008CFF' }" title="消息中心"></u-navbar>
-		<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" >
-			<scroll-view scroll-y style="height: 100%; width: 100%;" v-for="(messageItem, index) in  messageList" :key="messageItem.id">
+		<u-navbar
+			title-color="#fff"
+			:custom-back="customBack"
+			:border-bottom="false"
+			back-icon-color="#CCE8FF"
+			:background="{background: '#008CFF' }"
+			title="消息中心"
+		/>
+		<mescroll-body
+			ref="mescrollRef"
+			@init="mescrollInit"
+			@down="downCallback"
+			@up="upCallback">
+			<scroll-view scroll-y style="height: 100%; width: 100%;" v-for="(messageItem, index) in  messageList"
+				:key="messageItem.id">
 				<view class="time">{{messageItem.createTime}}</view>
 				<view class="page-box">
-					<view class="message" @click="goDetails(messageItem.content,messageItem.createTime,messageItem.title)" >
+					<view class="message"
+						@click="goDetails(messageItem)">
 						<view class="message-top u-flex">
 							<view class="message-top-left u-flex-1">
 								<view class="car">{{messageItem.title}}</view>
@@ -23,8 +36,8 @@
 					</view>
 				</view>
 			</scroll-view>
-			</mescroll-body>
-			<u-toast ref="uToast" />
+		</mescroll-body>
+		<u-toast ref="uToast" />
 	</view>
 </template>
 
@@ -34,36 +47,16 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
-				messageList: [],
-				newId:'',
-				list: []
+				messageList: []
 			};
 		},
-		computed: {
-			// 价格小数
-			priceDecimal() {
-				return val => {
-					if (val !== parseInt(val)) return val.slice(-2);
-					else return '00';
-				};
-			},
-			// 价格整数
-			priceInt() {
-				return val => {
-					if (val !== parseInt(val)) return val.split('.')[0];
-					else return val;
-				};
-			}
-		},
 		methods: {
-			customBack(){
-				this.$u.route({
-					type:'switchTab',
-					url: 'pages/center/index'
-				});
+			// 返回上一页
+			customBack() {
+				uni.navigateBack()
 			},
 			/*下拉刷新的回调*/
-			downCallback(){
+			downCallback() {
 				// 第2种: 下拉刷新和上拉加载调同样的接口, 则不用第1种, 直接mescroll.resetUpScroll()即可
 				this.mescroll.resetUpScroll(); // 重置列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
 			},
@@ -71,80 +64,89 @@
 			upCallback(page) {
 				let pageNum = page.num; // 页码, 默认从1开始
 				let pageSize = page.size; // 页长, 默认每页10条
-				// this.getMessageList()
-				this.$u.api.getMessageList({pageSize:pageSize ,pageNum: pageNum})
-				.then(res=>{
-					if(res.code == 200){
-					console.log(res)
-					this.list=[],
-					res.data.rows.forEach(item =>{
-						const obj = {
-							id: item.id,
-						}
-						this.list.push(obj)
-						console.log(obj)
+				this.$u.api.getMessageList({
+						pageSize: pageSize,
+						pageNum: pageNum
 					})
-					this.newId = this.list[0]
-					console.log(this.newId)
-					// 接口返回的当前页数据列表 (数组)
-					let curPageData = res.data.rows;
-					// 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
-					let curPageLen = curPageData.length; 
-					// 接口返回的总页数 (如列表有26个数据,每页10条,共3页; 则totalPage=3)
-					let totalPage = res.data.pages; 
-					// 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
-					let totalSize = res.data.total; 
-					// 接口返回的是否有下一页 (true/false)
-					// let hasNext = data.pages; 
-					
-					//设置列表数据
-					if(page.num == 1) this.messageList = []; //如果是第一页需手动置空列表
-					this.messageList = this.messageList.concat(curPageData); //追加新数据
-					
-					// 请求成功,隐藏加载状态
-					//方法一(推荐): 后台接口有返回列表的总页数 totalPage
-					this.mescroll.endByPage(curPageLen, totalPage); 
-					setTimeout(()=>{
-						this.mescroll.endSuccess(curPageLen)
-					},20)
-					}else{
-						this.mescroll.endErr()
-					}
-				}).catch(err=>{
-					this.$refs.uToast.show({
-						title: err.msg,
-						type: 'error',
+					.then(res => {
+						if (res.code == 200) {
+							// 接口返回的当前页数据列表 (数组)
+							let curPageData = res.data?.rows??[];
+							// 接口返回的当前页数据长度 (如列表有26个数据,当前页返回8个,则curPageLen=8)
+							let curPageLen = curPageData.length;
+							// 接口返回的总页数 (如列表有26个数据,每页10条,共3页; 则totalPage=3)
+							let totalPage = res.data.pages;
+							// 接口返回的总数据量(如列表有26个数据,每页10条,共3页; 则totalSize=26)
+							let totalSize = res.data.total;
+							// 接口返回的是否有下一页 (true/false)
+							let hasNext = res.data.page < res.data.pages;
+
+							//设置列表数据
+							if (page.num == 1) this.messageList = []; // 如果是第一页需手动置空列表
+							this.messageList = this.messageList.concat(curPageData); // 追加新数据
+							// 后台接口有返回列表的总页数 totalPage
+							this.mescroll.endByPage(curPageLen, totalPage);
+							setTimeout(() => {
+								this.mescroll.endSuccess(curPageLen)
+							}, 20)
+						} else {
+							this.mescroll.endErr()
+						}
+					}).catch(err => {
+						this.$refs.uToast.show({
+							title: err.msg,
+							type: 'error',
+						});
 					});
-				});
-				
 			},
-			goDetails(content,createTime,title){
-				this.$u.api.messageRead({newId:this.newId})
-				.then(res =>{
-					if(res.code == 200){
-						console.log(res)
-					}
-				});
-				this.$u.route({
-					url: 'pages/message/messageInfo',
-					params: {
-						content:JSON.stringify(content),
-						createTime:JSON.stringify(createTime),
-						title:JSON.stringify(title),
-					}
-				});
+			// 跳转消息详情
+			goDetails(item) {
+				if (Number(item.readFlag) === 0) {
+					this.$u.api.messageRead({
+							newId: item.id
+						})
+						.then(res => {
+							if (res.code == 200) {
+								this.$u.route({
+									url: 'pages/message/messageInfo',
+									params: {
+										details: JSON.stringify(item)
+									}
+								});
+							} else {
+								this.$refs.uToast.show({
+									title: res.msg,
+									type: 'error'
+								})
+							}
+						})
+						.catch(err => {
+							this.$refs.uToast.show({
+								title: '操作失败',
+								type: 'error'
+							})
+						})
+				} else {
+					this.$u.route({
+						url: 'pages/message/messageInfo',
+						params: {
+							details: JSON.stringify(item)
+						}
+					});
+				}
 			}
 		},
 	};
 </script>
 
 <style>
-/* #ifndef H5 */
-page {
-	height: 100%;
-	background-color: #F6F6FF;
-}
-/* #endif */
+	/* #ifndef H5 */
+	page {
+		height: 100%;
+		background-color: #F6F6FF;
+	}
+
+	/* #endif */
 </style>
 
 <style lang="scss" scoped>

+ 16 - 16
pages/message/messageInfo.vue

@@ -1,14 +1,16 @@
 <template>
 	<view class="info">
-		<u-navbar title-color="#fff" 
-		:custom-back="customBack" 
-		:border-bottom="false" back-icon-color="#CCE8FF" 
-		:background="{background: '#008CFF' }" title="消息详情"></u-navbar>
-	<view class="time">{{this.createTime}}</view>
-	<view class="box">
-	<view class="title">{{this.title}}</view>
-	<view class="content">{{this.content}}</view>
-	</view>
+		<u-navbar
+			title-color="#fff" 
+			:custom-back="customBack" 
+			:border-bottom="false" back-icon-color="#CCE8FF" 
+			:background="{background: '#008CFF' }"
+			title="消息详情"></u-navbar>
+		<view class="time">{{details.createTime}}</view>
+		<view class="box">
+			<view class="title">{{details.title}}</view>
+			<view class="content">{{details.content}}</view>
+		</view>
 	</view>
 </template>
 
@@ -16,21 +18,19 @@
 	export default {
 		data() {
 			return {
-				content: '',
-				createTime:'',
-				title:''
+				details: {}
 			};
 		},
 		onLoad(page) {
-			this.content = JSON.parse(page.content);
-			this.createTime = JSON.parse(page.createTime);
-			this.title = JSON.parse(page.title);
+			const details = JSON.parse(page.details)
+			if (details) {
+				this.details = details
+			}
 			
 		},
 		methods: {
 			customBack(){
 				this.$u.route({
-					// type:'switchTab',
 					url: 'pages/message/message'
 				});
 			}

+ 2 - 2
pay.js

@@ -16,7 +16,7 @@ export default {
 			title: '支付中'
 		});
 		return new Promise(r => {
-			$http.post("/wechat/pay",obj)
+			$http.post("/client/wechat/pay",obj)
 				.then(res=>{
 					//#ifdef H5
 					$wxApi.JSAPI(res.data).then(r);
@@ -34,7 +34,7 @@ export default {
 	 * url 提交地址
 	 * jumpUrl 支付成功跳转 
 	 */
-	wechatPay(obj = {}, url = '/pay/wechat', jumpUrl) {
+	wechatPay(obj = {}, url = '/client/pay/wechat', jumpUrl) {
 		uni.showLoading({
 			title: '支付中'
 		});

+ 1 - 3
utils/getUrlParams.js

@@ -5,7 +5,7 @@ fkey:要查找的参数
 let locationLocaturl = window.location.search;
 let openId = getUrlParams(locationLocaturl,"openId");
 */
-function getUrlParams(url,fkey) {
+function getUrlParams(url, fkey) {
 	if (decodeURIComponent(url).indexOf('?') > -1) {
 		var result = [];
 		var urlParamsArr = decodeURIComponent(url).split('?');
@@ -34,8 +34,6 @@ function getUrlParams(url,fkey) {
 		}else{
 			return result;
 		}
-	} else {
-		console.log('该URL中不含参数');
 	}
 }
 

+ 2 - 2
wxapi.js

@@ -2,7 +2,7 @@
 const wx = require('@/js_sdk/jweixin-1.4.0.js')
 
 //配置注册url
-const url = '/wechat/pay/getJsapiTicket';
+const url = '/client/wechat/pay/getJsapiTicket';
 
 //http方法
 // import $http from './utils/axios.js'
@@ -144,7 +144,7 @@ export default {
 				"nonceStr": res.nonceStr, //随机串     
 				"package": res.packageValue,
 				"signType": res.signType, //微信签名方式:     
-				"paySign": res.paySign, //微信签名 
+				"paySign": res.paySign, //微信签名
 				success() {
 					r({
 						code: 0,