Răsfoiți Sursa

Merge branch 'master' of http://222.85.201.140:10002/xuyunhui/chain_jje_uniapp

xyh8905170 2 ani în urmă
părinte
comite
2f98d9f030

+ 2 - 1
.idea/inspectionProfiles/Project_Default.xml

@@ -4,7 +4,7 @@
     <inspection_tool class="HtmlUnknownTag" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="myValues">
         <value>
-          <list size="16">
+          <list size="17">
             <item index="0" class="java.lang.String" itemvalue="nobr" />
             <item index="1" class="java.lang.String" itemvalue="noembed" />
             <item index="2" class="java.lang.String" itemvalue="comment" />
@@ -21,6 +21,7 @@
             <item index="13" class="java.lang.String" itemvalue="u-sticky" />
             <item index="14" class="java.lang.String" itemvalue="u-tabs" />
             <item index="15" class="java.lang.String" itemvalue="view" />
+            <item index="16" class="java.lang.String" itemvalue="u-datetime-picker" />
           </list>
         </value>
       </option>

+ 3 - 11
common/js/api.js

@@ -3,14 +3,6 @@ import request from '../js/request.js';
 
 export default {
 
-	// get请求 通过电话及名称获取老系统会员信息
-	getOldMember(data) {
-		return request({
-			url: '/member/wechat/getOldMember',
-			method: 'GET',
-			data: data
-		})
-	},
 
 	// get请求 通过会员编号获取老系统充值记录
 	getOrderRechargeOldList(data) {
@@ -97,11 +89,11 @@ export default {
 		})
 	},
 
-	// post请求,查询充值订单列表
+	// get请求,查询充值订单列表
 	orderRechargeList(data) {
 		return request({
 			url: '/business/wechat/orderRecharge/list',
-			method: 'POST',
+			method: 'GET',
 			data: data
 		})
 	},
