Browse Source

123456789

hwq 3 years ago
parent
commit
7c9f6951f2

+ 181 - 0
api/wallet.js

@@ -0,0 +1,181 @@
+import request from '@/utils/request'
+
+// 获取用户消费记录
+export function spreadCommission(data,state) {
+	return request({
+		url: '/api/spread/commission/'+state,
+		method: 'get',
+		data
+	});
+}
+
+// 获取账户余额
+export function userBalance(data) {
+	return request({
+		url: '/api/user/balance',
+		method: 'get',
+		data
+	});
+}
+
+// 提现
+export function extractCash(data) {
+	return request({
+		url: '/api/extract/cash',
+		method: 'post',
+		data
+	});
+}
+
+// 提现信息
+export function extractBank(data) {
+	return request({
+		url: '/api/extract/bank',
+		method: 'get',
+		data
+	});
+}
+// #ifdef H5
+// 公众号充值
+export function rechargeWechat(data) {
+	return request({
+		url: '/api/recharge/wechat',
+		method: 'post',
+		data
+	});
+}
+// #endif
+// #ifdef MP
+// 小程序充值
+export function rechargeRoutine(data) {
+	return request({
+		url: '/api/recharge/routine',
+		method: 'post',
+		data
+	});
+}
+// #endif
+// 获取提现支付宝账号
+export function aliInfo(data) {
+	return request({
+		url: '/api/ali/info',
+		method: 'get',
+		data
+	});
+}
+//获取默认银行卡账号
+export function bankInfo(data) {
+	return request({
+		url: '/api/bank/info',
+		method: 'get',
+		data
+	});
+}
+// 保存提现支付宝账号
+export function setAliInfo(data) {
+	return request({
+		url: '/api/ali/edit',
+		method: 'post',
+		data
+	});
+}
+// 保存默认银行卡账号
+export function setBankInfo(data) {
+	return request({
+		url: '/api/bank/edit',
+		method: 'post',
+		data
+	});
+}
+
+
+// 账户余额
+export function balance(data) {
+	return request({
+		url: '/api/user/balance',
+		method: 'get',
+		data
+	});
+}
+
+//保存收款信息
+export function auction(data) {
+	return request({
+		url: '/api/auction/pay',
+		method: 'post',
+		data
+	});
+}
+
+//获取收款信息
+export function pay_list(data) {
+	return request({
+		url: '/api/auction/pay_list',
+		method: 'get',
+		data
+	});
+}
+
+
+//充值金额
+export function moneyChong(data){
+	return request({
+		url:'/api/recharge/index',
+		method:'get',
+		data
+	})
+}
+
+//贡献值查询
+export function getContributionList(data) {
+	return request({
+		url: '/api/contribution_list/list',
+		method: 'get',
+		data
+	})
+}
+
+//消费券查询
+export function getConsumptionList(data) {
+	return request({
+		url: '/api/consumption_list/list',
+		method: 'get',
+		data
+	})
+}
+
+//动态积分
+export function getDynamicIntegralList(data) {
+	return request({
+		url: '/api/dynamic_integral_list/list',
+		method: 'get',
+		data
+	})
+}
+
+//	积分列表
+export function integrallist(data) {
+	return request({
+		url: '/api/integral/list',
+		method: 'get',
+		data
+	});
+}
+
+// 保存银行卡信息
+export function setBank(data) {
+	return request({
+		url: '/api/public/pay',
+		method: 'post',
+		data
+	});
+}
+
+// 获取银行卡信息
+export function getBank(data) {
+	return request({
+		url: '/api/public/pay_list',
+		method: 'get',
+		data
+	});
+}

File diff suppressed because it is too large
+ 18 - 0
components/empty.vue


+ 194 - 0
components/uni-load-more/uni-load-more.vue

@@ -0,0 +1,194 @@
+<template>
+	<view class="uni-load-more">
+		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">
+			<view class="load1 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+			<view class="load2 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item"  :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+			<view class="load3 load">
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+				<view class="item" :style="{background:color}"></view>
+			</view>
+		</view>
+		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-load-more",
+		props: {
+			status: {
+				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
+				type: String,
+				default: 'more'
+			},
+			showIcon: {
+				type: Boolean,
+				default: true
+			},
+			color: {
+				type: String,
+				default: "#777777"
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentdown: "上拉显示更多",
+						contentrefresh: "正在加载...",
+						contentnomore: "没有更多数据了"
+					};
+				}
+			}
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-load-more {
+		display: flex;
+		flex-direction: row;
+		height: 80upx;
+		align-items: center;
+		justify-content: center
+	}
+
+	.uni-load-more__text {
+		font-size: 28upx;
+		color: #999
+	}
+
+	.uni-load-more__img {
+		height: 24px;
+		width: 24px;
+		margin-right: 10px
+	}
+
+	.uni-load-more__img>.load {
+		position: absolute
+	}
+
+	.uni-load-more__img>.load .item {
+		width: 6px;
+		height: 2px;
+		border-top-left-radius: 1px;
+		border-bottom-left-radius: 1px;
+		background: #999;
+		position: absolute;
+		opacity: .2;
+		transform-origin: 50%;
+		animation: load 1.56s ease infinite
+	}
+
+	.uni-load-more__img>.load .item:nth-child(1) {
+		transform: rotate(90deg);
+		top: 2px;
+		left: 9px
+	}
+
+	.uni-load-more__img>.load .item:nth-child(2) {
+		transform: rotate(180deg);
+		top: 11px;
+		right: 0
+	}
+
+	.uni-load-more__img>.load .item:nth-child(3) {
+		transform: rotate(270deg);
+		bottom: 2px;
+		left: 9px
+	}
+
+	.uni-load-more__img>.load .item:nth-child(4) {
+		top: 11px;
+		left: 0
+	}
+
+	.load1,
+	.load2,
+	.load3 {
+		height: 24px;
+		width: 24px
+	}
+
+	.load2 {
+		transform: rotate(30deg)
+	}
+
+	.load3 {
+		transform: rotate(60deg)
+	}
+
+	.load1 .item:nth-child(1) {
+		animation-delay: 0s
+	}
+
+	.load2 .item:nth-child(1) {
+		animation-delay: .13s
+	}
+
+	.load3 .item:nth-child(1) {
+		animation-delay: .26s
+	}
+
+	.load1 .item:nth-child(2) {
+		animation-delay: .39s
+	}
+
+	.load2 .item:nth-child(2) {
+		animation-delay: .52s
+	}
+
+	.load3 .item:nth-child(2) {
+		animation-delay: .65s
+	}
+
+	.load1 .item:nth-child(3) {
+		animation-delay: .78s
+	}
+
+	.load2 .item:nth-child(3) {
+		animation-delay: .91s
+	}
+
+	.load3 .item:nth-child(3) {
+		animation-delay: 1.04s
+	}
+
+	.load1 .item:nth-child(4) {
+		animation-delay: 1.17s
+	}
+
+	.load2 .item:nth-child(4) {
+		animation-delay: 1.3s
+	}
+
+	.load3 .item:nth-child(4) {
+		animation-delay: 1.43s
+	}
+
+	@-webkit-keyframes load {
+		0% {
+			opacity: 1
+		}
+
+		100% {
+			opacity: .2
+		}
+	}
+</style>