@@ -144,7 +136,7 @@ export default {
 	// post请求,微信支付(根据订单ID)
 	wechatPay(data) {
 		return request({
-			url: '/business/wxPay/jsapiPay',
+			url: '/business/wxPay/jsapiPay?orderNo='+data.orderNo,
 			method: 'POST',
 			data: data
 		})

+ 477 - 24
myPages/recharge/index.vue

@@ -1,7 +1,10 @@
 <template>
-	<view class="content">
+	<view class="page">
 		<!-- 钱包 -->
 		<view class="recharge-me">
+			<view class="bg-img">
+				<!-- <image src="../../static/recharge/u1709.jpg" mode=""></image> -->
+			</view>
 			<view class="wallet-content">
 				<view class="h-balance-wrap">
 					<view class="h-balance">
@@ -11,7 +14,7 @@
 							</view>
 							<view class="name">储值余额</view>
 							<view class="balance-value">¥
-								<text v-if="userInfo.rechargeBalance">{{ userInfo.rechargeBalance }}</text>
+								<text v-if="userInfo.rechargeBalance">{{userInfo.rechargeBalance}}</text>
 								<text v-else>0</text>
 							</view>
 						</view>
@@ -21,7 +24,7 @@
 							</view>
 							<view class="name">赠送余额</view>
 							<view class="balance-value">¥
-								<text v-if="userInfo.rewardBalance" class="">{{ userInfo.rewardBalance }}</text>
+								<text v-if="userInfo.rewardBalance" class="">{{userInfo.rewardBalance}}</text>
 								<text v-else>0</text>
 							</view>
 						</view>
@@ -31,7 +34,7 @@
 							</view>
 							<view class="name">赠送优惠券</view>
 							<view class="balance-value">
-								<text v-if="userInfo.coupon">{{ userInfo.coupon }}</text>
+								<text  v-if="userInfo.coupon" >{{userInfo.coupon}}</text>
 								<text v-else>0</text>
 							</view>
 						</view>
@@ -41,7 +44,7 @@
 						<view @click="gotoTransactionRecords()" class="item-btn">
 							<text>交易记录</text>>
 						</view>
-						<view class="dashed-line"></view>
+						<view class="dashed-line" ></view>
 						<view @click="gotoTransactionOrderRecords()" class="item-btn">
 							<text>储值订单</text>>
 						</view>
@@ -54,8 +57,7 @@
 					<!--右边虚化-->
 					<!-- <view class="hide-content-box hide-content-box-right"></view> -->
 					<scroll-view scroll-x="true" class="kite-classify-scroll">
-						<view @click="selectActiveRecharge(item, index)" class="kite-classify-cell shadow"
-							v-for="(item, index) in rechargeList" :key="index">
+						<view @click="selectActiveRecharge(item,index)" class="kite-classify-cell shadow" v-for="(item, index) in rechargeList" :key="index">
 							<view v-if="currentTab === index" class="h-bg-img">
 								<image src="../../static/transaction/u2.png" mode=""></image>
 							</view>
@@ -64,10 +66,10 @@
 							</view>
 							<view class="content">
 								<view class="money">
-									¥<text class="v">{{ item.reachPrice }}</text>
+									¥<text class="v">{{item.reachPrice}}</text>
 								</view>
 								<view class="desc">
-									<text>{{ item.name }} </text>
+									<text>{{item.name}} </text>
 									<!-- <text>充¥{{item.reachPrice}}赚送¥{{item.discountsPrice}}</text> -->
 								</view>
 							</view>
@@ -75,6 +77,40 @@
 					</scroll-view>
 				</view>
 
+				<!-- 选择充值金额  -->
+				<!-- <view class="recharge-content-wrap">
+					<view v-for="(item,index) in rechargeList"
+						@click="selectActiveRecharge(item,index)" class="recharge-content">
+						<view v-if="currentTab === index" class="h-bg-img">
+							<image src="../../static/transaction/u2.png" mode=""></image>
+						</view>
+						<view v-else class="h-bg-img">
+							<image src="../../static/recharge/dianka.png" mode=""></image>
+						</view>
+						<view class="content">
+							<view class="money">
+								¥<text class="v">{{item.reachPrice}}</text>
+							</view>
+							<view class="desc">
+								<text>{{item.name}} </text>
+								<text>充¥{{item.reachPrice}}赚送¥{{item.discountsPrice}}</text>
+							</view>
+						</view>
+					</view>
+				</view> -->
+
+
+
+				<!-- 自定义充值金额 -->
+				<!-- <view class="h-custom">
+					<view class="h-icon">
+						<u-icon name="rmb" color="#333" size="22"></u-icon>
+					</view>
+					<view class="h-money">
+						<input v-model="reqOrderParm.rechargeAmount" @click="cancelChooseMoney" placeholder="请输入金额" type="number">
+					</view>
+				</view> -->
+
 				<!-- 充值按钮 -->
 				<view v-if="rechargeList.length > 0" @click="submitOrder()" class="h-submit-btn">
 					<text>立即充值</text>
@@ -82,8 +118,8 @@
 
 				<!-- 用户充值协议 -->
 				<view class="recharge-agreement">
-					<view class="radio-group">
-						<radio @click="toggleSelection" class="v-text" :checked="isSelected">我已阅读并同意</radio>
+					<view  class="radio-group">
+						<radio @click="toggleSelection" class="v-text" :checked="isSelected" >我已阅读并同意</radio>
 						<text @click="gotoTermOfService(8)" class="h-btn">《储值协议》</text>
 					</view>
 				</view>
@@ -94,7 +130,21 @@
 						<text>使用说明</text>
 					</view>
 					<view class="h-content">
-
+						<view class="h-v-text">
+							<text>1、 这上面的夜的天空,奇怪而高,我生平。</text>
+						</view>
+						<view class="h-v-text">
+							<text>2、 这上面的夜的天空,奇怪而高,我生平。</text>
+						</view>
+						<view class="h-v-text">
+							<text>3、 这上面的夜的天空,奇怪而高,我生平。</text>
+						</view>
+						<view class="h-v-text">
+							<text>4、 这上面的夜的天空,奇怪而高,我生平。</text>
+						</view>
+						<view class="h-v-text">
+							<text>5、 这上面的夜的天空,奇怪而高,我生平。</text>
+						</view>
 					</view>
 				</view>
 			</view>
@@ -104,21 +154,424 @@
 </template>
 
 <script>
-export default {
+	export default {
+		data() {
+			return {
+				show: false,
+				currentTab: '', // 当前选中的 Tab
+				isSelected: true,
+				userInfo: {},
+				reqOrderParm: {
+					auth: true,
+					orderType: 3, // 订单类型;1-服务订单 2-产品订单 3-充值订单
+					rechargeAmount: null, // 充值金额
+					strategyId: null, // 优惠策略的ID  测试id 1694514233806888962
+					remark: null
+				},
+				reqPayParm: {
+					auth: true,
+					orderNo: null,
+					openid: null,
+					requstForm: true
+				},
+				rechargeList: [],
+			};
+		},
+		onLoad() {
+		},
+		onShow() {
+			// 获取充值面额
+			this.getRechargeList();
+			// 用户信息
+			this.userInfo = uni.getStorageSync('userInfo');
+		},
+		methods: {
 
-	data() {
-		return {
-		}
-	},
-	onLoad() {
+			// 获取充值面额
+			getRechargeList(){
+				console.log('+++++++++666666666666666666+++++++++++++++++++')
+				this.$api.getRechargeList(this.reqOrderParm).then((res)=>{
+					console.log('++++++++++++++getRechargeList+++++++++++++++++',res)
+					this.rechargeList = res.data.data;
+				}).catch(() =>{
+					uni.showToast({
+						title: "操作失败"
+					})
+				});
+			},
+			// 提交订单
+			submitOrder(){
+				const that = this;
 
-	},
-	methods: {
-	}
-}
+				if(!this.isSelected){ // 是否确定协议
+					uni.showToast({
+						title: '请选择充值协议!'
+					});
+					return;
+				}
+
+				if(this.reqOrderParm.strategyId == null){
+					uni.showToast({
+						title: '请选择充值项目!'
+					});
+					return;
+				}
+
+				// 提交订单
+				this.$api.commonGeneralOrder(this.reqOrderParm).then((res)=>{
+					console.log('+++++++++++commonGeneralOrder++++++++++',res)
+					that.reqPayParm.orderNo = res.data.data.orderNo;
+					// 调用微信支付
+					that.wechatPay();
+				}).catch(() =>{
+					uni.showToast({
+						title: "操作失败"
+					})
+				});
+			},
+			// 微信支付
+			wechatPay(){
+				const that = this;
+				// 用户信息
+				that.reqPayParm.requstForm = true;
+				this.$api.wechatPay(that.reqPayParm).then((res)=>{
+					var param = res.data.data;
+					uni.requestPayment({
+						appId: param.appid,
+						timeStamp: param.timestamp+"",
+						nonceStr: param.noncestr,
+						package: "prepay_id="+param.prepayid,
+						signType: "RSA",
+						paySign: param.sign,
+						success: res => {
+							uni.showToast({
+								title: '支付成功!'
+							});
+							// 刷新用户信息
+							that.getUserInfo()
+						},
+						fail: res => {
+							uni.showModal({
+								content: '支付失败',
+								showCancel: false
+							});
+						}
+					});
+				}).catch(() =>{
+					uni.showToast({
+						title: "操作失败"
+					})
+				});
+			},
+
+			getUserInfo(){
+				this.$api.getUserInfo().then(res=>{
+					console.log('++++++++++++获取用户信息++++++++++++++++++',res)
+					uni.setStorageSync('userInfo',res.data.data)
+					this.userInfo = res.data.data
+				})
+
+			},
+			// 取消上面选择的面值
+			cancelChooseMoney(){
+				this.reqOrderParm.strategyId = null;
+				this.reqOrderParm.rechargeAmount = null;
+				this.currentTab = '';
+			},
+			// 选择充值金额
+			selectActiveRecharge(item,index){
+				// 设置充值的金额和策略ID
+				this.reqOrderParm.strategyId = item.id;
+				this.reqOrderParm.rechargeAmount = item.reachPrice;
+				this.currentTab = index;
+			},
+			toggleSelection() {
+				this.isSelected = !this.isSelected;
+			},
+			// 交易记录
+			gotoTransactionRecords(){
+				uni.navigateTo({
+					url: '/myPages/transactionRecord/index',
+					params: {}
+				})
+			},
+			// 充值记录
+			gotoTransactionOrderRecords(){
+				uni.navigateTo({
+					url: '/myPages/rechargeRecord/index',
+				})
+			},
+			// 查看储值协议
+			gotoTermOfService(type){
+				uni.$u.route({
+					url: '/pages/me/term-of-service-detatil',
+					params: {
+						data: type
+					}
+				})
+			},
+
+		},
+	};
 </script>
 
 <style scoped lang="scss">
-@import '/common/css/common.css';
-@import './index.rpx.scss';
+	.page{
+		background: red;
+	}
+
+	/*scroll-view外层*/
+	.skill-sequence-panel-content-wrapper {
+		position: relative;
+		white-space: nowrap;
+		// padding: 10rpx 0 10rpx 10rpx;
+		margin-top: 10px;
+	}
+
+	/*左右渐变遮罩*/
+	.hide-content-box {
+		position: absolute;
+		top: 0;
+		height: 100%;
+		width: 10px;
+		z-index: 2;
+	}
+
+	.hide-content-box-left {
+		left: 0;
+		background-image: linear-gradient(to left, rgba(255, 255, 255, 0), #f3f3f3 60%);
+	}
+
+	.hide-content-box-right {
+		right: 0;
+		background-image: linear-gradient(to right, rgba(255, 255, 255, 0), #f3f3f3 60%);
+	}
+
+	.kite-classify-scroll {
+		width: 100%;
+		// height: 380rpx;
+		overflow: hidden;
+		white-space: nowrap;
+	}
+
+	.kite-classify-cell {
+		display: inline-block;
+		width: 266rpx;
+		// height: 370rpx;
+		margin-right: 20rpx;
+		background-color: #ffffff;
+		border-radius: 10rpx;
+		overflow: hidden;
+		box-shadow: 2px 2px 3px rgba(26, 26, 26, 0.2);
+		position: relative;
+		.h-bg-img{
+			image{
+				height: 80px;
+			}
+		}
+		.content{
+			position: absolute;
+			bottom: 20%;
+			left:12px;
+			.money{
+				color: #333333;
+				.v{
+					font-size: 18px;
+					font-weight: bold;
+				}
+			}
+			.desc{
+				margin-top: 6px;
+				font-size: 12px;
+				color: #333333;
+				line-height: 22px;
+			}
+		}
+		.active{
+			display: block;
+		}
+	}
+
+
+	// 余额
+	.recharge-me{
+
+
+		position: relative;
+		.bg-img{
+			height: 160px;
+			background: #FFE05C;
+		}
+		.wallet-content{
+			position: absolute;
+			top: 0;
+			left: 0;
+			right: 0;
+			padding: 12px;
+			.h-balance-wrap{
+				background: #FFFCF1 ;
+				border-radius: 6px;
+				text-align: center;
+				padding-left: 20px;
+				padding-right: 20px;
+				.h-balance{
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					height: 118px;
+					.recharge-balance{
+						font-family: PingFangSC-Regular, PingFang SC;
+						.h-nav-img {
+							image{
+								height: 18px;
+								width: 18px;
+							}
+						}
+						.name{
+							font-size: 14px;
+							font-weight: 400;
+							color: #666666;
+							line-height: 22px;
+						}
+						.balance-value{
+							font-size: 18px;
+							font-weight: bold;
+							color: #333333;
+							line-height: 26px;
+						}
+					}
+				}
+				.btn{
+					display: flex;
+					font-size: 14px;
+					justify-content: space-between;
+					height: 60px;
+					align-items: center;
+					color: #999999;
+					.item-btn{
+						width: 50%;
+					}
+				}
+			}
+
+		}
+
+	}
+
+	// 充值金额选择
+	.recharge-content-wrap{
+		width: 100%;
+		display: flex;
+		flex-wrap: wrap;
+		justify-content: space-between;
+		margin-top: 12px;
+		position: relative;
+		.recharge-content{
+			width: calc(50% - 6px);
+			margin-bottom: 12px;
+			position: relative;
+			.h-bg-img{
+				image{
+					height: 80px;
+				}
+			}
+			.content{
+				position: absolute;
+				bottom: 25%;
+				left:12px;
+				.money{
+					color: #333333;
+					.v{
+						font-size: 18px;
+						font-weight: bold;
+					}
+				}
+				.desc{
+					font-size: 12px;
+					color: #333333;
+					line-height: 22px;
+				}
+			}
+			.choose-status{
+				display: none;
+				position: absolute;
+				left: 0px;
+				top: 0px;
+				.active{
+					width: 0;
+					height: 0;
+					border-left: 0px solid transparent;
+					border-right: 30px solid transparent;
+					border-top: 30px solid green;
+				}
+				image{
+					height: 40px;
+					width: 40px;
+				}
+			}
+			.active{
+				display: block;
+			}
+		}
+
+	}
+
+	.h-custom{
+		background: #FFFCF1;
+		display: flex;
+		padding: 12px;
+		border-radius: 10px;
+		margin-top: 8px;
+		.h-money{
+			margin-left: 6px;
+		}
+	}
+
+	// 协议
+	.recharge-agreement{
+		margin-top: 12px;
+		margin-bottom: 12px;
+		margin-left: 12px;
+		text-align: center;
+		.radio-group{
+			.v-text{
+				// color:green;
+			}
+			.h-btn{
+				color:green;
+			}
+		}
+
+	}
+
+	// 提交按钮
+	.h-submit-btn{
+		margin-top: 12px;
+		width: 343px;
+		height: 42px;
+		background: #FFE05C;
+		border-radius: 27px;
+		text-align: center;
+		line-height: 42px;
+	}
+
+	// 使用说明
+	.h-desc{
+		font-family: PingFangSC-Regular, PingFang SC;
+		.title{
+			height: 24px;
+			font-size: 14px;
+			font-family: PingFangSC-Regular, PingFang SC;
+			font-weight: 400;
+			color: #333333;
+			line-height: 24px;
+		}
+		.h-content{
+			height: 40px;
+			font-size: 12px;
+			font-weight: 400;
+			color: #999999;
+			line-height: 20px;
+		}
+	}
 </style>

+ 3 - 0
myPages/rechargeRecord/index.rpx.css

@@ -0,0 +1,3 @@
+.page{
+    background: #F7F7F7;
+}

+ 77 - 0
myPages/rechargeRecord/index.vue

@@ -0,0 +1,77 @@
+<template>
+    <view class="page">
+        <u-sticky>
+            <View class=" tabs">
+                <u-tabs :list="tabList" :scrollable="false"
+                        lineWidth="30"
+                        lineColor="#FFE05C"
+                        :activeStyle="{
+            					color: '#333333',
+            					fontWeight: 'bold',
+            					transform: 'scale(1.05)'
+       							 }"
+                        :current="tabIndex" @click="clickTab"></u-tabs>
+            </View>
+        </u-sticky>
+
+        <!-- 订单列表 -->
+        <view :style="{'height':windowHeight}" >
+            <swiper :style="{'height':windowHeight}" :current="tabIndex" @change="swiperChange">
+                <swiper-item class="swiperItem" v-for="(item,index) in tabList" :key="index" >
+                    <view>
+                        <mescroll-item ref="MescrollItem" :i="index"  :index="tabIndex" :tabs="tabList" :height="windowHeight">
+                        </mescroll-item>
+                    </view>
+                </swiper-item>
+            </swiper>
+        </view>
+
+    </view>
+</template>
+<script>
+    import MescrollItem from "./module/mescrollUni-item.vue";
+
+    export default {
+        components: {
+            MescrollItem
+        },
+        data() {
+            return {
+                windowHeight:'',
+                tabIndex:0,
+                tabList: [{
+                    name: '全部',
+                }, {
+                    name: '可退款'
+                }, {
+                    name: '不可退款',
+                }],
+
+
+            };
+        },
+        onLoad() {
+            let sysInfo = uni.getSystemInfoSync()
+            this.windowHeight =sysInfo.windowHeight-44+'px'//除标题栏栏外的屏幕可用高度
+
+        },
+        methods: {
+
+            clickTab(e){
+                this.tabIndex = e.index
+            },
+            swiperChange(e){
+                this.tabIndex = e.detail.current
+                // if (this.$refs.MescrollItem[e.detail.current].orderList.length>0){
+                // 	this.$refs.MescrollItem[e.detail.current].downCallback()
+                // }
+            },
+
+
+        },
+    };
+</script>
+<style lang="scss" scoped>
+    @import '/common/css/common.css';
+    @import './index.rpx.css';
+</style>

+ 84 - 0
myPages/rechargeRecord/module/index.rpx.css

@@ -0,0 +1,84 @@
+.item{
+    background: #FFFFFF;
+    margin-top: 20rpx;
+    padding: 20rpx 20rpx;
+}
+.h-img{
+    width: 30rpx;
+    height: 30rpx;
+    margin-top: 10rpx;
+}
+.h-text{
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 44rpx;
+    margin-left: 10rpx;
+}
+.a{
+    width: 210rpx;
+    height: 120rpx;
+    background: #FFFCEE;
+    border-radius: 12rpx;
+    margin-top: 20rpx;
+
+
+}
+
+.b{
+    font-size: 32rpx;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+    line-height: 70rpx;
+    text-align: center;
+}
+
+.c{
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 50rpx;
+    text-align: center;
+}
+.aColor{
+    color: #333333;
+}
+.bColor{
+    color: #ED569F;
+}
+.cColor{
+    color: #93D21A;
+}
+
+.de{
+    margin-top: 20rpx;
+}
+
+.d{
+    font-size: 28rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #666666;
+    line-height: 44rpx;
+}
+.e{
+    font-size: 36rpx;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: bold;
+    color: #333333;
+    line-height: 44rpx;
+}
+.op-btn{
+    margin-top: 20rpx;
+    width: 200rpx;
+    height: 64rpx;
+    background: #FFE05C;
+    border-radius: 32rpx;
+    text-align: center;
+    line-height: 64rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #333333;
+}

+ 234 - 0
myPages/rechargeRecord/module/mescrollUni-item.vue

@@ -0,0 +1,234 @@
+<template>
+	<!--
+    swiper中的transfrom会使fixed失效,此时用height固定高度;
+    swiper中无法触发mescroll-mixins.js的onPageScroll和onReachBottom方法,只能用mescroll-uni,不能用mescroll-body
+    -->
+	<!-- ref动态生成: 字节跳动小程序编辑器不支持一个页面存在相同的ref (如不考虑字节跳动小程序可固定值为 ref="mescrollRef") -->
+	<!-- top的高度等于悬浮菜单tabs的高度 -->
+	<mescroll-uni :ref="'mescrollRef' + i" @init="mescrollInit" :height="height" :down="downOption" @down="downCallback"
+		:up="upOption" @up="upCallback" @emptyclick="emptyClick">
+		<view>
+			<view class="item" v-for="(item,index) in list" :key="index">
+				<view class="h-value flex-row">
+					<image class="h-img" src="/static/order/ud7.png" mode=""></image>
+					<text class="h-text">订单编号:{{item.orderNo}}</text>
+				</view>
+				<view class="h-value flex-row">
+					<u-icon name="clock" color="#666666" size="16"></u-icon>
+					<text class="h-text">储值时间:{{item.paymentTime}}</text>
+				</view>
+				<view class="flex-row justify-around">
+					<view>
+						<view class="a">
+							<view class="b aColor">
+								<text>¥{{item.realRechargeAmount || 0}}</text>
+							</view>
+							<view class="c">
+								<text>储值金额</text>
+							</view>
+						</view>
+						<view class="a">
+							<view class="b aColor">
+								<text>¥{{item.rechargeBalance || 0}}</text>
+							</view>
+							<view class="c">
+								<text>储值余额</text>
+							</view>
+						</view>
+					</view>
+					<view>
+						<view class="a">
+							<view class="b bColor">
+								<text>¥{{item.rewardAmount || 0}}</text>
+							</view>
+							<view class="c">
+								<text>赠送金额</text>
+							</view>
+						</view>
+						<view class="a">
+							<view class="b bColor">
+								<text>¥{{item.rewardBalance || 0}}</text>
+							</view>
+							<view class="c">
+								<text>赠送余额</text>
+							</view>
+						</view>
+					</view>
+					<view>
+						<view class="a">
+							<view class="b cColor">
+								<text>{{item.couponNum || 0}}</text>
+							</view>
+							<view class="c">
+								<text>赠送优惠券数</text>
+							</view>
+						</view>
+						<view class="a">
+							<view class="b cColor">
+								<text>{{item.surplusCouponNum || 0}}</text>
+							</view>
+							<view class="c">
+								<text>剩余优惠券数</text>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<view class="flex-row justify-between de">
+					<view class="flex-col">
+						<view class="flex-row">
+							<text class="d">当前可用余额:</text>
+							<text class="e">¥{{item.availableBalance}}</text>
+						</view>
+						<view class="flex-row ">
+							<text class="d">可退余额:</text>
+							<text class="e">¥{{item.refundableBalance}}</text>
+						</view>
+					</view>
+					<view>
+						<view  @click="gotoSubmitTransaction(item)" v-if="item.rechargeBalance > 0 && !item.refundStatus" class="op-btn">
+							<text>申请退款</text>
+						</view>
+						<view v-else-if="item.refundStatus == 1"  class="op-btn">
+							<text>审核中</text>
+						</view>
+						<view v-else-if="item.refundStatus == 2"  class="op-btn">
+							<text>已同意</text>
+						</view>
+						<view v-else-if="item.refundStatus == 3"  class="op-btn">
+							<text>已驳回</text>
+						</view>
+						<view v-else-if="item.refundStatus == 4"  class="op-btn">
+							<text>退款成功
+							</text>
+					</view>
+				</view>
+
+			</view>
+		</view>
+
+	</mescroll-uni>
+</template>
+
+<script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import MescrollMoreItemMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js"
+	export default {
+		mixins: [MescrollMixin, MescrollMoreItemMixin], // 注意此处还需使用MescrollMoreItemMixin (必须写在MescrollMixin后面)
+		components: {
+		},
+
+		data() {
+			return {
+				downOption: {
+					auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
+				},
+				upOption: {
+					auto: false, // 不自动加载
+					// page: {
+					// 	num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					// 	size: 10 // 每页数据的数量
+					// },
+					noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
+					empty: {
+						icon: '/static/imageIcon/empty.png',
+						tip: '暂无内容', // 提示
+						// btnText: '去看看'
+					},
+					textNoMore: '没有更多了'
+				},
+				list:[],
+			}
+		},
+		props: {
+			i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+			index: { // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+				type: Number,
+				default () {
+					return 0
+				}
+			},
+			dataTime:{
+				type:String,
+				default(){
+					return ''
+				}
+			},
+
+			tabs: { // 为了请求数据,演示用,可根据自己的项目判断是否要传
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			height: [Number, String], // mescroll的高度
+
+		},
+		watch:{
+
+		},
+
+		created(){
+		},
+
+		methods: {
+
+
+			/*下拉刷新的回调 */
+			downCallback() {
+				// 这里加载你想下拉刷新的数据, 比如刷新轮播数据
+				// loadSwiper();
+				// 下拉刷新的回调,默认重置上拉加载列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
+				this.mescroll.resetUpScroll()
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+
+				//联网加载数据
+				let httpData = {
+					pageNum:page.num,
+					pageSize:10,
+					type:this.index
+				}
+
+				this.$api.orderRechargeList(httpData).then((res) => {
+					//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
+					this.mescroll.endSuccess(res.data.rows.length,res.data.rows.length === 10);
+					//设置列表数据
+					if (page.num === 1) this.list = []; //如果是第一页需手动制空列表
+					this.list = this.list.concat(res.data.rows); //追加新数据
+					console.log(this.list)
+				}).catch((err) => {
+					//联网失败, 结束加载
+					this.mescroll.endErr();
+				})
+
+
+			},
+
+			//点击空布局按钮的回调
+			emptyClick() {
+				uni.showToast({
+					title: '点击了按钮,具体逻辑自行实现'
+				})
+			},
+			// 搜索
+			doSearch() {
+				this.list = []; // 先清空列表,显示加载进度
+				this.mescroll.resetUpScroll();
+			},
+
+			gotoSubmitTransaction(item){
+				uni.navigateTo({
+					url:'/myPages/transactionPassword/index?data='+JSON.stringify(item)
+				})
+			},
+
+		}
+	}
+</script>
+<style>
+	@import '/common/css/common.css';
+	@import './index.rpx.css';
+
+</style>

+ 113 - 0
myPages/transactionPassword/index.vue

@@ -0,0 +1,113 @@
+<template>
+    <view class="">
+        <view class="h-content">
+            <u--form
+                    labelPosition="left"
+                    :model="reqParm"
+                    ref="form1"
+            >
+                <u-form-item
+                        labelWidth="auto"
+                        labelAlign="right"
+                        prop="tradPassword"
+                        borderBottom
+                >
+                    <u--input
+                            v-model="reqParm.tradPassword"
+                            disabledColor="#ffffff"
+                            placeholder="请输入交易密码"
+                            border="bottom"
+                            type="password"
+                            maxlength="6"
+                    ></u--input>
+                </u-form-item>
+                <u--textarea v-model="reqParm.refundReason" placeholder="请在此处输入退款原因" ></u--textarea>
+            </u--form>
+            <view @click="submitData" class="op-btn">
+                <text>提交</text>
+            </view>
+        </view>
+
+    </view>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                order:{},
+                reqParm: {
+                    auth: true,
+                    orderNo: null,
+                    tradPassword: '',
+                    refundReason: ''
+                },
+                rules: {
+                    tradPassword: {
+                        required: true,
+                        min: 6,
+                        max: 6,
+                        message: '请输入6位密码',
+                        trigger: ['blur', 'change'],
+                    }
+                },
+            };
+        },
+        onLoad(option) {
+            // 判断Openid是否为空
+            this.order = JSON.parse(option.data)
+            this.reqParm.orderNo = this.order.orderNo;
+        },
+        onReady() {
+            this.$refs.form1.setRules(this.rules)
+        },
+        methods: {
+            submitData() {
+                let that = this;
+                // 如果有错误,会在catch中返回报错信息数组,校验通过则在then中返回true
+                this.$refs.form1.validate().then(res => {
+                    that.orderRechargeRefund();
+                }).catch(errors => {
+                    uni.$u.toast('校验失败,请认真填写')
+                })
+
+            },
+            // 退款
+            orderRechargeRefund(){
+                this.$api.orderRechargeRefund(this.reqParm).then((res)=>{
+                    uni.showToast({
+                        title: '已提交申请,请耐心等待'
+                    })
+                    uni.navigateTo({
+                        url: '/myPages/rechargeRecord/index'
+                    });
+                }).catch((err) =>{
+                    uni.showToast({
+                        title: err.msg
+                    })
+                });
+            },
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+    .h-content{
+        // margin-top: 100px;
+        background: #fff;
+        padding-left: 12px;
+        padding-right: 12px;
+        padding-bottom: 100px;
+        .op-btn{
+            margin: 0 auto;
+            margin-top: 20px;
+            text-align: center;
+            line-height: 42px;
+            width: 343px;
+            height: 42px;
+            background: #FFE05C;
+            border-radius: 27px;
+        }
+    }
+
+</style>

+ 30 - 0
myPages/transactionRecord/index.rpx.css

@@ -0,0 +1,30 @@
+.page{
+    padding: 0 32rpx;
+}
+.xialaImage{
+    width: 26rpx;
+    height: 26rpx;
+    margin-top: 25rpx;
+    margin-left: 5rpx;
+}
+.left{
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #333333;
+    line-height: 72rpx;
+}
+.right{
+    width: 500rpx;
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #999999;
+    line-height: 72rpx;
+
+}
+.statistics{
+    margin-top: 28rpx;
+    height: 72rpx;
+    background: #F7F7F7;
+}

+ 162 - 0
myPages/transactionRecord/index.vue

@@ -0,0 +1,162 @@
+<template>
+    <view class="page">
+        <u-sticky  :disabled="isSticky">
+            <View class=" tabs">
+                <u-tabs :list="tabList" :scrollable="false"
+                        lineWidth="30"
+                        lineColor="#FFE05C"
+                        :activeStyle="{
+            					color: '#333333',
+            					fontWeight: 'bold',
+            					transform: 'scale(1.05)'
+       							 }"
+                        :current="tabIndex" @click="clickTab"></u-tabs>
+            </View>
+
+            <view class="statistics flex-row justify-between ">
+                <view class="left flex-row" @click="showDate">
+                    <text>{{dataTime || '全部'}}</text>
+                    <image class="xialaImage" src="/static/transaction/u5.png"></image>
+                </view>
+                <view class="right flex-row justify-around">
+                    <text>储值¥{{tranFlowstatistic.rechargeAmount || 0}}</text>
+                    <text>消费-¥{{tranFlowstatistic.consumeAmount || 0 }}</text>
+                    <text>退款-¥{{tranFlowstatistic.refundAmount || 0 }}</text>
+                </view>
+            </view>
+
+        </u-sticky>
+
+        <!-- 订单列表 -->
+        <view :style="{'height':windowHeight}" >
+            <swiper :style="{'height':windowHeight}" :current="tabIndex" @change="swiperChange">
+                <swiper-item class="swiperItem" v-for="(item,index) in tabList" :key="index" >
+                    <view>
+                        <mescroll-item ref="MescrollItem" :i="index"  :index="tabIndex" :dataTime="dataTime" :tabs="tabList" :height="windowHeight">
+                        </mescroll-item>
+                    </view>
+                </swiper-item>
+            </swiper>
+        </view>
+
+
+        <u-datetime-picker
+                :show="serviceTimeShow"
+                v-model="value1"
+                mode="year-month"
+                :closeOnClickOverlay="true"
+                @confirm="sureChooseDate()"
+        ></u-datetime-picker>
+
+
+    </view>
+</template>
+<script>
+    import MescrollItem from "./module/mescrollUni-item.vue";
+
+    export default {
+        components: {
+            MescrollItem
+        },
+        data() {
+            return {
+                windowHeight:'',
+                tabIndex:0,
+                tabList: [{
+                    name: '全部',
+                }, {
+                    name: '消费'
+                }, {
+                    name: '储值',
+                }, {
+                    name: '退款'
+                }],
+
+                serviceTimeShow: false,
+                show: false,
+                searchTime: '2023-8-9',
+                value1: '',
+                dataTime:'',
+                tranFlowstatistic: {}
+            };
+        },
+        onLoad() {
+            let sysInfo = uni.getSystemInfoSync()
+            this.windowHeight =sysInfo.windowHeight-94+'px'//除标题栏栏外的屏幕可用高度
+
+            this.value1 = Date.now();
+            // 查询交流流水统计
+            this.transactionFlowstatistic();
+        },
+        methods: {
+
+            clickTab(e){
+                this.tabIndex = e.index
+            },
+            swiperChange(e){
+                this.tabIndex = e.detail.current
+                // if (this.$refs.MescrollItem[e.detail.current].orderList.length>0){
+                // 	this.$refs.MescrollItem[e.detail.current].downCallback()
+                // }
+            },
+
+
+            // 确定选择的服务日期
+            sureChooseDate(e){
+                this.serviceTimeShow = false;
+                this.dataTime = uni.$u.timeFormat(e.value, 'yyyy-mm');
+                this.$refs.MescrollItem[this.tabIndex].downCallback()
+
+            },
+            // 交易列表
+
+            // 查询交易流水统计
+            transactionFlowstatistic(){
+                let that = this;
+                this.$api.transactionFlowstatistic({data:this.reqParm}).then((res)=>{
+                    that.tranFlowstatistic = res.data.data;
+                }).catch(() =>{
+                    uni.showToast({
+                        title: "操作失败"
+                    })
+                });
+            },
+
+            // 详情
+            orderDetail(item){
+                uni.$u.route({
+                    url: '/pages/transaction/transaction-detail',
+                    params: {
+                        data: JSON.stringify(item)
+                    }
+                })
+            },
+            showDate(){
+                this.serviceTimeShow = true;
+            },
+
+            maxDate(selectedMonth) {
+                if (!this.$isDataEmpty(selectedMonth)) {
+                    // 将选定的月份转换为Date对象
+                    let selected = new Date(selectedMonth);
+                    // 获取下个月的第一天
+                    let nextMonth = new Date(selected.getFullYear(), selected.getMonth() + 1, 1);
+                    // 获取本月的最后一天
+                    let lastDay = new Date(nextMonth - 1);
+                    // 返回最大日期
+                    return lastDay.toISOString().slice(0, 10);
+                } else {
+                    // 如果没有选定月份,则返回当前月份的最大日期
+                    let today = new Date();
+                    let nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
+                    let lastDay = new Date(nextMonth - 1);
+                    return lastDay.toISOString().slice(0, 10);
+                }
+            }
+        },
+    };
+</script>
+<style lang="scss" scoped>
+    @import '/common/css/common.css';
+    @import './index.rpx.css';
+</style>

+ 54 - 0
myPages/transactionRecord/module/index.rpx.css

@@ -0,0 +1,54 @@
+.item{
+    height: 156rpx;
+    border-bottom: 1px solid #EEEEEE;
+}
+.leftText{
+    width: 84rpx;
+    height: 84rpx;
+    text-align: center;
+    color: #FFFFFF;
+    line-height: 84rpx;
+    border-radius: 42rpx;
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    margin-top: 32rpx ;
+}
+.rightText{
+    margin-top: 32rpx;
+    width: 590rpx;
+    padding: 0 20rpx;
+}
+.text1{
+    height: 44rpx;
+    font-size: 28rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #333333;
+    line-height: 44rpx;
+}
+
+.text2{
+    height: 44rpx;
+    font-size: 28rpx;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: bold;
+    color: #333333;
+    line-height: 44rpx;
+}
+.text3{
+    height: 40rpx;
+    font-size: 24rpx;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #999999;
+    line-height: 40rpx;
+}
+.backColor1{
+    background: #ED569F;
+}
+.backColor2{
+    background: #93D21A;
+}
+.backColor3{
+    background: #FFAF36;
+}

+ 164 - 0
myPages/transactionRecord/module/mescrollUni-item.vue

@@ -0,0 +1,164 @@
+<template>
+	<!--
+    swiper中的transfrom会使fixed失效,此时用height固定高度;
+    swiper中无法触发mescroll-mixins.js的onPageScroll和onReachBottom方法,只能用mescroll-uni,不能用mescroll-body
+    -->
+	<!-- ref动态生成: 字节跳动小程序编辑器不支持一个页面存在相同的ref (如不考虑字节跳动小程序可固定值为 ref="mescrollRef") -->
+	<!-- top的高度等于悬浮菜单tabs的高度 -->
+	<mescroll-uni :ref="'mescrollRef' + i" @init="mescrollInit" :height="height" :down="downOption" @down="downCallback"
+		:up="upOption" @up="upCallback" @emptyclick="emptyClick">
+		<view>
+
+			<view class="item" v-for="(item,index) in list" :key="index">
+				<view class="flex-row justify-between" @click="goOrderDetail(item)">
+					<view class="leftText" :class="{'backColor1':item.tradeNoType == '1','backColor2':item.tradeNoType == '2','backColor3':item.tradeNoType == '3'}">
+						<text v-if="item.tradeNoType == '1'">消费</text>
+						<text v-if="item.tradeNoType == '2'">充值</text>
+						<text v-if="item.tradeNoType == '3'">退款</text>
+					</view>
+					<view class="rightText flex-col">
+						<view class=" flex-row justify-between">
+							<text class="text1">{{item.remark}}</text>
+							<text class="text2" v-if="item.tradeNoType == '2'">¥{{item.amount}}</text>
+							<text class="text2" v-else>-¥{{item.amount}}</text>
+						</view>
+						<view class=" flex-row justify-between">
+							<text class="text3">{{item.createTime}}</text>
+							<text class="text3">账户余额:¥{{item.beforeBalance}}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+
+		</view>
+
+	</mescroll-uni>
+</template>
+
+<script>
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import MescrollMoreItemMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js"
+	export default {
+		mixins: [MescrollMixin, MescrollMoreItemMixin], // 注意此处还需使用MescrollMoreItemMixin (必须写在MescrollMixin后面)
+		components: {
+		},
+
+		data() {
+			return {
+				downOption: {
+					auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
+				},
+				upOption: {
+					auto: false, // 不自动加载
+					// page: {
+					// 	num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					// 	size: 10 // 每页数据的数量
+					// },
+					noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
+					empty: {
+						icon: '/static/imageIcon/empty.png',
+						tip: '暂无内容', // 提示
+						// btnText: '去看看'
+					},
+					textNoMore: '没有更多了'
+				},
+				list:[],
+			}
+		},
+		props: {
+			i: Number, // 每个tab页的专属下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+			index: { // 当前tab的下标 (除了支付宝小程序必须在这里定义, 其他平台都可不用写, 因为已在MescrollMoreItemMixin定义)
+				type: Number,
+				default () {
+					return 0
+				}
+			},
+			dataTime:{
+				type:String,
+				default(){
+					return ''
+				}
+			},
+
+			tabs: { // 为了请求数据,演示用,可根据自己的项目判断是否要传
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			height: [Number, String], // mescroll的高度
+
+		},
+		watch:{
+
+		},
+
+		created(){
+		},
+
+		methods: {
+
+
+			/*下拉刷新的回调 */
+			downCallback() {
+				// 这里加载你想下拉刷新的数据, 比如刷新轮播数据
+				// loadSwiper();
+				// 下拉刷新的回调,默认重置上拉加载列表为第一页 (自动执行 page.num=1, 再触发upCallback方法 )
+				this.mescroll.resetUpScroll()
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+
+				//联网加载数据
+				let httpData = {
+					pageNum:page.num,
+					pageSize:10,
+					dataTime:this.dataTime,
+					tradeNoType:this.index
+				}
+				if (this.index ===0){
+					httpData.tradeNoType = ''
+				}
+				this.$api.transactionRecordsList(httpData).then((res) => {
+					//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
+					this.mescroll.endSuccess(res.data.rows.length,res.data.rows.length === 10);
+					//设置列表数据
+					if (page.num === 1) this.list = []; //如果是第一页需手动制空列表
+					this.list = this.list.concat(res.data.rows); //追加新数据
+					console.log(this.list)
+				}).catch((err) => {
+					//联网失败, 结束加载
+					this.mescroll.endErr();
+				})
+
+
+			},
+
+			//点击空布局按钮的回调
+			emptyClick() {
+				uni.showToast({
+					title: '点击了按钮,具体逻辑自行实现'
+				})
+			},
+			// 搜索
+			doSearch() {
+				this.list = []; // 先清空列表,显示加载进度
+				this.mescroll.resetUpScroll();
+			},
+
+
+
+
+			goOrderDetail(item){
+				uni.navigateTo({
+					url:'/myPages/transactionRecordDetail/index?item='+JSON.stringify(item)
+				})
+			},
+		}
+	}
+</script>
+<style>
+	@import '/common/css/common.css';
+	@import './index.rpx.css';
+
+</style>

+ 161 - 0
myPages/transactionRecordDetail/index.vue

@@ -0,0 +1,161 @@
+<template>
+    <view class="content-wrap">
+        <view class="title-info">
+            <view v-if="tranRecords.tradeNoType == '1'" class="name skyblue">
+                <text>退款记录</text>
+            </view>
+            <view v-if="tranRecords.tradeNoType == '2'" class="name orange">
+                <text>支付</text>
+            </view>
+            <view v-if="tranRecords.tradeNoType == '3'" class="name pink">
+                <text>消费记录</text>
+            </view>
+            <view class="text">
+                <text>{{tranRecords.remark}}</text>
+            </view>
+            <view class="money">
+                <text v-if="tranRecords.tradeNoType == '2'">+</text>
+                <text v-else>-</text>{{tranRecords.amount}}
+            </view>
+        </view>
+        <view class="custom-line"></view>
+
+        <view class="transaction-detail">
+            <view class="td-v">
+                <view class="td-name">
+                    <text>当前状态</text>
+                </view>
+                <view class="td-text">
+                    <text>已完成</text>
+                </view>
+            </view>
+            <view class="td-v">
+                <view class="td-name">
+                    <text>交易时间</text>
+                </view>
+                <view class="td-text">
+                    <text>{{tranRecords.createTime}}</text>
+                </view>
+            </view>
+            <view class="td-v">
+                <view class="td-name">
+                    <text>支付方式</text>
+                </view>
+                <view class="td-text">
+                    <text v-if="tranRecords.paymentModeDesc">{{tranRecords.paymentModeDesc}}</text>
+                    <text v-else>微信支付</text>
+                </view>
+            </view>
+            <view class="td-v">
+                <view class="td-name">
+                    <text>交易单号</text>
+                </view>
+                <view class="td-text">
+                    <text>{{tranRecords.transactionNo}}</text>
+                </view>
+            </view>
+            <view class="td-v">
+                <view class="td-name">
+                    <text>储值单号</text>
+                </view>
+                <view class="td-text">
+                    <text>{{tranRecords.tradeNo}}</text>
+                </view>
+            </view>
+            <view class="td-v">
+                <view class="td-name">
+                    <text>账户余额</text>
+                </view>
+                <view class="td-text">
+                    ¥<text v-if="tranRecords.afterBalance">{{tranRecords.afterBalance}}</text>
+                    <text v-else>0</text>
+                </view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                tranRecords: {}
+            }
+        },
+        onLoad(option) {
+            this.tranRecords = JSON.parse(option.item);
+        },
+        methods: {
+        }
+    }
+</script>
+
+<style scoped lang="scss">
+    page,body{
+    }
+    .content-wrap{
+        background: #fff;
+        .title-info{
+            text-align: center;
+            padding-top: 30px ;
+            font-family: PingFangSC-Regular, PingFang SC;
+            .name{
+                margin: 0 auto;
+                width: 70px;
+                height: 70px;
+                color: #fff;
+                border-radius: 35px;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                // background: hotpink;
+                font-size: 16px;
+            }
+            .orange{
+                background: #93D21A;
+            }
+            .skyblue{
+                background: #ED569F;
+            }
+            .pink{
+                background: #FFAF36;
+            }
+            .text{
+                font-size: 14px;
+                font-weight: 400;
+                color: #666666;
+                line-height: 22px;
+            }
+            .money{
+                line-height: 26px;
+                padding-bottom: 8px;
+                font-size: 18px;
+                font-weight: 600;
+                color: #333333;
+            }
+
+        }
+        .transaction-detail{
+            margin:16px;
+            padding-bottom: 16px;
+            font-size: 14px;
+            line-height: 26px;
+            font-weight: 500;
+            .td-v{
+                display: flex;
+                justify-content: space-between;
+                .td-name{
+                    color: #999999 ;
+                    padding-right: 14px;
+                    font-weight: 500;
+                }
+                .td-value{
+                    color: #333333;
+                }
+            }
+        }
+    }
+    .td-text{
+        font-size: 26rpx;
+    }
+</style>