+ 114 - 74
pages.json

@@ -43,12 +43,54 @@
 				"navigationBarTitleText": "个人中心"
 				//,
 				//"navigationBarBackgroundColor": "#EB3C3C"
-					// #ifdef MP || APP-PLUS
+				// #ifdef MP || APP-PLUS
 				//	,
 				//"navigationBarTextStyle": "#fff"
 				// #endif
 			}
 		},
+		{
+			"path": "pages/user/mythq",
+			"style": {
+				"navigationBarTitleText": "消费券",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/user/myggz",
+			"style": {
+				"navigationBarTitleText": "贡献值",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/user/favorites",
+			"style": {
+				"navigationBarTitleText": "我的收藏"
+			}
+		},
+		{
+			"path": "pages/user/mygwjf",
+			"style": {
+				"navigationBarTitleText": "静态积分",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		{
+			"path": "pages/user/myjf",
+			"style": {
+				"navigationBarTitleText": "动态积分",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
 		{
 			"path": "pages/goods_details/index",
 			"style": {
@@ -102,7 +144,7 @@
 				"navigationBarTitleText": "订单详情"
 				//,
 				//"navigationBarBackgroundColor": "#e93323"
-					// #ifdef MP || APP-PLUS
+				// #ifdef MP || APP-PLUS
 				//	,
 				//"navigationBarTextStyle": "#fff"
 				// #endif
@@ -114,7 +156,7 @@
 				"navigationBarTitleText": "订单详情"
 				//,
 				//"navigationBarBackgroundColor": "#e93323"
-					// #ifdef MP || APP-PLUS
+				// #ifdef MP || APP-PLUS
 				//	,
 				//"navigationBarTextStyle": "#fff"
 				// #endif
@@ -126,7 +168,7 @@
 				"navigationBarTitleText": "配送详情"
 				//,
 				//"navigationBarBackgroundColor": "#e93323"
-					// #ifdef MP || APP-PLUS
+				// #ifdef MP || APP-PLUS
 				//	,
 				//"navigationBarTextStyle": "#fff"
 				// #endif
@@ -147,25 +189,25 @@
 					"style": {
 						"navigationBarTitleText": "忘记密码"
 					}
-				},
-				{
-					"path": "user_setting/index",
-					"style": {
-						"navigationBarTitleText": "设置"
-					}
-				},
-				//协议,关于
-				{
-					"path": "user_about/index",
-					"style": {
-						"navigationBarTitleText": ""
-					}
-				},
-				{
-					"path": "agreement_rules/index",
-					"style": {
-						"navigationBarTitleText": "协议规则"
-					}
+				},
+				{
+					"path": "user_setting/index",
+					"style": {
+						"navigationBarTitleText": "设置"
+					}
+				},
+				//协议,关于
+				{
+					"path": "user_about/index",
+					"style": {
+						"navigationBarTitleText": ""
+					}
+				},
+				{
+					"path": "agreement_rules/index",
+					"style": {
+						"navigationBarTitleText": "协议规则"
+					}
 				},
 				{
 					"path": "user_info/index",
@@ -261,7 +303,7 @@
 						"navigationBarTitleText": "我的推广"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -279,7 +321,7 @@
 						"navigationBarTitleText": "佣金记录"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -291,7 +333,7 @@
 						"navigationBarTitleText": "提现"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -315,8 +357,8 @@
 						"navigationBarTitleText": "绑定手机"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
-							//,
+						// #ifdef MP || APP-PLUS
+						//,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
 					}
@@ -325,7 +367,7 @@
 					"path": "user_modify_phone/index",
 					"style": {
 						"navigationBarTitleText": "修改手机号"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -335,7 +377,7 @@
 					"path": "user_modify_pwd/index",
 					"style": {
 						"navigationBarTitleText": "修改密码"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						// 	,
 						// "navigationBarTextStyle": "#fff"
 						// #endif
@@ -374,7 +416,7 @@
 					"style": {
 						"navigationBarTitleText": "推广人列表"
 
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -386,7 +428,7 @@
 						"navigationBarTitleText": "推广人订单"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -398,7 +440,7 @@
 						"navigationBarTitleText": "推广人排行"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -409,8 +451,8 @@
 					"style": {
 						"navigationBarTitleText": "佣金排行"
 						// "navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
-							// ,
+						// #ifdef MP || APP-PLUS
+						// ,
 						// "navigationBarTextStyle": "#fff"
 						// #endif
 					}
@@ -583,8 +625,8 @@
 						"navigationBarTitleText": "订单详情"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
-							//,
+						// #ifdef MP || APP-PLUS
+						//,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
 					}
@@ -600,18 +642,17 @@
 		{
 			"root": "pages/store",
 			"name": "store",
-			"pages": [
-					{
-						"path": "index",
-						"style": {
-							"navigationStyle": "custom",
-							"navigationBarTitleText": "店铺diy首页"
-								// #ifdef MP
-								,
-							"navigationBarTextStyle": "#FFFFFF"
-							// #endif
-						}
-					},{
+			"pages": [{
+					"path": "index",
+					"style": {
+						"navigationStyle": "custom",
+						"navigationBarTitleText": "店铺diy首页"
+							// #ifdef MP
+							,
+						"navigationBarTextStyle": "#FFFFFF"
+						// #endif
+					}
+				}, {
 					"path": "home/index",
 					"style": {
 						"navigationStyle": "custom",
@@ -684,12 +725,12 @@
 					"style": {
 						"navigationBarTitleText": "立即退款"
 					}
-				},
-				{
-					"path": "business/index",
-					"style": {
-						"navigationBarTitleText": "商家管理"
-					}
+				},
+				{
+					"path": "business/index",
+					"style": {
+						"navigationBarTitleText": "商家管理"
+					}
 				},
 				{
 					"path": "orderDetail/index",
@@ -720,7 +761,7 @@
 					"style": {
 						"navigationBarTitleText": "订单核销"
 						// #ifdef MP || APP-PLUS
-							//,
+						//,
 						//"navigationBarTextStyle": "#fff",
 						//"navigationBarBackgroundColor": "#E93323"
 						// #endif
@@ -768,13 +809,13 @@
 					}
 				},
 				{
-					"path":"storeClassification/index",
+					"path": "storeClassification/index",
 					"style": {
 						"navigationBarTitleText": "店铺分类"
 					}
 				},
 				{
-					"path":"storeClassification/addStoreClass",
+					"path": "storeClassification/addStoreClass",
 					"style": {
 						"navigationBarTitleText": "添加店铺分类"
 					}
@@ -792,7 +833,7 @@
 					}
 				},
 				{
-					"path":"addGoods/addGoodDetils",
+					"path": "addGoods/addGoodDetils",
 					"style": {
 						"navigationBarTitleText": "商品详情"
 					}
@@ -840,8 +881,7 @@
 		{
 			"root": "pages/plantGrass",
 			"name": "plant_grass",
-			"pages": [
-				{
+			"pages": [{
 					"path": "plant_detail/index",
 					"style": {
 						"navigationBarTitleText": "内容详情"
@@ -901,7 +941,7 @@
 						"navigationBarTitleText": "我的粉丝"
 					}
 				}
-				
+
 			]
 		},
 		{
@@ -913,7 +953,7 @@
 						"navigationBarTitleText": "精品推荐"
 						//,
 						//"navigationBarBackgroundColor": "#e93323"
-							// #ifdef MP || APP-PLUS
+						// #ifdef MP || APP-PLUS
 						//	,
 						//"navigationBarTextStyle": "#fff"
 						// #endif
@@ -1070,7 +1110,7 @@
 							// #ifdef MP || APP-PLUS
 							,
 						"navigationBarTextStyle": "#fff"
-						
+
 						// #endif
 					}
 				},
@@ -1078,8 +1118,8 @@
 					"path": "assist_detail/index",
 					"style": {
 						"navigationBarTitleText": "发起助力"
-							// #ifdef MP || APP-PLUS
-							//,
+						// #ifdef MP || APP-PLUS
+						//,
 						//"navigationBarTextStyle": "#fff",
 						//"navigationBarBackgroundColor": "#e93323"
 						// #endif
@@ -1089,8 +1129,8 @@
 					"path": "assist_record/index",
 					"style": {
 						"navigationBarTitleText": "助力记录"
-							// #ifdef MP || APP-PLUS
-							//,
+						// #ifdef MP || APP-PLUS
+						//,
 						//"navigationBarTextStyle": "#fff",
 						//"navigationBarBackgroundColor": "#e93323"
 						// #endif
@@ -1113,12 +1153,12 @@
 					"style": {
 						"navigationBarTitleText": "本地服务"
 					}
-				},
-				{
-					"path": "collect_coupons/index",
-					"style": {
-						"navigationBarTitleText": "领劵中心"
-					}
+				},
+				{
+					"path": "collect_coupons/index",
+					"style": {
+						"navigationBarTitleText": "领劵中心"
+					}
 				}
 			]
 		}

+ 156 - 0
pages/user/favorites.vue

@@ -0,0 +1,156 @@
+<template>
+	<view class="container">
+		<!-- 空白页 -->
+		<empty v-if="favoriteList.length < 1"></empty>
+		<view class="favorites flex" v-for="ls in favoriteList" @click="toproduct(ls.pid)">
+			<view class="favorites_img"><image :src="ls.image"></image></view>
+			<view class="favorites_list">
+				<view class="favorites_name">{{ ls.store_name }}</view>
+				<view class="favorites_peice flex">
+					<view>
+						<text>¥{{ ls.price }}</text>
+					</view>
+					<view class="icon_del" @click.prevent.stop="del(ls.pid)" v-show="delshow">
+						<text class="iconfont icondelete"></text>
+						<text>取消</text>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { getcollectList, delcollect } from '@/api/user.js';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	components: {
+		uniLoadMore,
+		empty
+	},
+	data() {
+		return {
+			tabCurrentIndex: 0,
+			favoriteList: '',
+			delshow: true
+		};
+	},
+	onLoad() {
+		this.loadData();
+	},
+	methods: {
+		//获取收藏夹列表
+		loadData() {
+			let obj = this;
+			getcollectList({
+				page: '1',
+				limit: '10'
+			})
+				.then(function(e) {
+					obj.favoriteList = e.data;
+					console.log(obj.favoriteList);
+				})
+				.catch(function(e) {
+					console.log(e);
+				});
+		},
+		//跳转商品详情页
+		toproduct(item) {
+			let id = item;
+			uni.navigateTo({
+				url: `/pages/product/product?id=${id}`
+			});
+		},
+		//删除收藏夹商品
+		del(item) {
+			let obj = this;
+			uni.showModal({
+				title: '提示',
+				content: '是否取消收藏该商品',
+				success: e => {
+					if (e.confirm) {
+						delcollect({
+							id: item,
+							category: 'product'
+						})
+							.then(function(e) {
+								uni.showToast({
+									title: '已取消收藏',
+									duration: 1500
+								});
+								obj.loadData();
+							})
+							.catch(function(e) {
+								console.log(e);
+							});
+					}
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+}
+%flex-center {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	align-items: center;
+}
+%section {
+	display: flex;
+	justify-content: space-around;
+	align-content: center;
+	background: #fff;
+	border-radius: 10rpx;
+}
+.container {
+	height: 100%;
+	background-color: $page-color-base;
+	padding: 15rpx 0rpx;
+	font-size: 28rpx;
+}
+.favorites {
+	width: 90%;
+	background-color: #ffffff;
+	border-radius: 15rpx;
+	margin: 15rpx auto;
+	padding: 25rpx 25rpx;
+	margin-bottom: 25rpx;
+}
+.favorites_img {
+	width: 80px !important;
+	height: 80px;
+}
+.favorites_img image {
+	width: 100%;
+	height: 100%;
+}
+.favorites_list {
+	width: 70%;
+	padding-left: 20rpx;
+}
+.icon_del {
+	color: $font-color-base;
+	z-index: 9999;
+	font-weight: bold;
+}
+.favorites_name {
+	height: 80rpx;
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-box-orient: vertial;
+	-webkit-line-clamp: 2;
+}
+.favorites_peice {
+	margin-top: 25rpx;
+	color: #db1935;
+	font-weight: bold;
+}
+</style>

+ 46 - 17
pages/user/index.vue

@@ -23,11 +23,11 @@
 				</view>
 			</view>
 			<view class="flex">
-				<view class="info-right" @click="navTo('/pages/money/wallet')">
+				<view class="info-right" @click="authTo('/pages/users/user_money/index')">
 					<image class="iright-icon" src="../../static/user/user3.png" mode=""></image>
 					<view class="iright-font">钱包余额:{{ userInfo.now_money || 0 }}</view>
 				</view>
-				<view class="info-right" @click="navTo('/pages/money/recharge')">
+				<view class="info-right" @click="authTo('/pages/users/user_payment/index')">
 					<image class="iright-icon" src="../../static/user/user3.png" mode=""></image>
 					<view class="iright-font">充值钱包</view>
 				</view>
@@ -42,29 +42,29 @@
 				<!-- <image class="title-right" src="../../static/img/back.png" mode=""></image> -->
 			</view>
 			<view class="main flex">
-				<view class="item" @click="navTo('/pages/user/myjf')">
+				<view class="item" @click="authTo('/pages/user/myjf')">
 					<view class="item-num">{{ userInfo.dynamic_integral * 1 || 0 }}</view>
 					<view class="item-font">动态积分</view>
 				</view>
 				<view class="jg"></view>
-				<view class="item" @click="navTo('/pages/user/mygwjf')">
+				<view class="item" @click="authTo('/pages/user/mygwjf')">
 					<view class="item-num">{{ userInfo.integral * 1 || 0 }}</view>
 					<view class="item-font">静态积分</view>
 				</view>
 				<view class="jg"></view>
-				<view class="item" @click="navTo('/pages/user/mythq')">
+				<view class="item" @click="authTo('/pages/user/mythq')">
 					<view class="item-num">{{ userInfo.consumption * 1 || 0 }}</view>
 					<view class="item-font">消费券</view>
 				</view>
 				<view class="jg"></view>
-				<view class="item" @click="navTo('/pages/user/myggz')">
+				<view class="item" @click="authTo('/pages/user/myggz')">
 					<view class="item-num">{{ userInfo.contribution * 1 || 0 }}</view>
 					<view class="item-font">贡献值</view>
 				</view>
 			</view>
 		</view>
 		<view class="main-box">
-			<view class="title flex" @click="navTo('/pages/order/order?state=0')">
+			<view class="title flex" @click="authTo('/pages/users/order_list/index')">
 				<view class="title-left">
 					<!-- <image class="title-icon" src="../../static/user/user5.png" mode=""></image> -->
 					<view class="title-font">我的订单</view>
@@ -72,19 +72,19 @@
 				<image class="title-right" src="../../static/img/back.png" mode=""></image>
 			</view>
 			<view class="main flex">
-				<view class="oitem" @click="navTo('/pages/order/order?state=0')">
+				<view class="oitem" @click="authTo('/pages/users/order_list/index?state=0')">
 					<image class="oitem-image" src="../../static/user/user6.png" mode=""></image>
 					<view class="oitem-font">待付款</view>
 				</view>
-				<view class="oitem" @click="navTo('/pages/order/order?state=1')">
+				<view class="oitem" @click="authTo('/pages/users/order_list/index?state=1')">
 					<image class="oitem-image" src="../../static/user/user7.png" mode=""></image>
 					<view class="oitem-font">待发货</view>
 				</view>
-				<view class="oitem" @click="navTo('/pages/order/order?state=2')">
+				<view class="oitem" @click="authTo('/pages/users/order_list/index?state=2')">
 					<image class="oitem-image" src="../../static/user/user8.png" mode=""></image>
 					<view class="oitem-font">待收货</view>
 				</view>
-				<view class="oitem" @click="navTo('/pages/order/order?state=3')">
+				<view class="oitem" @click="authTo('/pages/users/order_list/index?state=3')">
 					<image class="oitem-image" src="../../static/user/user9.png" mode=""></image>
 					<view class="oitem-font">已完成</view>
 				</view>
@@ -96,19 +96,19 @@
 				<!-- <image src="../../static/img/xiangxia.png" mode="scaleToFill"></image> -->
 			</view>
 			<view class="tool flex">
-				<view class="tool-item" @click="navTo('/pages/user/mytg')">
+				<view class="tool-item" @click="authTo('/pages/users/user_spread_user/index')">
 					<view class="tool-img"><image src="../../static/icon/gn1.png" mode=""></image></view>
 					<view class="tool-name">我的推广</view>
 				</view>
-				<view class="tool-item" @click="navTo('/pages/user/shareQrCode')">
+				<view class="tool-item" @click="authTo('/pages/users/user_spread_code/index')">
 					<view class="tool-img"><image src="../../static/icon/gn2.png" mode=""></image></view>
 					<view class="tool-name">邀请有礼</view>
 				</view>
-				<view class="tool-item" @click="navTo('/pages/user/favorites')">
+				<view class="tool-item" @click="authTo('/pages/user/favorites')">
 					<view class="tool-img"><image src="../../static/icon/gn3.png" mode=""></image></view>
 					<view class="tool-name">我的收藏</view>
 				</view>
-				<view class="tool-item" @click="navTo('/pages/set/password')">
+				<view class="tool-item" @click="authTo('/pages/users/retrievePassword/index')">
 					<view class="tool-img"><image src="../../static/icon/i8.png" mode=""></image></view>
 					<view class="tool-name">修改密码</view>
 				</view>
@@ -116,11 +116,11 @@
 					<view class="tool-img"><image src="../../static/icon/gn5.png" mode=""></image></view>
 					<view class="tool-name">客服中心</view>
 				</view>
-				<view class="tool-item" @click="navTo('/pages/set/address')">
+				<view class="tool-item" @click="authTo('/pages/users/user_address_list/index')">
 					<view class="tool-img"><image src="../../static/icon/gn6.png" mode=""></image></view>
 					<view class="tool-name">收货地址</view>
 				</view>
-				<view class="tool-item" @click="navTo('/pages/set/userinfo')">
+				<view class="tool-item" @click="authTo('/pages/set/userinfo')">
 					<view class="tool-img"><image src="../../static/icon/gn7.png" mode=""></image></view>
 					<view class="tool-name">设置</view>
 				</view>
@@ -143,6 +143,10 @@
 				</view>
 			</view>
 		</uni-popup>
+		<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse" :isGoIndex="false"></authorize>
+		<!-- #ifndef H5 -->
+		<passwordPopup></passwordPopup>
+		<!-- #endif -->
 	</view>
 </template>
 <script>
@@ -180,6 +184,7 @@ export default {
 	),
 	data() {
 		return {
+			text: '15606861277', //客服微信
 			domain: HTTP_REQUEST_URL,
 			showSkeleton: true, //骨架屏显示隐藏
 			isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
@@ -448,6 +453,30 @@ export default {
 			} else {
 				this.openAuto();
 			}
+		},
+		// 复制客服微信
+		comfirm(text) {
+			console.log(text);
+			const result = this.uniCopy(text);
+			if (result === false) {
+				uni.showToast({
+					title: '不支持'
+				});
+			} else {
+				uni.showToast({
+					title: '复制成功',
+					icon: 'none'
+				});
+			}
+			this.$refs.popupkf.close();
+		},
+		// 打开客服
+		openKf() {
+			this.$refs.popupkf.open();
+		},
+		// 关闭客服
+		cancel() {
+			this.$refs.popupkf.close();
 		}
 	}
 };

+ 439 - 0
pages/user/myggz.vue

@@ -0,0 +1,439 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">贡献值</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/thq-bg.png" mode=""></image></view>
+			<view class="money-box">
+				<view class="money">{{ userInfo.contribution || '0' }}</view>
+				<view>当前余额</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{ sr }}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{ zc }}</view>
+			</view>
+		</view>
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view>
+						<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+							<view class="title-box">
+								<view class="title">
+									<text>{{ item.mark }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number }}</view>
+								<view v-if="item.status == 0" class="status">待发放</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { userBalance, getContributionList } from '@/api/wallet.js';
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	computed: {
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	components: {
+		empty,
+		uniLoadMore
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			sr: 0,
+			zc: 0,
+			navList: [
+				{
+					state: 1,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				},
+				{
+					state: 0,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				}
+			],
+			money: ''
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+	},
+	methods: {
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		//获取收入支出信息
+		async loadData(source) {
+			let obj = this;
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType == 'loading' || navItem.loadingType == 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			getContributionList({
+				page: navItem.page,
+				limit: navItem.limit,
+				pm: navItem.state
+			})
+				.then(({ data }) => {
+					obj.sr = data.sr;
+					obj.zc = data.zc;
+					navItem.orderList = navItem.orderList.concat(data.list);
+					navItem.page++;
+					if (navItem.limit == data.list.length) {
+						navItem.loadingType = 'more';
+					} else {
+						navItem.loadingType = 'noMore';
+					}
+					navItem.loaded = true;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+
+.content-money {
+	position: relative;
+	height: 480rpx;
+
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 480rpx;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+
+.info-box {
+	width: 670rpx;
+	height: 186rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -100rpx auto 0;
+	position: relative;
+	z-index: 2;
+
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		line-height: 1;
+
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+
+		.info-num {
+			margin-top: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #181818;
+		}
+	}
+
+	.shu {
+		width: 2rpx;
+		height: 74rpx;
+		background: #dcdfe6;
+	}
+}
+
+.money-box {
+	position: relative;
+	z-index: 2;
+	// padding-top: 20rpx;
+	color: #ffffff;
+	text-align: center;
+	height: 250rpx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+
+	.money {
+		font-size: 72rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+
+	.text {
+		font-size: 30rpx;
+	}
+}
+
+.money-btn {
+	position: relative;
+	z-index: 2;
+	color: #ffffff;
+	padding-right: 50rpx;
+	text-align: right;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+
+	text {
+		display: inline-block;
+		padding-left: 10rpx;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: #999999;
+		position: relative;
+
+		&.current {
+			color: #000;
+
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid #fe5b38;
+			}
+		}
+	}
+}
+
+//列表
+.swiper-box {
+	.order-item:last-child {
+		margin-bottom: 60rpx;
+	}
+
+	.order-item {
+		padding: 20rpx 30rpx;
+		line-height: 1.5;
+
+		.title-box {
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+			}
+
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+
+		.money {
+			color: #fd5b23;
+			font-size: $font-lg;
+			text-align: right;
+
+			.status {
+				color: $font-color-light;
+			}
+		}
+	}
+}
+
+.list-scroll-content {
+	background: #ffffff;
+	height: 100%;
+}
+
+.content {
+	height: 100%;
+
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+
+.btn-box {
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+	position: fixed;
+	bottom: 48rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+}
+</style>

+ 506 - 0
pages/user/mygwjf.vue

@@ -0,0 +1,506 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">静态积分</view>
+			</view>
+
+			<view class="content-bg"><image src="../../static/img/jf-bg.png" mode=""></image></view>
+			<view class="my-jf">
+				<view class="jf-zz" @click.stop="navto('/pages/user/xfjfzz?type=1')">积分转账</view>
+				<view class="jf-zz jf-tx" @click.stop="navto('/pages/user/withdrawal?jftype=1')">积分提现</view>
+				<view class="jf-tit">积分余额</view>
+				<view class="jf-val">{{ userInfo.integral * 1 || 0 }}</view>
+				<view class="jf-item-list flex">
+					<view class="jf-item">
+						<view class="item-val">{{ dsf || 0 }}</view>
+						<view class="item-tit">待释放</view>
+					</view>
+					<view class="jg"></view>
+					<view class="jf-item">
+						<view class="item-val">{{ jrsf || 0 }}</view>
+						<view class="item-tit">今日释放</view>
+					</view>
+					<view class="jg"></view>
+					<view class="jf-item">
+						<view class="item-val">{{ sr || 0 }}</view>
+						<view class="item-tit">累计收入</view>
+					</view>
+					<view class="jg"></view>
+					<view class="jf-item">
+						<view class="item-val">{{ zc || 0 }}</view>
+						<view class="item-tit">累计支出</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="" style="height: 20rpx;"></view>
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view>
+						<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+							<view class="title-box">
+								<view class="title">
+									<text>{{ item.mark }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number }}</view>
+								<view v-if="item.status == 0" class="status">待发放</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { userBalance, integrallist } from '@/api/wallet.js';
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	computed: {
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	components: {
+		empty,
+		uniLoadMore
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			jrsf: 0,
+			dsf: 0,
+			zc: 0,
+			sr: 0,
+			navList: [
+				{
+					state: 1,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				},
+				{
+					state: 0,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				}
+			],
+			money: ''
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+	},
+	methods: {
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		//获取收入支出信息
+		async loadData(source) {
+			let obj = this;
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType == 'loading' || navItem.loadingType == 'nomore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			integrallist({
+				page: navItem.page,
+				limit: navItem.limit,
+				pm: navItem.state
+			})
+				.then(({ data }) => {
+					obj.sr = data.sr;
+					obj.zc = data.zc;
+					obj.dsf = data.dsf;
+					obj.jrsf = data.jrsf;
+					navItem.orderList = navItem.orderList.concat(data.list);
+					navItem.page++;
+					if (navItem.limit == data.list.length) {
+						navItem.loadingType = 'more';
+					} else {
+						navItem.loadingType = 'noMore';
+					}
+					navItem.loaded = true;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+
+.content-money {
+	position: relative;
+	height: 480rpx;
+
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 480rpx;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+
+.info-box {
+	width: 670rpx;
+	height: 186rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -100rpx auto 0;
+	position: relative;
+	z-index: 2;
+
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		line-height: 1;
+
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+
+		.info-num {
+			margin-top: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #181818;
+		}
+	}
+
+	.shu {
+		width: 2rpx;
+		height: 74rpx;
+		background: #dcdfe6;
+	}
+}
+
+.money-box {
+	position: relative;
+	z-index: 2;
+	padding-top: 20rpx;
+	color: #ffffff;
+	text-align: center;
+
+	.money {
+		font-size: 72rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+
+	.text {
+		font-size: 30rpx;
+	}
+}
+
+.money-btn {
+	position: relative;
+	z-index: 2;
+	color: #ffffff;
+	padding: 0 50rpx;
+	text-align: right;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+
+	text {
+		display: inline-block;
+		padding-left: 10rpx;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: #999999;
+		position: relative;
+
+		&.current {
+			color: #000;
+
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid #fe5b38;
+			}
+		}
+	}
+}
+
+//列表
+.swiper-box {
+	.order-item:last-child {
+		margin-bottom: 60rpx;
+	}
+
+	.order-item {
+		padding: 20rpx 30rpx;
+		line-height: 1.5;
+
+		.title-box {
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+			}
+
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+
+		.money {
+			color: #fd5b23;
+			font-size: $font-lg;
+			text-align: right;
+
+			.status {
+				color: $font-color-light;
+			}
+		}
+	}
+}
+
+.list-scroll-content {
+	background: #ffffff;
+	height: 100%;
+}
+
+.content {
+	height: 100%;
+
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+
+.btn-box {
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+	position: fixed;
+	bottom: 48rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+}
+.my-jf {
+	position: relative;
+	width: 670rpx;
+	height: 386rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: 44rpx auto 0;
+	text-align: center;
+	font-size: 28rpx;
+	font-weight: 500;
+	color: #181818;
+	.jf-zz {
+		width: 147rpx;
+		line-height: 50rpx;
+		text-align: center;
+		background: linear-gradient(90deg, #ff6f30, #ff7131);
+		border-radius: 7rpx 0px 0px 7rpx;
+		position: absolute;
+		top: 59rpx;
+		right: 0;
+		font-size: 27rpx;
+		font-weight: 400;
+		color: #ffffff;
+	}
+	.jf-tx {
+		top: 160rpx;
+	}
+	.jf-tit {
+		padding-top: 70rpx;
+	}
+	.jf-val {
+		font-size: 74rpx;
+		font-weight: bold;
+		color: #181818;
+		padding-top: 10rpx;
+	}
+	.jf-item-list {
+		position: absolute;
+		bottom: 30rpx;
+		height: 80rpx;
+		width: 670rpx;
+		.jf-item {
+			width: 25%;
+		}
+		.jg {
+			width: 1rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+		}
+	}
+}
+</style>

+ 463 - 0
pages/user/myjf.vue

@@ -0,0 +1,463 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">动态积分</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/jf-bg.png" mode=""></image></view>
+			<view class="money-box">
+				<view class="money">{{ userInfo.contribution || '0' }}</view>
+				<view>当前余额</view>
+			</view>
+			<view class="moneybtn-box">
+				<!-- <view class="money-btn" @click="navto('/pages/user/withdrawal?jftype=2')">
+					动态积分提现
+				</view> -->
+				<view class="money-btn"></view>
+				<view class="money-btn" @click="navto('/pages/user/xfjfzz?type=2')">动态积分转账</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{ sr }}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{ zc }}</view>
+			</view>
+		</view>
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view>
+						<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+							<view class="title-box">
+								<view class="title">
+									<text>{{ item.mark }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number }}</view>
+								<view v-if="item.status == 0" class="status">待发放</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { userBalance, getDynamicIntegralList } from '@/api/wallet.js';
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	computed: {
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	components: {
+		empty,
+		uniLoadMore
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			sr: 0,
+			zc: 0,
+			navList: [
+				{
+					state: 1,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				},
+				{
+					state: 0,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				}
+			],
+			money: ''
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+	},
+	methods: {
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		//获取收入支出信息
+		async loadData(source) {
+			let obj = this;
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType == 'loading' || navItem.loadingType == 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			getDynamicIntegralList({
+				page: navItem.page,
+				limit: navItem.limit,
+				pm: navItem.state
+			})
+				.then(({ data }) => {
+					obj.sr = data.sr;
+					obj.zc = data.zc;
+					navItem.orderList = navItem.orderList.concat(data.list);
+					navItem.page++;
+					if (navItem.limit == data.list.length) {
+						navItem.loadingType = 'more';
+					} else {
+						navItem.loadingType = 'noMore';
+					}
+					navItem.loaded = true;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+
+.content-money {
+	position: relative;
+	height: 480rpx;
+
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 480rpx;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+
+.info-box {
+	width: 670rpx;
+	height: 186rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -100rpx auto 0;
+	position: relative;
+	z-index: 2;
+
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		line-height: 1;
+
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+
+		.info-num {
+			margin-top: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #181818;
+		}
+	}
+
+	.shu {
+		width: 2rpx;
+		height: 74rpx;
+		background: #dcdfe6;
+	}
+}
+
+.money-box {
+	position: relative;
+	z-index: 2;
+	/* #ifdef H5 */
+	padding-top: 70rpx;
+	/* #endif */
+
+	color: #ffffff;
+	text-align: center;
+	/* #ifdef APP-PLUS */
+	height: 180rpx;
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	/* #endif */
+
+	.money {
+		font-size: 72rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+
+	.text {
+		font-size: 30rpx;
+	}
+}
+
+.money-btn {
+	position: relative;
+	z-index: 2;
+	color: #ffffff;
+	// padding-right: 50rpx;
+	text-align: right;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+
+	text {
+		display: inline-block;
+		padding-left: 10rpx;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: #999999;
+		position: relative;
+
+		&.current {
+			color: #000;
+
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid #fe5b38;
+			}
+		}
+	}
+}
+
+//列表
+.swiper-box {
+	.order-item:last-child {
+		margin-bottom: 60rpx;
+	}
+
+	.order-item {
+		padding: 20rpx 30rpx;
+		line-height: 1.5;
+
+		.title-box {
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+			}
+
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+
+		.money {
+			color: #fd5b23;
+			font-size: $font-lg;
+			text-align: right;
+
+			.status {
+				color: $font-color-light;
+			}
+		}
+	}
+}
+
+.list-scroll-content {
+	background: #ffffff;
+	height: 100%;
+}
+
+.content {
+	height: 100%;
+
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+
+.btn-box {
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+	position: fixed;
+	bottom: 48rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+}
+.moneybtn-box {
+	display: flex;
+	justify-content: space-between;
+	position: relative;
+	z-index: 2;
+	color: #ffffff;
+	padding: 0rpx 50rpx;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+}
+</style>

+ 414 - 0
pages/user/mythq.vue

@@ -0,0 +1,414 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">消费券</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/xfq-bg.png" mode=""></image></view>
+			<view class="money-box">
+				<view class="money">{{ userInfo.consumption || '0' }}</view>
+				<view>当前余额</view>
+			</view>
+			<!-- <view class="money-btn" @click="navto('/pages/money/withdmoenys?type=th')">
+				兑换广告值
+				<text>></text>
+			</view> -->
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{ sr }}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{ zc }}</view>
+			</view>
+		</view>
+		<view class="navbar">
+			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+		</view>
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view>
+						<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+							<view class="title-box">
+								<view class="title">
+									<text>{{ item.mark }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number }}</view>
+								<view v-if="item.status == 0" class="status">待发放</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="tabItem.loadingType" v-if="!(tabItem.orderList.length == 0 && tabItem.loaded)"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { userBalance, getConsumptionList } from '@/api/wallet.js';
+import { getMoneyStyle } from '@/utils/rocessor.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+export default {
+	filters: {
+		getMoneyStyle
+	},
+	computed: {
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	components: {
+		empty,
+		uniLoadMore
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			zc: 0,
+			sr: 0,
+			navList: [
+				{
+					state: 1,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				},
+				{
+					state: 0,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10, //每次信息条数
+					loaded: false
+				}
+			],
+			money: ''
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+	},
+	methods: {
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		//获取收入支出信息
+		async loadData(source) {
+			let obj = this;
+			//这里是将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType == 'loading' || navItem.loadingType == 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			getConsumptionList({
+				page: navItem.page,
+				limit: navItem.limit,
+				pm: navItem.state
+			})
+				.then(({ data }) => {
+					obj.sr = data.sr;
+					obj.zc = data.zc;
+					navItem.orderList = navItem.orderList.concat(data.list);
+					navItem.page++;
+					if (navItem.limit == data.list.length) {
+						navItem.loadingType = 'more';
+					} else {
+						navItem.loadingType = 'noMore';
+					}
+					navItem.loaded = true;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+
+		//swiper 切换
+		changeTab(e) {
+			this.tabCurrentIndex = e.target.current;
+			this.loadData('tabChange');
+		},
+		//顶部tab点击
+		tabClick(index) {
+			this.tabCurrentIndex = index;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	position: relative;
+	height: 480rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 480rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+.info-box {
+	width: 670rpx;
+	height: 186rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -100rpx auto 0;
+	position: relative;
+	z-index: 2;
+	.info-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		line-height: 1;
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+		.info-num {
+			margin-top: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #181818;
+		}
+	}
+	.shu {
+		width: 2rpx;
+		height: 74rpx;
+		background: #dcdfe6;
+	}
+}
+.money-box {
+	position: relative;
+	z-index: 2;
+	/* #ifdef H5 */
+	padding-top: 80rpx;
+	/* #endif */
+	/* #ifdef APP-PLUS */
+	padding-top: 20rpx;
+	/* #endif */
+	color: #ffffff;
+	text-align: center;
+	.money {
+		font-size: 72rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+	.text {
+		font-size: 30rpx;
+	}
+}
+.money-btn {
+	position: relative;
+	z-index: 2;
+	color: #ffffff;
+	padding-right: 50rpx;
+	text-align: right;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+	text {
+		display: inline-block;
+		padding-left: 10rpx;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	padding: 0 5px;
+	background: #fff;
+	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
+	position: relative;
+	z-index: 10;
+	.nav-item {
+		flex: 1;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 100%;
+		font-size: 15px;
+		color: #999999;
+		position: relative;
+		&.current {
+			color: #000;
+			&:after {
+				content: '';
+				position: absolute;
+				left: 50%;
+				bottom: 0;
+				transform: translateX(-50%);
+				width: 44px;
+				height: 0;
+				border-bottom: 2px solid #fe5b38;
+			}
+		}
+	}
+}
+//列表
+.swiper-box {
+	.order-item:last-child {
+		margin-bottom: 60rpx;
+	}
+	.order-item {
+		padding: 20rpx 30rpx;
+		line-height: 1.5;
+		.title-box {
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+			}
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+		.money {
+			color: #fd5b23;
+			font-size: $font-lg;
+			text-align: right;
+			.status {
+				color: $font-color-light;
+			}
+		}
+	}
+}
+.list-scroll-content {
+	background: #ffffff;
+	height: 100%;
+}
+.content {
+	height: 100%;
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+.btn-box {
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+	position: fixed;
+	bottom: 48rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+}
+</style>

BIN
static/img/jf-bg.png


BIN
static/img/thq-bg.png


BIN
static/img/xfq-bg.png


+ 4 - 0
uni.scss

@@ -76,3 +76,7 @@ $uni-color-subtitle: #555555; // 二级标题颜色
 $uni-font-size-subtitle: 36upx;
 $uni-color-paragraph: #3f536e; // 文章段落颜色
 $uni-font-size-paragraph: 30upx;
+$font-lg: 32rpx;
+$font-color-base: #606266; //基础
+$font-base: 28rpx;
+$font-color-light: #909399; //灰色

+ 124 - 0
utils/rocessor.js

@@ -0,0 +1,124 @@
+//身份证验证	
+export function isCardNo(card) {
+	// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X 
+	var reg =
+		/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/;
+	if (reg.test(card) === false) {
+		console.log(card);
+		return false;
+
+	}
+	return true
+}
+
+// 金额显示变化
+export function getMoneyStyle(value = 0) {
+	if (typeof value == 'string') {
+		value = (+value).toFixed(2)
+	}
+	if (typeof value == 'number') {
+		value = value.toFixed(2)
+	}
+	// 将字符串转为数组
+	let n = value.split("");
+	// 反转数组并复制循环处理
+	let arr = n.reverse().map(function(e, ind, ar) {
+		// 判断当前下标是否为3的整数倍数且不为最后一个下标
+		if (ind % 3 == 0 && ind / 3 > 1 && ind != ar.length) {
+			return e + ','
+		} else {
+			return e
+		}
+	})
+	// 反转数组回复原来排序并合并回字符串
+	arr = arr.reverse().join('')
+	return arr;
+}
+
+// 倒计时计算
+// 计算倒计时时间
+export function timeComputed(time) {
+	// 获取当前时间
+	const actTime = (new Date()).getTime();
+	console.log(actTime);
+	// 获取到期时间
+	let stopTime = time*1000 - actTime;
+	let over = false
+	// 判断是否小于0
+	if (stopTime < 0) {
+		over = true
+		stopTime = stopTime * -1
+	}
+	let day = Math.floor(stopTime / 1000 / 60 / 60 / 24) //获取剩余天数
+	let hours = Math.floor((stopTime / 1000 / 60 / 60) % 24); //获取剩余小时数
+	let minutes = Math.floor((stopTime / 1000 / 60) % 60); //获取分钟
+	let seconds = Math.floor((stopTime / 1000) % 60); //获取秒数
+	return {
+		over,
+		hours, //倒计时小时数
+		minutes, //倒计时分钟数
+		seconds, //倒计时秒数
+		day //倒计时天数
+	}
+}
+
+// 调用打开地图方法
+export function openMap(e) {
+	const that = this
+	return new Promise((resolve, reject) => {
+		wx.getSetting({
+			success(res) {
+				//这里判断是否有地位权限
+				if (!res.authSetting['scope.userLocation']) {
+					wx.showModal({
+						title: '提示',
+						content: '请求获取位置权限',
+						success: function(res) {
+							if (res.confirm == false) {
+								// 授权失败
+								reject()
+								return false;
+							}
+							wx.openSetting({
+								success(res) {
+									//如果再次拒绝则返回页面并提示
+									if (!res.authSetting['scope.userLocation']) {
+										wx.showToast({
+											title: '此功能需获取位置信息,请重新设置',
+											duration: 3000,
+											icon: 'none'
+										})
+									} else {
+										//允许授权,调用地图
+										resolve()
+									}
+								}
+							})
+						}
+					})
+				} else {
+					//如果有定位权限,调用地图
+					resolve()
+				}
+			}
+		})
+	})
+}
+//时间戳转换成时间
+export function getTime(time) {
+	const num =13 - (time+'').length;
+	let l = 1;//倍数
+	for (let i = 0; i < num; i++) {
+		l+='0';
+	}
+	// 重新解析为数字
+	l = parseInt(l)
+	const date = new Date(parseInt(time) * l);
+	const year = date.getFullYear();
+	const mon = date.getMonth() + 1;
+	const day = date.getDate();
+	const hours = date.getHours();
+	const minu = date.getMinutes();
+	const sec = date.getSeconds();
+	return year + '-' + mon + '-' + day + ' ' + hours + ':' + minu + ':' + sec;
+}

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