+ 29 - 1
pages.json

@@ -154,6 +154,34 @@
 		{
 			"root": "myPages",
 			"pages": [
+				{
+					"path": "transactionPassword/index",
+					"style": {
+						"navigationBarTitleText": "输入密码",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "rechargeRecord/index",
+					"style": {
+						"navigationBarTitleText": "储值订单",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "transactionRecord/index",
+					"style": {
+						"navigationBarTitleText": "交易记录",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "transactionRecordDetail/index",
+					"style": {
+						"navigationBarTitleText": "交易详情",
+						"enablePullDownRefresh": false
+					}
+				},
 				{
 					"path": "recharge/index",
 					"style": {
@@ -214,4 +242,4 @@
 		"titleNView": false
 	},
 	"uniIdRouter": {}
-}
+}

+ 7 - 28
pages/index/index.vue

@@ -317,20 +317,14 @@
 			},
 			// 去我的优惠劵页面
 			gotoCoupon(){
-				uni.$u.route({
-					url: '/pages/coupon/coupon',
-					params: {
-						name: 'lisa'
-					}
+				uni.navigateTo({
+					url: '/myPages/coupon/index?name=lisa',
 				})
 			},
 			// 储值服务
 			gotoRechargeService(){
-				uni.$u.route({
-					url: '/pages/transaction/recharge-service',
-					params: {
-						name: 'lisa'
-					}
+				uni.navigateTo({
+					url: '/myPages/recharge/index?name=lisa',
 				})
 			},
 			// 获取banner图片
@@ -441,24 +435,7 @@
 				})
 
 			},
-			// 储值服务
-			gotoRechargeService(){
-				uni.$u.route({
-					url: '/pages/transaction/recharge-service',
-					params: {
-						name: 'lisa'
-					}
-				})
-			},
-			// 去优惠劵页面
-			gotoCoupon(){
-				uni.$u.route({
-					url: '/pages/coupon/coupon',
-					params: {
-						name: 'lisa'
-					}
-				})
-			},
+
 			// 去订单页面
 			gotoOrder(){
 				uni.$u.route({
@@ -508,8 +485,10 @@
 	/* 头部内容 */
 	.head-wrap{
 		height: 1080px;
+		background: #FFE05C;
 		.content-info{
 			position: relative;
+
 			.h-bg{
 				height: 340px;
 			}

BIN
static/transaction/u5.png


+ 0 - 0
unpackage/dist/dev/.automator/mp-toutiao/.automator.json


+ 0 - 0
unpackage/dist/dev/.automator/mp-weixin/.automator.json